シェルで逐一時間表示@bash

デバッグを目的に、 逐一コマンド実行時に時間を表示させたい場合があります。

$ trap "date" DEBUG

これでコマンド実行時に日付が表示されます。

ちなみに、無効にするには

$ trap  DEBUG

を実行します。


ログアウトしてもプロセスを止めないようにする@bash

bash上で何かプログラムを走らせている時に、ログアウトしてもプロセスを動かし続ける方法として、いくつかまとめてみました。

  1. nohupを使う
    コマンド起動時に、

    $ nohup ./プログラム名 &

    としてログアウトする

  2. screenを使う
    コマンド起動前に、

    $ screen

    のコマンドを実行しておき普通通りプログラムを実行する

    $ ./プログラム名

    その後、”Ctrl-a” “d”  を押してscreenからぬけ、ログアウトする。

  3. disownを使う
    コマンド起動後

    $ ./プログラム名

    Ctrl-z でサスペンドして、バックグランドで実行

    $ bg

    その後disownを実行してログアウトする

    $ disown

1,2はプログラム起動時に気をつけないといけないですが、実行してしまった後にどうにかしたい場合は3を使う必要があります。

標準出力は、1はnohup.out にリダイレクトされます。2はscreenという仮想端末上で実行されていますので、後でログインしてscreenコマンドを使うことで同じ画面に戻ることができます。3は ログアウトすると捨てられてしまうようなので、予め出力をリダイレクトしたりteeでファイルに保存しておく必要があります。


キル(コピー)した文字列の履歴をさかのぼってヤンク(貼り付け)する@bash

bashで、Ctrl-kでキル(コピー)した文字列をCtrl-yでヤンク(貼り付け)することはよくやりますが、Ctrl-yでヤンクした直後に M-y (Alt-y)でキルの履歴を遡ってヤンクすることができます。

ちなみに、M-yはCtrl-yした直後に押さないと意味がないです。