Мой код для создания исполняемого скрипта
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
Мой код для создания исполняемого скрипта
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
Ответы:
Вы можете пропустить всю touch
команду, и нет необходимости использовать sudo
. Чтобы еще больше сократить командную строку, вы можете использовать bash
History Expansion, чтобы сохранить имя файла во второй раз и пропустить лишние пробелы:
echo "echo 'Hello World'" >script.sh&&chmod +x !#:3
Расширение History заменяет !#: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"
В приведенном выше тексте используется строка here для предоставления текста в stdin, который немного короче, чем его передача. Аргументам echo
не нужно заключать в кавычки, если они не содержат символов со специальным значением.
install <(echo echo Hello World) script.sh
Я предпочитаю использовать cat
для таких задач, как это:
cat > script.sh && chmod +x script.sh
#!/bin/sh
echo 'Hello World'
Enter
Ctrl+D
Вы также можете опустить весь chmod и использовать вместо него umask перед эхом. Должно сэкономить вам несколько байтов. Shebang не обязателен, если вы используете команды, которые понятны каждой оболочке (в основном bourne и C).
umask
для установки исполняемого бита по умолчанию ...
sudo
очень экономно. Привыкание бросать его может быть опасным. В этом случае у вас есть сценарий, который вы создали, так что вы можете делать с разрешениями все, что вам угодно, без sudo.