1、自動(dòng)補(bǔ)全是Bash Shell的功能,相關(guān)的命令(compgen、complete、compopt)
創(chuàng)新互聯(lián)建站擁有一支富有激情的企業(yè)網(wǎng)站制作團(tuán)隊(duì),在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)深耕十余年,專業(yè)且經(jīng)驗(yàn)豐富。十余年網(wǎng)站優(yōu)化營(yíng)銷經(jīng)驗(yàn),我們已為1000+中小企業(yè)提供了成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)解決方案,按需網(wǎng)站制作,設(shè)計(jì)滿意,售后服務(wù)無憂。所有客戶皆提供一年免費(fèi)網(wǎng)站維護(hù)!
2、complete實(shí)例
創(chuàng)建hello_complete,內(nèi)容:
complete -F _hello_complete_func hello.sh
_hello_complete_func ()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts="help usage version"
if [[ ${cur} == * ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
fi
}
3、source hello_complete讓補(bǔ)全的參數(shù)生效。
4、創(chuàng)建hello.sh
#!/bin/sh
echo "hello world"
5、./hello.sh [TAB][TAB]
help usage version
6、不用complete簡(jiǎn)單的提醒需要輸入?yún)?shù)
#!/bin/sh
str=$1
if [[ $1 == '' ]];then
echo "Usage: $0 help|version"
exit 0;
fi
echo "$str"
在 Linux 命令行中,當(dāng)輸入字符后,按Tab 鍵,Shell 就會(huì)列出以這些字符開頭的所有可用命令,如果只有一個(gè)命令匹配到,按一次 Tab 鍵就自動(dòng)將這個(gè)命令補(bǔ)全。
如果輸入pass,此時(shí)按 Tab 鍵,因?yàn)橐詐ass開頭的命令只有passwd這個(gè)命令, Shell 就會(huì)自動(dòng)補(bǔ)全 passwd 命令。
另外如果輸入的字符匹配多個(gè)命令則會(huì)列出所有可用的命令,比如,如果輸入do,此時(shí)按 Tab 鍵 Shell 就會(huì)自列出可用的命令。
但是系統(tǒng)自帶的命令補(bǔ)全功能有限,自動(dòng)補(bǔ)全功能僅限于命令和文件名。
可以安裝 Bash 命令補(bǔ)全增強(qiáng)軟件包 bash-completion來實(shí)現(xiàn)更多命令的補(bǔ)全。
以Centos為例
直接通過yum命令安裝
bash-completion版本信息
配置命令補(bǔ)全
命令補(bǔ)全的腳本存放在/usr/share/bash-completion/completions/目錄,可以在這個(gè)目錄查看支持增強(qiáng)補(bǔ)全功能的命令。
再試試輸入docker命令后按tab鍵:
可以看到后續(xù)可用命令的提示,媽媽再也不用擔(dān)心我記不住命令了。
同樣對(duì)于kubenetes也可以實(shí)現(xiàn)命令的自動(dòng)補(bǔ)全和提示:
如果是在安裝bash-completion之后安裝git是不能自動(dòng)命令補(bǔ)全,需要手動(dòng)進(jìn)行一些配置。
git安裝之后文檔里會(huì)有g(shù)it-completion.bash文件
安裝完git之后重新source一下bash-completion
看看配置之后的效果
如果覺得有用記得收藏點(diǎn)贊
在Linux系統(tǒng)中,輸入一個(gè)命令,按一次TAB鍵會(huì)補(bǔ)全命令,按兩次TAB鍵,就會(huì)列出所有以輸入字符開頭的可用命令。這個(gè)功能被稱作命令補(bǔ)全。默認(rèn)情況下,bash命令行可以自動(dòng)補(bǔ)全文件或目錄名稱。
要讓可編程命令補(bǔ)全功能在你的終端起作用 ,你只需要執(zhí)行/etc/bash_completion即可。如果你沒有找到/etc/bash_completion文件,那么你只需要通過使用apt-get命令來安裝bash_completion 包即可。
用法示例:
在輸入write命令之后,如果你按兩次TAB按鍵,自動(dòng)補(bǔ)全功能會(huì)提供執(zhí)行write操作的列表。
在Linux的終端中輸入tab鍵時(shí),有時(shí)會(huì)出現(xiàn)命令不能補(bǔ)全的情況,此時(shí)有一種原因是bash錯(cuò)誤。
使用 ls -l /bin/sh 命令發(fā)現(xiàn)
/bin/sh - /bin/dash
dash是一個(gè)不同于bash的Shell,它主要為了執(zhí)行腳本而出現(xiàn),而不是交互,它速度更快,但功能比bash要少的多。語法嚴(yán)格遵守POSIX標(biāo)準(zhǔn)。
通過命令 ln -sf bash /bin/sh 可以將dash改成bash。此時(shí)問題可以解決。
Ubuntu系統(tǒng)在某些情況下,apt-get 不能補(bǔ)全相關(guān)命令,可以通過修改/etc/bash.bashrc文件的相關(guān)行,把默認(rèn)的#號(hào)去掉即可。
if [ -f /etc/bash_completion ]; then
/etc/bash_completion
fi
重新登錄Shell即可。
此處參考: .
本文出自 “ 低調(diào)的前進(jìn) ” 博客,請(qǐng)務(wù)必保留此出處
一方面文件實(shí)質(zhì)都存放在根目錄下,樹狀目錄,所以tab可以在當(dāng)前指定目錄下尋找i節(jié)點(diǎn)信息補(bǔ)齊路徑或者文件名; 另一方面tab可以去查詢環(huán)境變量設(shè)置里面/etc/bin的命令文件,補(bǔ)齊命令。
Linux下TAB命令補(bǔ)全是bash的功能。putty登陸linux后需要切換到bash shell,先查看系統(tǒng)可用的shell種類:
[oracle@zeng?~]$?chsh?-l
/bin/sh
#這個(gè)不能使用tab補(bǔ)全命令
/bin/bash?
#修改為這個(gè)bash?shell即可
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
修改當(dāng)前的shell
[oracle@zeng?~]$?chsh?
Changing?shell?for?oracle.
Password:?
New?shell?[/bin/bash]:?/bin/bash
Shell?changed.
分享文章:linux命令補(bǔ)全設(shè)置 linux命令行補(bǔ)全
網(wǎng)址分享:http://muchs.cn/article18/hgcpgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、Google、品牌網(wǎng)站建設(shè)、企業(yè)建站、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)