LoginSignup
25
27

More than 5 years have passed since last update.

UNIX講習会#1 基本コマンド編

Last updated at Posted at 2015-04-16

この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

ターミナルの設定を変更する

terminal-option.png


カレントディレクトリ1

  • Directory = Folder
  • Current Directory とは作業の中心となる場所
  • コマンドを入力するときに,ファイル名等はカレントディレクトリからの相 対的な場所として入力できる
  • 確認方法
    • $ pwd

私の設定ファイルを導入している場合にはプロンプトの右側にも出ている.

current-directory.png


カレントディレクトリ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/にあるファイルの一覧
bash
$ 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/にあるファイルの一覧
bash
$ 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 -als -lhaは同じ
  • 多くの場合--が2つ以上続くときには文字列がオプションを意味するので まとめられない
    • 例:ls --colorls -c -o -l -o -rとは違う(--colorオプション はLinuxのみ)
  • 例外もあるので絶対的なルールではない
    • 例:Javaのバージョンはjava -versionで確認する

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に既存のディレクトリを指定すると,そのディレクトリに 元と同じ名前でコピーされる
$ 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に既存のディレクトリを指定すると,そのディレクトリに 元と同じ名前でコピーされる
$ cd ~/Pictures
$ mv ../Desktop/Finder.icns . # デスクトップにある Finder.icns をPictures にコピー
$ mv Finder.icns file-browse.icns  # Finder.icns を file-browse.icns に名前変更
  • cpmvも問答無用でファイルを上書きするので注意!

ファイルをまとめてコピー・移動する

  • cpmvsourceに複数のファイル名を指定できる
    • その場合は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
cd ~/Desktop
rm iCloudDrive.png # iCloudDrive.png を削除
  • ゴミ箱にも入らずにいきなり消えるので注意
  • GLOBを使うときには予期せぬファイルを削除しないか確認してから
    • Tab展開してで指定されるファイルを
    • それができない場合には,rm *.pngの前にls *.pngのように,lsで 確認してから実行する

ディレクトリをつくる

  • ファイルをコピーするためには mkdir コマンドを使う
    • Make Directory の略(ちなみにWindowsでもmkdir
cd ~/Desktop
mkdir MyDirectory

-pをつけることで深いディレクトリを一度につくれる

cd ~/Desktop
mkdir -p first/second/third

ディレクトリを削除する

  • ファイルをコピーするためには rmdir コマンドを使う
    • Remove Directory の略(ちなみにWindowsでもrmdir
  • ディレクトリを削除するためにはディレクトリが空でなくてはならない
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+
25
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
27