수색…


! $ 사용

명령 줄을 사용할 때 반복을 줄이려면 !$ 를 사용할 수 있습니다.

$ echo ping
ping
$ echo !$
ping

반복을 기반으로 구축 할 수도 있습니다.

$ echo !$ pong
ping pong
$ echo !$, a great game
pong, a great game

마지막 예제에서 우리는 ping pong, a great game 얻지 못했다. 이전 명령에 전달 된 마지막 인자가 pong 이었기 때문에 ping pong, a great game 이었다. 우리는 따옴표를 추가함으로써 이런 문제를 피할 수있다. 이 예제를 계속 진행하면서 우리의 마지막 논쟁은 game 이었다.

$ echo "it is !$ time"
it is game time
$ echo "hooray, !$!"
hooray, it is game time!

빠른 참조

역사와의 상호 작용

# List all previous commands
history

# Clear the history, useful if you entered a password by accident
history -c

이벤트 지정자

# Expands to line n of bash history
!n

# Expands to last command
!!

# Expands to last command starting with "text"
!text

# Expands to last command containing "text"
!?text

# Expands to command n lines ago
!-n

# Expands to last command with first occurrence of "foo" replaced by "bar"
^foo^bar^

# Expands to the current command
!#

단어 지정자

이들은 다음과 같이 구분됩니다 : 참조하는 이벤트 지정자. 단어 지정자가 숫자로 시작하지 않으면 콜론을 생략 할 수 있습니다 !^!:^ 와 동일합니다.

# Expands to the first argument of the most recent command
!^

# Expands to the last argument of the most recent command (short for !!:$)
!$

# Expands to the third argument of the most recent command
!:3

# Expands to arguments x through y (inclusive) of the last command
# x and y can be numbers or the anchor characters ^ $
!:x-y

# Expands to all words of the last command except the 0th
# Equivalent to :^-$
!*

수정 자

이들은 앞의 이벤트 또는 단어 지정자를 수정합니다.

# Replacement in the expansion using sed syntax
# Allows flags before the s and alternate separators
:s/foo/bar/ #substitutes bar for first occurrence of foo
:gs|foo|bar| #substitutes bar for all foo

# Remove leading path from last argument ("tail")
:t

# Remove trailing path from last argument ("head")
:h

# Remove file extension from last argument
:r

배쉬 변수 경우 HISTCONTROL 중 하나를 포함 ignorespace 또는 ignoreboth (또는, 대안 HISTIGNORE 패턴에 포함 된 [ ]* , 당신은 공간을 앞에 붙이는 배쉬 기록에 저장되지 않도록 명령을 방지 할 수 있습니다)

# This command won't be saved in the history
 foo

# This command will be saved
bar

명령 기록에서 패턴으로 검색

컨트롤 r을 누르고 패턴을 입력하십시오.

예를 들어 최근에 man 5 crontab 실행 한 경우 "crontab" 을 입력 하여 빠르게 찾을 수 있습니다. 프롬프트가 다음과 같이 바뀝니다.

(reverse-i-search)`cr': man 5 crontab

`cr' 에는 지금까지 입력 한 문자열이 있습니다. 점진적 검색이므로 입력을 계속하면 검색 결과가 패턴을 포함하는 가장 최근 명령과 일치하도록 업데이트됩니다.

일치하는 명령을 실행하기 전에 왼쪽 또는 오른쪽 화살표 키를 누르거나 명령을 실행하려면 Enter 키를 누르십시오.

기본적으로 검색은 패턴과 일치하는 가장 최근에 실행 된 명령을 찾습니다. 다시 더 뒤로 역사를 눌러 제어 연구에서 이동합니다. 원하는 명령을 찾을 때까지 반복해서 누를 수 있습니다.

! # : N으로 새로 생성 된 디렉토리로 전환하십시오

$ mkdir backup_download_directory && cd !#:1
mkdir backup_download_directory && cd backup_download_directory

이것은 현재 명령의 N 번째 인수를 대체합니다. 이 예에서 !#:1 은 첫 번째 인수, 즉 backup_download_directory로 바뀝니다.

대체 명령으로 이전 명령을 반복하십시오.

$ mplayer Lecture_video_part1.mkv
$ ^1^2^
mplayer Lecture_video_part2.mkv

이 명령은 이전에 실행 된 명령에서 12 로 대체합니다. 그것은 단지 문자열의 첫번째 발생을 대체 할 것이고 !!:s/1/2/ .

모든 항목을 바꾸려면 !!:gs/1/2/ 또는 !!:as/1/2/ !!:gs/1/2/ 를 사용해야합니다.

이전 명령을 sudo로 반복하십시오.

$ apt-get install r-base
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
$ sudo !!
sudo apt-get install r-base
[sudo] password for <user>: 


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow