Мой код для создания исполняемого сценария
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
Можно не учесть целое 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
Если Ваше имя файла содержит специальные символы, не забывают заключать им в кавычки правильно.
install
команда (часть GNU coreutils наряду с cp
, mv
, rm
, и т.д.), может скопировать файл, также устанавливая его владение и полномочия и создав родительские каталоги по мере необходимости. По умолчанию это сделает новый исполняемый файл файла. Это не понимает‘-
’но /dev/stdin
может использоваться вместо этого:
install /dev/stdin script.sh <<< "echo Hello World"
Вышеупомянутое использование ‘здесь представляет в виде строки’ для обеспечения текста на stdin, который немного короче, чем передача по каналу его в. Аргументы echo
не нужно заключение в кавычки, если они не содержат символы с особым значением.
Я предпочитаю использовать cat
для задач как это:
cat > script.sh && chmod +x script.sh
#!/bin/sh
echo 'Hello World'
Enter
Ctrl+D
Вы могли также не учесть целый chmod и использовать umask вместо этого перед эхом. Должен сохранить Вас несколько байтов. Хижина является дополнительной, пока Вы используете команды, которые поняты под каждой оболочкой (граница и C главным образом).