最近ターミナルでの作業が増えてきて「あれってどうやるんだっけ?」とか「これができたら便利なのに」と思うことが増えてきたので、基礎からコマンドラインの使い方を覚え直しています。使ってないとまたすぐに忘れてしまうので覚え書きです。
とりあえず「これくらい知ってれば便利に使えるはず」というのをざっくりまとめてみました。
ちなみに「6日間で楽しく学ぶLinuxコマンドライン入門 」という本をベースに学び直しています。以下にまとめたコマンドだけでなく、viの使い方からシェルスクリプトの書き方、さらにはシステム管理などについて、すごく丁寧に解説されていてオススメです。
目次
頻繁に使うコマンド一覧
| コマンド | 説明 | オプション |
|---|---|---|
| ls | ディレクトリ情報の表示 | -a システムファイル表示-l ロングフォーマット-d 指定のディレクトリ情報のみ表示 |
| cd | ディレクトリの移動 | |
| cp | ファイルのコピー | -i インタラクティブモード-p ファイルの属性を維持-R 丸ごとコピー-v コピーされたファイル名の表示 |
| mv | ファイルの移動 ファイル名の変更にも使えます。 mv 元ファイル名 新ファイル名 |
|
| rm | ファイルの削除 | -r ディレクトリとディレクトリ内の全てのファイルを削除。確認なしに全部消えちゃうので要注意です! |
| cat | テキストファイルの内容を表示 | -n 行数表示 |
| touch | ファイルのタイムスタンプの変更。ファイルが存在しない場合は空ファイルが作られる | |
| mkdir | フォルダ作成 | -p 入れ子のフォルダを一気に作成 |
| man | マニュアルの表示 |
たまに使いそうなコマンド一覧
| コマンド | 説明 | オプションまたは使用例 |
|---|---|---|
| whatis | コマンドの簡単な説明を表示 | |
| which | コマンドの保存先を調べる | |
| type | コマンドの保存先を調べる | -a 全ての保存先を表示 |
| apropos | コマンドをキーワードで検索 | |
| find | ファイルの検索。find ディレクトリ名 -name ファイル名で検索できる。※いろいろ便利な使い方があるので別途記事にします |
-name ファイル名-typeタイプ(d: ディレクトリ、f: ファイル、l: シンボリックリンク)-mtime 変更日時(-3で3日前から現在、+3で3日前よりも前)-sizeサイズ |
| cal | カレンダーの表示 | 例) cal 11 2018 |
| date | 日付の表示 | |
| pwd | いまいるディレクトリの表示(print working directory) |
ファイル操作(フィルタ)系コマンド
| コマンド | 説明 | オプションまたは使用例 |
|---|---|---|
| head | 指定した最初の行を表示する(デフォルトは10行) | -3 最初の3行を表示 |
| tail | 指定した最後の行を表示する(デフォルトは10行) | -3 最後の3行を表示 |
| sort | 行の並べ替え | -r 降順-u 重複を削除-b 先頭のスペースを無視 |
| uniq | 隣接する重複行の削除。sortしてからじゃないと機能しない | |
| wc | 文字数のカウント。結果は行数、単語数、文字数の順に表示される | -c 文字数の表示(バイト数)-l 行数-w 単語数 |
覚えておくと便利な記号
カレントディレクトリ
| 記号 | 説明 |
|---|---|
| . | カレントディレクトリ。たとえば、他のディレクトリにあるファイルを、今のディレクトリにコピーするときに使える。 |
使用例
$ cp /Users/rriver/docs/readme.txt .
直前にいたディレクトリ
| 記号 | 説明 |
|---|---|
| ~- | 直前にいたディレクトリ |
使用例
$ cd ~-
ワイルドカード(任意の1文字)
| 記号 | 説明 |
|---|---|
| ? | 任意の1文字 |
使用例
$ ls ????.txt
ファイル名が4文字の.txtファイルの一覧を表示
ワイルドカード(0個以上の任意の文字列)
| 記号 | 説明 |
|---|---|
| * | 0個以上の任意の文字列 |
使用例
ls *.png
.pngのファイル一覧を表示。
出力のリダイレクション
| 記号 | 説明 |
|---|---|
| > | 出力のリダイレクション |
使用例
cat text1.txt > text2.txt
text2.txtにtext1.txtの内容を書き込む。上書きされる。
出力のリダイレクションで追加
| 記号 | 説明 |
|---|---|
| >> | 出力のリダイレクションで追加 |
使用例
cat text1.txt >> text2.txt
text2.txtの後にtext1.txtの内容が追加される。
出力のリダイレクションでエラーを書き込む
| 記号 | 説明 |
|---|---|
| 2> | エラーをファイルに書き込む |
使用例
ls - 2> error.txt
error.txtに「ls -」コマンドで出力されるエラーが書き込まれます。
複数のコマンドをつなげて実行する(パイプ)
| 記号 | 説明 |
|---|---|
| | | 複数のコマンドをつなげて実行できる。前のコマンドの出力が次のコマンドの入力になる |
使用例
last | head -3
ログイン情報(lastで出力)の最初の3行をheadで出力
複数のコマンドを連続して実行
| 記号 | 説明 |
|---|---|
| ; | 複数のコマンドを連続して実行(別々のコマンド) |
覚えておくと便利なキー操作
| キー | 説明 |
|---|---|
| Tab | 最初の数文字を入力して「Tab」を押すと残りの文字を保管してくれる |
| Ctrl + B | 前 |
| Ctrl + F | 後 |
| Ctrl + A | 行頭 |
| Ctrl + E | 行尾 |
カット&ペースト
| キー | 説明 |
|---|---|
| Ctrl + H | カーソルの前の文字を削除 |
| Ctrl + D | カーソル位置の文字を削除 |
| Ctrl + K | カーソルから行尾までを削除 |
| Ctrl + U | カーソルから行頭までを削除 |
| Ctrl + Y | 削除した文字をペースト |
コマンドの呼び出し
| キー | 説明 |
|---|---|
| Ctrl + P | 前のコマンド |
| Ctrl + N | 次のコマンド |
Linux系システムのディレクトリ構造
システムのディレクトリ構造なんて別に知らなくても生きていけるんですけど、知っていると困ったときに便利なんですよね。ということで、超ベーシックなものを一覧にしておきます。「Filesystem Hierarchy Standard 」で標準化されているそうで、リンク先にあるドキュメントにどのディレクトリに何をおくべきか、また、どのようにシェアされるべきかなど、こと細かく書かれています。すごいですね。
| ディレクトリ | 格納されているもの |
|---|---|
| bin | 必要不可欠(Essential)な基本コマンド。バイナリの略 |
| sbin | 管理(システム系)コマンド |
| usr | 各種コマンドやドキュメント |
| home | 一般的にはユーザのホーム。MacではUsers |
| var | 頻繁に更新されるデータ。logとか |
| etc | 設定ファイル |
| lib | ライブラリ |
| dev | デバイスファイル |
| media | リムーバブルメディアのマウントポイント |
| mnt | マウントポイント。Macの場合Volumes |
usrディレクトリの中
| ディレクトリ | 格納されているもの |
|---|---|
| bin | ほとんどの基本コマンド |
| sbin | 必要不可欠でない(Non-essential)管理コマンド |
| local | ユーザがインストールしたコマンド。だからHomebrewとかここなのね |
| share | 共有ファイル |
ちなみに、Macではローカライズドファイルシステムという仕組みでFinderでは日本語表記のものがターミナルでは英語で表記される。
確認に使った実行環境
ここに記述したコマンドはすべて以下の環境で確認しています。記事タイトルに「Linuxコマンド」と書いたので「えっ、Macで確認?」というツッコミもあったのでCentOSでも確認をしておきました。さらに書いておくと、macOS はLinuxではなくてUNIXベースのDarwinですが、ここで書いたような基本的なコマンドはほぼ同じように使えます。記事タイトルは「Linux」にしようか「Unix」にしようか迷ったんですが、最近ではLinuxの方が一般的なのかと思ってLinuxにしたのでした。
Mac
- macOS High Sierra 10.13.2
- iTerm2 Build 3.1.5.beta.2
- zsh 5.4.2
Linux
- CentOS Linux release 7.4.1708
- GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
ここに書いたものはごくごく一般的なコマンドなので問題ないと思いますが、実行環境によっては記述と異なる場合があります。ご注意ください。
Twitterで「タイトルにLinuxコマンドライン操作とあるのに確認したのはmacOS」というご指摘をいただきました。確かに、おっしゃる通りなので、念のためVagrantで走らせているCentOS(CentOS Linux release 7.4.1708)でも確認しました。CentOSの設定がおかしくなっているのか、なぜかwhatisコマンドだけLocaleの問題か何かでエラーが出てしまいますが、それ以外は同じように動きます。
更新情報
- mvコマンドにファイル名の変更について追記しました(2018/8/26)
2017年12月26日に公開され、2019年3月25日に更新された記事です。
About the author
「明日のウェブ制作に役立つアイディア」をテーマにこのブログを書いています。アメリカの大学を卒業後、ボストン近郊のウェブ制作会社に勤務。帰国後、東京のウェブ制作会社に勤務した後、ウェブ担当者として日英バイリンガルのサイト運営に携わる。詳しくはこちら。
ウェブ制作・ディレクション、ビデオを含むコンテンツ制作のお手伝い、執筆・翻訳のご依頼など、お気軽にご相談ください。いずれも日本語と英語で対応可能です。まずは、Mastodon @rriver@vivaldi.net 、Twitter @rriver 、またはFacebook までご連絡ください。