ls
またはnano
でtilde
の出力を表示したいとします。
私は次のようにします:
ls >> tmp
nano tmp
rm tmp
削除を忘れることがあるダンプファイルを作成するので、私はこれが好きではありません。一部の人々はこれを提案します:
ls | less
または
ls | more
しかし、私はできません:
ls | nano
これを解決するにはどうすればよいですか?特に、現在のプロセスのように巨大な端末出力に関しては、後で検索したい場合に、これが必要になります。
従来のプログラムの多くは、標準入力または標準出力を意味する-
を使用しています。したがって、次のように-
をファイル名として使用して、nanoでコマンドの画面出力を開くことができます。
ls | nano -
これは、プログラムがその規則をサポートしている場合にのみ機能します。これには、端末のnano
およびvi
が含まれます。グラフィカルテキストエディタgedit
でもサポートされています。ただし、pluma
またはmousepad
はそれをサポートせず、代わりに-
という名前の通常のファイルを作成するように指示されます。他の場合では、最初に通常の中間ファイルを作成することはできません。
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
vipe
があれば、
ls | vipe >/dev/null
プログラムvipe
(viパイプまたはビューパイプのどちらかを表すと思います)は標準で読み込み、$EDITOR
オンにして、保存して終了するときに残っているものを標準出力に書き込みます。
bash
を使用している場合は、tilde <( ls )
を試してみてください。
bash(1)
の-Process Substitutionを参照してください。
* 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
この方法で機能するものと容易に区別できないように見えるもの。だから、あなたが望むものでそれを試してみてください、そしてそれはうまくいくかそうでないかのどちらかです。