2016년 10월 22일 토요일

[Bash] 배시 기본 {05} - 히스토리 확장, 이벤트 지정자, 워드 지정자, 한정자

이벤트 지정자(event designator)


$ !!
마지막 명령을 다시 실행한다.

$ !string
string 으로 시작하는 최근 명령을 다시 실행한다.

$ !n
n째 명령행을 실행한다.

$ !?string
string을 포함하는 명령행 중 마지막 명령행

$ ^string1^string2
string1을 string2로 바꾸어 마지막 명령 반복. 문자를 잘못 입력했을 때 쓰면 편한다.

워드 지정자


이전에 내린 명령행에서 특정 워드를 가리킬 수 있다. 이벤트 지정자 뒤에 콜론(:)을 덧붙여서 사용한다.

$ ls -al
$ !!:0
ls 실행 (-al 옵션 떼고)

$ ls -al
$ !!:0-1
0부터 1까지 실행. 즉 ls -al 모두 실행. 순서는 첫번째가 아닌 0번째 부터다.

$ ls -al
$ !!:0-$
0부터 마지막까지 실행

$ !!:x*
x-$와 같다.

$ !!:*
1-$와 같다.

한정자(modifier)

한정자도 콜론(:)을 붙여서 사용한다.

$ ls -al /some/path/to/your/file.txt
$ ls -l !!:$:h
ls -al /some/path/to/your
h는 제일 뒤의 경로명을 삭제한다.

$ ls -al /some/path/to/your/file.txt
$ ls -al:$:t
ls -al file.txt
t는 가장 뒷 부분을 남겨놓고 앞 부분의 경로명을 모두 삭제한다.

$ ls -al /some/path/to/your/file.txt
$ ls -al !!:$:r
ls -al /some/path/to/your/file
r은 서픽스(.txt)를 삭제한다.

$ ls -al /some/path/to/your/file.txt
$ !!:s/ls -al/cat/
ls -al  명령을 cat으로 바꿔서 실행한다.

$ cp /etc/password /backup/password.bak
$ !!:gs/password/passwd/
cp /etc/passwd /backup/passwd.bak
만약 passwd 파일을 백업해야 하는데 password 로 잘못 썼다면 gs를 이용해서 password 문자를 모두 passwd로 바꿀 수 있다. s만 쓰면 앞의 password만 passwd로 바뀐다.

$ tar cvf password.tar password
$ !!:g&
&는 마지막 substitution을 한 번 더 실행한다. 마지막 substitution이 s/password/passwd 이므로 tar cvf passwd.tar passwd로 명령이 바뀌어서 실행된다.

$ tar cvf tar-file.tar file1 file2 file3
$ tar cvfz new-tar-file.tar !tar:3-$:p
tar cvfz new-tar-file.tar file1 file2 file3
p는 실제로 실행하지 않고 수정한 명령행을 화면에 출력한다. 의도한 명령행과 같다면 :p를 지우고 실행하면 된다.



댓글 없음:

댓글 쓰기