가장먼서 해야될 말은 단순하게 터미널 콘솔에서 자동완성을 하려면 알파벳 몇개를 입력한 다음에 탭키를 '⇔' 키를 누르면 되며 이와 같은 소스는 홈 폴더의 'bashrc'에 구성되어 있다. 

그리고 원리는 간단하다.  
 
사용자가 입력한 스펠링을 기준으로 매칭되는 파일 이름을 프로세스가 스스로 찾아 내는 것이다.

한데 분명 파일이 있는데에도 자동완성 기능이 동작하지 않는다면 같은 스펠링을 가진 다른 파일들이 존재하기 때문이다.

그런 간단히 알아 보도록하자. 



-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>


user@user-test:~$ ls /usr/bin/se (까지만 타이핑 하고 엔터를 누르지 말고 탭'⇔'키를 여러번 눌러보자.) 


seahorsesensors-conf-convert

seapt   sepolgen-ifgen

seaudit-report    sepolgen-ifgen-attr-helper

sebstartseq

sechecker    serialver

secon   servertool

secutil sesearch

sediff  session-installer

sediffx session-migration

seesessreg

segetlogsetarch

seinfo  setfacl

select-default-iwrap   setfattr

select-editorsetkeycodes

semodule_depssetleds

semodule_expand   setlogcons

semodule_linksetmetamode

semodule_package  setpci

semodule_unpackagesetprop

sensible-browser  setreg

sensible-editor   setsid

sensible-pager    setterm

sensors setxkbmap


->  위와 같이 'se' 스펠링이 들어간 파일들이 전부 출력 된다.  (여러번 누르는 이유는 같은 스펠링을 가진 파일들이 존재 하기 때문이다.)


// 그렇다면 이번에는 'ls /usr/bin/sese' 까지 입력하고 탭'⇔'키를 눌러보자.


user@user-test:~$ ls /usr/bin/sese  ⇔  ls /usr/bin/sesearch   (자동완성 기입이 전부 이루어 진다. 'sese' 구문자가 명령이 하나밖에 없기 때문)


// 그렇다면 이번에는 's' 까지 입력하고 탭'⇔'키를 눌러보자.


user@user-test:~$ ls /usr/bin/s (⇔ 탭키 여러번)

Display all 239 possibilities? (y or n)


->  '그 s 문자가 포함된 후보 수가 많기 때문에 239가지의 파일들을 전부 보여줘도 될지를 사용자에게 물어본다.'




터미널에서 이와 같은 자동완성은 프로그램 명령어의 응용 에서도 이루어진다.

-- 터미널 텍스트 박스 (Terminal text box) --

<Drag와 복사가 가능합니다.>


user@user-test:~$ apt i (⇔ 탭키 apt install ) 


-> 사용자가 하려하는 명령어 인자를 자동으로 완성 한다. 

마찬가지 여기서도 만약 해당 스펠링에 대한 예비 인자들이 많을 경우 탭키를 여러번 누르면 사용 가능한 출력 된다.


user@user-test:~$ apt (⇔ 탭키 여러번)

autoclean     depends       help          purge         showsrc
autoremove    dist-upgrade  install       rdepends      source
build-dep     download      list          remove        update
changelog     edit-sources  moo           search        upgrade
clean         full-upgrade  policy        show    
-> 사용 가능한 명령 인자들이 전부 출력 된다.



하지만 위와 같은 프로그램 명령어 인자의 자동완성 기능은 전부 되는 것은 아니다. 
각 프로그램 개발자가 해당 소스를 구성 하여 설치 되겠금 프로그램을 설계 했을 경우에만 해당된다. 


도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.


그리고 글에 부족한 점이 있거나 틀린점이 있는 것 같다면 꼭 댓글로 알려 주시면 감사 하겠습니다.



+ Recent posts