Bash历史记录:正确/用替换重复最后一条命令
时间:2020-01-09 10:37:22 来源:igfitidea点击:
我经常在Linux bash shell下键入以下错误命令:
rsync -av dir1 [email protected]:/path/to/dir1
或者
cp -av file1*.txt file2*.txt /path/to/dest
我需要按以下步骤纠正这些命令:
rsync -av dir5 [email protected]:/path/to/dir1 cp -av delta1*.txt delta2*.txt /path/to/dest
如何将dir1替换为dir5或将文件替换为delta,并在bash shell下重复最后一个命令?
bash shell支持历史记录搜索和替换操作。
bash(以及许多其他现代)shell提供了对命令历史记录(先前键入的命令列表)的访问。
bash shell支持在其他shell(例如csh)中发现的历史记录扩展功能。
语法:Bash历史记录搜索并替换命令参数
快速替换的语法如下,并重复最后一个命令,将word1替换为word2:
^WORD1^WORD2^
或者
!!:s/WORD1/WORD2
或者
!!:gs/WORD1/WORD2
在此示例中,我试图将名为youtube-demo-andriod-app-part1.avi的文件复制到/backup目录
$ cp youtube-demo-andriod-app-part-102.avi /backup/
要用替换重复最后一个命令:
$ ^102^1002^
或者
$ !!:s/102/1002
输出示例:
cp youtube-demo-andriod-app-part-1002.avi /backup/
请注意,此替代仅适用于第一次出现。
例如:
$ cp -av file1*.txt file2*.txt /path/to/dest
用delta1和delta2替换file1和file2,输入:
!!:gs/file/delta
输出示例:
cp -av delta1*.txt delta2*.txt /path/to/dest
您还可以使用&重复之前的替换操作:
cp -av file1*.txt file2*.txt /path/to/dest !!:gs/file/delta-&/
输出示例:
cp -av delta-file1*.txt delta-file2*.txt /path/to/dest