Bash
替換 Bash 腳本的兩個步驟: cd ./some_dir, ls -al?
我想編寫一個 bash scipt,它將更改為目標目錄並列出新目錄的內容,這一切都是一步完成的。它將替換我經常連續使用的兩個命令:
- cd ./some_directory
- ls -al
執行腳本後,我的目前目錄會改變,並且 ls -al 會顯示目錄列表。
cdl ./some_directory
這可能嗎?
您不能使用 shell 腳本執行此操作,因為腳本在新的 shell 中執行並且退出腳本會退出 shell 並“忘記”目錄更改。例如,請參閱更改目前目錄的腳本(cd,pwd)(站點上的某處可能有更詳細的答案)。
您需要改用一個函式:
cd1() { cd "$@" ls -al }
另一個選項(在您的 .bashrc 中):
PROMPT_COMMAND='if [[ "$PWD" != "$_promptPWD" ]]; then ls -al; _promptPWD=$PWD; fi' _promptPWD=$PWD
ls
如果您更改了目錄,它會與 bash 的 PROMPT_COMMAND 功能掛鉤,讓它為您執行。缺點是:
- 需要修補到任何現有的 PROMPT_COMMAND(如果有)
- 使用另一個變數 (
_promptPWD
)使環境混亂好處是您可以繼續
cd
正常輸入,而無需輸入不同的內容來獲得ls
行為。