Intereting Posts
Для чего используются подписи для дисков GNU / Linux (дистрибутивы) / grub? lxde-rc.xml: установить привязки клавиш для PgDn Понимание «vncserver -list» в отношении процессов Xvnc Запустить скрипт при выключении Сравните два столбца и вставьте значение в следующий столбец Ошибка при синтаксисе рядом с неожиданным токеном `('?" Где в «/» должны быть установлены дополнительные диски? Почему локальный сброс в часовой пояс по умолчанию? Дискриминация между коротким и длинным вариантом – это только `-`? Изменение источника входного аудио и установка его в моно на Debian Jessie / 8 с использованием команд использовать iptables, чтобы разрешить входящие подключения к компьютеру на порту XYZ? Копирование каталога для нескольких домашних пользователей и изменение прав пользователя / группы Подождите, пока процесс завершит ИЛИ, чтобы пользователь нажал клавишу Как скрывать меню загрузки grub, если не нажимать shift? ПИШИТЕ ТО ЖЕ

sed: как отключить автозапуск через файл сценария вместо использования ключа -n?

У меня возникла путаница в этой теме между переключением между командной строкой и интерфейсом файла скрипта. У меня был хороший скрипт, написанный в командной строке, который работал, но как только я захотел сохранить его в .sed-файле, я вспомнил, что больше не мог использовать -n . Я попытался использовать флаг '! D', но я не получаю такой же результат. Мой вопрос:
Есть ли способ поместить -n в файл .sed или какой-либо другой способ остановить автоматическую печать, когда я в интерфейсе скриптового файла? Мне неинтересно переводить из защиты моего скрипта из оболочки, чтобы не защищать его, но я полагаю, что вокруг нет никакого пути?

Стандартный (POSIX) способ должен иметь #n в начале скрипта. Они должны быть первые два байта скрипта.

Это исключает использование she-bang, это только для скриптов, выполняемых как sed -f the-script (обратите внимание, что she-bangs не POSIX, а POSIX не указывает путь к утилитам), но как @ Kusalananda сказал, при использовании she-bang вы всегда можете сделать:

 #! /path/to/sed -nf 

Если вы хотите создать исполняемый скрипт sed в системах, которые поддерживают ее, с аргументами (большинство).

Обратите внимание, что #n также работает в командной строке, как в:

 sed '#n s/foo/bar/p' 

И вы можете добавить еще текст после:

 #no default output s/foo/bar/p 

Или:

 #nifty way to turn -n on s/foo/bar/p 

На самом деле, это то, что нужно помнить, чтобы избежать поворота -n по ошибке. Это хорошая идея использовать пробел после # в комментариях для этого (и для удобочитаемости).

 # no, I don't want to turn -n on s/foo/bar/ 

sed [-e] 'command' и sed -f /path/to/script ведут себя точно так же, как и для -n . Если вы хотите выполнить сценарий sed и отключить поведение «по умолчанию», используйте sed -n -f /path/to/script.sed /path/to/input .

Вам придется либо запустить сценарий sed используя

 $ sed -n -f script.sed 

или измените #! («hash-bang») в сценарии к чему-то вроде

 #!/usr/bin/sed -nf 

и запустить его с помощью

 $ ./script.sed