我想删除所有 .sh 扩展名,所以这样做了:
ls *.sh | xargs -I {} mv {} `basename {} .sh`
Run Code Online (Sandbox Code Playgroud)
但是它不起作用,它的行为就像basename
返回未更改的文件名。
为什么会这样?
例如,这有效:
ls *.sh | xargs -I {} echo `basename {}.jpg .jpg`;
Run Code Online (Sandbox Code Playgroud)
编辑:
解决方案:单引号可防止`basename ...`
shell 在运行命令之前进行评估。
ls *.sh | xargs -I {} sh -c 'mv {} `basename {} .sh`'
Run Code Online (Sandbox Code Playgroud) 我希望 vim 这样做,以便在 vim 中设置语法高亮(或不需要额外的工具)。因此,cat file | <some_sh_tool>
我会使用vim +"some_opts" +"..." +q file
. 问题是 vim 在退出时恢复以前的屏幕,但是使用一些远程访问工具这没有发生,所以它基本上像 cat 一样工作,带有语法高亮。
那么,这可能吗?
编辑
考虑更多这一点,我认为这是一件很棒的事情。除了语法高亮显示文件内容时,还可以使用 vim 的其他功能,如行号、空格、换行等……尤其是在脚本中,因为 vim 无处不在。