2013-11-02 21 views
0

我失去了一些東西很簡單,我認爲:這個簡單的歷史腳本有什麼錯?

$ cat hs.sh 
#!/bin/bash 
echo $1 
history | grep -i $1 
echo $# 
exit 
$ 

這裏是輸出:

$ ./history_search sed 
sed 
1 
$ 

試圖創建一個腳本,我可以在「./hs.sh sed的」到表單中使用搜索歷史中的所有sed命令。我可以使用這個工作正常,但不是這個腳本創建一個別名。

這裏是別名:

alias hg='history | grep -i $1' 
+0

歡迎來到Stack Overflow。請儘快閱讀[關於]頁面。我強烈建議你不要在Unix系統上以root用戶身份進行實驗。你可以用一個意外的錯字作爲根破壞整個系統,但是如果你不是root的話,你在很大程度上可以保護系統免受損害。歷史對於實驗來說也是一個不好的領域。如果你不小心運行了'rm -fr .'而不是你想要的其他命令,那麼你可能會再次造成嚴重破壞。如果您決定繼續以root身份工作,請確保您擁有良好的備份。 –

回答

2

交互shell有史;腳本化的shell沒有歷史記錄。您只能從交互式shell中請求歷史記錄,這就是爲什麼別名有效,但腳本沒有。

+0

感謝您的解釋和版本! –

0

當您將其作爲shell腳本運行時,它會生成一個沒有歷史記錄的新shell。

嘗試這樣在同一shell中運行它:

source ./history_search see 

,它應該工作。

+1

如果你在最後一行是'exit'的地方輸入腳本,你可能不會很高興。這可能很容易被認爲是腳本中的一個錯誤 - 通常是無害的,但如果腳本可能來源則不會。 –

+0

我會盡快嘗試,我不知道上面給出的一些論點。 –

相關問題