Загрузка внешнего текстового файла в vi

В дополнение к ответу Ромео обратите внимание, что

grep pattern --whatever

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

GNU grep в этом случае не соответствует POSIX. Его можно сделать совместимым, передав переменную окружения POSIXLY_CORRECT (с любым значением) в его окружение.

Это относится к большинству утилит и утилит GNU, использующих GNU или совместимую реализацию getopt()/getopt_long() для разбора аргументов командной строки.

Существуют очевидные исключения, такие как env, где env VAR=x grep --version дает вам версию grep, а не env. Другим заметным исключением является оболочка GNU (bash), где ни интерпретатор, ни какая-либо из его встроенных функций не принимают параметры после аргументов, не являющихся параметрами. Даже его getopts не могут анализировать опции способом GNU.

В любом случае, POSIXLY_CORRECT не спасет вас, если вы сделаете

grep -e pattern *.js

(здесь шаблон не является необязательным аргументом, он передается как аргумент в -e, поэтому после этого разрешены дополнительные параметры).

Поэтому всегда полезно помечать конец опций символом --, если вы не можете гарантировать, что последующее не будет начинаться с - (или + с некоторыми инструментами):

grep -e pattern -- *.js
grep -- pattern *.js

или используйте:

grep -e pattern ./*.js

(обратите внимание, что grep -- шаблон * не поможет вам, если есть файл с именем -, а grep pattern ./* будет работать.grep -e "$pattern" следует использовать вместо grep "$pattern" в случае $pattern может начинаться с -).

В середине 90-х годов была предпринята попытка bash указать getopt(), какие аргументы (как правило, получаемые в результате расширения глобуса) не должны рассматривались как параметры (через переменную окружения __GNU_nonoption_argv_flags_), но они были удалены, поскольку вызывали больше проблем, чем решали.

0
04.06.2017, 15:47
1 ответ

Если вы хотите скопировать содержимое другого файла в файл, который вы сейчас редактируете в Vi (который может быть новым пустым файлом), вы можете использовать команду ex read в Vi следующим образом:

:r otherfile.conf

и он будет включен после строки, на которой в данный момент находится ваш курсор. Чтобы включить его в конец файла, вы можете вставить $ после двоеточия:

:$r otherfile.conf

Чтобы включить его в начало файла:

:0r otherfile.conf

Чтобы включить его после строки 123:

:123r otherfile.conf
5
28.01.2020, 02:16

Теги

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