Rai*_*eld 8 linux command-line zsh
我使用zsh和emacs键绑定.有时我需要用不同的输入执行相同的命令.输入通常有共同的子串.是否有一种简单的方法可以用其他字符串替换以前命令的部分内容?例如,上一个命令是:
cat chr2.unknow.feature.filtered ../chr2.unknow.feature.filtered ../train/chr2.unknow.withpvalue.feature.filtered > chr2.combined.txt
Run Code Online (Sandbox Code Playgroud)
我怎么能用'chr3'轻松替换'chr2'?
问题的扩展,如何将命令中的几个不同的子串替换为其他不同的字符串:
cat chr1.unknow.feature.filtered ../chr2.unknow.feature.filtered ../train/chr3.unknow.withpvalue.feature.filtered
Run Code Online (Sandbox Code Playgroud)
如何用"chrX"代替"chr1",用"chrZ"替换'chr2','chr3'?
谢谢.
Fra*_*sco 18
你也可以做快速的历史替换^old^new(比快得多!!:s^old^new^)
~ % cd /tmp
/tmp % ^tmp^etc # <-- changes tmp for etc
/tmp % cd /etc
/etc %
Run Code Online (Sandbox Code Playgroud)
这只会改变第一次出现.如果您需要更多,请使用任何历史修饰符.示例:全局更改:
/etc % echo tmp tmp tmp
tmp tmp tmp
/etc % ^tmp^etc
/etc % echo etc tmp tmp # <--- only the first tmp got changed
etc tmp tmp
/etc % ^tmp^etc^:G # <-- 'global'
Run Code Online (Sandbox Code Playgroud)
PS:搜索zshexpn手册^foo^bar以查找描述此内容的部分.向下滚动一点(在手册中),您将看到"历史记录扩展修饰符"列表.
PS:对于多次替换,请执行:^old1^new1^:s^old2^new2^等
要完成你直接要求的内容:
$ !!:s/chr1/chrX/:s/chr2/chrY/:s/chr3/chrZ/
Run Code Online (Sandbox Code Playgroud)
这将修改输入的最后一个命令.要执行全局替换,请使用:gs/a/b/.
例:
$ man zshall
$ !!:gs/man/less/:gs/zshall/.history/<TAB>
$ less .history
Run Code Online (Sandbox Code Playgroud)
阅读更多内容man zshexpn- ZSH扩展和替代.
| 归档时间: |
|
| 查看次数: |
4519 次 |
| 最近记录: |