Ваш вопрос тесно связан с тем, как оболочка Вы используете ввод данных пользователем синтаксических анализов на командной строке.
Если первое слово на командной строке является программой, расположенной в специальной папке (главным образом определенный PATH
) и никакие более специальные символы не даны (зависит оболочки, которую Вы используете), все последующие слова, разделенные пробелами или вкладками, передаются программе в специальной форме т.е. массиве. С каждым словом как один элемент в массиве.
То, как программа, Вы собираетесь вызвать, интерпретирует аргументы (расположенный в массиве), зависит от того, как это программируется. Существуют некоторые квази стандарты того, как синтаксис аргументов должен быть похожим, но в целом программист цельный свободный. Таким образом, первый аргумент может быть интерпретирован как название файла или безотносительно мыслей программиста в то время, когда он записал программу.
В случае Вы добавляете специальный символ <
или >
к Вашей командной строке оболочка dosn't добавляет <
и >
ни последующие слова к массиву, который будет передан программе. С <
или >
учитывая оболочку начинает делать необычные вещи, поддерживаемые базовым ядром (передача по каналу ключевого слова). Для схватывания, что продолжается, необходимо понять что STDIN
и STDOUT
(так как это сразу не связано, я опускаю STDERR
).
Все видимое, которое Вы видите на своем терминале (в большинстве случаев часть Вашего дисплея) или записано оболочкой или любой другой программой, которую Вы вызвали ранее в специальный файл (в Unix, все - файл). Этот файл имеет специальный идентификатор и назван STDOUT
. Если программа хочет считать данные с клавиатуры это, dosn't опрашивают клавиатуру непосредственно (по крайней мере в большинстве случаев), но чтения из специального названного файла STDIN
. Внутренне этот файл подключен к Вашему стандартному устройству ввода данных, Вашей клавиатуре в большинстве случаев.
Если оболочка читает <
или >
в проанализированной командной строке это управляет STDIN
или STDOUT
в конкретном виде в течение времени работает соответствующая программа. STDIN
и STDOUT
dosn't указывают на терминал или стандартное устройство ввода данных больше, а скорее на последующее имя файла на командной строке.
В случае этих двух строк
cat file_name
cat < file_name
наблюдаемое поведение идентично, потому что соответствующий разработчик делает cat
к любым считанным данным с STDIN
или считанный данные из файла, имя которого дано как первый параметр командной строки (который является первым элементом в массиве, которому передает оболочка cat
). Впоследствии cat
пишет целое содержание file_name
или STDIN
к терминалу, так как мы не даем оболочке команду управлять STDOUT
. Помните, что во второй строке Ваша оболочка управляет STDIN
таким образом, то, что это не указывает на Ваше стандартное устройство ввода данных anylonger, но указывает на названный файл file_name
в Вашем текущем рабочем каталоге.
В другом случае строки
man < file_name
man
не предназначен для чтения чего-либо из STDIN
если это называют без аргумента т.е. пустого массива. Так строка
man < file_name
равняется
man
Например, man
считает что-то из STDIN
также если Вы передаете -l -
кому: man
. При использовании этой опции, данной на командной строке, можно отобразить содержание чего-либо man
чтения от STDIN
на Вашем терминале. Так
man -l - < file_name
работал бы также (но был бы осторожен man
не просто пейджер, но также и анализирует вход файла и так содержание файла, и отображенное содержание могло отличаться).
Итак, как STDIN
, STDOUT
и параметры командной строки интерпретируются, все до соответствующего разработчика.
Я надеюсь, что мой ответ мог разрешить вещи.
Ctrl+a (значение по умолчанию screen
префикс команды), [(входят copy
режим) сопровождаемый ?SEARCH_TEXT
кажется, работает. Нажмите n для движения в следующее возникновение. Оттуда, можно скопировать слова, строки, регионы, и т.д. для дампа в файлы или вставку позже (с Ctrl+a]).
После команды grails
можно использовать grep
: grails run-app | grep "user authorities"
. Однако, вам придется выполнить вашу команду заново.
Перенаправить вывод вашей команды в vim-editor:
grails run-app | vim -
Несколько советов по поиску с использованием Vim:
/
затем введите строку поиска полномочия пользователя
: установите hlsearch
для выделения результатов поиска n
для поиска вперед или Shift + n
для поиска назад ESC
один раз, чтобы выйти из режима редактирования, затем нажмите u
, чтобы отменить одно редактирование : q!
для выхода из Vim и отмены результатов поиска Если вы используете Konsole (эмулятор терминала KDE), вы можете использовать Ctrl + Shift + F. Это может работать и в других эмуляторах терминала (Linux).
Редактировать:
@sumit сообщает, что это работает также в Gnome Terminal.
@vdicarlo сообщает, что это также работает в терминале XFCE4.
shift+ctrl+f
– Ja8zyjits 03.06.2016, 16:25