google code-beautifer

星期六, 12月 18, 2010

GUI 的檔案管理跟終端機相互運作

就算有在用GUI 的檔案管理軟體,程式設計師常常會需要在終端機下跳到某個檔案所在的子目錄去工作,krusader 可已有一行工作列輸出入,不過那不好用,emacs 也可以開dird 管理檔案也沒錯,但是用到一些東西管理檔案還是用krusader 或是nautilus 比較直覺。所以我需要一個方法把GUI 的檔案管理程式中的檔案icon 用滑鼠拉到終端機裡,就可以讓終端機裡的shell 跳到對應子目錄的方法。目前還沒看到拖拉icon 支援手勢的用法,。所以得自己來。

一般Linux 系統對桌面支援有設定好的話,不管是gnome 或kde的程式如gnome-commander,nautilus 或krusader,只要把檔案icon 用滑鼠拉到終端機裡,就可以讓終端機顯示該檔的完整路徑名。只要自己設定一個程式,去處理後面跟著拉進來的某個檔案icon對應所在的子目錄,這樣就可以了。bash 下有dirname 這個命命是可以傳回檔案的完整目錄路徑名。但是直接用
alias fu='a=`dirname \$1` ;cd $a'
這樣的方式會出問題,我也不太清楚為何類似的方式不去動到cd $a的方式卻就沒事?可能是Eval 出問題。後來我找到可改用所謂shell function 的方式,其實跟alias 的方式很接近,。但是一般書都沒提這個用法。
fu () {
a=`dirname $1`
cd $a
}
這樣就可以了。但是alias 問題的源頭我一時還時間去追溯 。function 跟變數很像,用set 跟unset 來設定。(其實照上面寫法就好,是不用去管什麼set 跟unset的其他細節)

每次都用的話,可以把這定義寫到 ~/.bash_profile 或 /etc/profile 下。我在想等gnome-shell穩定了,配合某種手勢來作這件事是最好不過的用法。

沒有留言: