Как выполнить команду Linux, используя команду less или на страницах man?

9

Я вообще труба команды lsс lessи хотел бы, чтобы выполнить команду , когда она пейджинговая например , я наткнулся на файл , который я хотел бы удалить , поэтому я хотел бы, чтобы выполнить команду , rm {filename}пока еще пейджинга. Я также хотел бы надеяться, что смогу использовать тот же метод при просмотре man-страниц. Если нет, то чем он отличается?

PeanutsMonkey
источник

Ответы:

8

Вы можете получить доступ к командной строке с помощью bang ( !) в пределах меньше.

Так, например, если вы наберете:

touch temp.txt
ls | less
!rm temp.txt

И temp.txt должен быть пропущен.

Изменить: По умолчанию кажется, что человек теперь использует меньше страниц (по какой-то причине я думал, что он использовал more, возможно, в прошлом это было). Вы можете использовать тот же трюк, но для его работы требуется полный путь (например, / home / user / ...).

Это потому, что вызов man изменяет текущий рабочий каталог. На моей машине (xubuntu, используя xfce-terminal) это идет к /usr/share/man. Если ваша консоль отображает CWD, вы можете увидеть, как она меняется, или вы можете увидеть ее изнутри man, введя:

!pwd
ясень
источник
Человек на самом деле меняет CWD, поэтому вам нужно будет использовать полный путь.
Роб
@Rob - Что ты имеешь в виду man actually changes CWD?
PeanutsMonkey
У меня есть tmux, настроенный на отображение моего CWD в строке состояния. Выполнение man man(или что-нибудь) изменит моего CWD, пока человек открыт. Моя Linux-машина в данный момент недоступна, и я не уверен в каком-либо другом способе проверки CWD, но мне кажется, что это именно то, что он делает.
Роб
@Rob - То есть вы хотите сказать, что только потому, что вы используете tmux, он меняет текущий рабочий каталог, когда вы запускаете команду, man {command}например, /home/{user}в ее местоположение man?
PeanutsMonkey
Это объяснило бы поведение, которое я видел. Теперь, почему это меняет CWD, это другой вопрос ...
Ash
4

Общий способ сделать это - приостановить текущее задание, выполнить команду и возобновить старое задание.

ls | less (прочитайте текст, обратите внимание на имя файла),
Control-zчтобы приостановить текущую активную команду

Вы должны получить строку, похожую на эту: [1]+ Stopped ls | less
([1] номер задания.)

rm testfile

fgили fg %1 (1 - номер работы)

Вы можете приостановить несколько процессов одновременно. Например
ls | less
Control-z (output: [1]+ Stopped ls | less)
man rm
Control-z (output: [2]+ Stopped man rm)
rm -i testfile*

fg %1чтобы возобновить работу 1 (оставить справочную страницу открытой в фоновом режиме) или
fg %2возобновить работу 2 (man rm)

Если у вас есть несколько приостановленных процессов, вы можете перечислить их с помощью jobs.

Hennes
источник