linux - 在 csh 中运行 unix ksh 命令

标签 linux unix ksh csh

我试图在 csh 中运行一行命令,但它不起作用

find . -type d -name "mydir" -exec touch {}/abc.txt \;

此命令在 ksh 中运行良好。 我只是想在所有名为 mydir 的目录中创建空文件 (abc.txt)。任何人都可以帮助我使用 csh 命令来执行此操作吗?

最佳答案

{} 在 ksh 和 csh 中都是元字符,但它们的处理方式不同。

例如,这个:

{foo,bar}/abc.txt

扩展为

foo/abc.txt bar/abc.txt

在两个 shell 中,但在 ksh 中,如果大括号之间没有逗号,则不会对其进行特殊处理,而在 csh 中,无论是否有逗号,它们都会被特殊处理。结果在ksh中

{}/abc.txt

只是 {}/abc.txt,但在 csh 中它被替换为 /abc.txt

解决方法是引用大括号:

find . -type d -name "mydir" -exec touch '{}/abc.txt' \;

关于linux - 在 csh 中运行 unix ksh 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32490091/

相关文章:

bash - 在 Bash 和 KornShell (ksh) 中获取命令的退出代码

bash - 为什么 **sort** 不在每台机器上进行相同的排序?

linux - 将文件从 linux vps 上传到虚拟主机

Linux 脚本 - 抑制日期时间中的单引号

linux - 如何为 lynx 设置代理

python - 我应该坚持使用bash来开发高级Linux自动化脚本,还是切换到Python?

linux - 验证用户在 shell 脚本中输入的日期时间格式

c - 等待 C 中的进程

linux - UNIX shell 脚本在作为计划任务运行时失败

linux - 获取全套已安装的 Perl 模块