Parallels Desktop 25%OFFセール中Check!

Mac ターミナルの使い方 よく使うコマンド一覧

ターミナルの使い方2

Macのターミナルでよく使うコマンドからあまり使わないけどぜひ試してほしいコマンドまで幅広く紹介していきます。Macだけじゃなくて、他のUNIX/Linux系OSでも使える知識なので覚えて損はありません。

目次

よく使うコマンド

pwd現在の作業ディレクトリ名を返す
cd作業ディレクトリを変更する
lsディレクトリ内のファイル一覧を返す
cpファイルをコピーする
rmファイルを削除する
mvファイルを移動する、ファイル名を変更する
mkdirディレクトリを作成する
rmdirディレクトリを削除する
chmodファイルのパーミッションを変更する
lessテキストファイルの内容を表示する
echo文字列を画面に表示する、文字列をファイルに書き込む
lnファイルのリンクを作成する

pwd

print working directory の略で、現在の作業ディレクトリを返します。自分の居場所を見失ってしまった時に使います。

パスワードとは関係ありません。でも密かにパスワードと覚えている人は多いはずです。

% pwd
/Users/username

cd

change directory の略で、作業ディレクトリを変更します。別の言い方をすると、自分の居るディレクトリを移動します。

% cd /usr/local/bin  #/usr/local/bin に移動する
% cd foo             #現在のディレクトリ下にある foo ディレクトリに移動する
% cd ..              #ひとつ上の階層に移動する
% cd ../foo          #ひとつ上の階層にある foo ディレクトリに移動する
% cd ~               #ホームディレクトリに移動する
% cd ~/foo           #ホームディレクトリ下にある foo ディレクトリに移動する

ls

list の略で、ディレクトリ内のファイル一覧を返します。

% ls                 #現在のディレクトリのファイル一覧を表示する
% ls /usr/local/bin  #/usr/local/bin 内のファイル一覧を表示する
% ls -l              #詳細な情報を含めてファイル一覧を表示する
% ls -a              #不可視ファイルを含めてファイル一覧を表示する
% ls -lh             #詳細なファイル一覧を表示する、ファイルサイズは読みやすい単位で表示される
% ls -G              #ファイルの種類によって色分けして表示する
% ls -Glah           #複数のオプションをまとめて指定
% ls -l foo.txt      #指定したファイルの詳細情報を表示

cp

copy の略で、ファイルをコピーします。

% cp foo.txt bar/        #foo.txt を bar ディレクトリ下にコピーする
% cp foo.txt bar.txt     #foo.txt をカレントディレクトリに bar.txt という名前でコピーする
% cp -i foo.txt bar/     #コピー先に上書きされるファイルがある場合に確認する
% cp -R foo_dir bar_dir  #ディレクトリとその中身をコピーする

コピー先に同じ名前のファイルがある場合、オプション -i を付けなければ確認なしで上書きされますので注意してください。

rm

remove の略で、ファイルを削除します。

% rm foo.txt                  #カレントディレクトリの foo.txt を削除する
% rm /Users/username/foo.txt  #/Users/username 下にある foo.txt を削除する
% rm -i foo.txt               #ファイルを削除する前に確認する
% rm -r foo_dir               #ディレクトリ foo_dir とその中身を削除する
% rm -rf foo_dir              #ディレクトリ foo_dir とその中身を警告なしで削除する

rm コマンドで削除したファイルは復元できません。使う時は注意してください。

mv

move の略で、ファイルを移動します。移動先にファイル名を指定した場合はファイルの名前が変更されます。

% mv foo.txt bar_dir/    #現在のディレクトリにある foo.txt を bar_dir の下に移動する
% mv foo.txt bar.txt     #foo.txt の名前を bar.txt に変更する。
% mv -i foo.txt bar.txt  #移動先に上書きされるファイルがある場合に確認する

ディレクトリ名の末尾にはスラッシュ(/)を付けたほうが安全です。上記の1行目の例で、もし bar_dir が存在しなかった場合、スラッシュがなければ foo.txt は bar_dir にリネームされてしまいます。スラッシュを付けておけば「そんなディレクトリはないよ」というエラーが表示されます。

移動先に同じ名前のファイルがある場合、オプション -i を付けなければ確認なしで上書きされますので注意してください。

mkdir

make directory の略で、ディレクトリを作成します。

% mkdir foo          #foo という名前のディレクトリを作成する
% mkdir foo bar baz  #3つのディレクトリをまとめて作成する

rmdir

remove directory の略で、ディレクトリを削除します。

% rmdir foo

中身が空のディレクトリのみ削除できます。中にファイルが入っている場合は rm -rf を使います。中が空でも rm -rf が使えるので、結局 rmdir は使いません。何のためにあるんでしょうね。

chmod

change mode の略で、ファイルのパーミッション(アクセス権)を変更します。

% chmod 700 foo.sh  #foo.sh のパーミッションを700にする

less

テキストファイルの内容を表示します。

% less foo.txt     #foo.txt の内容を表示する
% less -N foo.txt  #行番号を付けて foo.txt の内容を表示する

less コマンドはテキストファイルを開き、1画面分ずつ表示します。space キーで1画面分下にスクロール、b キーで1画面分上にスクロールします。キーで1行下に、キーで1行上にスクロールします。q キーで終了します。

ファイルの内容を見る以外に、コマンドの出力が長い時にそれを1画面ずつ表示するために使うこともあります。

% ls -l /usr/bin | less

ls -l /usr/bin の出力結果をパイプ(|)で less コマンドに渡します。パイプで渡された値は less の引数になります。したがって、ls -l /usr/bin の出力が1画面ずつ表示されることになります。

パイプの使い方、最初はなんのこっちゃかもしれませんが、繰り返し使ってるうちに慣れるのでご心配なく。

echo

引数を標準出力に出力します。

急に標準出力とか言い出しました。これまで「画面に表示する」とか「返す」と言っていたのも正確には「標準出力に出力する」なのです。デフォルトでは標準出力先がターミナルの画面なので、画面に表示されます。

% echo "いえーい"  #画面に「いえーい」と表示する
いえーい
% echo $PATH     #環境変数 $PATH を表示する
/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

標準出力先をファイルにする時は次のようにします。

% echo "いえーい" > foo.txt     #foo.txt に「いえーい」と書き込む
% less foo.txt
いえーい
% echo "ひゃっほう" >> foo.txt  #foo.txt に「ひゃっほう」と追記する
% less foo.txt
いえーい
ひゃっほう

ln

link の略で、ファイルのハードリンクやシンボリックリンクを作成します。

シンボリックリンクとはファイルの分身のようなものです。MacのエイリアスやWindowsのショートカットに似ています。

% ln -s target.txt symlink  #target.txt のシンボリックリンク symlink を作成する

ハードリンクは使わないので覚えなくていいです。というのも冷たいので説明すると、ファイルにあだ名を付けるのがシンボリックリンクで、2つめの本名を付けるのがハードリンクです。うまい例えですね(自画自賛)。

たまに使うコマンド

findファイルを検索する
grep文字列を検索する
whichコマンドのフルパスを返す
whereコマンドのフルパスをすべて返す
sort文字列を行単位で並べ替える
tailファイルの最後の数行を返す
headファイルの最初の数行を返す
wcファイルや標準入力の行数、単語数、バイト数などを返す
touchファイルのタイムスタンプを変更する、ファイルを新規作成する
catファイルを連結して返す
duディレクトリごとのディスク使用量を返す
env環境変数を設定してコマンドを実行する、環境変数を返す
sourceファイルに書かれたコマンドを実行する
sudoroot権限でコマンドを実行する
tarアーカイブを作成・展開する
xargs標準入力からコマンドラインを作成して実行する
ps実行中のプロセスの一覧を返す
kill実行中のプロセスを終了させる
manマニュアルを表示する
date日付や時刻を表示する

find

ファイルやディレクトリを検索します。

#/foo/bar の中にある baz.txt という名前のファイル・ディレクトリを探す
% find /foo/bar -name baz.txt
#/foo/bar の中にある baz で始まる名前のファイル・ディレクトリを探す
% find /foo/bar -name "baz*"

ワイルドカード(*)を使う時は、シングルクオートまたはダブルクオートで括ります。

grep

global regular expression print の略で、標準入力の文字列を検索してマッチする行を返します。

#file.txt から文字列 foo を含む行を検索して表示する
% grep foo file.txt
#file.txt から文字列 foo を含む行を検索し、さらに bar を含む行を検索して表示する
$ grep foo file.txt | grep bar

which, where

コマンドのフルパスを返します。

同じコマンドが複数ある場合、which は優先順位の高いものを1つだけ、where はすべてのパスを返します。

% which perl
/opt/homebrew/bin/perl
% where perl
/opt/homebrew/bin/perl
/usr/bin/perl

sort

文字列を行単位で並べ替えます。

#duの結果を容量順に並べ替える
% du | sort -n
0    ./bar
8    ./baz
88   ./foo
232  .
#duの結果をディレクトリ名順に並べ替える
% du | sort -k 2
232  .
0    ./bar
8    ./baz
88   ./foo

tail, head

tail はファイルの最後の数行、head は最初の数行を表示します。初期値は10行です。

tail はログファイルを確認する時に使うことがありますけど、head はあまり使わないかな。

wc

word count の略で、ファイルや標準入力の行数、単語数、バイト数などを返します。

実際は行数を数えたい時にしか使わないですね。

touch

ファイルのタイムスタンプを変更します。存在しないファイル名を指定するとファイルが新しく作成されるので、それ目的で使われることのほうが多い気がします。なんかかわいそう。

cat

concatenate の略で、1つ以上のファイルを連結して出力します。初めて知らない英語が出てきました。

ファイルを1つだけ指定した場合はそのファイルを出力するので、ファイルの中身を見る時に使う人もいるようです。私には理解できません。less のほうが使いやすいと思うけどなぁ。

du

disk usage の略で、ディレクトリごとのディスク使用量を返します。

#現在のディレクトリ下のすべてのディレクトリのディスク使用量を表示
% du
264  ./foo
8    ./baz
0    ./bar
416  .
#指定したディレクトリのディスク使用量を表示
% du foo
264  foo
#読みやすい単位で表示
% du -h
132K  ./foo
4.0K  ./baz
  0B  ./bar
208K  .

env

environment の略で、環境変数を設定してコマンドを実行します。何も引数を指定しなければ環境変数の一覧を表示します。

#dateコマンドの出力結果
% date
2022年 3月31日 木曜日 02時36分27秒 JST
#環境変数 LANG=C を設定して date
% env LANG=C date
Thu Mar 31 02:37:25 JST 2022
#環境変数の一覧を表示
% env
LANG=ja_JP.UTF-8
PWD=/Users/username
SHELL=/bin/zsh
PATH=/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
HOME=/Users/username
USER=username
(中略)
HOMEBREW_PREFIX=/opt/homebrew
HOMEBREW_CELLAR=/opt/homebrew/Cellar
HOMEBREW_REPOSITORY=/opt/homebrew
_=/usr/bin/env

source

ファイルに書かれたコマンドを実行します。

シェルの設定ファイルを変更した時に、設定をすぐに反映させるためによく使用します。

sudo

別のユーザ(主にroot)の権限でコマンドを実行します。su が何の略かについては、super user, switch user, substitute user の3つの説があっていまだに揉めています。

一般ユーザ権限でうまくいかない時に、なんでもかんでも sudo しちゃう人がいますが、本当に必要な時だけにしましょう。危険です。そりゃ、神になれば何でもできるんですよ。sudo は甘えです。

tar

tape archives の略で、アーカイブの作成や展開をします。

tar 自体は複数のファイルをまとめるだけのものですが、圧縮プログラムと連携して使うことが多いです。

#foo をアーカイブしてgzipで圧縮する
% tar -zcvf foo.tar.gz foo
#foo をアーカイブしてbzip2で圧縮する
% tar -jcvf foo.tar.bz2 foo
#foo をアーカイブしてzzで圧縮する
% tar -Jcvf foo.tar.xz foo
#アーカイブを展開する
% tar -xvf foo.tar.gz

tar のオプションのハイフン( - )は省略可能で、tar zcvf ... のように書くこともできます。なぜなんでしょうね。

xargs

extended arguments の略で(execute arguments 説もあり)、標準入力を引数としてコマンドラインを作成して実行します。

こいつの使い方はちょっとややこしいので、また別の記事でやるとかやらないとか(どっち)。

ps

process status の略で、実行中のプロセスの一覧を返します。

# すべてのプロセスをCPUやメモリの使用率を含めて表示する
% ps axu

#httpdが起動しているか確認する
% ps axu | grep httpd
username           774   0.0  0.0 409276112    384   ??  S    土05AM   0:00.02 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
username           773   0.0  0.0 409409488    512   ??  S    土05AM   0:00.28 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
username           772   0.0  0.0 409411536    512   ??  S    土05AM   0:00.60 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
username           647   0.0  0.0 409014272   2800   ??  S    土05AM   0:19.07 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
username          8769   0.0  0.0 408628368   1616 s000  S+    7:04PM   0:00.00 grep httpd

ps のオプションは ハイフン(- )が付く場合と付かない場合で意味が変わります。上記の例は付かないので注意してください。

kill

実行中のプロセスを終了させます。

何かの間違いで暴走したプロセスを止める時に使います。

#プロセスを正常終了させる
% kill <プロセス番号>
#プロセスを強制終了させる
% kill -KILL <プロセス番号>

man

manual の略で、マニュアルを表示します。

コマンドの使い方を調べる時に使います。

% man <コマンド名>

date

日付や時刻を表示します。

#現在の日時を表示する
% date
2022年 3月31日 木曜日 17時25分43秒 JST
#現在の日時をフォーマットして表示する
% date "+%Y-%m-%d %H:%M:%S"
2022-03-31 17:25:43
#日時をファイル名に付ける
% touch file_`date "+%Y%m%d-%H%M"`
% ls
file_20220331-1725

バッククオート`` で括られた文字列はコマンドとして実行され、その結果を返します。

あまり使わないコマンド

calカレンダーを表示する
dfディスクの空き容量を表示する
digドメイン名のDNSレコード情報を取得する
hostホスト名からIPアドレス、IPアドレスからホスト名を調べる
pingネットワークの疎通を確認する
topシステムの上位プロセスをリアルタイムに表示する
tracerouteネットワークの経路を調べる
unameシステムに関する情報を表示する
uptimeシステムの稼働時間を表示する

cal

calendar の略で、カレンダーを表示します。

有名なコマンドですけど、実務で使うことないですよね。

df

disk free の略で、ディスクの空き容量を表示します。

macならば「このMacについて」で確認したほうがわかりやすいです。

dig

domain information groper の略で、ドメイン名のDNSレコード情報を取得します。私はドメインを掘るツールだと思ってました。

% dig example.com any           #example.com のDNS情報を調べる
% dig @8.8.8.8 example.com any  #特定のネームサーバに問い合わせる

host

ホスト名からIPアドレス、またはIPアドレスからホスト名を調べます。

% host www.google.com  #ホスト名 www.google.com のIPアドレスを調べる
www.google.com has address 172.217.161.68
www.google.com has IPv6 address 2404:6800:4004:820::2004
% host 172.217.161.68  #IPアドレス 172.217.161.68 のホスト名を調べる。
68.161.217.172.in-addr.arpa domain name pointer nrt20s09-in-f4.1e100.net.

ping

packet internet groper の略で、ネットワークの疎通を確認します。

% ping -c 10 www.google.com
PING www.google.com (142.251.42.132): 56 data bytes
64 bytes from 142.251.42.132: icmp_seq=0 ttl=117 time=18.682 ms
64 bytes from 142.251.42.132: icmp_seq=1 ttl=117 time=13.080 ms
64 bytes from 142.251.42.132: icmp_seq=2 ttl=117 time=15.522 ms
64 bytes from 142.251.42.132: icmp_seq=3 ttl=117 time=17.367 ms
64 bytes from 142.251.42.132: icmp_seq=4 ttl=117 time=16.800 ms
64 bytes from 142.251.42.132: icmp_seq=5 ttl=117 time=15.653 ms
64 bytes from 142.251.42.132: icmp_seq=6 ttl=117 time=14.764 ms
64 bytes from 142.251.42.132: icmp_seq=7 ttl=117 time=17.426 ms
64 bytes from 142.251.42.132: icmp_seq=8 ttl=117 time=10.194 ms
64 bytes from 142.251.42.132: icmp_seq=9 ttl=117 time=15.134 ms

--- www.google.com ping statistics ---
10 packets transmitted, 10 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 10.194/15.462/18.682/2.317 ms

オプション -c 10 を指定すると10回パケットを送って終了します。指定し忘れると永久に終わらないので気を付けてください。もしやっちまった場合は control + c で抜け出すことができます。

ping に限らずコマンド操作中にプロンプトに戻れなくなってしまった時は、大体 control + c で抜け出せます。ドラクエでいうところのリレミトと同じです。

top

システムの上位プロセスをリアルタイムに表示します。

情報がリアルタイムに更新されていくので、ずっと見ていられます。top を肴に日本酒を呑むことがあるのは私だけでしょうか。

終了する時は q キーです。

traceroute

ネットワークの経路を調べます。

% traceroute www.google.com
traceroute to www.google.com (142.250.207.4), 64 hops max, 52 byte packets
 1  ntt.setup (192.168.1.1)  4.313 ms  3.707 ms  3.137 ms
(中略)
10  108.170.242.193 (108.170.242.193)  20.627 ms  24.732 ms  26.713 ms
11  216.239.43.51 (216.239.43.51)  21.196 ms  15.020 ms
    216.239.43.53 (216.239.43.53)  11.137 ms
12  nrt13s54-in-f4.1e100.net (142.250.207.4)  20.246 ms  12.037 ms  13.394 ms

uname

unix name の略で、システムに関する情報を表示します。

% uname -a
Darwin mymac.local 21.4.0 Darwin Kernel Version 21.4.0: Mon Feb 21 20:36:53 PST 2022; root:xnu-8020.101.4~2/RELEASE_ARM64_T8101 arm64

uptime

システムの稼働時間を表示します。

ロードアベレージも表示されます。ロードアベレージを確認するために実行することが多いですね、私は。

% uptime
18:00  up 5 days, 14:01, 2 users, load averages: 1.32 1.47 1.40

さいごに

今回紹介したのは、ほんの一部のコマンドです。使い方や指定できるオプションも、もっともっとあります。いろいろ試して遊んでみてください。

でわでわ

ターミナルの使い方2

この記事が気に入ったら
いいね または フォローしてね!

シェアしてね

コメント

コメントする

目次