2010-10-01 59 views
0

別名我想產生如下因素的結果別名:創建參數

$cd /home/ok 

[clear screen] 
/home/ok 
total 452K 
-rwx--x--x 1 user gigl 16K Oct 1 14:08 ok0 
drwx------ 5 user gigl 0 Oct 1 14:02 ok1 
drwx------ 5 user gigl 0 Oct 1 13:59 ok2 
drwx------ 9 user gigl 0 Oct 1 14:01 ok3 
-rw------- 1 user gigl 32 Sep 30 14:36 ok4 

我做了一個劇本像

$cat ~/.cd.sh 
#!/bin/bash 
cd $1 && clear && pwd && ls -lh --color=auto 

但它不會改變當前目錄。這可能是因爲在腳本中它會改變目錄,但是當它回到bash時,我回到了目錄中,我執行了腳本。

有什麼想法?

謝謝,從答案我有類似的東西,偉大的工作:

alias ls="clear && pwd && ls -lh --color=auto" 
cd() { builtin cd "$1" && ls; } 
+1

這不是別名。 – 2010-10-01 18:49:46

+0

我想重複使用術語「cd」,那樣我就認爲它是一個別名,不正確。 – 2010-10-01 23:31:36

回答

9

就個人而言,我建議你寫一個函數,而不是從你的.bashrc或.bash_profile中加載的別名。

功能看起來非常像你已經有了:

cdd() { 
    cd "$1" 
    clear 
    pwd 
    ls -lh --color=auto 
} 

我還不能肯定爲什麼別名使你回去,但我測試的功能和它的作品。

+0

我認爲這個問題並不清楚。他的劇本回歸了,他無法弄清楚如何得到別名的爭論。正如你所說,一個函數是正確的解決方案。 – Darron 2010-10-01 18:55:46

+0

要符合標準,請避免使用'function'關鍵字。使用像'cdd(){}'這樣的語法。如果你這樣做,並通過'「$ 1'(與空白目錄)代替'$ 1',你會從我這裏得到一個+1 – Lekensteyn 2010-10-01 18:56:01

+0

@Lekensteyn:好點固定 – Bryan 2010-10-01 18:58:51

1

使用函數來代替,例如

mycd() { cd "${1?}" && clear && pwd && ls -lh --color=auto; } 
+0

是問號一個錯字? – 2010-10-01 20:57:22

+0

問號導致錯誤。這是不是作爲一個手動檢查漂亮但產生更短的代碼:) – jilles 2010-10-01 22:51:51

+0

內置CD不無PARAMS產生錯誤。這可能是有用的不是清除屏幕。的?通常意味着可選的,它的瘋狂,他們拋出一個錯誤了點。我會練習pt沒有任何錯誤。 – 2010-10-01 23:36:15

0

我不認爲你想& &無論是。這將同時運行每個命令,iirc。你應該使用分號。

+0

不,它不會同時運行它們 - 它會有條件地在前一個成功運行。一個&符將在後臺運行它們。 – 2010-10-01 20:56:13

+0

你是對的。無論之前的退出狀態如何,分號都會運行它們。 – beta0x64 2010-10-01 21:04:08