我在Linux環境中工作,需要爲不同的工作區域加載某些模塊。這些由單獨的文件系統目錄分隔。Linux終端:更改目錄時運行命令
我想知道是否有一種簡單的方法來進入目錄時運行不同的1行命令。我對使用的shell的類型很靈活,但我目前使用C Shell。
我在Linux環境中工作,需要爲不同的工作區域加載某些模塊。這些由單獨的文件系統目錄分隔。Linux終端:更改目錄時運行命令
我想知道是否有一種簡單的方法來進入目錄時運行不同的1行命令。我對使用的shell的類型很靈活,但我目前使用C Shell。
如果你正在使用bash,我建議你創造這樣的功能:
function custom_cd() { custom_command $1; cd $1; }
alias cd='custom_cd'
這裏您自定義命令可以是任何東西,將執行根據特定的命令到您輸入的目錄。
之後聲明的別名確保鍵入'cd'將調用該函數和真正的cd命令。
編輯:您需要一個例子
function custom_cd() {
if [ -z "$1" ];
then
target=~
else
target=$1
fi
target=${target%/}
parent=$(dirname `readlink -f $target`)
grand_parent=`dirname $parent`
script=$grand_parent/`basename $target`.sh
if [ -x $script ];
then
`$script`
fi
cd $1
}
說明:
我們創建了包含要進入目錄的父變量。 然後我們檢索父母的父母。 然後我們在祖父目錄中創建腳本名稱。
然後檢查該文件名的可執行性,如果是,執行該腳本,最後執行真正的cd命令。
小心在別名之前定義函數,否則會導致無限遞歸!
一個相當模糊的問題,但我認爲alias
命令可以幫助你:
alias cd='echo "hello $1"'
這將顯示hello <arg given to cd>
當您嘗試CD地方
我想這是相當含糊的。我需要爲整個文件系統的一小部分運行一個不同的命令。 例如,如果我想進入目錄/ home/user/a,那麼我想運行/home/a.csh。 然後,如果我輸入/ home/scripts/b我會運行/home/b.csh – devshans
我給你的是一個啓動器。例如,如果您使用gnome或其他文件管理器,它將不起作用。我不知道在更改目錄時可以自定義執行的一些觸發器。也許你可以掛鉤到與安全策略相關的東西 –
您可以創建一個函數來運行這些特殊命令。
run_command() {
case `pwd` in
"/path/to/dir1")
...
;;
"/path/to/dir2")
...
;;
...
esac
}
然後,你可以用cd
與其他函數一起調用該函數。
cd2() {
cd $1
run_command
}
cd2 /path/to/somewhere
爲了安全起見,在函數中使用'builtin cd'來確保你沒有打到別名。實際上,如果使用「內建」命令,則不需要別名,可以將函數命名爲「cd」。 –
@glennjackman不知道內置,我懷疑這樣的東西存在,很好! – SirDarius
這很好。我用這種風格實現了一些移植到C shell的東西,但也會製作一個Bash版本。謝謝! – devshans