Мій код для створення виконавчого сценарію
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розширенням історії, щоб вдруге зберегти ім'я файлу та пропустити зайві пробіли:
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не потрібно цитувати, якщо вони не містять символів зі спеціальним значенням.
install <(echo echo Hello World) script.sh
Ви також можете залишити весь chmod і використовувати замість цього umask перед відлунням. Потрібно заощадити кілька байт. Шебанг необов’язковий до тих пір, поки ви не використовуєте команди, зрозумілі для кожної оболонки (в основному Bourne та C).
umaskдля встановлення виконуваного біта за замовчуванням ...
sudoдуже щадно. Потрапити у звичку кидати його може бути небезпечно. У цьому випадку ви володієте створеним вами сценарієм, щоб ви могли робити все, що завгодно, з дозволами, не потрібно судо.