lessコマンドまたはmanページ内でLinuxコマンドを実行するにはどうすればよいですか?


9

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

回答:


8

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

たとえば、次のように入力すると、

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

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

編集:デフォルトでは、男性はページに使用する量が少なくなっているようです(何らかの理由moreで、以前は使用していたと思われていました)。同じトリックを使用できますが、機能させるにはフルパス(例:/ home / user / ...)が必要です。

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

!pwd

manは実際にはCWDを変更するため、フルパスを使用する必要があります。
Rob

@ロブ-それはどういう意味man actually changes CWDですか?
PeanutsMonkey

ステータスバーにCWDを表示するようにtmuxを設定しています。やることman man(または何か)は、人が開いている間に私のCWDを変更します。私のLinuxマシンは現在利用できず、CWDをチェックする他の方法はわかりませんが、私にはそれがそうしているようです。
Rob

@Rob-つまり、tmuxを使用しているという理由だけで、コマンドを実行すると、現在の作業ディレクトリman {command}がsay /home/{user}からコマンドの場所に変更されるということmanですか?
PeanutsMonkey 2012

それは私が見た行動を説明するでしょう。さて、なぜそれが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を再開する(manページをバックグラウンドで開いたままにする)、または
fg %2ジョブ2を再開する(man rm)

一時停止しているプロセスが複数ある場合は、でそれらを一覧表示できますjobs

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.