このUNIX講習会シリーズはこちらのウェブサイトにスライド形式で掲載しています.
なぜ,UNIXなのか?なぜコマンドを使うのか?
- 操作記録をとりやすい
- 打ち込んだコマンドをテキストに書き出すだけ
- 自動化しやすい
- 実行したいコマンドをテキストに書いておくだけ
- シェルスクリプトで繰り返し実行することも
- 計算サーバーが遠くにあっても快適に操作できる
- GUI もリモートはできるけど遅い
- パイプ・リダイレクトを用いて複数のソフトを連携できる
今日抑えるべきこと
- ターミナルとお友達になる
- 基本コマンドの使い方
-
cd
,ls
,cat
,less
,cp
,mv
,rm
,mkdir
,rmdir
,
pwd
-
open
: Mac のみ
-
- タブで補完する
- コマンドを全部打ち込む必要はない!
- Control-A, Control-E, Control/Option-F, Control/Option-B を使う
このあとの話はすべて OS X 10.10.2 Yosemite のターミナルで作業することを前提とします.
おまじない
- 最初に快適に使うための設定ファイルを読み込む
- 具体的には色が付くようになったり,補完が賢くなったりします
$ curl -L -o ~/.zshrc https://j.mp/okmr-zshrc
$ chsh -s /bin/zsh # zshに変更する
-
$
記号は打ち込まない. -
#
の後ろはコメントなのでいらない - 二行目でパスワードを聞かれるので入力する
- 終わったらターミナルのウインドウを閉じて,新しいウインドウを開く
おまじない2
ターミナルの設定を変更する
カレントディレクトリ1
- Directory = Folder
- Current Directory とは作業の中心となる場所
- コマンドを入力するときに,ファイル名等はカレントディレクトリからの相
対的な場所として入力できる - 確認方法
$ pwd
私の設定ファイルを導入している場合にはプロンプトの右側にも出ている.
カレントディレクトリ2
- 作業したいファイルがある場所に移動して作業するのが基本
- 移動するには
cd
を使う- Change Directory の略
例:Macのフォントが保存されているディレクトリに移動してみる
cd /System/Library/Fonts
パスの書き方1
- ディレクトリやファイルの場所を指定する表記をパス(Path)という
- 絶対パス
- カレントディレクトリからではなく,Rootから表記したパス
- カレントディレクトリにかかわらず同じ表記
- 相対パス
- カレントディレクトリからみて相対的に表したもの
- カレントディレクトリが変わると変わる
パスの書き方2 絶対パス
-
/
から始めるとルートディレクトリからの表記になる- すべてのファイルとディレクトリはルートディレクトリの下にある
-
~
から始めるとホームディレクトリからの表記になる- ホームディレクトリは個人の作業スペース
- 基本的にはホームディレクトリの中で作業する
- ホームディレクトリの外は大事なファイルがたくさんあるので触らない
パスの書き方3 相対パス
-
/
や~
から始めなければ相対パスになる - 明示的に相対パスであることを示したければ
./
から始める - 今,
/Users/yasu
にいるときに,/Users/yasu/Documents
に移動したけれ
ば,cd Documents
と入力できる -
.
: カレントディレクトリを表す- ただし,
.hoge
と書くとカレントディレクトリにあるhoge
ではなく,
.hoge
というファイルを指すので,./hoge
と書く
- ただし,
-
..
: カレントディレクトリの一つ上のディレクトリを表す
タブキーで補完しよう1
- 先ほどの例で
/System/Library/Fonts
に移動するときに,/S
まで入力す
ると,その次に来るのはystem/
以外にはあり得ない- なぜなら
/
にはS
から始まるディレクトリはSystem
以外には無いから
- なぜなら
-
cd /S
まで入力したらタブキーを押すと候補が1つしかなければ補完される- 候補が複数あるときには候補の一覧が出る(岡村設定ファイルのみ)
- もう一度タブキーを押すと候補が選択できる
- タブキーを複数回押すことで候補をたどれる
タブキーで補完しよう2
-
今回は zsh を利用しているので,賢い補完ができる
- 文脈に沿って適切な候補を出してくれる
- 何も設定しなかった場合でもコマンド名・ファイル名は補完してくれる場合が多い
-
課題
-
/System/Library/CoreServices
に移動しなさい - ただし,キーボードを叩いていい回数は14回まで
-
タブキーで補完しよう3
解答
cd /S[Tab][Tab]C[Tab]o[Tab]r[Tab][Enter]
| | | | +- ここで一つに絞られて補完
| | | +- Coから始まるディレクトリの候補
| | +- Cから始まるディレクトリの候補が出る
| +- Library/ が補完される
+- /System/ まで補完される
cd の便利な使い方
-
cd
とだけ入力する- ホームディレクトリに移動する
-
cd -
と入力する- 直前までいたディレクトリに移動する
Directoryの中身を表示1
- ディレクトリの中身を表示するのためには
ls
を使う -
ls
はlistの略
例:/System/Library/Fonts/
にあるファイルの一覧
$ cd /System/Library/Fonts/
$ ls
Apple Braille Outline 6 Dot.ttf LastResort.ttf
Apple Braille Outline 8 Dot.ttf LucidaGrande.ttc
Apple Braille Pinpoint 6 Dot.ttf MarkerFelt.ttc
Apple Braille Pinpoint 8 Dot.ttf Menlo.ttc
...
Directoryの中身を表示2
-
ls
の後ろにディレクトリ名を指定することもできる
例:/System/Library/Fonts/
にあるファイルの一覧
$ ls /System/Library/Fonts/
Apple Braille Outline 6 Dot.ttf LastResort.ttf
Apple Braille Outline 8 Dot.ttf LucidaGrande.ttc
Apple Braille Pinpoint 6 Dot.ttf MarkerFelt.ttc
Apple Braille Pinpoint 8 Dot.ttf Menlo.ttc
...
Directoryの中身を表示3
-
ls -l
とすることで各ファイルの詳細が見える
$ ls -l /System/Library/Fonts/
total 424280
-rw-r--r-- 1 root wheel 263912 9 10 2014 Apple Braille Outline 6 Dot.ttf
...
#Permission Owner Group Filesize Modifdate Filename (各列の意味)
-
ls -l
のように-
で始まるものをオプションと呼ぶ- コマンドにオプションを与えることで挙動を調整できる
-
ls -lh
とすることでファイルサイズが人間に読みやすい形式で表示される
Directoryの中身を表示4
- 普通の ls では
.
から始まるファイルは表示されない -
.
から始まるファイルは設定ファイルなどに使われる -
.
から始まるファイルを表示したいときはls -a
とする
例
$ cd ~/Library
$ ls -a
.localized Autosave Information
Containers Fonts
...
オプションの指定の仕方
- 多くの場合
-
が1つの場合にはその後ろの文字は一文字ずつオプションに
対応する - 複数指定するときはまとめることができる
- 例:
ls -l -h -a
とls -lha
は同じ
- 例:
- 多くの場合
--
が2つ以上続くときには文字列がオプションを意味するので
まとめられない- 例:
ls --color
はls -c -o -l -o -r
とは違う(--color
オプション
はLinuxのみ)
- 例:
- 例外もあるので絶対的なルールではない
- 例:Javaのバージョンは
java -version
で確認する
- 例:Javaのバージョンは
ls の主なオプション
-
-a
:.
から始まるファイルを表示する -
-l
: 各ファイルの詳細を表示する -
-h
:-l
と同時に使い,ファイルサイズを人間が読みやすい形で表示する -
-F
: ディレクトリの後ろには/
をつけ,実行ファイルの後ろには*
をつ
ける -
-R
: ディレクトリの中身を再帰的に表示する
余談だが Windows では dir
コマンドを使う.オプションは全く違う
岡村設定ファイルでは
いくつかよく使うコマンドについて Alias を設定している
-
l
:ls -F
とほぼ同じ -
ll
:ls -lh
とほぼ同じ -
la
:ls -a
とほぼ同じ -
lla
:ls -lha
とほぼ同じ
「ほぼ」と書いたのは色をつけるためにMacとLinuxで違うオプションを指定しているため
ファイルの中身を確認 1
- ファイルを確認するためには
cat
コマンドを使う- Concatenate の略
- 名前の通り複数のファイルを結合もできる
- ファイルの中身がすべてターミナルに表示されるので,長いファイルでは注意
例:
$ cd /System/Library/OpenSSL/misc
$ cat c_info
#!/bin/sh
#
...
ファイルの中身を確認 2
- 大きなファイルを確認するためには
less
コマンドを使う- 昔
more
というコマンドが使われていて,その逆でless
になった
- 昔
- 巨大なファイルでも高速に表示できる
$ cd /System/Library/OpenSSL/misc
$ less CA.sh
lessの使い方
-
less
はキーボードで操作できる -
q
: lessを終了 -
j
: 次の行 -
k
: 前の行 -
f
: 次のページ -
b
: 前のページ -
g
: ファイルの先頭 -
G
: ファイルの末尾
カーソルキーは使わないことに慣れる
ファイルをコピーする
- ファイルをコピーするためには
cp
コマンドを使う- Copy の略(ちなみにWindowsでは
copy
) -
cp source destination
の形で使う -
destination
に既存のディレクトリを指定すると,そのディレクトリに
元と同じ名前でコピーされる
- Copy の略(ちなみにWindowsでは
$ cd /System/Library/CoreServices/Finder.app/Contents/Resources/
$ cp Finder.icns ~/Desktop/ # Finderのアイコンをデスクトップにコピー
$ cp Finder.icns ~/Desktop/finder-icon.icns
## Finderのアイコンをデスクトップにfiner-icon.icnsという名前でコピー
- ディレクトリのコピーをするときには
cp -R
として再帰的にコピーを行
うオプションをつける
ファイルを移動する
- ファイルを移動するためには
mv
コマンドを使う- Move の略(ちなみにWindowsでは
move
) -
mv source destination
の形で使う -
destination
に既存のディレクトリを指定すると,そのディレクトリに
元と同じ名前でコピーされる
- Move の略(ちなみにWindowsでは
$ cd ~/Pictures
$ mv ../Desktop/Finder.icns . # デスクトップにある Finder.icns をPictures にコピー
$ mv Finder.icns file-browse.icns # Finder.icns を file-browse.icns に名前変更
-
cp
もmv
も問答無用でファイルを上書きするので注意!
ファイルをまとめてコピー・移動する
-
cp
もmv
もsource
に複数のファイル名を指定できる- その場合は
destination
は既存のディレクトリでなければならない
- その場合は
$ cd /System/Library/CoreServices/Finder.app/Contents/Resources/
$ cp iCloudDrive.png iCloudDrive@2x.png ~/Desktop
## iCloudDrive.png と iCloudDrive@2x.png をデスクトップにコピーする
GLOBを使う
- GLOBを使うと複数のファイルを指定するのが楽
$ cd /System/Library/CoreServices/Finder.app/Contents/Resources/
$ cp iCloud*.png ~/Desktop
## iCloud から始まり, .png で終わるファイルをデスクトップにコピーする
-
*
は任意の文字数に,?
は任意の1文字に対応する -
Tabでどのファイルが指定されているかを確認できる
- 上の例では
iCloud*.png
のどこかにカーソルキーがある状態で
Tabを押すとiCloudDrive.png iCloudDrive@2x.png iCloudNoDocs.png iCloudNoDocs@2x.png
と展開される(岡村設定) - Control-_で元に戻る
- 上の例では
履歴を使いこなす 1
-
打ち込んだコマンドはすべて
.zsh_history
というファイルに保存されている -
履歴を呼び出すことで繰り返し同じコマンドを入力する必要がなくなる
-
Control-P: 前のコマンドを表示する (Previous)
-
Control-N: 次のコマンドを表示する (Next)
-
Control-R: 前のコマンドを検索する (Reverse)
-
Control-S: 次のコマンドを検索する (Search)
カーソルキーは使わない
履歴を使いこなす 2 例
$ cd /System/Library/CoreServices/Finder.app/Contents/Resources/
$ cp Finder.icns ~/Desktop/ # Finderのアイコンをデスクトップにコピー
$ cd ~/Desktop
$ ls
$ cd ~/Pictures
$ mv ~/Desktop/Finder.icns .
と打ち込んだあとにControl-Pを1回押すとmv ~/Desktop/Finder.icns .
が表示され,2回目を押すとcd ~/Pictures
が表示される
Control-Pを押すたびにさかのぼる.Control-Nで逆に
最近の履歴に戻れる
履歴を使いこなす 3 例
-
Control-Pは既に何か入力があるときには,入力されている文字
から始まる履歴だけをたどる - たとえば
$ cd
まで入力されているときにControl-Pを押すと,
cd
から始まる履歴だけをたどれる - 単純に履歴をたどりたいときはカーソルキーで(あまり使わないけど)
この設定は岡村設定ファイルのみ
履歴を使いこなす 4 例
- Control-Rで過去に入力したコマンドを検索できる
- たとえば,今ならControl-Rのあとに
Finder.app
と入力すると
cd /System/Library/CoreServices/Finder.app/Contents/Resources/
が表示されるはず. - さらに前の履歴をたどりたいならControl-Rを繰り返す
- 戻るためにはControl-S
Control-Sは設定によっては使えない場合もある
キー操作を快適に
-
コマンドを入力するときにカーソルキーで移動させると時間がかかる
-
便利なショートカットを覚えると楽になる
-
Control-A: 行の先頭に行く (Ahead)
-
Control-E: 行の末尾に行く (End)
-
Control-F: 1文字右へ (Forward)
-
Control-B: 1文字左へ (Back)
-
Option-F: 1ブロック右へ (Forward)
-
Option-B: 1ブロック左へ (Back)
カーソルキーは使わない
ファイルを削除する
- ファイルをコピーするためには
rm
コマンドを使う- Remove の略(ちなみにWindowsでは
Del
)
- Remove の略(ちなみにWindowsでは
cd ~/Desktop
rm iCloudDrive.png # iCloudDrive.png を削除
- ゴミ箱にも入らずにいきなり消えるので注意
- GLOBを使うときには予期せぬファイルを削除しないか確認してから
- Tab展開してで指定されるファイルを
- それができない場合には,
rm *.png
の前にls *.png
のように,ls
で
確認してから実行する
ディレクトリをつくる
- ファイルをコピーするためには
mkdir
コマンドを使う- Make Directory の略(ちなみにWindowsでも
mkdir
)
- Make Directory の略(ちなみにWindowsでも
cd ~/Desktop
mkdir MyDirectory
-p
をつけることで深いディレクトリを一度につくれる
cd ~/Desktop
mkdir -p first/second/third
ディレクトリを削除する
- ファイルをコピーするためには
rmdir
コマンドを使う- Remove Directory の略(ちなみにWindowsでも
rmdir
)
- Remove Directory の略(ちなみにWindowsでも
- ディレクトリを削除するためにはディレクトリが空でなくてはならない
cd ~/Desktop
rmdir MyDirectory
- 空でないディレクトリを削除するときには
rm -r
- 普段は
rm -r
を使うことが多いので,rmdir
はめったに使わない
- 普段は
GUIとCUIの狭間
- ターミナルで作業していて,GUIで操作したくなった場合には
open
コマンドを使う(ちなみに Windows ではstart
)
cd ~/Desktop
open iCloudDrive@2x.png # デスクトップにある iCloudDrive@2x.png を開く
open
コマンドを使うことで Finder でダブルクリックしたことと同じになる
基本コマンドの意味
-
cd
: Change Directory -
ls
: List -
cat
: Concatenate -
less
: moreの反対(歴史的な理由) -
cp
: copy -
mv
: move -
rm
: remove -
mkdir
: Make Directory -
rmdir
: Remove Directory
おまけ
ターミナルのおすすめフォント設定
- OSAKA 14pt アンチエイリアス無し
- Retina ディスプレイでない場合には見やすい
- Adobe Source Code Pro
- Retina ディスプレイや Emacs のフォントはこれにしている
- M+