作者Holocaust123 (一步一腳印)
看板Linux
標題Re: [問題] alias [change dir]
時間Wed Aug 31 08:42:16 2011
※ 引述《mswethan (@竹北)》之銘言:
: 每次cd 到別的目錄後,下個動作一定是ls,看一下該目錄內有哪些東西...
: 這樣子真的很麻煩..
: cd xx ls
: cd yy ls
: ...
: 我想要alias cd指令,使它做三個動作..
: 1. change dir
: 2. clear
: 3. ls
: 使用的是bash,第一個動作不曉得有沒有人知道該如何設定??
: alias cd='_____;clear;ls'
: 感謝
借標題一問
我想做到上述的功能
但唯有cd到家目錄時不列出檔案清單
我的寫法如下:
alias la='ls -FA --color=auto'
cd()
{
builtin cd "$1";
if [ "$1" != "$HOME" ]; then la; fi;
}
但這寫法有兩個問題
1.
user@local_host:~ $ cd folder_1
file_1 file_2 file_3 => 預期地顯示檔案清單
user@local_host:~/f1 $ cd ..
.bashrc .vimrc .vim .bash_profile => 不應該顯示檔案清單卻顯示了
(原因應該是".."沒被expand成$HOME的內容)
2.
user@local_host:~ $ cd folder_2
bash: cd: folder_2: No such file or directory
.bashrc .vimrc .vim .bash_profile => 不應該顯示檔案清單卻顯示了
(原因是folder_2資料夾不存在, if判斷式就成立了)
問題2比較好處理, 檢查cd的路徑是資料夾而非檔案, 且存在即可
問題1我還不知道怎麼解, 請問有什麼解法嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.31.149
→ uranusjr:改成檢查 $PWD 如何? 08/31 08:48
成功了~謝謝
if [ "$PWD" != "$HOME" ]; then la; fi;
→ bitlife:用 realpath 更好,能應付有 soft link 的情形 08/31 10:26
什麼意思?能說詳細點嗎
※ 編輯: Holocaust123 來自: 140.112.31.149 (08/31 11:01)
→ bitlife:例如: ln -s $HOME /tmp/myhome 再 cd /tmp/myhome 試看看 08/31 13:06
→ bitlife:用 realpath 可以解決 soft link 產生的問題 08/31 13:07