Как открыть терминальный вывод с текстовым редактором без создания нового файла?

Скажем, то, что я хочу вывод ls просматриваемый в nano или tilde.

Я сделал бы следующее:

ls >> tmp
nano tmp
rm tmp

Мне не нравится это, потому что это создает dumpfile, который я иногда забываю удалять. Некоторые люди предлагают это:

ls | less

или

ls | more

Но я не могу сделать:

ls | nano

Таким образом, как решить это? Мне было бы нужно это особенно когда дело доходит до огромных терминальных выводов как текущие процессы, где я хотел бы сделать поиск впоследствии.

7
задан 30 November 2019 в 17:26

5 ответов

Много программ традиционно используют - означать стандартный ввод-вывод или стандартный вывод. Таким образом можно открыть экранный вывод команды в нано использовании - как имя файла, как в:

ls | nano -

Это будет только работать, если Ваша программа действительно будет поддерживать ту конвенцию. Это включает nano и vi на терминале. Даже графический текстовый редактор gedit поддержки это. Однако pluma или mousepad не поддерживайте его, и вместо этого будет проинструктирован для создания регулярного названного файла -. В других случаях Вы не можете обойти создание регулярного промежуточного файла сначала.

10
ответ дан 21 December 2019 в 23:46

Если просмотр с тильдой действительно необходим, можно написать сценарий идеи
Создайте функцию в Вашем .bashrc

function tildeIt () {
  tmpfile=$(mktemp)
  "$@" > $tmpfile
  tilde $tmpfile
  rm $tmpfile
}

# $@ is all words typed after tildeIt
# mktemp creates a temp file and returns his fullname

Перезагрузка .bashrc

source ~/.bashrc

Использование

tildeIt command -option
5
ответ дан 21 December 2019 в 23:46

Если Вы имеете vipe, можно сделать

ls | vipe >/dev/null
0
ответ дан 21 December 2019 в 23:46

На *отклоняют, все - файл. Таким образом можно считать стандартный вход из файла. В теории, которая является. Некоторые программы становятся немного сомнительными.

В зависимости от редактора можно считать/dev/stdin. Например, cat работы, но gedit жалуется, что/dev/stdin является специальным файлом и не может быть отредактирован.

ls | cat /dev/stdin #works
ls | nano /dev/stdin #doesn't work.
ls | vim /dev/stdin #doesn't work
ls | gvim /dev/stdin #works

Что работы с этим методом и что, кажется, легко не отличают. Поэтому просто попробуйте его тем, что Вы хотите, и это будет или работать, или нет.

0
ответ дан 21 December 2019 в 23:46

Если Вы используете bash, Вы могли бы попробовать tilde <( ls ).

Посмотрите замену процесса в bash(1).

0
ответ дан 21 December 2019 в 23:46

Другие вопросы по тегам:

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