Назад | Перейти на главную страницу

Linux - Bash - Копирование многострочных строк из источника в терминал

Я пишу заметки, когда готовлю систему, поэтому мне есть чем следовать, если / когда мне нужно подготовить другую систему. Также я надеюсь использовать эти заметки и в какой-то момент реализовать их в марионеточной конфигурации.

Я пытаюсь написать многострочные команды 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.