![有没有办法创建一个脚本并用更少的代码使其可执行?](https://linux22.com/image/1159257/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%84%9A%E6%9C%AC%E5%B9%B6%E7%94%A8%E6%9B%B4%E5%B0%91%E7%9A%84%E4%BB%A3%E7%A0%81%E4%BD%BF%E5%85%B6%E5%8F%AF%E6%89%A7%E8%A1%8C%EF%BC%9F.png)
我的代码创建可执行脚本
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
答案1
答案2
您可以省略整个touch
命令,无需使用sudo
。要进一步缩短命令行,您可以使用bash
历史扩展第二次保存文件名,并省略不必要的空格:
echo "echo 'Hello World'" >script.sh&&chmod +x !#:3
历史扩展!#:3
用当前命令行中的第四个单词替换,在你的情况下是文件名script.sh
。当然,如果你修改了第一个命令,则需要进行调整,例如:
>script.sh echo "echo 'Hello World'"&&chmod +x !#:1
请注意,有效的脚本需要舍邦:
>script.sh echo -e "#!/bin/bash\necho 'Hello World'"&&chmod +x !#:1
如果你更频繁地需要这个命令链,我建议定义函数,这样你只需要输入函数名称。一个同样适用但更长的方法是使用一个保存文件名的变量:
f=script.sh;>$f echo "echo 'Hello World'"&&chmod +x $f
如果你的文件名包含特殊字符,请不要忘记正确引用他们。
答案3
我更喜欢使用cat
这样的任务:
cat > script.sh && chmod +x script.sh
#!/bin/sh
echo 'Hello World'
Enter
Ctrl+D
答案4
您还可以省略整个 chmod,并在 echo 之前使用 umask。应该可以为您节省一些字节。只要您使用每个 shell(主要是 bourne 和 C)都能理解的命令,Shebang 就是可选的。