Я пишу заметки, когда готовлю систему, поэтому мне есть чем следовать, если / когда мне нужно подготовить другую систему. Также я надеюсь использовать эти заметки и в какой-то момент реализовать их в марионеточной конфигурации.
Я пытаюсь написать многострочные команды 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
Операторы управления 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
Вырезание и вставка этого скрипта в оболочку должно работать.
Вы могли бы использовать exec
:
$ exec <<< "echo hello world"
НО имейте в виду, что после этого он выйдет из вашей текущей оболочки. Вы можете решить эту проблему, создав новую оболочку:
$ 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
Вы просто выполняете первые четыре команды, выполнив ...
$ install -o apache -g webdev -m 0755 -d /var/log/php
Это создаст каталог /var/log/php
с владельцем apache
группа webdev
и разрешение 0755
.