Viele Shells und Befehlsaufforderungen, einschließlich ** bash **, bieten ** Vervollständigung ** (Vervollständigung). Diese Funktion funktioniert unter Windows und wird von den meisten Benutzern verwendet.
Beispiel für die Vervollständigung des Dateinamens durch die Funktion zur Vervollständigung der Eingabe
$ ls
sample.txt test1.txt test2.txt test3.txt
$ cat s[TAB]Tasteneingabe
$ cat sample.txt ★ Drücken Sie die TAB-Taste, um den übereinstimmenden Dateinamen zu vervollständigen
** Ab etwa RHEL6 (2010s-) kann es nicht nur für Dateinamen und Verzeichnisnamen, sondern auch für die Eingabe von Befehlsoptionen verwendet werden. ** </ font>
1-2. TL;DR
Ich benutze die RHEL7-Serie seit einigen Jahren, aber ich benutze die RHEL5 / RHEL6-Serie schon lange. Das Verwirrende an RHEL7 ist, dass Sie den Befehl service
oder den Befehl chkconfig
nicht verwenden können (einige können mit kompatiblen Funktionen verwendet werden).
Da es sich um einen Befehl handelt, der häufig beim Aufbau und Betrieb von Systemen verwendet wird, handelt es sich in der Regel um "Was war" chkconfig --list "mit" systemctl "...".
** Die Funktion zur Vervollständigung der Eingabe der Befehlsoption ist in solchen Fällen hilfreich. ** ** **
Sie können eine Liste von Optionen anzeigen, indem Sie die "TAB-Taste" nach "systemctl" eingeben, wie unten gezeigt.
$ sudo systemctl [TAB]Tastatureingabe ★ TAB nach dem Einfügen von 1 Leerzeichen nach systemctl
add-requires hybrid-sleep reload-or-restart
add-wants is-active reload-or-try-restart
cancel is-enabled rescue
cat is-failed reset-failed
condreload isolate restart
condrestart is-system-running set-default
condstop kexec set-environment
daemon-reexec kill set-property
daemon-reload link show
default list-dependencies show-environment
delete list-jobs snapshot
disable list-sockets start
edit list-timers status
emergency list-unit-files stop
enable list-units suspend
exit mask switch-root
force-reload poweroff try-restart
get-default preset unmask
halt reboot unset-environment
help reenable
hibernate reload
Wenn die Liste angezeigt wird, ist dies diejenige. Geben Sie dann list-unit-files
ein. Die Eingabe der "TAB-Taste" ist auch während der Eingabe der Option wirksam.
$ sudo systemctl list-unit-files ★list-unit-Die TAB-Vervollständigung funktioniert auch in der Mitte von Dateien
** Jetzt habe ich keine Angst vor "systemctl"! Hmm! ** ** **
Bash-Vervollständigung ergänzt Befehlsoptionen, anstatt Datei- und Verzeichnisnamen zu vervollständigen. Wenn Sie "complete -p" eingeben und viele Zeilen angezeigt werden, können Sie davon ausgehen, dass es verfügbar ist.
Je nach Typ und Version der Linux-Distribution ist sie möglicherweise nicht im Standard-Repository enthalten.
RHEL8-Serie
$ rpm -q bash-completion
bash-completion-2.7-5.el8.noarch
RHEL7-Serie
$ rpm -q bash-completion
bash-completion-2.1-6.el7.noarch
RHEL6-Serie
$ rpm -q bash-completion
package bash-completion is not installed
Ubuntu18.04LTS
$ dpkg -l bash-completion
||/ Name Version Architecture Description
+++-==============-============-============-=================================
ii bash-completio 1:2.8-1ubunt all programmable completion for the b
Es ist ein bisschen alt, daher ist es subtil, ob es jetzt anwendbar ist, aber hier sind MacOS-Informationen.
Für RHEL 6, CentOS 6 und Oracle Linux 6 muss die Bash-Vervollständigung aus dem EPEL-Repository installiert werden. Die Vorgehensweise wird beschrieben.
$ yum repolist all | grep -i epel
epel Extra Packages for Enterprise Linux enabled: 12,586
** Wenn eine Leitung vorhanden, aber deaktiviert ist **
$ sudo yum-config-mangaer --enable epel
** Wenn es selbst keine Leitung gibt **
$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm -y
$ sudo yum list bash-completion
Loaded plugins: refresh-packagekit, security, ulninfo
Available Packages
bash-completion.noarch 1:1.3-7.el6 epel
$ sudo yum install bash-completion -y
Die Definitionsdatei für Bash-Vervollständigung befindet sich im folgenden Verzeichnis.
Wenn Sie das Verzeichnis überprüfen, finden Sie eine große Anzahl von Definitionsdateien. Befehle mit dieser Datei können optionale Eingaben ausführen.
$ ls /usr/share/bash-completion/completions/ | wc -l
454
$ ls /usr/share/bash-completion/completions/
addpart fsck.minix lvextend raw timedatectl
blkdiscard fsfreeze lvm readprofile tuned-adm
blkid fstrim lvmdiskscan rename udevadm
blockdev gapplication lvreduce renice ul
bootctl gdbus lvremove repquota umount
busctl getopt lvrename resizepart unshare
bzip2 groupadd lvresize rev useradd
cal groupdel lvs rpm userdel
cfdisk groupmod lvscan rtcwake usermod
★ Unten weggelassen
Das vorherige "systemctl" -Beispiel ergänzte die Option "list-unit-files". Andere Optionen, die mit einem Bindestrich (-
) oder einem Bindestrich ( -
) beginnen, können ebenfalls abgeschlossen werden.
$ sudo systemctl -[TAB]Tasteneingabe
-a --ignore-dependencies --quiet
--after --kill-who -r
--all -l --recursive
--before --no-ask-password --reverse
--defaults --no-block --root
-f --no-legend --runtime
--fail --no-pager -s
--failed --no-reload --signal
--force --now --state
--full --no-wall --system
--global -p -t
-h -P --type
-H --privileged --version
--help --property
--host -q
Die Anzeige dauert einige Zeit. Wenn Sie jedoch die "TAB-Taste" in der Mitte des Dienstnamens (Einheitendateiname) eingeben, können Sie eine Liste der übereinstimmenden Dienste anzeigen.
$ sudo systemctl restart sshd[TAB]Tasteneingabe
sshd@ sshd.service
sshd-keygen.service sshd.socket
** Für ssh **
In ssh können Hostnamenkandidaten aus "~ / .ssh / unknown_hosts", "~ / .ssh / config" und "/ etc / hosts" angezeigt werden.
Nach 1 Leerzeichen[TAB]Schlüssel
$ ssh [TAB]Tasteneingabe
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.5.1.35 ol7srv.dbprivatenrt01s.work01nrtvcn.oraclevcn.com ol7srv
In der Mitte des Hostnamens[TAB]Schlüssel
$ ssh ol7[TAB]Tasteneingabe
ol7ksplice
ol7srv
ol7srv2
ol7srv3
ol7srv-vip.dbprivatenrt01s.work01nrtvcn.oraclevcn.com
-o Nach Option[TAB]Schlüssel
$ ssh -o [TAB]Tasteneingabe
AddressFamily= IdentitiesOnly=
BatchMode= IdentityFile=
BindAddress= IPQoS=
ChallengeResponseAuthentication= KbdInteractive
** Alles kommt hierher. Ich möchte vorerst die "TAB-Taste" ausprobieren. ** ** **
Sie können sehen, was Sie mit jedem Befehl tun können, indem Sie die Definitionsdatei analysieren. Es ist jedoch Unsinn, sich daran zu erinnern, weil es so viele gibt.
Es ist zu beachten, dass der Befehl Optionen wie diese angeben soll, aber nicht definiert ist, wenn die Dateien und Verzeichnisse im aktuellen Verzeichnis angezeigt werden.
$ sudo yum-config-managar [TAB]Tasteneingabe
bash-completion-extras-2.1-11.el7.noarch.rpm
.bash_history
.bash_logout
.bash_profile
.bashrc
.cache/
.config/
.lesshst
sample.txt
.ssh/
Bash-Vervollständigung hat ein zusätzliches Modul, "Bash-Vervollständigung-Extras". Dies erfordert ein EPEL-Repository auch für die RHEL7-Serie.
Derzeit ist nur EPEL7 verfügbar, nicht EPEL6 und EPEL8. Selbst wenn das Suffix von el7 angehängt ist, ist es noarch. Wenn Sie es also mit wget oder yumdownloader erhalten und auf der RHEL6 / 8-Serie installieren, können Sie es verwenden.
$ sudo yum list bash-completion-extras
Loaded plugins: langpacks, ulninfo
Available Packages
bash-completion-extras.noarch 1:2.1-11.el7 ol7_developer_EPEL
RHEL7-Serie
$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y
AmazonLinux2
$ sudo amazon-linux-extras install epel -y
python
$ sudo yum install bash-completion-extras -y
$ rpm -ql bash-completion-extras |wc -l
271
$ rpm -ql bash-completion-extras
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/a2x
/usr/share/bash-completion/completions/aclocal
/usr/share/bash-completion/completions/add_members
/usr/share/bash-completion/completions/alias
/usr/share/bash-completion/completions/alternatives
/usr/share/bash-completion/completions/animate
/usr/share/bash-completion/completions/ant
/usr/share/bash-completion/completions/apropos
/usr/share/bash-completion/completions/arch
/usr/share/bash-completion/completions/arping
★ Unten weggelassen