すべてのMacおよびLinuxユーザーが知っておくべき10のUnixコマンド
GUIは素晴らしいです—私たちはGUIなしでは生きたくありません。ただし、MacまたはLinuxユーザーであり、オペレーティングシステム(およびキーストローク)を最大限に活用したい場合は、Unixコマンドラインに精通する必要があります。ポイントアンドクリックは、1回または2回何かをする必要があるときはいつでも素晴らしいです。ただし、そのタスクを何度も繰り返す必要がある場合は、コマンドラインが救い主です。
コマンドラインは、コンピューターの強力な機能をすべて利用できるウィンドウです。GUIの制約から解放されることを切望している場合、またはリモートマシンのプログラミングや管理が将来的にあると考えている場合は、Unixコマンドラインを学ぶことは間違いなくあなたにぴったりです。
Unixコマンドが魔法の呪文のように見えても、システムの不思議な内部が理解できないように見えても心配しないでください。それらを学ぶのはそれほど難しいことではありません。この記事では、始めるために必要な10の重要なコマンドを紹介します。やがて、それらの不可解な文字列は第二の性質になるでしょう。
シェルの基本
Unixコマンドラインシェルは、Microsoft Windowsのコマンドウィンドウ(cmdまたはPowerShell)とほぼ同等です。以下で説明するコマンドは、Linux、Darwin(MacOSの基盤)、FreeBSD、さらにはGitBashやWindows10の新しいBashシェルなどのWindowsを含むUnixライクなシステムで機能します。オプションと出力は異なります。少しですが、それらを理解するのに問題はないはずです。
まず、ターミナルウィンドウと呼ばれることもあるシェルを開く必要があります。多くの場合、Unixディストリビューションは、これを[管理]メニューまたは[システム]メニューに配置します。MacOSでは、ターミナルは[アプリケーション]> [ユーティリティ]> [ターミナル]にあります。起動すると、次のようなものが表示されます。

MacOS 10.11のこの画面は、GUIのほとんどのシェルによく見られます。ウィンドウの上部には、シェルのタイプ(この場合はBash(MacOSおよびほとんどのLinuxディストリビューションのデフォルトシェルであるBourne Again Shell))とウィンドウのサイズが表示されます。ウィンドウ内にはプロンプトがあり、この場合はマシンの名前(Mercury
)、現在の作業ディレクトリの名前(ここ~
では、ユーザーのホームディレクトリの省略形であるチルダ)、ユーザーの名前を表示するように構成されています。そして最後にプロンプトシンボル($
)。ファイルシステム内を移動したり、マシン上で別のユーザー(管理コマンドを実行するためのrootやスーパーユーザーなど)になったりすると、プロンプトが変わることに注意してください。プロンプトにこの情報が表示されるので、どのマシンのどこに誰がいるかを簡単に知ることができます。
UnixシェルにはBourneシェルとCシェルの2つの主要なフレーバーがあることを知っておく価値があります。Bourneと会社は元のAT&T Unixから派生し、Cシェルはカリフォルニア大学バークレー校とBSDUnixから派生しました。一般に、ボーンとCシェルの派生物は、ターミナルでのインタラクティブな作業に適しています。POSIX標準シェルであるKornシェルは、スクリプトと呼ばれる、シェルで独自のプログラムを作成するために使用するシェルです。このチュートリアルの例では、Bashシェルを使用します。
シェル環境
Unixコマンドラインでの作業について理解する最初の事実の1つは、シェルが独自の環境で動作することです。シェル環境を制御する方法を理解することは、コマンドラインで効率的になるための重要な部分です。env
コマンドを使用して環境を見てみましょう。

今はすべての環境変数を理解することを心配する必要はありませんが、それらがそこにあることを知ってください。すでにいくつかの変数を認識しているはずです。たとえばSHELL=/bin/bash
、Bashシェルを使用していることを示します。HOME=/Users/nunez
ユーザーのホームディレクトリの場所を指定します。環境変数を変更または作成することができ、多くの場合そうします。と呼ばれる環境変数を設定し、FOO
その値を表示する例を次に示します。

ご覧のとおり、慣例により、変数は大文字にします。コマンドで使用するときに環境変数を参照する方法に特に注意してください$
。$
変数の値を使用するには、コマンド・インタプリタに指示します。がない場合$
、echo
上記のコマンドは単に変数の名前を出力しますFOO
。
Unixコマンド
使用するシェルに関係なく、シェルにコマンドを入力するたびに、Unixプログラムが実行されます。Unixの設計哲学は、1つのことをうまく実行するプログラムを作成し、それらをチェーン(または「パイプ」)して有用な作業を行うことです。/ etcディレクトリ内のファイルの数を数える簡単な例を見てみましょう(後で/ etcディレクトリに移動する方法を説明します)。

このコマンドシーケンスは、配管とオプションという2つの重要な概念を示しています。このls
コマンド(dir
Windowsのコマンドと同等)は、ディレクトリの内容と wc
(ワードカウント)ワード数を表示します。それらの間の垂直バーに注意してください。それがパイプのキャラクターです。パイプは最初のコマンドの出力を受け取り、それを2番目のコマンドへの入力として送信します。パイプで相互に接続することにより、Unixで任意の数のコマンドをチェーンできます。
次に注意するのは、各コマンドに与えられたオプションです。Unixでは、オプションの前にダッシュ文字1文字が付けられます-
。これらのコマンドラインオプションは、コマンドの動作を変更します。この例では、-l
へのオプションls
出力を達成するための手段ながら「長い」形式でディレクトリの内容、–l
へのオプションwc
の手段は、「行」の代わりの言葉をカウントします。英語では、このコマンドは次のように読むことができます。
現在のディレクトリの行数を一覧表示し、それらをワードカウントプログラムに送信して行数をカウントします。
多くの場合、これらのコマンドラインオプションは、環境で設定されているデフォルトを上書きします。コマンドの動作を永続的に変更する場合は、ログイン時に環境変数を自動的に設定できます。たとえば、多くのコマンドではオプションを1つの文字列に組み合わせることができますが、ls -la
そうでないコマンドもあります。コマンドのすべてのオプションについては、そのマニュアルまたは「マニュアルページ」(以下で説明します)を確認することで学ぶことができます。
コマンドラインオプションの学習と使用は、Unixコマンドラインで効率を上げるための重要な部分です。一部のコマンドには非常に多くのオプションがあるため、ドキュメントは数十ページまで実行されます。今は心配しないでください。多くの場合、特定のタスクを実行するために必要なオプションはわずかであり、多くのオプションはシェル言語でプログラムを作成する場合にのみ使用されます。
マニュアル
コマンドラインと環境の基本を理解したら、システムをさらに深く掘り下げることができます。最初に始めるのはマニュアルです。
Unixの優れた点の1つは、ドキュメントの高品質です。ユーザー、システム管理者、およびソフトウェア開発者向けのドキュメントがあります。man
コマンドを使用してドキュメントにアクセスします。マニュアルのマニュアルを読むことから始めましょう(man man
コマンドラインで入力してください)。

マニュアルは8つのセクションに分かれており、BSD / Linux / MacまたはSystemVタイプのUnixを使用しているかどうかによってわずかに異なります。各セクションのman -s 1 intro
概要を読むことから始めると便利です。これは、のような呪文で行うことができます。つまり、セクション1を調べて、「はじめに」というマニュアルページを見つけることを意味します。

探しているコマンドがわからない場合は、-f
と-k
オプションを試すことができます。コマンドの名前がわかっている場合はコマンドの機能を示し、1つ以上のキーワードに基づいて関連するコマンドの名前を一覧表示します。どちらのオプションも、組み込みデータベースを検索し(構成されている場合、通常は構成されています)、すべての一致を返します。たとえば、次の文字列で始まるマニュアルページを表示します。man –f command
man –k
hint
man –k bzer
bz

ファイルシステム
Unixファイルシステムはオペレーティングシステムの中核であるため、Unixファイルシステムに関連する多くのコマンドがあります。以前にそれらの1つを見ました:ls
、ディレクトリ内のファイルをリストします:

このls
コマンドは、すべての中で最も頻繁に使用されるコマンドである可能性があり、出力を調整するための多くのオプションがあります。すぐに知りたいオプションの1つは、ls -a
(すべてリストする)です。これにより、デフォルトで非表示になっている「ドット」ファイル(名前がドットまたはピリオドで始まるファイルまたはディレクトリ)が表示されます。これらのファイルまたはディレクトリには、通常、Unixシステムの構成情報またはログファイルが含まれています。たとえば、.bash_historyファイルは、コマンドラインで入力したすべてのコマンドをログに記録します。

すぐに必要になるもう1つのコマンドは、cd
ディレクトリを変更するために使用するコマンドです。これはWindowsの同じコマンドに似ていますが、重要な違いがあります。 Unixでは、すべてのドライブ(デバイス)が単一のドライブとして表示されます。 WindowsではE:として表示される外付けハードドライブに写真があるかもしれませんが、Unixではそのドライブは/ home / user / picturesかもしれません。 Unixシステム上のすべてのファイルは、/(ルートディレクトリ)で始まるパスを介してアクセスされ、必要に応じてファイルシステムのさまざまなポイントにさまざまなハードドライブをマウントできます。
ファイルシステムを歩き回る前に、必要になる別のコマンドを紹介します:(pwd
作業ディレクトリの印刷)。増大するファイルシステムでは失われる可能性のある場所が多数あるため、このコマンドを使用すると、現在地をすばやく特定できます。ディレクトリをシステム構成ファイルが保存されている場所に切り替えて、場所を確認しましょう。

cd
引数なしでコマンドを使用すると、ホームディレクトリにすばやく戻ることができることに注意してください。別のヒント:~
は、BashシェルとCシェルの両方でホームディレクトリを参照するためのショートカットとして使用できます。
この時点で、ファイルシステム内を移動し、ディレクトリの内容を一覧表示する方法を理解できました。次に、それらに保存されているファイルを読み取る方法が必要です。最近のほとんどのシステムには、less
このためのコマンドが付属しています。less
ファイルをページごとに表示し、Viコマンドを使用してナビゲートできるようにします(押すj
と下k
に移動、上に移動、h
ヘルプが表示され、ファイルq
を終了します)。
次のように入力して、/ etc / passwdファイルの内容を確認しましょうless /etc/passwd
。

passwdファイルには、Unixシステムのユーザーアカウントが、ユーザーID番号とグループID番号、ホームディレクトリ、および対応するコマンドまたはシェルへのパスとともに一覧表示されます。ただし、MacOSでは、passwdにはシステムサービスアカウントしかありません。これは、人間のユーザーがMacOSのシステム環境設定の[ユーザーとグループ]で構成されているためです。
ディスクスペース
ディスク容量が不足するのは段階的なプロセスであり、数年かかる場合がありますが、それでも不意を突かれる可能性があります。空き容量を確認し、ディスクを占有しているファイルを特定するために使用できるコマンドは、du
(ディスク使用量)とdf
(ディスク空き)の2つです。どちらも-h
オプションを使用します(人間が読める形式)。ディスクがどれだけいっぱいかを知るには、df
次のコマンドを使用します。

今のところ、に焦点を当てる%iused
とmounted on
列。これは、私のホームディレクトリが92%いっぱいであることを示しているので、おそらくクリーンアップする必要があります。しかし、どのようにしてすべてのスペースが使用されているかを知ることができますか?それdu
が目的です:

この例では、出力を最初の10行に制限する呪文を使用しました。そうしないdu
と、マシン上のすべてのディレクトリが一覧表示され、簡単に把握できなくなる可能性があります。このリストから、各ディレクトリによって消費されているスペースの量を確認できます。また、いくつかのコマンドをチェーン化することで、スペース使用量別に上位10個のディレクトリを一覧表示するスクリプトを簡単にまとめることができることもわかります。出力をソートするために必要なコマンドはもちろんsort
コマンドです。
MacOSのバージョンは人間が読める形式の出力をsort
処理できないため、ディスク使用量をメガバイトで表示するためdu
の-m
オプションをdu
使用しました(-g
または-k
オプションを使用してギガバイトまたはキロバイトで表示します)。出力を数値および逆の順序でソートするための-n
および-r
オプションsort
。これにより、最大のディレクトリがリストの上部に表示されます。
スーパーユーザー、su、およびsudo
多くのコマンドがシステム管理に関連しています。man -s 8 intro
それらの紹介のために入力してみてください。ここでは、システム管理に不可欠なコマンドを1つ紹介しますsu
。これは「スーパーユーザー」の略で、管理ユーザーまたはルートアカウントを指します。システムに属するすべてのファイルはこのユーザーによって所有されており、管理を実行するにはこのユーザーになる必要があります。
関連するコマンドsudo
、、を使用すると、単一のコマンドのスーパーユーザーになることができます。なぜsudo
代わりに使用するのsu
ですか?ベストプラクティスでは、rootユーザーとして走り回らないように指示されているため、偶然に取り返しのつかない害を及ぼす可能性があります。通常のユーザーとしてできることはすべて実行し、必要な場合にのみスーパーユーザーになりたいと思うでしょう。スーパーユーザー権限を取得する正確な方法は、Unixディストリビューションによって異なります。su
MacOSでどのように機能するか見てみましょう:

え?パスワードを正しく入力したと確信しています。ここで起こったことは、私の現在のユーザーnunez
、、に権限がないということsu
です。一部のUnixでは、これはユーザーがwheel
グループに含まれている必要があることを意味し、他のシステム(MacOSを含む)では、ユーザーはsudoers
ファイルに含まれている必要があります。
に追加nunez
して終了しましょうsudoers
。これにより、コマンドラインでファイルを編集することができます。パワーユーザーはEmacsとViのエディターを称賛しているので、ぜひ試してみることをお勧めしますが、ここではNanoを使用します。Nanoは習得と使用が簡単で、MacOSと多くのLinuxディストリビューションにはすでにインストールされています。