web-dev-qa-db-ja.com

新しいファイルを作成せずにテキストエディターでターミナル出力を開く方法は?

lsまたはnanotildeの出力を表示したいとします。

私は次のようにします:

ls >> tmp
nano tmp
rm tmp

削除を忘れることがあるダンプファイルを作成するので、私はこれが好きではありません。一部の人々はこれを提案します:

ls | less

または

ls | more

しかし、私はできません:

ls | nano

これを解決するにはどうすればよいですか?特に、現在のプロセスのように巨大な端末出力に関しては、後で検索したい場合に、これが必要になります。

8
Paul Erlenmeyer

従来のプログラムの多くは、標準入力または標準出力を意味する-を使用しています。したがって、次のように-をファイル名として使用して、nanoでコマンドの画面出力を開くことができます。

ls | nano -

これは、プログラムがその規則をサポートしている場合にのみ機能します。これには、端末のnanoおよびviが含まれます。グラフィカルテキストエディタgeditでもサポートされています。ただし、plumaまたはmousepadはそれをサポートせず、代わりに-という名前の通常のファイルを作成するように指示されます。他の場合では、最初に通常の中間ファイルを作成することはできません。

11
vanadium

tildeで表示することが本当に必要な場合は、アイデアのスクリプトを作成できます
関数を作成して.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
cmak.fr

vipeがあれば、

ls | vipe >/dev/null

プログラムvipe(viパイプまたはビューパイプのどちらかを表すと思います)は標準で読み込み、$EDITORオンにして、保存して終了するときに残っているものを標準出力に書き込みます。

2
D. Ben Knoble

bashを使用している場合は、tilde <( ls )を試してみてください。

bash(1)の-​​Process Substitutionを参照してください。

0
Will Crawford

* nixでは、すべてがファイルです。したがって、ファイルから標準入力を読み取ることができます。理論的にはそうです。一部のプログラムは少し不明瞭になります。

エディターによっては、/ 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
Mark Gardner