簡體   English   中英

可以使用Bash History Expansion引用同一命令中的某些內容嗎?

[英]Can Bash History Expansion be used to reference something in the same command?

Bash具有稱為歷史記錄擴展的功能,您可以在其中使用快捷方式來擴展以前在bash中鍵入的內容。

例子: !! - expands into previous command !! - expands into previous command

$> rm -f /var/log/access.log
rm: /var/log/access.log: Permission Denied
$> sudo !!
sudo rm -f /var/log/access.log
$> echo "i am teh hax"

另一個: !$ - expands into last arg of previous command

$> echo "no one was here" > access.log
$> cp !$ /var/log/
cp access.log /var/log/

bash或其他一些shell是否有能力在命令本身內使用替換快捷方式?

就像是

$> cp httpd.conf !$.bak
cp httpd.conf httpd.conf.bak
$> echo "SABOTEUR!!!" > httpd.conf

我需要提高1980年代的計算機朋克技能。 請幫忙。

在命令本身中,您是說要引用httpd.conf嗎?

這是您在超級用戶中的解決方案

使用bash 歷史記錄擴展

mv path/to/oldfile !#:1:h/newfile

其中!#:1:h意思是:從您當前鍵入的行( !# )中,選擇第一個單詞( :1 ),然后僅提取其中的路徑部分( :h -head)。

Justhalf的答案就是您想要的。

但是根據您的要求,還有另外一種破解/濫用方式。

sed -i.bak '' /path/to/file

例如

sed -i.bak '' httpd.conf 

它將您的文件復制到另一個帶有.bak的文件。

優點: /path/to/file可以包含通配符/ glob,或者您可以直接給出用空格分隔的文件列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM