나의 bash cheatsheet
bash tip 모음
bash
긴 명령어 편집
보통은 그냥 [[/cmd/fc]]를 사용하면 충분하다.
하지만 굳이 fc
를 쓰지 않겠다면 다음을 고려해 보자.
set -o vi
모드에서Esc v
를 입력하면 vim이 열린다. 명령어 편집을 끝내고 저장/종료하면 명령어가 실행된다.set -o emacs
모드에서는<C-x><C-e>
를 입력하면 emacs가 열린다.
emacs 모드를 사용하고 있지만 vim으로 편집하고 싶다면?
- .bashrc에
EDITOR
변수를 vim으로 지정해준다.
export EDITOR=$(which vim)
입력중인 명령어를 주석처리
- 명령어를 입력하다가
- 입력하고 있던 명령어를 바로 실행하긴 곤란하고, 다 지우기도 애매한 경우가 있다.
<M-#>
을 입력하면 입력하고 있던 명령어 제일 앞에 #
이 추가되고, 새로운 명령어를 입력하는 프롬프트가 나온다.
Meta
키 입력을 어떻게 해야 할 지 모르겠다면option + #
,Alt + #
,Esc #
을 시도해보자.- 위의 방법이 다 안 된다면
<C-a>#
을 입력하는 정도로 타협할 수 있겠다.
이전 명령 재실행
!!
로 이전 명령을 재실행할 수 있다.
이전 명령의 arguments 재사용
다음과 같이 echo
명령을 실행했다고 하자.
$ echo a b c d
a b c d
이 때 아래와 같이 arg를 재참조할 수 있다.
form | 설명 | form 예제 | expand 예제 |
---|---|---|---|
!!:n |
이전 명령의 n번째 arg | !!:0 !!:2 |
echo b |
!!:n-m |
n번째 ~ m번째 args | echo !!:1-3 |
echo a b c |
!!:n-$ |
n번째 ~ 마지막 args | echo !!:2-$ |
echo b c d |
!^ |
첫번째 arg | echo !^ |
echo a |
!$ |
마지막 arg | echo !$ |
echo d |
!* |
모든 args | echo !* |
echo a b c d |
특수한 변수들
form | 설명 |
---|---|
$? |
마지막으로 실행한 프로그램의 종료 상태. 정상 종료이면 보통 0 . |
$! |
마지막으로 실행한 백그라운드 프로그램의 PID. |
$$ |
현재 셸의 PID. |
$0 |
현재 실행중인 셸 스크립트의 파일명. |
$_ |
이전에 실행한 명령의 마지막 arg. |
$_
는!$
와 비슷한 느낌으로 쓸 수 있지만$_
는 변수라는 점이 차이가 있다.
vim session 디렉토리로 cd
- vim 세션으로 정해 둔 디렉토리로 쉽게 이동할 수 있다.
- fzf에 의존성이 있다.
function session_directory {
cd $HOME$(grep -e 'cd\s' ~/.vim/session/* | sed 's/^.*:cd//' | sort | fzf | sed 's/ ~//')
}