Linux 에서 10 개의 유용 한 명령 행 보완 예
6516 단어 Linux명령 행보충 하여 완전 하 게 하 다
이 튜 토리 얼 은 프로 그래 밍 가능 한 명령 행 완성 기능(programmable completion)을 어떻게 사용 하여 자동 완성 기능 을 옵션 이나 명령 행 인자 에 적용 하 는 지 설명 합 니 다.
예 를 들 어 write 명령 을 입력 한 후에 TAB 버튼 을 두 번 누 르 면 자동 완성 기능 은 write 작업 을 수행 할 수 있 는 사용자 목록 을 제공 합 니 다.
$ write [TAB][TAB]
bala raj
jason randy
john ritu
mayla thomas
nisha www-data
다음 예 에서 telnet 명령 에 사용 가능 한 호스트 이름 을 표시 할 수 있 습 니 다.
$ telnet [TAB][TAB]
localhost dev-db fileserver
프로 그래 밍 가능 한 명령 보완 기능 이 터미널 에서 작 동 하려 면 다음 과 같이 실행 해 야 합 니 다/etc/bash완료 하면 됩 니 다:# . /etc/bash_completion
당신 도/etc/bash.bashrc(Ubuntu Linux 13.04 시스템 에서 온)의 다음 설명 을 취소 할 수 있 습 니 다.그러면 위의 명령 을 실행 하지 않 아 도 됩 니 다.
### enable bash completion in interactive shells
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
만약 당신 이 이 코드 들 을 발견 하지 못 했다 면,/etc/bash 도 찾 지 못 했 을 것 입 니 다.completion 파일,그러면 apt-get 명령 을 사용 하여 bash 를 설치 해 야 합 니 다.completion 가방 이면 됩 니 다. 1.기 존 명령 줄 완성 보기
프로 그래 밍 가능 한 명령 행 보완 기능 을 사용 한 후에 이미 정 의 된 명령 보완 기능 이 있 습 니 다.complete 명령 은 명령 행 보완 을 정의 하 는 데 사 용 됩 니 다.
기 존 명령 행 보완 을 보 려 면 complete 명령 을 사용 하 십시오.
complete -p | less
위의 예 에서-p 옵션 은 선택 할 수 있 습 니 다.
2.bash 의 표준 완성 기능 을 보 여 줍 니 다.
기본 적 인 상황 에서 Bash 는 Linux 사용자 에 게 다음 과 같은 표준 보완 기능 을 제공 합 니 다.
1.변수 완성
2.사용자 이름 완성
3.호스트 이름 완성
4.경로 보완
5.파일 이름 완성
저희 가 그 전에... bash 표준 보전 에서 이런 것들 을 토론 한 적 이 있다.
3.명령 이름 완성 을 정의 합 니 다.
-c 옵션 을 통 해 사용 가능 한 모든 명령 을 명령 의 보완 매개 변수 로 사용 할 수 있 습 니 다.다음 예 에서 which 명령 에 대한 보완(LCTT 번역 주:TAB 를 두 번 누 를 때 모든 명령 이름 을 보완 가능 한 매개 변수 로 표시 할 수 있 음)을 정의 합 니 다.
$ complete -c which
$ which [TAB][TAB]
Display all 2116 possibilities? (y or n)
위 와 같이'y'를 누 르 면 모든 명령 명 이 표 시 됩 니 다. 4.디 렉 터 리 완성 정의
옵션-d 를 통 해 디 렉 터 리 이름 만 포함 하 는 보완 매개 변 수 를 정의 할 수 있 습 니 다.다음 예 에서 ls 명령 에 대한 보완 을 정의 합 니 다.
$ ls
countfiles.sh dir1/ dir2/ dir3/
$ complete -d ls
$ ls [TAB][TAB]
dir1/ dir2/ dir3/
위 와 같이 TAB 를 누 르 면 디 렉 터 리 이름 만 표 시 됩 니 다. 5.배경 작업 이름 완성 정의
보완 기능 도 작업 이름 을 보완 매개 변수 로 할 수 있다.옵션-j 는 명령 에 전달 하 는 매개 변수 로 작업 이름 을 정의 할 수 있 습 니 다.다음 과 같 습 니 다.
$ jobs
[1]- Stopped cat
[2]+ Stopped sed 'p'
$ complete -j ./list_job_attrib.sh
$ ./list_job_attrib.sh [TAB][TAB]
cat sed
백 스테이지 작업 에 대해 서 는 리 눅 스 백 스테이지 작업 의 예 를 참고 하여 백 스테이지 작업 을 어떻게 관리 하 는 지 알 수 있 습 니 다. 6.접두사 와 접미사 가 있 는 완성
보완 기능 은 실제 보완 내용 에 접두사 와 접 두 사 를 정의 할 수 있 습 니 다.아래 의 예 에서 listjob_attrib.sh 는 보완 내용 의 접두사 와 접 두 사 를 정의 합 니 다.
$ jobs
[1]+ Stopped cat
$ complete -P '">' -S '<"' ./list_job_attrib.sh
$ ./list_job_attrib.sh [TAB][TAB]
$ ./list_job_attrib.sh ">cat<"
7.제 외 된 파일 이름과 디 렉 터 리 이름 보완 스 크 립 트 실행 이 완료 되면 출력 디 렉 터 리 는 다음 과 같 습 니 다.
$ cd output/
$ ls
all_calls.txt incoming_calls.txt outgoing_calls.txt missed_calls.txt
parser_mod.tmp extract.o
위 와 같이 ls 명령 의 보완 을 원한 다 면.tmp 와.o 파일 을 무시 합 니 다:
$ export FIGNORE='.tmp:.o'
$ complete -f -d ls
$ cd output
$ ls [TAB][TAB]
all_calls.txt incoming_calls.txt outgoing_calls.txt missed_calls.txt
FIGNORE 는 제거 할 파일 이름 접 두 사 를 자동 으로 보완 하 는 환경 변수 입 니 다. 8.IFS 변수 분할 문자열 을 통 해 보완 값 얻 기
-W 옵션 을 통 해 완성 값 목록 을 정의 한 다음 IFS 환경 변 수 를 통 해 구분 할 수 있 습 니 다.절 분 된 결 과 는 변 수 를 펼 치고 보완 으로 표 시 됩 니 다.
$ export IFS=" "
$ complete -W "bubble quick" ./sort_numbers.sh
$ ./sort_numbers.sh [TAB][TAB]
bubble quick
위 에서 설명 한 바 와 같이 문자열 은 IFS 구분자 로 나 누 면 내 장 된 변 수 는 변수 값 으로 펼 쳐 지기 때문에 다음 과 같이 변 수 를 사용 할 수 있 습 니 다.
$ echo $SORT_TYPE1
bubble
$ echo $SORT_TYPE2
quick
$ complete -W "$SORT_TYPE1 $SORT_TYPE2" ./sort_numbers.sh
$ ./sort_numbers.sh [TAB][TAB]
bubble quick
9.함 수 를 써 서 완성 생 성 너 는 보완 을 정의 하기 위해 함 수 를 도입 할 수 있다.-F 옵션 을 사용 하여 함수 이름 을 complete 명령 에 전달 하고 함수 생 성 보완 내용 을 실행 합 니 다.예 를 들 어 함 수 는 다음 과 같다.
_parser_options()
{
local curr_arg;
curr_arg=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -W '-i --incoming -o --outgoing -m --missed' -- $curr_arg ) );
}
위 함수 에서:1.COMPREPLY:이 배열 은 TAB 를 누 르 면 나타 나 는 결 과 를 제어 합 니 다.
2.COMP_WORDS:이 배열 은 명령 행 이 입력 한 단 어 를 포함 합 니 다.
3.COMP_CWORD : COMP_WORDS 배열 의 색인 을 사용 하여 명령 행 이 접근 할 수 있 는 단어 위 치 를 구분 합 니 다.
4.copgen:-W 기반$currentarg 가능 한 보완 및 매개 변 수 를 제공 합 니 다.
이 함 수 는 parseroption 파일 에서 source 명령 을 통 해 가 져 옵 니 다:
$ source parser_option
이 함 수 를 parser.pl 스 크 립 트 와 연결 합 니 다:
$ complete -F _parser_options ./parser.pl
$ ./parser.pl [TAB][TAB]
-i --incoming -o --outgoing -m --missed
위 와 같이 parser.pl 의 옵션 은 함수parser_options()가 생 성 했 습 니 다. 알림:보기/etc/bashcompletion 은 더 많은 프로 그래 밍 가능 한 보완 함 수 를 알 아 보 려 고 합 니 다.
10.첫 번 째 규칙 이 결 과 를 만 들 지 않 았 을 때 두 번 째 규칙 을 사용한다.
정 의 된 완성 규칙 이 일치 하 는 것 을 만 들 지 않 았 을 때-o 옵션 을 사용 하여 완성 을 만 들 수 있 습 니 다.
$ complete -F _count_files -o dirnames ./countfiles.sh
위 와 같이.../countfiles.sh 로 정 의 했 습 니 다count_files 완성 함수.하면,만약,만약...count_files()함수 가 일치 하 는 것 을 만 들 지 않 으 면 디 렉 터 리 완성 을 촉발 합 니 다.
$ ls
countfiles.sh dir1/ dir2/ dir3/
$./countfiles.sh [TAB][TAB]
dir1 dir2 dir3
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바이너리 파일cat 또는tail, 터미널 디코딩 시 처리 방법cat으로 바이너리 파일을 보려고 할 때 코드가 엉망이 되어 식은땀이 났다. 웹에서 스크롤된 정보의 처리 방법과alias의 설정을 요약합니다. reset 명령을 사용하여 터미널을 재설정합니다.이렇게 하면 고치지 못하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.