はじめに
私はLinuxファンです。
得意とは言えませんが、高校生の頃からずっと使っています。
(はは、なんてオタクなんだろう。)
その過程で、様々な便利なツールを知りました。それらについて以下でご紹介したいと思います。
この短い記事で、皆さんの好奇心を刺激し、LinuxやmacOS(?!) などの関連OSについてもっと知っていただければ幸いです。
chown
これは最近、多くのトラブルから私を救ってくれたコマンドです。
開発用のDockerコンテナをセットアップする新しいプロジェクトに携わるよう依頼されました。
手順は明確で、これらのスクリプトを実行し、VS CodeでDockerイメージを開くだけでした。
セットアップ スクリプトは問題なく実行されましたが、WSL のインストールが所有権設定に干渉し、Docker イメージ内でアプリケーションを実行できなくなりました。
イメージの保存フォルダで次のコマンドを実行することで、この問題を解決できました。
コマンド:
sudo chown -R vscode:vscode
説明:
基本的な形式は次のとおりです。
chown -R <owner>:<group> <directory>
-Rフラグは、現在のディレクトリ(.)とそのすべての子ディレクトリの所有権(グループとユーザー)を再帰的に変更します。
シンプルに見えますが、chownは非常に強力なコマンドであり、特に再帰フラグを使用する際には注意が必要です。予期しない動作をする可能性があります。
history と grep
特定の目的のためにコマンドをあちこちで使うことがありますが、後からコマンド名は覚えていても使い方が思い出せないことがあります。
「man」コマンドを実行するのは時間がかかるので、history コマンドと grep を組み合わせて実行し、以前そのコマンドをどのように使ったかを確認する方法があります。
history | grep chown
出力:
321 man chown
322 sudo chown -R vscode:vscode .
ed
GUIが利用できず、システムにnano、Vim、emacsなどの一般的なオプションが一切ない場合でも、少なくともedは必ず使えるはずです。
edはあなたの味方です。たとえ他のすべてがうまくいかなくても、edはあなたを支えてくれます。edは、最も低速な接続でも、リソースを大量に消費する操作でも、あるいは最小限の環境(ブートファイルを修復するためのレスキューシェルなど)でも動作します。
次のセッション例をご覧ください。
ed example.txt
a # 現在の行の後にテキストを追加
example text # 入力行です
. # 編集モードを終了
,p # すべてのテキストを表示
w # ファイルに書き込む
q # 終了
edを真剣に使う必要は一度もありませんでした。
これからも真剣に使う必要がないことを祈ります。
tmux
最近のLinuxディストリビューションのほとんどはGUIを搭載しているため、比較的ユーザーフレンドリーです。
しかし、どんなに使いやすいディストリビューションでも、時折ターミナルを使う必要があります。
さらにターミナルウィンドウが必要な場合は、GUIで開くことができます。
GUIがなくても問題ありません。Ctrl+Alt+F1~F6の組み合わせでTTYセッションを切り替えられます。
TTYさえも使えない?もしかしたらSSHを使っているのかもしれません。別のウィンドウで複数の接続を開くか、tmuxを使ってみてください。
tmuxを使うと、複数の仮想テキストウィンドウを開くことができるので、1つのターミナルウィンドウで複数の作業を同時に行うことができます。
ローカルで tmux セッションを開始し、次のコマンドを使用して移動してみてください。
tmux
Ctrl+b % # 垂直分割
Ctrl+b " # 水平分割
Ctrl+b <arrow key> # ペイン間を移動
dd
さて、これがこの記事で最も強力で、危険で、そして便利なコマンドです。
Linuxユーザーであれば、ISOイメージ(CD/DVD形式!ただし、ここではフラッシュドライブに格納します!)でパッケージ化されたディストリビューションをインストールするには、このコマンドを定期的に使用する必要があります。
始める前に、lsblkコマンドを実行してフラッシュドライブのファイル名を確認してください。
lsblk
出力の例:
sda 100G (HDD、触らないでください)
sdb 16G (USBメモリ)
これで、接続したフラッシュドライブがパス /dev/sdb にマウントされていることがわかります。
ISOイメージが準備できていれば、以下のコマンドを実行してドライブにコピーできます。
sudo dd if=ubuntu.iso of=/dev/sdb status=progress && sync
そして、処理が完了するまで待ちます。
dd はこれ以外にも様々な機能を備えています。ドライブ全体のコピー、CD のバックアップイメージの作成、仮想マシンで使用するための GB サイズの空ファイルの作成など… システム管理者を目指す人にとっては可能性は無限大ですが、残念ながらこれらのトピックはこの記事の範囲を超えています。
注: 調査中に、コピー "cp" は dd の機能、つまりフラッシュドライブへのイメージの貼り付けも実行できることが分かりました… つまり、cp は dd と同じくらい危険なコマンドということですね。うっかりコピーしてしまわないように、くれぐれもご注意ください!(笑)
今日はここまでです!
少しでも興味を持っていただけたら嬉しいです。 ;-)
ハッピーハッキング、そしてメリークリスマス!🎄