ターミナルを使ってアプリケーションを起動すると、従来のメニューやショートカットに比べて、より高速で高度な操作が可能になります。正しいコマンドを覚えておけば、ウィンドウ間を移動したりタスクバーを探したりすることなく、あらゆるプログラムを直接開くことができます。この機能は、特に日常業務で複数のアプリケーションを使用している場合、柔軟性を高め、大幅な時間節約を実現します。
ターミナルウィンドウからアプリケーションを起動したことがあると思いますが、ターミナルウィンドウを閉じるまでウィンドウがビジー状態になっていることに気づいたことはありませんか?これは非常に煩わしいものです。しかし、この方法でアプリケーションを起動することが便利な場合もあります。今回は、その効果的な方法を説明します。
メニューを使う人もいれば、アプリケーションランチャーを使う人もいます。私は個人的に、Firefoxなどのすべてのアプリケーションをターミナルウィンドウから起動しています。この習慣は、ショートカットの作成方法を知らなかったLinuxを使い始めた頃(約15年前)に遡ります。時が経つにつれて、この方法でアプリケーションを起動することに慣れてきました。ターミナルウィンドウは常に開いているので、これは理にかなっています。それに、アプリケーションランチャーの設定とメンテナンスが面倒なのです。ターミナルウィンドウを使えば、アプリケーションランチャーのようにアプリケーションをざっと検索できますが、実行前にコマンドを編集できるという利点もあります。
まず、Nohup とその背景要因を理解します。
ターミナルウィンドウからアプリケーションを開いて閉じると、多くの場合、アプリケーション自体も終了してしまいます。これは望ましくないかもしれません。Linuxでは、あるアプリケーションが別のアプリケーションを起動すると、プロセスがフォークされるため、元のアプリケーションが親アプリケーションになります。
親プロセスが終了すると、通常はすべてのサブプロセスも閉じられます。コマンドウィンドウに次のコマンドを入力し、プロセスが起動するのを待ってからコマンドウィンドウを閉じてください。
firefox
ターミナルを閉じた後もサブプロセスを実行し続けるには、nohup と呼ばれる実績のあるツールを使用します。
ノフップ
nohup コマンドは、プロセスが SIGHUP シグナルを無視するように強制し、ユーザーがログアウトした後やターミナル セッションが終了した後でもプロセスの実行を継続できるようにします。
ターミナルを閉じた後もプロセスを実行し続ける方法ができたので、nohup は出力をカレントディレクトリの nohup.out ファイルに自動的に書き込むことに注意してください。これらのファイルをファイルシステム全体に分散させる場合を除き、この動作に対処する必要があります。すべての出力を無視するか、ログ用に特定のファイルにリダイレクトするかを選択できます。
すべての出力を無視するには、ジャンク データのブラック ホールとして機能する /dev/null にリダイレクトするだけです。
nohup firefox &>/dev/null
これで、ターミナルを閉じてもFirefoxは動作を続けます。ただし、この設定ではすべてのログが無効になってしまいます。代わりに、出力をログファイルにリダイレクトすることもできます。
nohup firefox &>/tmp/firefox.log
これで、Firefox に問題がある場合は、ログ ファイルを読み取ることができます。
背景要因
FirefoxでNohupを実行すると、コマンドラインがNohupに引き継がれるため、他のコマンドを実行できなくなります。同じコマンドウィンドウを他の用途に使いたい場合、これは理想的な解決策ではありません。そこで、バックグラウンドエージェントの出番です。
バックグラウンド演算子は、コマンドの末尾に「and」を追加するだけのシンプルなもので、アプリケーションの実行中でもコマンドウィンドウを使い続けることができます。試してみてください。
firefox &
ここでターミナルウィンドウを閉じると、アプリも終了することに気づくでしょう。これは、バックグラウンドランチャーがアプリをバックグラウンドに置いたとしても、SIGHUPシグナルには従うため、ターミナルウィンドウを閉じるとプロセスが停止するからです。そのため、Nohupも使用しています。
バックグラウンドワーカーの便利な機能の一つは、プロセスをフォアグラウンドに戻す機能です。Firefoxをバックグラウンドに送った後、fgと入力するとフォアグラウンドに戻ります。
バックグラウンドワーカーでNohupを使用する
バックグラウンド ワーカーで Nohup を使用すると、アプリケーションは完全にバックグラウンドで実行されるため、ターミナル ウィンドウで作業を続行したり、ターミナル ウィンドウを閉じたりしても、プロセスは中断されることなく実行され続けます。
nohup firefox &>/tmp/firefox.log &
覚えやすいニックネームを使用してください。
シェルエイリアスはコマンドのエイリアスとして機能します。例えば、Firefoxを起動するには「f」という文字を割り当てます。ターミナルで「f」と入力するだけでFirefoxが開きます。シェルエイリアスの使い方がわからない場合は、シェルエイリアスの作成方法に関する記事を読むことをお勧めします。
シェルのカスタマイズでは、覚えやすいエイリアス(長いコマンドを表す、短くて覚えやすい文字列)を使うのが一般的です。例えば、Firefoxのショートカットを作成して、特定の引数でブラウザを起動することができます。
alias ffaa="firefox about:about"
alias ffac="firefox about:config"
alias ffnt="firefox --new-tab"
alias ffp="firefox --profile"
alias ffsm="firefox --safe-mode"
ニックネームをアルファベット順に並べると、どのニックネームがすでに使用されているかがわかりやすくなります。
通知
Firefox を実行するには、Nohup とバックグラウンド エージェントを使用する必要がある場合があります。
ファジーインターフェースレジストリを使用する
インストールするインターフェースツールの中で最も便利なのは、あいまい履歴ツールです。Atuinはまさにそれを実現するアプリケーションで、どこでも動作します。私は個人的にZshのアドオンであるzsh-fzf-history-searchを使用していますが、機能はほぼ同じです。
長いコマンドを書くのに長い時間を費やすなら、それを簡単に再実行できる方法があると便利です。私はよく、1~2分かけて複雑なコマンドを作成し、その後、シェルログを使って、数か月、あるいは数年にわたって何百回も実行します。
メリットが1つだけあるなら、ファジーシェルログのアドオンまたはアプリを使うのがおすすめです。Atuinの使用をお勧めします。ご興味があれば、Atuinの紹介記事をご覧ください。
フラットコマンドファイル
ファジーシェルログの背後にある考え方はシンプルです。シェルログをコンパイルし、不要な詳細を削除して、その結果をFZFというプログラムに送信します。これと似たような処理を行いますが、今回はFZFを使ってプレーンテキストファイルからコマンドを選択し、実行できるようにします。
FZFは、長いリストから項目を素早く選択できるように設計されています。これは必須ツールであり、あらゆる高度なシェルツールキットの一部です。ターミナルスキルを向上させたいなら、ぜひ使い方を習得することをお勧めします。FZFは使いやすく、経験豊富なユーザー向けの高度な機能を多数備えています。
FZF を使用して複数行のテキストを検索する方法の簡単な例を次に示します。
echo "foo\nbar" | fzf








