功能我想創建別名這會做這樣的事情要創建它接受與參數
ssh -i {location of file} [email protected]
sf() {
ssh -i ~/.ssh/key [email protected]$1
}
alias ssf=sf
的bash的別名,我必須
ssf host
如果我這樣做,我的自動完成(zsh,iterm)將不起作用。正在考慮在接受參數的別名中調用函數。任何幫助?
功能我想創建別名這會做這樣的事情要創建它接受與參數
ssh -i {location of file} [email protected]
sf() {
ssh -i ~/.ssh/key [email protected]$1
}
alias ssf=sf
的bash的別名,我必須
ssf host
如果我這樣做,我的自動完成(zsh,iterm)將不起作用。正在考慮在接受參數的別名中調用函數。任何幫助?
一種快速,簡便的方法來創建一個接受參數將類似於此僞代碼的東西別名:
#!/bin/bash
declare -r -a n=('$1' '$2' '$3' '$4' '$5')
function main() {
command -i ${n[0]} -f ${n[1]} --another-arg ${n[2]}
}
main
如果我想這個腳本提供給所有用戶,我通常sudo su
將登錄爲根,那麼我將使文件可執行並將腳本文件保存到/usr/bin/
目錄。這將允許您使用腳本的名稱作爲終端命令。在root用戶的情況下,如果只希望root用戶有權訪問,請將適當的權限應用於腳本chown root script.sh
。如果您想要自定義命令名稱來調用該腳本,請將該腳本命名爲您希望使用的別名。
的declare -r -a
是創建一個只讀數組的語法。 n=
是數組變量,它將爲您使用該工具的每個參數保存值。 ('$1''$2''$3''$4''$5')
是參數變量,最多爲5
參數。 $1
將是第一個參數,$2
將是下一個,並且是最後一個。在使用腳本別名時,這些參數變量中的每一個都會保存您在命令行中輸入的值。
接下來,我們有main()
函數,它將包含您希望運行的命令。在這個main()
函數裏面,你可以看到括號裏面帶有括號的n
變量,例如${n[0]}
。這是什麼,正在呼叫您的n
陣列的價值。 bash中的數組值將以0
開頭的數字調用,而不是以1
開頭。所以0
是第一個值,或者是$1
和1
是第二個值,或者是$2
等等。
用於以同樣的方式創建別名另一種方法是編輯.bashrc
文件您登錄下的用戶。因此,根據用戶,您可以:
輸入cd命令並按回車鍵以更改到您的主目錄,其中.bashrc位於當前用戶的位置。
cd
然後使用nano,打開.bashrc。
nano .bashrc
滾動到文件底部,添加以下內容:
alias your_alias="bash path/to/your/bash/script.sh'
一旦別名設置,在ctrl+x
類型保存文件。納米將提示您確認。只需輸入y
即可確認保存。接下來,您可以重新加載.bashrc
,以便您可以立即使用該命令,也可以重新啓動,以便在下次啓動時可用。要重新加載.bashrc
您將執行以下操作:
source ~/.bashrc
而那就是它!您的別名已準備就緒。現在只需使用別名作爲正常的CLI工具命令,在你需要的時候添加你的參數,然後按回車鍵,你的腳本就可以正常工作。
這些方法可能是最有效的還是最安全的使用自己的別名。不過,他們應該足以讓你開始。如果有人希望添加或編輯此答案以使其更具信息性和準確性(如果不準確),請隨時進行。希望這可以幫助。
我向我們建議一個功能。 – Cyrus
自動完成功能無法正常工作。我想它看到第一個字爲ssh,然後列出所有主機。 –
@ shaileshgupta:那麼你的要求是什麼? – Inian