如何一次性创建文件并设置可执行权限,无需重复输入文件名?
一次性创建可执行文件的几种方法
方法1:定义Shell函数(推荐)
直接在当前Shell里定义一个函数,后续使用最省心:
mkexe() { touch "$1" && chmod +x "$1"; }
使用时只需输入 mkexe 目标文件名,比如 mkexe demo.sh。下次要换文件名,直接调出历史命令修改末尾的文件名即可。如果想让这个函数永久生效,把它添加到你的 ~/.bashrc(Bash环境)或 ~/.zshrc(Zsh环境)文件中,之后重启Shell或执行 source ~/.bashrc 就能全局使用。
方法2:单条临时命令(无需定义函数)
如果不想定义函数,用这条命令即可,文件名放在最后,方便后续修改:
echo "目标文件名" | xargs -I {} sh -c 'touch {} && chmod +x {}'
比如创建 test.sh 就输入 echo "test.sh" | xargs -I {} sh -c 'touch {} && chmod +x {}',下次换文件只需修改引号里的内容。
方法3:临时变量法
用临时变量存储文件名,只需要输入一次:
f="目标文件名"; touch "$f" && chmod +x "$f"
修改时直接更改等号后的文件名即可。
你之前的命令失效原因
你尝试的 touch "$(echo foo && chmod +x !$)" 里,!$ 指代的是上一条Shell命令的最后一个参数,并非当前 echo foo 中的文件名,所以chmod无法找到正确的目标文件;同时整个命令的执行逻辑顺序错误,导致无法完成预期操作。
内容的提问来源于stack exchange,提问作者qq4
相关产品推荐
相关产品推荐

