나는 사용했다
history | less
이전 명령의 줄과 왼쪽의 숫자를 얻으려면 반복하려는 줄을 찾았습니다 (예 : 22).
!22
명령 프롬프트에서 작동했습니다. 당시 내가 한 줄에서 명령 세트를 실행했습니다. 느낌표가 사용되는 위치, bash가 취한 조치 및 사용 위치의 관점에서 무엇을 나타내는 지 알 수 없습니다. 문서에서 '유형'인 설명이 보이지 않습니다.
나는 사용했다
history | less
이전 명령의 줄과 왼쪽의 숫자를 얻으려면 반복하려는 줄을 찾았습니다 (예 : 22).
!22
명령 프롬프트에서 작동했습니다. 당시 내가 한 줄에서 명령 세트를 실행했습니다. 느낌표가 사용되는 위치, bash가 취한 조치 및 사용 위치의 관점에서 무엇을 나타내는 지 알 수 없습니다. 문서에서 '유형'인 설명이 보이지 않습니다.
답변:
!
C 쉘 에 처음 등장한 기능으로 , 화살표 키를 사용하기 위해 터미널을 계산할 수있는 시절로 거슬러 올라갑니다. 현재 명령 번호를 프롬프트 ( PS1="\!$ "
)에 추가하면 화면을 빠르게보고 과거 명령의 번호를 얻을 수 있는 경우 특히 유용 합니다.
이제 화살표 키와 Ctrl-R명령 기록 검색 과 같은 기능을 사용할 수 있으므로이 기능을 많이 사용하지는 않습니다.
여전히 유용하다고 생각되는 변형은 !!
이전 명령을 다시 실행하는입니다. 그 자체로 !!Enter는 그저 더 빠르지 ↑ Enter않지만 더 큰 명령으로 결합하면 도움이 될 수 있습니다.
예 : 기반 시스템 에서 일반적인 파일럿 오류 는 추가 권한이 필요한 명령 sudo
에서 sudo
접두사 를 잊어 버리는 것 입니다. 초보자는 전체 명령을 다시 입력합니다. 부지런한 학생은 셸의 명령 기록에서 명령을 편집합니다. 깨달은 하나의 유형 sudo !!
.
Bash를 사용하면 또는로 !
쉘에서 처리 를 비활성화 할 수 있습니다 . 를 사용하여 Zsh에서 비활성화 할 수 있습니다 .set +o histexpand
set +H
set -K
sudo
, 또는 잊어 버린 것) sudo !!
예를 들어 할 수 있습니다 . "Up / Ctrl-A (또는 운이 좋으면 집) / sudo / space / enter"보다 약간 빠를 수 있습니다. YMMV. :)
echo 'Hi!'
또는 echo "Hi!"
나 echo Hi\!
. 모두 같은 일을합니다.
setopt NO_BANG_HIST
zsh에서는보다 기억에 남을 수 있습니다 -K
.
더 이상 대답이 없으면 최근에 한 사람을 읽었 기 때문에 슈퍼 유저에 대한 답변이 있습니다. 에서 bash는 남자 페이지 당신은 큰 섹션 제목 찾을 수 있습니다 역사 확장 문제에 있습니다.
마지막 명령 또는 명령 번호 X를 실행하는 것보다 전체 호스트를 수행 할 수 있습니다 .로 !cat
시작한 마지막 명령을 실행하는 것과 같은 작업 을 수행 할 수 있습니다 cat
. 또는 !?bash?:s/bash/csh/
포함 된 마지막 명령을 실행 bash
하지만로 대체합니다 csh
.
!!:s/bash/csh/
실제로 마지막 명령을 실행 한 다음 bash를 csh (있는 경우)로 바꿉니다. bash가 포함 된 마지막 명령이 아닙니다. 즉 것 !?bash?:s/bash/csh/
어쩌면 나!?bash?:s/%/csh/
man
페이지를 훑어 보는 데 몇 시간을 보냈지 만이 기능은 매우 모호합니다. 관련 섹션을 지적 해 주셔서 감사합니다. 실제 문서에서 충분히 설명 할 수있는 유일한 곳입니다.
다음 !
과 같이 훨씬 더 많은 작업을 수행 할 수 있습니다 .
!-3
!ls
그리고 훨씬 더. 알아야 할 15 Linux Bash 히스토리 확장 예제 참조
물론 !!
bash 쉘에서 마지막 명령을 재사용 할 수 있습니다 . 그리고 !$
마지막 명령의 마지막 부분을 재사용해야합니다.
예를 들어 일부 파일보기
less path/to/your/file.txt
동일한 파일을 편집 !$
하려면 마지막 명령에서 파일 경로 만 가져 오십시오.
vim !$
$touch f1 f2
그런 다음$vim !$
$vim f2