更多的是對是否以及如何完成它的好奇心。有時我發現自己在重復命令時修改了同一命令的一小部分。
例子:
grep aaa file.txt
grep bbb file.txt
grep ccc file.txt
我知道我可以用 for 回圈來設定它,但我并不總是知道開始時可能需要更改/測驗的所有值。我也可以使用鍵盤移動來更快地回到 aaa,但它仍然是額外的鍵。這個例子不是很多,但是一些串在一起的命令會導致需要大量的鍵盤移動。
例如,我知道變數和檔案可以在最后傳遞給某些命令。
while read i; do echo "$i"; done < ./file.txt
x='./file.txt'
sed 's/find/replace/' <<<${x}
我很好奇是否有一種方法可以使用 bash 替換在命令末尾為未宣告的變數做類似的宣告。我嘗試了類似的變體,grep ${} file.txt <<< 'aaa'但到目前為止,我玩過的任何東西都沒有奏效。我的目標是傳遞的值未宣告為變數,因此我只需點擊鍵盤上的向上箭頭并在命令陳述句末尾編輯字串。感謝您提供的任何幫助或見解!
uj5u.com熱心網友回復:
您可以定義一個快速函式:
f () { grep "$1" file.txt; }
現在你可以跑了
f aaa
f bbb
f ccc
f可能比任何可以拉出上一個命令進行編輯的鍵序列都短 :) 另外,您要更改的部分現在是最后一個引數,如果您確實使用向上箭頭調出最后一個命令,則編輯起來會更簡單.
uj5u.com熱心網友回復:
感謝大家的反饋!我也找到了另一個解決方案。
xargs -I {} grep {} file.txt <<< aaa
uj5u.com熱心網友回復:
Bash 還支持通過以下方式替換最后一個命令^old^new^:
$ grep shy lyrics.txt
You're too shy to say it
You're too shy to say it
$ ^shy^cry^
grep cry lyrics.txt
Never gonna make you cry
Never gonna make you cry
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/536819.html
標籤:Linux狂欢替代
