Почему рекомендуется перенаправлять файлы в аргументах оболочки?

Поместите скрипт в папку /etc/profile.d/. Размещенные там скрипты запускаются при входе в систему. Поскольку в вашем скрипте есть sudo, вы можете использовать флаг -S, чтобы заставить sudoпринимать пароль со стандартного ввода. Вы можете использовать:

echo "ur P@ssw0rd" | sudo -S UrCommand
-1
08.11.2019, 06:47
1 ответ

Перенаправление ввода может быть хорошей идеей, когда перенаправляется и вывод команды.

В определенных обстоятельствах, когда входной файл не существует, перенаправление из него вызывает ошибку оболочки без выполнения команды и без усечения выходного файла.

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

Например

foo@bar:~$ seq 1 5 >out_file
foo@bar:~$ cat out_file
1
2
3
4
5
foo@bar:~$ cat non-existent-file >out_file
cat: non-existent-file: No such file or directory
foo@bar:~$ cat out_file
foo@bar:~$ seq 1 5 >out_file
foo@bar:~$ cat out_file
1
2
3
4
5
foo@bar:~$ cat <non-existent-file >out_file
bash: non-existent-file: No such file or directory
foo@bar:~$ cat out_file
1
2
3
4
5
2
28.01.2020, 05:07

Теги

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