기본적으로 파일시스템은 프로그램 자체에 if문이나 case문으로 인자 ($1~10) 값을 처리하는 자동완성을 콘솔 밖에서
bash가 자동으로 잡아내지는 못한다.
그와 같은 응용 프로그램에 사용되는 자동완성 기능은 파일시스템의 '/etc/bash_completion'이 담당
하며 '/etc/bash_completion.d/~' 폴더를 들여다 보면 해당 프로그램에 대한 자동완성 기능이 있는 쉘
구축 파일들을 볼 수가 있다.
해당 파일들은 '/etc/bash_completion'가 처리 할 수 있는 함수들이 있으며 소크 코드의 형태를
이해하면 여러분도 직접 만든 응용 프로그램에 대한 자동완성 인자 값 추가 기능을 파일 시스템에 도입 할 수가
있다.
자 그렇다면 쇠뿔도 단 김에 빼라고 곧바로 소스코딩에 들어가 보자.
먼저 실행 가능한 $PATH에 실행 가능한 프로그램이 있어야 한다.
그래서 간단한 shell 프로그램을 설계해 보자.
위는 인자 쉘에서 인자값을 인지하여 출력하는 간단한 대화형 출력 프로그램 이다.
완성 되었으면 간단하게 테스트를 해보자.
-- 터미널 텍스트 박스 (Terminal text box) --
<Drag와 복사가 가능합니다.>
// 파일명을 'friend'로 바꾼다음 실행을 가능케 속성을 추가한다.
user@user-test:~$ mv friend.sh frined && chmod +x friend
user@user-test:~$ ./friend hi
hello
user@user-test:~$ ./friend bye
see you tomorrow~!
// 되었으면 $PATH로 복사 한다.
user@user-test:~$ sudo cp friend /usr/bin/
// 테스트 해본다.
user@user-test:~$ friend
what?
자 이제 간단한 인자값 인지 프로그램을 만들었으니 이제는 이 프로그램을 자동 완성 시켜주는 소스를 설계해
보자.
설계가 끝났으면 만든 파일을 '/etc/bash_completion.d' 로 복사하자.
-- 터미널 텍스트 박스 (Terminal text box) --
<Drag와 복사가 가능합니다.>
user@user-test:~$ sudo cp friend.bash_completion /etc/bash_completion.d
// 그리고 테스트 해보자.
// '/etc/bash_completion' 를 호출해주는 '~/.bashrc'를 로딩 한다.
user@user-test:~$ source ~/.bashrc
user@user-test:~$ friend '⇔'(탭키 연타)
hi bye
> 자동 완성이 성공했다.
그리고 중요한 friend.bash_completion 파일의 소스코드 구조는 다음 그림과
같다.
도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.
그리고 글에 부족한 점이 있거나 틀린점, 혹은 틀린 부분이 있는 것 같다면 꼭 댓글로 알려 주시면 감사 하겠습니다.
'프로그래밍 > BASH' 카테고리의 다른 글
[리눅스 awk 프로그래밍] 가이드2 - 텍스트 파일의 최상위 행에 문자열 추가하기 (0) | 2016.12.23 |
---|---|
유닉스&리눅스에서 awk를 활용한 텍스트 파일 편집 프로그래밍 가이드 1 - 원하는 열만 출력 (0) | 2016.12.19 |
리눅스를 위한 리눅스 콘솔(터미널) 사전 'ldic' 버전 0.1-2 개발 완료 및 배포 (0) | 2016.11.03 |
[시스템 이론] 파이썬의 컴파일에 관하여... (0) | 2016.10.09 |
BASH 쉘 프로그래밍으로 인공지능 '가위, 바위, 보' 게임을 만들어 보자. [리눅스] (0) | 2016.09.18 |