如何在Linux中輕松修正拼寫(xiě)錯(cuò)誤的Bash命令?
我知道你可以按下向上箭頭來(lái)調(diào)出你運(yùn)行過(guò)的命令,然后使用左/右鍵移動(dòng)到拼寫(xiě)錯(cuò)誤的單詞,并更正拼寫(xiě)錯(cuò)誤的單詞,***按回車(chē)鍵再次運(yùn)行它,對(duì)嗎?可是等等。還有一種更簡(jiǎn)單的方法可以糾正 GNU/Linux 中拼寫(xiě)錯(cuò)誤的 Bash 命令。這個(gè)教程解釋了如何做到這一點(diǎn)。請(qǐng)繼續(xù)閱讀。
在 Linux 中糾正拼寫(xiě)錯(cuò)誤的 Bash 命令
你有沒(méi)有運(yùn)行過(guò)類(lèi)似于下面的錯(cuò)誤輸入命令?
$ unme -r
bash: unme: command not found
你注意到了嗎?上面的命令中有一個(gè)錯(cuò)誤。我在 uname
命令缺少了字母 a
。
我在很多時(shí)候犯過(guò)這種愚蠢的錯(cuò)誤。在我知道這個(gè)技巧之前,我習(xí)慣按下向上箭頭來(lái)調(diào)出命令,并轉(zhuǎn)到命令中拼寫(xiě)錯(cuò)誤的單詞,糾正拼寫(xiě)錯(cuò)誤,然后按回車(chē)鍵再次運(yùn)行該命令。但相信我。下面的技巧非常易于糾正你剛剛運(yùn)行的命令中的任何拼寫(xiě)錯(cuò)誤。
要輕松更正上述拼寫(xiě)錯(cuò)誤的命令,只需運(yùn)行:
$ ^nm^nam^
這會(huì)將 uname
命令中將 nm
替換為 nam
。很酷,是嗎?它不僅糾正錯(cuò)別字,而且還能運(yùn)行命令。查看下面的截圖。
當(dāng)你在命令中輸入錯(cuò)字時(shí)使用這個(gè)技巧。請(qǐng)注意,它僅適用于 Bash shell。
額外提示:
你有沒(méi)有想過(guò)在使用 cd
命令時(shí)如何自動(dòng)糾正拼寫(xiě)錯(cuò)誤?沒(méi)有么?沒(méi)關(guān)系!下面的技巧將解釋如何做到這一點(diǎn)。
這個(gè)技巧只能糾正使用 cd
命令時(shí)的拼寫(xiě)錯(cuò)誤。
比如說(shuō),你想使用命令切換到 Downloads
目錄:
$ cd Donloads
bash: cd: Donloads: No such file or directory
哎呀!沒(méi)有名稱(chēng)為 Donloads
的文件或目錄。是的,正確的名稱(chēng)是 Downloads
。上面的命令中缺少 w
。
要解決此問(wèn)題并在使用 cd
命令時(shí)自動(dòng)更正錯(cuò)誤,請(qǐng)編輯你的 .bashrc
文件:
$ vi ~/.bashrc
***添加以下行。
[...]
shopt -s cdspell
輸入 :wq
保存并退出文件。
***,運(yùn)行以下命令更新更改。
$ source ~/.bashrc
現(xiàn)在,如果在使用 cd
命令時(shí)路徑中存在任何拼寫(xiě)錯(cuò)誤,它將自動(dòng)更正并進(jìn)入正確的目錄。
正如你在上面的命令中看到的那樣,我故意輸錯(cuò)(Donloads
而不是 Downloads
),但 Bash 自動(dòng)檢測(cè)到正確的目錄名并 cd
進(jìn)入它。
Fish 和 Zsh shell 內(nèi)置的此功能。所以,如果你使用的是它們,那么你不需要這個(gè)技巧。
然而,這個(gè)技巧有一些局限性。它只適用于使用正確的大小寫(xiě)。在上面的例子中,如果你輸入的是 cd donloads
而不是 cd Donloads
,它將無(wú)法識(shí)別正確的路徑。另外,如果路徑中缺少多個(gè)字母,它也不起作用。