터미널 자동 완성이 왜 때때로`services` 명령에 대해 아무것도 제안하지 않습니까?


17

때로는 터미널에 명령을 입력하면 명령이 잘못되어도 터미널의 자동 완성 기능이 작동하지 않습니다.

예를 들어 sudo service vsftpd statussudo 및 service에 문제가 없습니다. sud + tabterminal 을 입력 하면 sudo를 제안 하거나 servi + tabterminal을 입력 하여 서비스를 완료하십시오 . 그러나 vsftpd의 경우 제안이 없습니다. "터미널, 어떤 제안이라도 말 해주세요 !!"라고 말하는 방법이 있습니까?

답변:


28

자동 완성의 정도는 bash-completion패키지 의 셸 스크립트가 얼마나 잘 작동하는지에 따라 달라집니다.

Ubuntu 14.04에서 완료를 처리하는 스크립트 service는에 /usr/share/bash-completion/bash_completion있습니다. 그것은에서 파일로 서비스 이름을 찾습니다 /etc/rc.d/init.d하고 /etc/init.d, 그리고 출력에 systemctl list-units --full --all.

그러나 설치 vsftpd패키지 것은에 파일을 넣어하지 않습니다 /etc/init.d이 되었기 때문에, systemd-ified; 구성 파일을에 넣습니다 /etc/systemd/system/vsftpd.service. systemctl list-units현재 Ubuntu에 systemctl명령이 포함되어 있지 않다면 해당 파일을 찾을 수 있습니다 .

따라서 현재에 대한 자동 완성 기능은 얻지 service vsftpd않지만 구성 파일이에 있기 때문에 대부분의 다른 서비스에는 자동 완성 기능 이 제공됩니다 /etc/init.d.


이 답변을 찾는 사람들을 위해 : 완료 찾기 서비스 (및 찾기 / 파싱 시간)는 항상 14.xx, 16.xx 18.xx에서 문제였습니다. 좋은 예 : sudo systemctl (상태 또는 중지) lightd(TAB / 더블 탭) ( 활성 / 실행 여부에 관계없이 완전한 'lightdm.service'를 의미합니다.이 svc는 단위 출력과 /etc/init.d내 컴퓨터에 있습니다. 다른 서비스에서도 동일한 문제가 발견되었습니다. 완료시 오랜 시간이 걸리는 버그 (?)도 있습니다. 저에게 경고음이 울리기 전에 10 초 이상 앉아있는 것을 보았습니다. github.com/systemd/systemd/issues/7185
bshea

9

가능한 제안이 여러 개인 경우 제안 tab이 생성되지 않습니다. tab tab(이중 탭)을 사용하면 가능한 모든 제안 목록이 생성됩니다.


vsftpd에서는 tab + tab이 작동하지 않습니다. 귀하와 Rinzwind의 제안은 예를 들어 su + tab + tab과 같습니다. 그러나 vsftpd는 작동하지 않습니다.
Mohammad Reza Rezwani

당신은 먼저 sudo apt-get install vsftpd로 작은 프로그램 vsftpd를 설치 한 다음 탭 + 탭을 시도해 볼 수 있습니다
Mohammad Reza Rezwani

2
매개 변수의 경우 tab + tab이 작동하지 않습니다. 에서 sudo service vsftpd status, vsftpd는 서비스의 매개 변수이므로 이중 탭에서는 찾을 수 없습니다. 이 시점에서 OP가 정확합니다.
Jos

2
@Jos 그러나 같은 다른 서비스 apache2networking자동 완성. 그것들은 어떻게 다릅니 까?
Dan

@ dan08 나는 정정했다. 또한 sudo service networking tab tab제공합니다 force-reload reload restart start stop. 생각보다 훨씬 잘 작동합니다.
Jos

6

vsftpd에는 아마도 둘 이상의 옵션이있을 것입니다. tab가능성을보기 위해 두 번.

예 : liwith tabtabshows :

libnetcfg          line               lintian-info       lispmtopgm
libreoffice        linguist           linux32            listres
lightdm            link               linux64            
lightdm-session    lintian            linux-boot-prober  

4

당신은 당신의 자신을 만들 수 있습니다!

예 : complete -f -r -c su -d 'Username' -a '(cat /etc/passwd|cut -d : -f 1)'당신이 가진 것보다 bash에 넣고 sutab / tab을 누르면 모든 사용자에게 제공됩니다. 여기를 참조 하십시오


0

나는 것으로 나타났습니다 systemctl list-units --full --all자동 완성이되지 않도록, 장애인 서비스를 나열하지 않습니다

# check if enabled
systemctl is-enabled <service_name>
# enable
systemctl enable <service_name>

0

services 명령은 "systemctl list-units --full --all"에 의존하며이 문제가 발생했는지 확인할 수 있도록 시작할 수 없거나 위와 같이 비활성화 된 서비스는 나열하지 않습니다.

systemctl status <service_name>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.