trash a.txt b.png 명령은 a.txt와 b.png 파일을 휴지통으로 옮기는 것임, Mac과 Linux에서 지원함. 내가 예전에 하던 방식은 파일 별로 순차적으로 처리하기 때문에 삭제 소리가 각 파일마다 들리고, Finder의 ⌘Z로 마지막 파일만 복구가 가능함. 개선은 할 수 있지만, 사실 macOS에 기본 내장된 공식 trash 명령을 쓰는 게 더 편리함. Finder를 쓰지 않으니 소리나 ⌘Z 복구는 없지만 속도도 빠르고 “Put Back” 기능도 됨. 그리고 JSON pretty-print는 node 말고 jq를 쓴다면 훨씬 더 짧은 코드로 해결 가능하고, 요즘 macOS에는 jq가 미리 설치되어 나옴. uuid 프린트도 마찬가지로 v4 UUID가 필요할 땐 uuidgen을 쓰는 것이 무난함(man page 참고)
셀프 스크립트보다 기본 내장 기능을 쓰는 게 더 나을 때가 많음. 예를 들어 vim에서 markdownquote를 쓰는 대신 ctrl-v로 첫 열을 선택하고 "i> " 후 escape만 누르면 됨. 더 짧고 효율적임. u+ 2025가 왜 ñ를 반환하는지 궁금한데 실제 유니코드 값은 U+00F1 임. 그리고 catbin foo는 cat "$(which foo)"와 같음. zsh를 쓴다면 cat =foo가 더 짧고 강력함. zsh에서는 = 뒤에 자동 완성이 되어서 긴 명령어에도 안전하게 쓸 수 있음. 나는 file =firefox, vim =myscript.sh처럼 자주 씀
나는 저자가 uuidgen을 몰랐을 것이라 추측함. 이런 지식이나 설정을 공유하면 항상 내 사각지대가 밝혀지는 점이 좋아서 공유가 중요한 것임
개발자의 인생 사이클이 참 신기함. 처음에는 바닐라 셸 환경만 쓰다가, 1~2년 차에는 스크립트와 bash alias를 수백 줄씩 만들어 씀. 15년 차가 된 지금은 오히려 최대한 기본 셸만 쓰고, alias도 안 쓰며, 복잡한 것은 Python이나 Go로 처리함
이런 경향은 뭔가 각성한 상태라기보다는 그냥 게으름에서 오는 것 같음(나도 똑같이 해서 하는 말임). 커스텀 환경을 파고드는 동료들 덕분에 새로운 도구들을 자주 배우게 되고, 최근에는 atuin, fzf 같은 도구도 리눅스에 추가함
dotfile에 alias랑 function을 적어서 자주 쓰는 명령어를 기록/기억하는 용도로 씀. 자주 쓰는 도구 모음을 계속 업데이트하고, 새 워크스테이션에 이전하는 것도 쉬움
예전에 nix 컴퓨터가 한 대만 있었을 때는 커스텀을 많이 하고 싶었음. 지금은 여러 대를 동시에 쓰다 보니 필요한 패키지만 설치해서 환경을 통일함
python으로 짠 것도 여전히 script라고 부름. script라는 용어가 쉘 스크립트에만 한정된 건 아니라고 생각함
요즘은 젊은 엔지니어들과 일하면서 그들이 여러 dotfiles를 쓰는 걸 보면 “나도 옛날엔 저렇게 했었지, 귀찮았지”라고 느낌. 이제는 툴을 선별적으로 사용하고, 필요한 것에 유연하게 맞춤. 다른 사람 스타일도 존중함
이런 실전 팁 게시글을 HN에서 찾는 게 정말 좋음. 다른 개발자들이 실제로 어떻게 일하는지, 내가 뭘 배워서 적용할 수 있을지 궁금함. 처음에는 “나한텐 필요 없겠지”라고 생각해도, 어떤 작업이 수월해지면 그 작업 자체가 새로운 워크플로우를 만듦. 그래서 일단 해보고 맞는 걸 남기는 편임. 원글의 스타일도 마음에 듬—실제 사용 빈도를 같이 적어준 점이 진짜 실용적임. 나는 간단한 작업은 브라우저 devtools 열어서 JavaScript로 끝내는 경우가 많음. (예: 문자열을 소문자로 변환할 때 등)
저자 방식과 내 방식의 소요 시간, 스크립트 제작/기억/참조/마이그레이션 비용까지 따져서 실제 cost-benefit analysis를 해보면 흥미로울 것 같음
sed 명령어를 여러 개 묶어서 쓸 일이 많음. 그럴 때마다 첫 sed 명령을 계속 바꿔야 함. 때론 sed 전에 grep이 필요할 때도 있는데, cat, tail, head로 쪼개면 각 기능을 모듈처럼 써서 더 유연해짐. 각각이 한 가지 일만 하도록 만드는 유닉스 철학에 맞음
개인 스크립트는 ,(콤마)로 앞에 붙여두어 빠르게 전환할 수 있음. 나만의 스크립트들을 히스토리에서 주기적으로 통계 내보고, 더는 안 쓰는 것들은 정리하는 작업이 가치 있다고 느낌
아직 일반화는 못했지만 unmv 스크립트로 꽤나 편리하게 작업하고 있음
#!/bin/sh
if test "$#" != 2
then
echo 'Error: unmv must have exactly 2 arguments'
exit 1
fi
exec mv "$2" "$1"
좋은 팁들이 많지만, 나는 대체로 표준 유틸리티(sed, awk, grep, xargs 등)를 배우고 씀. 이유는 여러 시스템을 오가며 작업을 하는데, 내 개인 스크립트와 alias들은 대부분 미설치되어 있기 때문임. 표준 유틸로 거의 모든 일을 할 수 있음
정말 공감함. 어디서든 작업할 수 있도록 표준만 쓰게 됨. 하지만 정말 잘 만든 도구는 결국 기본 설치나 apt-get 설치가 쉬워지기도 함. 개인 스크립트 모음보다는, 관리 잘 되는 패키지 형태가 더 바람직하다고 생각함
내가 제일 좋아하는 압축 해제 스크립트 공유함
# ex - archive extractor
# 사용법: ex <파일>
function ex() {
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.tar.xz) tar xf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xf $1 ;;
*.tbz2) tar xjf $1 ;;
*.tgz) tar xzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1;;
*.7z) 7z x $1 ;;
*) echo "'$1' cannot be extracted via ex()" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
이걸 압축하는 반대 counterpart도 만들고 싶음
나는 dtrx를 쓰는데, 자동으로 압축을 폴더 안에 풀어줘서 좋음
나는 aunpack이 더 편함
정말 깔끔함
inotify와 systemd user service까지 추가하면 한 단계 진화할 듯함. 이미 패키지로 존재하는 버전도 있음. 직접 만드신 것은 정사각형 바퀴(재발명) 느낌
mp4 인코딩이나 자르기에 항상 쓰는 두 가지 함수가 있음. flag 덕분에 WhatsApp, 모바일 Discord 등 다양한 환경에서 호환성이 극대화됨
Hacker News 의견
trash a.txt b.png 명령은
a.txt와b.png파일을 휴지통으로 옮기는 것임, Mac과 Linux에서 지원함. 내가 예전에 하던 방식은 파일 별로 순차적으로 처리하기 때문에 삭제 소리가 각 파일마다 들리고, Finder의 ⌘Z로 마지막 파일만 복구가 가능함. 개선은 할 수 있지만, 사실 macOS에 기본 내장된 공식trash명령을 쓰는 게 더 편리함. Finder를 쓰지 않으니 소리나 ⌘Z 복구는 없지만 속도도 빠르고 “Put Back” 기능도 됨. 그리고 JSON pretty-print는 node 말고 jq를 쓴다면 훨씬 더 짧은 코드로 해결 가능하고, 요즘 macOS에는 jq가 미리 설치되어 나옴. uuid 프린트도 마찬가지로 v4 UUID가 필요할 땐 uuidgen을 쓰는 것이 무난함(man page 참고)셀프 스크립트보다 기본 내장 기능을 쓰는 게 더 나을 때가 많음. 예를 들어 vim에서 markdownquote를 쓰는 대신 ctrl-v로 첫 열을 선택하고 "i> " 후 escape만 누르면 됨. 더 짧고 효율적임. u+ 2025가 왜 ñ를 반환하는지 궁금한데 실제 유니코드 값은 U+00F1 임. 그리고 catbin foo는 cat "$(which foo)"와 같음. zsh를 쓴다면 cat =foo가 더 짧고 강력함. zsh에서는 = 뒤에 자동 완성이 되어서 긴 명령어에도 안전하게 쓸 수 있음. 나는 file =firefox, vim =myscript.sh처럼 자주 씀
나는 저자가 uuidgen을 몰랐을 것이라 추측함. 이런 지식이나 설정을 공유하면 항상 내 사각지대가 밝혀지는 점이 좋아서 공유가 중요한 것임
파이썬도 기본적으로 JSON을 pretty-print 가능함
trash정보 고마움. 나는 그동안 "tell app "Finder" to move {%s} to trash" 식으로 AppleScript를 써서 여러 파일을 휴지통에 보냈음rm과 trash의 대안으로 rip도 추천함 rip 프로젝트 링크
개발자의 인생 사이클이 참 신기함. 처음에는 바닐라 셸 환경만 쓰다가, 1~2년 차에는 스크립트와 bash alias를 수백 줄씩 만들어 씀. 15년 차가 된 지금은 오히려 최대한 기본 셸만 쓰고, alias도 안 쓰며, 복잡한 것은 Python이나 Go로 처리함
이런 경향은 뭔가 각성한 상태라기보다는 그냥 게으름에서 오는 것 같음(나도 똑같이 해서 하는 말임). 커스텀 환경을 파고드는 동료들 덕분에 새로운 도구들을 자주 배우게 되고, 최근에는 atuin, fzf 같은 도구도 리눅스에 추가함
dotfile에 alias랑 function을 적어서 자주 쓰는 명령어를 기록/기억하는 용도로 씀. 자주 쓰는 도구 모음을 계속 업데이트하고, 새 워크스테이션에 이전하는 것도 쉬움
예전에 nix 컴퓨터가 한 대만 있었을 때는 커스텀을 많이 하고 싶었음. 지금은 여러 대를 동시에 쓰다 보니 필요한 패키지만 설치해서 환경을 통일함
python으로 짠 것도 여전히 script라고 부름. script라는 용어가 쉘 스크립트에만 한정된 건 아니라고 생각함
요즘은 젊은 엔지니어들과 일하면서 그들이 여러 dotfiles를 쓰는 걸 보면 “나도 옛날엔 저렇게 했었지, 귀찮았지”라고 느낌. 이제는 툴을 선별적으로 사용하고, 필요한 것에 유연하게 맞춤. 다른 사람 스타일도 존중함
이런 실전 팁 게시글을 HN에서 찾는 게 정말 좋음. 다른 개발자들이 실제로 어떻게 일하는지, 내가 뭘 배워서 적용할 수 있을지 궁금함. 처음에는 “나한텐 필요 없겠지”라고 생각해도, 어떤 작업이 수월해지면 그 작업 자체가 새로운 워크플로우를 만듦. 그래서 일단 해보고 맞는 걸 남기는 편임. 원글의 스타일도 마음에 듬—실제 사용 빈도를 같이 적어준 점이 진짜 실용적임. 나는 간단한 작업은 브라우저 devtools 열어서 JavaScript로 끝내는 경우가 많음. (예: 문자열을 소문자로 변환할 때 등)
저자 방식과 내 방식의 소요 시간, 스크립트 제작/기억/참조/마이그레이션 비용까지 따져서 실제 cost-benefit analysis를 해보면 흥미로울 것 같음
이 Bash 단축키 치트시트 이미지가 많은 도움이 됨
line 스크립트 대신, sed로 특정 줄 출력이 더 간단함
두 번째 줄 출력 가능. 여러 줄 출력도
처럼 할 수 있어서 line 스크립트보다 유리함
내가 자주 쓰는 간단한 스크립트들이 있음. 예를 들어:
개인 스크립트는 ,(콤마)로 앞에 붙여두어 빠르게 전환할 수 있음. 나만의 스크립트들을 히스토리에서 주기적으로 통계 내보고, 더는 안 쓰는 것들은 정리하는 작업이 가치 있다고 느낌
아직 일반화는 못했지만
unmv스크립트로 꽤나 편리하게 작업하고 있음좋은 팁들이 많지만, 나는 대체로 표준 유틸리티(sed, awk, grep, xargs 등)를 배우고 씀. 이유는 여러 시스템을 오가며 작업을 하는데, 내 개인 스크립트와 alias들은 대부분 미설치되어 있기 때문임. 표준 유틸로 거의 모든 일을 할 수 있음
내가 제일 좋아하는 압축 해제 스크립트 공유함
이걸 압축하는 반대 counterpart도 만들고 싶음
나는 dtrx를 쓰는데, 자동으로 압축을 폴더 안에 풀어줘서 좋음
나는 aunpack이 더 편함
정말 깔끔함
inotify와 systemd user service까지 추가하면 한 단계 진화할 듯함. 이미 패키지로 존재하는 버전도 있음. 직접 만드신 것은 정사각형 바퀴(재발명) 느낌
mp4 인코딩이나 자르기에 항상 쓰는 두 가지 함수가 있음. flag 덕분에 WhatsApp, 모바일 Discord 등 다양한 환경에서 호환성이 극대화됨
fftime은 원본을 다시 인코딩하지 않고 빠르게 자르지만, 영상에 따라 약간 문제(재생 불가 등)가 있을 수 있음. 재인코딩하려면 -c copy를 빼면 됨
alias나 function을 만들고 테스트할 때마다
~/.zshrc를 바로 반영하는 게 편해서 아래처럼 쓴 alias를 씀그리고 Mac에서 docx 파일 grep용으로 아래 function을 씀
또, 내 Mac의 클립보드를 익명화해서 ChatGPT나 사내 Slack 등 공개 채널에 붙여넣을 때, 디버깅 용도로 아래 함수를 돌림. 함수 실행하면 새로 변환된 클립보드를 stdout에 표시 해주기 때문에, 놓친 부분이 있는지 확인 가능함