我在准备系统时会记笔记,这样当我需要准备另一个系统时,我就可以参考一些内容。我还希望在某个时候使用这些笔记并将其应用到 puppet 配置中。
我正在尝试编写多行 bash 命令,但是当我从我的 IDE(aptana)复制并粘贴到终端时,我得到了奇怪的行为并且命令从未执行,即使当我回顾历史记录时多行命令看起来像是我手动输入的。
我的问题是,如何以多行格式保存命令,以便我可以快速复制并粘贴到终端?
例子:
$ "mkdir -p /var/log/php && \
chown -R apache /var/log/php && \
chgrp -R webdev /var/log/php && \
chmod -R 775 /var/log/php && \
touch /var/log/php/oops.log"
touch /var/log/php/oops.log: No such file or directory
答案1
Bash 控制运算符(例如&&
)不需要“ \”来将行连接在一起。您也不需要引用您的脚本。重构版本将是:
mkdir -p /var/log/php &&
/bin/chown -R apache /var/log/php &&
/bin/chgrp -R webdev /var/log/php &&
/bin/chmod -R 775 /var/log/php &&
touch /var/log/php/oops.log
在 shell 中剪切并粘贴该脚本应该可以工作。
答案2
您可以使用exec
:
$ exec <<< "echo hello world"
但请记住,完成后它将退出您当前的 shell。您可以通过生成一个新 shell 来解决这个问题:
$ bash -s <<< "echo hello world"
另外,你可以将其制作成 bash 脚本。例如:
#!/bin/bash
mkdir -p /var/log/php
chown -R apache /var/log/php
chgrp -R webdev /var/log/php
chmod -R 775 /var/log/php
touch /var/log/php/oops.log
你可以做类似的事情:
$ cat >> ~/script.sh
#!/bin/bash
mkdir -p /var/log/php
chown -R apache /var/log/php
chgrp -R webdev /var/log/php
chmod -R 775 /var/log/php
touch /var/log/php/oops.log
<CTRL+D>
$ . ~/script.sh
答案3
您只需执行前四个命令即可...
$ install -o apache -g webdev -m 0755 -d /var/log/php
这将创建一个/var/log/php
具有所有者apache
组webdev
和权限的目录0755
。