web-dev-qa-db-ja.com

lessコマンドを使用しているとき、またはマニュアルページ内でLinuxコマンドを実行するにはどうすればよいですか?

私は通常、コマンドlslessとパイプし、ページング中にコマンドを実行したいと考えています。削除したいファイルに出くわしたので、ページングしながらコマンドrm {filename}を実行したいと思います。また、manページを閲覧しながら同じ方法を使用できることを願っています。そうでなければ、それはどのように違うのですか?

9
PeanutsMonkey

Less内でbang(!)を使用してコマンドラインにアクセスできます。

したがって、たとえば、次のように入力します。

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

そして、temp.txtはなくなるはずです。

編集:デフォルトでは、manはページへの使用量を減らしているようです(何らかの理由で、moreを使用していると思っていましたが、過去に使用した可能性があります)。同じトリックを使用できますが、それを機能させるにはフルパス(例:/ home/user/...)が必要です。

これは、manを呼び出すと、現在の作業ディレクトリが変更されるためです。私のマシン(xubuntu、xfce-terminalを使用)では、/usr/share/manに移動します。コンソールにCWDが表示されている場合は、変更を確認するか、次のように入力してman内から確認できます。

!pwd
8
Ash

これを行う一般的な方法は、現在のジョブを一時停止し、コマンドを実行して、古いジョブを再開することです。

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を再開する(manページをバックグラウンドで開いたままにする)、または
fg %2ジョブ2を再開する(man rm)

複数の中断されたプロセスがある場合は、jobsでそれらをリストできます。

4
Hennes