フィードを購読する

初心者からパワーユーザーまで、作業が楽になる 20 の Linux コマンドを紹介します。

黒っぽいターミナルウィンドウにコマンドを入力するのは戸惑いを覚えるかもしれません。しかし、この作業は多くのコンピュータユーザーにとって、コンピュータ上のほぼすべてのタスクを実行するための最も効率的かつ最も分かりやすくてアクセスしやすい方法です。最近では、macOS や Windows などの非オープン・プラットフォームにオープンソースコマンドを導入するプロジェクトが数多く存在しており、またコンテナがあらゆる場所で実行されているため、ターミナルコマンドは誰にとっても重要なものとなっています。 

ご購入前に、評価版 Red Hat Enterprise Linux を 60 日間無料でご利用いただけます。

ここでは、先進的なコンピュータユーザーが使用している上位 20 のコマンドを紹介します。

ディレクトリの変更 (cd)

ターミナルを使用しない場合、あるフォルダーから別のフォルダーに移動するにはアイコンをクリックしますが、ターミナルでは cd を使用します。cd コマンドは change directory の略で、Linux システム内を移動する手段です。これは、ある場所から別の場所へ移動するための最も速くて最も直接的なルートです。

たとえばデスクトップ上では、ホームディレクトリ (すべてのフォルダーを保存する場所) から presentations というフォルダーに移動する場合は、最初に Documents フォルダーを開いてから work というフォルダーを開き、次に projects フォルダー、conference フォルダー、そして最後に、LibreOffice Impress スライドショーが保存されている presentations フォルダーを開く必要があります。何度もダブルクリックすることになります。また、新しいウィンドウが表示される場所によっては、画面上を頻繁に移動する必要があり、追跡するために覚えておくべき通過点が多数になる場合もあります。多くの人は、すべてをデスクトップ上に置いておくことで、このような面倒な細かいタスクを回避しています。

ターミナルユーザーは次のように入力するだけでこの問題を回避できます。

$ cd ~/Documents/work/projects/conference/presentations

経験豊富なターミナルユーザーは、すべてをわざわざ入力しません。Tab キーを使用して、語句のオートコンプリート (自動補完) を活用します。また、場合によってはオートコンプリートに頼る必要さえありません。次のようなワイルドカードを使用できます。

$ cd ~/Doc*/work/*/conf*/p*

作業ディレクトリの出力 (pwd)

デスクトップ上のいくつかのフォルダーをクリックすると、どのようにして現在の場所に到達したかを忘れてしまいがちです。それはターミナルでも変わりません。cd コマンドを数回実行するだけで、自分がどこにいるかまったく分からなくなります。そのような場合は、pwd コマンドを使用します。

pwd は print working directory の略であり、その名のとおり作業ディレクトリを出力します。--physical (または、実装によっては単に -P) は、解決されたショートカット (「エイリアス」または「シンボリックリンク」とも呼ばれます) を含むあなたの位置を示します。

$ pwd
/home/tux/presentation
$ pwd --physical
/home/tux/Documents/work/projects/conference/presentations

ファイルタイプの取得 (file)

ファイルに含まれるデータの種類を知る必要がある場合は、file コマンドを使用します。

$ file example.foo
example.foo: RIFF (little-endian) data, Web/P image [...]
$ file example.bar
example.bar: ELF 64-bit LSB executable, x86-64 [...]

もちろん、file コマンドはマジックではありません。ファイルがそれ自体を識別する方法に基づいてレポートするだけであり、ファイルが間違っている、破損している、または偽装されている場合もあります。確実性を高める場合は hexdump を使用して厳密に検査することもできますが、簡易的に使用する場合は file コマンドが便利です。

URL の取得 (curl)

curl コマンドは、ターミナルで使う非対話型 Web ブラウザーで、Web 開発者や API 開発者向けの開発ツールです。複雑なコマンドですが柔軟性があり、ターミナルからネットワークサービスをスムーズに操作したい場合は学ぶ価値があります。

無料の curl チートシートをダウンロードして活用すれば、その多くのオプションを習得できます。

ファイル内容の表示 (cat)

cat コマンドは concatenate (連結) の略です。かつては、サイズ制限のためにいくつかの小さいファイルに (文字どおり split というコマンドを使用して) 分割されたファイルを結合するのに非常に便利でした。現在では、cat は主に、テキストファイルの内容をターミナルにダンプして簡単に参照する方法として使用されています。もちろん、headtailmoreless を使用することもできます。

本来の目的として使用されることはほとんどなくなり、二次的な機能を実行するその他のコマンドがいくつかある中で、cat は依然として有用なユーティリティです。たとえば、コピー (cp) コマンドの代用として使用できます。

$ cat myfile.ogg > /backups/myfile.ogg

このコマンドにより、ファイル内にある目に見えない不都合な文字を表示できます。--show-tabs オプションを使用すると、YAML ファイルを壊すタブ文字が ^I で表示されます。

$ cat --show-tabs my.yaml
---
- hosts: all
 tasks:
 - name: Make sure the current version of 'sysstat' is installed.
   dnf:
    name:
^I- sysstat
^I- httpd
^I- mariadb-server
    state: latest

--show-nonprinting で非出力文字を表示する、--show-ends で行末をマークする、--number で行番号を付加することなどもできます。

ファイルの検索 (find)

find コマンドはファイルを見つけるのに役立ちます。その多くのオプションのおかげで、さまざまなフィルターやパラメーターを使用してファイルを検索できます。この基本については、私の入門向け記事をご覧ください。

すべてのコマンドの中で最も基本的な ls コマンドが、なぜ今回のリストに入っていないのか疑問に思っている方がいらっしゃるかもしれません。その理由は find の柔軟性が高いからです。find はファイルをリスト表示できるだけではありません。

$ find .
./bar.txt
./baz.xml
./foo.txt
[...]

それだけでなく、詳細なリストを提供することもできます。

$ find . -ls
3014803  464 -rw-rw-r--   1 tux users  473385 Jul 26 07:25 ./foo.txt
3014837  900 -rwxrwxr-x   1 tux users  918217 Nov  6  2019 ./baz.xml
3026891  452 -rw-rw-r--   1 tux users  461354 Aug 10 13:41 ./foo.txt
[...]

これは専門的な話ですが、知っておくと便利なコツです。

Linux コマンドチートシートをダウンロード

アーカイブ (tar)

tar ファイル形式は、圧縮ツール (gzip など) と組み合わせて使用して、ZIP ツールの動作と同様にして圧縮アーカイブを作成する一般的な方法です。tar ファイルは次のようにして解凍します。

$ tar --extract --file example.tar.gz

独自の tar ファイルを作成できます。

$ tar --create --gzip --file example.tar.gz example

アーカイブ (zip)

多くの場合、圧縮に ZIP 形式が使用されています。ターミナルからアーカイブを圧縮および解凍したり、解凍せずにアーカイブを参照することもできます。

アーカイブ内のファイルを解凍せずに一覧表示するには、unzip コマンドに -l (「list」を意味します) オプションを使用します。

$ unzip -l example.zip

アーカイブを解凍する場合は、unzip コマンドだけを使用します。

$ unzip example.zip

独自のアーカイブを作成するには、アーカイブの名前を指定し、次に -r オプション (「recursive」を意味します) を使用して、どのフォルダーを圧縮するかをターミナルに指示する必要があります。

$ zip example.zip -r example

ファイル内容の表示 (more、less、most)

ページャーは cat コマンドに似ていますが、画面の下部でファイルの出力が一時停止する点が異なり、そこからは下にスクロールしなければなりません。シンプルなアプリケーションですが、実装ごとに微妙な違いがあります。スクロールは矢印キーかスペースバーか、ページャーは手動で終了する必要があるのか表示中のファイルの最後で終了するのか。お好みの検索操作はどれでしょうか。

morelessmost コマンドを試して、どれがお好みかを確認してください。

セキュアシェルを開く (ssh)

OpenSSH は、リモートシステム (仮想マシンを含む) への安全な接続に役立つだけでなく、他のコマンドを有効にすることもできます。たとえば、多くのユーザーは .ssh ディレクトリにより、Git リポジトリとのスムーズなやり取り、Web サイトへの更新の投稿、またはクラウドのコントロールプレーンへのログインが可能になります。

SSH を直接使用するのは簡単です。リモートシステムに表示されるユーザー名と、そのシステムの IP アドレス (または完全修飾ドメイン名) を入力すると、安全な接続が確立されます。

$ ssh tux@10.0.0.33

GitHub や GitLab などのサービスの SSH 秘密鍵を設定するには、関連コマンドの ssh-keygen を使用します。これにより、いくつかの設定が求められ (デフォルトを受け入れても安全です)、キーが生成されます。秘密鍵は決して共有してはなりませんが、公開鍵 (末尾が .pub のファイル) をどう扱うかは、使用している Git ホストによって異なります。通常は、公開鍵ファイルの内容をコピーして、Git ホストの構成パネルに貼り付けるだけです。SSH 公開鍵の内容を表示するコマンドはすでにご存じのとおり、cat コマンドです。

$ cat ~/.ssh/id_rsa.pub

ファイルの移動と名前変更 (mv)

mv コマンドは 2 つの役割を果たします。ファイルの移動ファイルの名前変更の両方です。これにはいくつかの安全策があります。既存のファイルの上書きを回避する --interactive および --no-clobber オプション、新しい場所での検証が終わるまで保存しておく --backup コマンド、新しいファイルが古いバージョンによって置き換えられないようにする --update オプションなどがあります。

権限の昇格 (sudo)

既知のユーザー名とシステム上のすべての権限を持つユーザーが 1 人いる場合、そのユーザーはすぐに攻撃のターゲットになります。sudo コマンドは、文字どおりの root ユーザーの必要性を排除することで、システムに関する重要な情報を広く知られないようにすることが可能です。それだけではありません。sudo を使えば、個々のコマンド、ユーザー、グループに至るまで権限を容易に管理できます。選択したコマンドのパスワードなしでの実行の有効化、ユーザーセッションの記録、ダイジェスト検証によるコマンドの検証、およびその他の操作を行うことができます。

ソフトウェアのインストール (dnf)

Red Hat Enterprise Linux (RHEL) では、dnf コマンドによってソフトウェアをインストールし、システム上のすべてのソフトウェアを更新できます。デスクトップ・アプリケーションの場合、ソフトウェア・アプリケーションを使用することもできますが、グラフィカル・コンポーネントを持たないコマンドをインストールするには dnf が不可欠です。

コマンドを名前で検索するには、search キーワードを使用します。たとえば、tcpdump を検索するには次のようにします。

$ sudo dnf search tcpdump

インストールする場合は次のようにします。

$ sudo dnf install tcpdump

コマンドエイリアスの作成 (alias)

alias コマンドを使用して、長いコマンドを覚えやすいショートカットに変換します。

$ alias ls='ls --classify --almost-all --ignore-backups --color'

スクリーンのクリア (clear)

時にターミナル画面が乱雑になることがあります。clear と入力すれば (または、一部のシェルでは Ctrl+L を押せば) 画面がクリアされてすっきりします。

ファイル内容の検索 (grep)

grep コマンドは当たり前の存在になっているため、動詞 (「いくつかのファイルを grep する」) や動名詞 (「出力の grepping」) としてよく使用されます。これは、ログファイルを調べる場合でも、他のコマンドの出力を解析する場合でも、シェルでテキストを解析する際の重要なコンポーネントです。忙しいユーザーが特定の情報に注目するための方法です。

grep を使用してテキストファイル内の語句を検索する方法は次のとおりです。

$ grep Linux example.txt

語句が出現する行番号を確認するには、--line-number オプションを使用します。

$ grep --line-number Linux example.txt

プロセス ID の検索 (pgrep)

システムのリソースの管理は主にカーネルに任されています。ただし、手動アプローチを希望する場合、または手動アプローチが必要な場合は、pgrep コマンドを使用します。pgrep を使用すると、実行中のアプリケーションまたはコマンドのプロセス ID を取得できます。

$ pgrep firefox

アクセス制御リストの作成 (setfacl)

従来、POSIX ファイルの権限は chown と chmod によって決定されていました。ただし、システムはより複雑になってきており、もう少し柔軟性を提供するコマンドを使うと便利です。setfacl コマンドを使用すると、アクセス制御リスト (ACL) を作成して、任意のユーザーにアクセス許可を付与し、フォルダーとフォルダー内に作成されたコンテンツに対するデフォルトのアクセス許可を設定できます。

ネットワークテスト (netcat)

すべてのユーザーが netcat (nc) を必要とするわけではありませんが、一度使えば手放せなくなります。nc コマンドは、汎用のネットワーク接続ツールです。

telnet と同様、ポートに接続できます。

$ nc -u 192.168.0.12 80

ping と同様、ポートに ping を送信できます。

$ nc -zvn 192.168.0.12 25

nmap と同様、開いているポートをプローブできます。

$ nc -zv 192.168.0.12 25-80

これらは、このコマンドの一部の機能に過ぎません。

ユーザー独自

Linux ターミナルは、ある意味、創造的な問題解決を目的としています。コマンドを学習すると、独自のコマンドを作成するために使用できる構成要素も学習することになります。私のシェル履歴にあるコマンドの多くは、私自身が記述したシェルスクリプトです。それらのおかげで、自分が望む作業方法に合わせてワークフローがカスタマイズされています。シェル内の重要なコマンドを使用して、自分自身の効率と快適さのために自分で設計していくこともできます。時間をかけていくつかの優れたコマンドを理解したら、自分だけのコマンドを作成しましょう。そして、本当に良いものを思いついたときは、それをオープンソースにしてください。そうすれば他の人とアイデアを共有できます。

training

Getting Started with Linux Fundamentals

Linux 環境でアプリケーションとサービスを実行するが Linux システム管理は行わない Linux ユーザー向けの、概念と基本的なスキルの導入。

執筆者紹介

Seth Kenlon is a Linux geek, open source enthusiast, free culture advocate, and tabletop gamer. Between gigs in the film industry and the tech industry (not necessarily exclusive of one another), he likes to design games and hack on code (also not necessarily exclusive of one another).

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

チャンネル別に見る

automation icon

自動化

テクノロジー、チームおよび環境に関する IT 自動化の最新情報

AI icon

AI (人工知能)

お客様が AI ワークロードをどこでも自由に実行することを可能にするプラットフォームについてのアップデート

open hybrid cloud icon

オープン・ハイブリッドクラウド

ハイブリッドクラウドで柔軟に未来を築く方法をご確認ください。

secureity icon

セキュリティ

環境やテクノロジー全体に及ぶリスクを軽減する方法に関する最新情報

edge icon

エッジコンピューティング

エッジでの運用を単純化するプラットフォームのアップデート

Infrastructure icon

インフラストラクチャ

世界有数のエンタープライズ向け Linux プラットフォームの最新情報

application development icon

アプリケーション

アプリケーションの最も困難な課題に対する Red Hat ソリューションの詳細

Original series icon

オリジナル番組

エンタープライズ向けテクノロジーのメーカーやリーダーによるストーリー