Существует ли способ создать сценарий и сделать его исполняемым файлом в меньшем количестве кода, чем это?

Мой код для создания исполняемого сценария

touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
8
задан 29 July 2018 в 17:04

4 ответа

Можно не учесть целое 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

Если Ваше имя файла содержит специальные символы, не забывают заключать им в кавычки правильно.

18
ответ дан 23 November 2019 в 05:21

install команда (часть GNU coreutils наряду с cp, mv, rm, и т.д.), может скопировать файл, также устанавливая его владение и полномочия и создав родительские каталоги по мере необходимости. По умолчанию это сделает новый исполняемый файл файла. Это не понимает‘-’но /dev/stdin может использоваться вместо этого:

install /dev/stdin script.sh <<< "echo Hello World"

Вышеупомянутое использование ‘здесь представляет в виде строки’ для обеспечения текста на stdin, который немного короче, чем передача по каналу его в. Аргументы echo не нужно заключение в кавычки, если они не содержат символы с особым значением.

20
ответ дан 23 November 2019 в 05:21

Я предпочитаю использовать cat для задач как это:

cat > script.sh && chmod +x script.sh
#!/bin/sh
echo 'Hello World'Enter
Ctrl+D
8
ответ дан 23 November 2019 в 05:21

Вы могли также не учесть целый chmod и использовать umask вместо этого перед эхом. Должен сохранить Вас несколько байтов. Хижина является дополнительной, пока Вы используете команды, которые поняты под каждой оболочкой (граница и C главным образом).

1
ответ дан 23 November 2019 в 05:21

Другие вопросы по тегам:

Похожие вопросы: