試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Hotwireの内部コマンドを試す(独自コマンド編)

ここで紹介しているのは、Hotwire独自のコマンド。

  1. help
  2. sh
  3. procとfilter
  4. current
  5. term
  6. editとopen
  7. fsearch
  8. sechash
  9. prop
  10. write

help

起動後に表示されるヘルプを表示する。見たいときにこれを打ってもよいし、ヘルプを表示するタブを1つ用意して作業用のタブと切り替える使い方をしてもよい。

sh

外部コマンドを実行する。実際には、外部コマンド実行時に自動的にこのshが使用されるため、省略可*1
同じ名前の内部コマンドと外部コマンドが存在していて、外部コマンドのほうを使用したいという場合には、先頭にshを付けるとよい。
(2008/3/18)バージョン0.710の時点ではsysに変わっている。

procとfilter

プロセス一覧。-aオプションを付けると全ユーザ、付けないと自分のプロセスのみ。右クリックメニューから「Kill」できるのが便利。
下の例は全プロセスからの検索。プロセスID/ユーザ/コマンドのいずれからも絞り込める。

proc -a | filter [絞り込む文字列]


filterはパイプ経由の入力をフィルタする(グラフィカルな出力にもテキストデータにも有効)。-iオプションを付けると大文字と小文字を区別しない。

sh glxinfo | filter direct
sh lsof | filter hotwire
sh ifconfig | filter Link
sh ifconfig | filter link
sh ifconfig | filter -i link

current

過去に実行したコマンドの出力を再表示する。コマンド自体を再実行することなく、出力だけをフィルタし直すのに使えそう。

current | filter [文字列]

一度「current | filter ...」を実行した後にcurrentを実行すると、そのフィルタ済みの結果が出るため、追加でfilterすることもできる。

sh dmesg
current | filter eth0
current | filter Link

上の例では、2回目のcurrentで「eth0」を含む行のみが出てくるため、最終的には「eth0」と「Link」の両方を含む行のみが残る。
直前でなく、それ以前のコマンド結果をもとに処理をしたい場合はCtrl+上矢印キーでさかのぼってからcurrentを実行する。

term

端末エミュレータ機能を使用してタブを開く。引数なしで実行すると、デフォルトのコマンドラインシェルが起動する。-wオプションで新規ウィンドウに開くこともできる。mplayerのように、リアルタイムでキーボードからの操作を受け付けるものには必要。

term mplayer [再生ファイル]

topnanoなどでは、省略してもterm経由で実行される。

editとopen

どちらも、引数に指定したファイルを開くのだが、editは(デスクトップ環境でテキストファイルに関連付けられている)テキストエディタで、openは種類ごとに関連付けされたアプリケーションで開くことになる。*2開くアプリケーションが気に入らない場合はデスクトップ環境の関連付けを変更するか、lsのリストから右クリックして選択するなどする。

fsearch

指定した文字列をファイルの内容から検索する。2番目の引数に、検索する対象ディレクトリを指定することもできる(省略時は現在のディレクトリ以下)。

fsearch [文字列] ([検索対象のディレクトリ])


もし、読み取り権限の無いファイル/ディレクトリがあると、処理は失敗してしまう。手元の環境では

fsearch test /etc/

を実行したところ、/etc/group-が開けず、「exceptions.IOError」(Errno 13)で止まった。

sechash

SHA-1(オプション無しで実行)もしくはMD5(-5オプションを指定)のハッシュを計算して出力する(ファイル名は表示されず、ハッシュの文字列のみ)。

sechash [ファイル名]
sechash -5 [ファイル名]

prop

パイプ経由で、引数に指定した名前の属性の項目を表示するらしいのだが、よく分からない(特に、指定する属性名)。

fsearch [文字列] ([検索対象のディレクトリ]) | prop path
fsearch [文字列] ([検索対象のディレクトリ]) | prop text
proc | prop pid
proc | prop cmd

write

writeは、リダイレクトでファイルに書き出すのと同じ効果。他のユーザにメッセージを送る機能はない。追加書き込みする場合は-a付きで実行。

sh echo a | write out.txt
sh echo b | write -a out.txt

上のechoは外部コマンド(/bin/echo)を使用している。処理としては、「a」をout.txtに書き込んだ後、「b」を追加書き込みしている。すでに存在しているファイルに対して-aオプション無しで書き込むと、内容は上書きされてしまい、これを防ぐ設定は現状では存在しない?
writeの代わりにシェルのリダイレクトを使用すると下のような書き方になるが、lsprocなどのグラフィカルな出力をする内部コマンドはリダイレクトできない。*3

sh echo a > out.txt
sh echo b >> out.txt

使用したバージョン:

  • Hotwire 0.620

*1:この記事内では外部コマンドとの区別を明確にするため、省略していない

*2:つまり、テキストファイルを編集したいときにはどちらでも同じ

*3:「ls > out.txt」は意図しない出力となり、「sh ls > out.txt」は外部コマンドのlsの出力をout.txtに出力する