これまではコマンドを「試す」ことと、その仕組みを優先して説明してきました。ここでは Unix におけるコマンドの書き方、扱い方などについて見ていきます。
コマンドによっては、コマンド名の後に引数(パラメタ)を付けることで動作のターゲットが変わったりします。単純な例として cal コマンドがあります。
コマンド例 | 働き(意味) |
---|---|
% cal | 現在の月のカレンダーを表示する |
% cal 2024 | 指定された年の(12 ヶ月ぶんの)カレンダーを表示する |
% cal 4 2024 | 指定された年月の(その月だけの)カレンダーを表示する |
cd コマンドも引数無しの場合はホームディレクトリへの移動(作業ディレクトリの変更)、引数が付いている場合は、その引数を相対パスとして見た時のディレクトリへの移動を意味しましたね。
また多くのコマンドは「オプション」指示を与えることによって、その働きを少し変えることができます。例えば ls コマンドは作業ディレクトリ以下にあるファイルの名前の一覧を表示しますが、「 -l 」オプション(小文字の L で、long format を意味する)を設定することで、より詳しい情報を表示します。
yasuda@Lily dirReport % ls <<< 単純な ls
sample1.txt subdir
yasuda@Lily dirReport % ls -l <<< -l オプションを付けると、、、
total 8
-rw-r--r--@ 1 yasuda staff 44 1 3 13:40 sample1.txt
drwxr-xr-x@ 5 yasuda staff 160 1 3 15:14 subdir
yasuda@Lily dirReport %
以下に long format 指定での表示結果について説明を試みます。
ls -l は特にファイルのサイズや更新日付を確認するため、よく使います。他に -F オプションなどもあります。これはディレクトリについては名前の後ろに / を付けて、これがディレクトリであることを分かりやすくする表示オプションです。
yasuda@Lily dirReport % ls -F <<<< -F をつけるとディレクトリに / が付く
sample1.txt subdir/
yasuda@Lily dirReport % ls -lF <<<< -lF として -l, -F の両方を指定できる
total 8
-rw-r--r--@ 1 yasuda staff 44 1 3 13:40 sample1.txt
drwxr-xr-x@ 5 yasuda staff 160 1 3 15:14 subdir/
yasuda@Lily dirReport %
-S (大文字のS)で並び順をファイルサイズ順にしたり、いろいろなオプションがあります。詳しくは他のドキュメントを捜して見ると良いでしょう。(ただし @ については Mac 独自の拡張ですので他の Linux 用の ls コマンドの機能には含まれていないことに注意してください。)
man コマンドを用いて、コマンドの機能や書き方を確認することができます。例えば「 man mkdir 」とすることで、mkdir コマンドのオプションの与え方などがわかります。なおman コマンドの表示を終了するのは top コマンドと同じく、アルファベットの「 q 」キーを押してください。
SYNOPSIS の項に、コマンドに与える引数やオプションの書き方がまとめられています。表記法を覚えてください。
引数やオプションの意味や実際に与えるべき記述の詳細は、続く DESCRIPTION の項に説明があります。
各種マニュアルは大抵長く、通常画面に収まりきらないために、画面に収まる分量だけ(1ページ分)出して一時停止してユーザの操作を待つ状態になります。以下に画面表示のためのキー操作についてまとめておきます。
キー操作 | 挙動 |
---|---|
Space あるいは Enter | 次ページに進む(スクロールする) |
b | 前ページに戻る(スクロールバックする) |
上下カーソルキー | 一行前に戻る、一行先に進む |
< あるいは > | マニュアル先頭に戻る、マニュアル末尾に進む |
q あるいは Q | 表示を終了する |
h | ヘルプ、つまり使えるキー操作の一覧を表示する (ヘルプ表示も長くスクロール操作可。ヘルプ終了も同じく q キー。) |
このような挙動をする機能を「ページごとに表示するためのツール」という意味で、Pager (ぺーじゃー)と呼んだりします。他にも文字列検索など多様な機能があるのでヘルプ画面を見て試すことを勧めます。
Unix に古くからあるコマンドに banner があります。「 banner abc 」などとすると、これがバナー(見出し)を作るものだと分かるでしょう。
man コマンドで banner の以下のことついて調べ、それぞれの機能を試してください。
banner は機能も限られており、man の出力も非常にコンパクトですから、全文・全項目について読んで理解すると良いです。パッと英文が読めない場合は機械翻訳を活用しましょう。
man コマンドはコマンド名が分かっている時しか使えません。「〜〜の機能を持ったコマンドの名前が知りたい」といった場合は残念ながらコマンドレベルではあまり支援されていません。
man コマンドに -k オプションを与えると、あなたの Mac に登録されているマニュアルの一部をキーワードで検索してくれます。
% man -k copy
MacOSX::File::Copy(3) - copy() on MacOS X
dvicopy(1) - produce modified copy of DVI file
....(途中略)....
copy(9), copyin(9), copyinstr(9), copyout(9), copystr(9) - kernel copy functions
copyops(n), transfer::copy(n) - Data transfer foundation
cp(1) - copy files
cpio(1) - copy files to and from archives
dd(1) - convert and copy a file
....(以下略)....
%
しかしかなり限られた範囲でしか調べられず、あまり当てにはなりません。
やはりいまどきはネット検索が簡単で良いです。ただし「コピー」などとキーワードを入れても不要なものばかりが上がって来ますから、これが Unix コマンドでのファイルのコピーだ、と分かるように検索するのが良いです。
教材作成者は以下のように聞きたいことをそのまま文章として検索エンジンに与えることを推奨しています。大抵の場合、例のように一番上に適切な情報が出てきます。つまりあなたが Google に適した単語列を推定するより、Google があなたの文章から適切な検索意図を推定する方がおよそうまく行く、という事ですね。
いまどきですから、積極的に外部の資料を見ましょう。
少ないですが Mac のコマンドに関する書籍もあります。[新版 zsh&bash対応]macOS×コマンド入門 ──ターミナルとコマンドライン、基本の力 は2020年と少し前ですが、技術監修が新居さんですし。
Linux のコマンド関連書籍も(システム管理系のコマンド以外であれば)よく似たコマンドが使える場合が多いので、検索するなり大型書店を覗くなりしましょう。
ストレートに「初心者向け Mac コマンド一覧」などと検索してみると、幾つものサイトが出てくるでしょう。Qiita や Zenn など、技術者コミュニティの記事が評価値なども付いていて信頼できるものを見分けやすいかもしれません。
【初心者向け】Macでターミナルを使いこなそう!コマンド一覧 (@shimada_slj, 2023/10, Qiita)
Macのターミナルコマンド一覧(基本編) (@ryouzi, 2023/6, Qiita)
Unixコマンドは多くの場合実行したら結果を出して終了するように作られいますが、一部のコマンドは起動後にユーザからの指示をコマンド形式、つまり CLI - Command Line Interface で与えるものがあります。電卓機能をもつ bc コマンドを例に挙動を示しておきます。
% bc <<< シェルから bc コマンドによってプログラムを起動
>>> 1 + 1 <<< 計算式を入れると結果を表示する
2
>>> 100 / 3 <<< デフォルトでは割り算の結果は整数化される
33
>>> scale=2 <<< scale コマンドで小数点以下 2 桁まで維持するように指定
>>> 100 / 3 <<< 今度は少数点以下 2 桁まで結果を出した
33.33
>>> quit <<< quit コマンドで処理終了を指示
% <<< シェルに戻ってきた
なお bc はかなり複雑な計算も可能です。興味のあるひとは調べると良いでしょう。そこまで凝ったことをしないでも、この機会に少し試すと良いです。なお四則演算は +, -, *, / で行います。べき乗は ^ つまり 2^32 は 4294967296 であることがすぐ出てきますからそれなりに出番があります。
コマンドの実行を中断したいことがあるでしょう。(恐らくは誤った使い方をしたせいで)実行が終了しない、返事が返ってこない、などです。また、表示が崩れてしまう、処理が終わったはずなのにプロンプトが表示されず、次の入力ができない、といったおかしな状態になってしまうこともあります。そのような場合は次の方法を試すと良いでしょう。
Ctrl + c をタイプする Control キーを押した状態で、英字の「 c 」キーを押します。これによって実行中のコマンド(プログラム)を強制終了させることができます。コマンドが止まってしまって反応が無いように見える場合などに有効です。1回でダメでも何回か Ctrl + c をタイプすると効く場合もあります。
Ctrl + z をタイプする
Ctrl + z は実行中のコマンド(プログラム)を一時停止させます。ただ、Ctrl + c とは違い、一時停止しただけで待機状態になっていますから、これを強制終了させねばなりません。そのため、同じターミナルで「 kill %% 」(kill と %% の間にはスペースが必要)コマンドを実行する必要があります。
killコマンドはプロセス(実行中のプログラム)を強制終了させる機能を持ちます。引数である %% は「直前に停止させたプロセス」を指定する書き方です。なお、kill で強制終了できない場合は、さらに強制的に終了させる「 kill -KILL %% 」(あるいは「 kill -9 %% 」)を試すと良いかもしれません。
ターミナルのウィンドウを閉じる かなり無理矢理な対応法です。手っ取り早そうに見えますが、異常状態のコマンド(プログラム)が実行されたまま残ってしまうこともあるので注意が必要です。まず上の2つを試してからにしましょう。
ログアウトする さらに無理矢理な対応法です。OS全体に影響するような異常でなければ大抵はこれでなんとかなるとおもいます。(が、これをするくらいなら再起動した方が確実かも。)
システム再起動する 究極の対応法、のはずですが、OS自体を壊してしまっている場合はこれでも解決できません。
前週にも登場していたファイル名補完とワイルドカードもコマンド操作のために便利な機能です。ファイル操作課題 からその分を取ってきて再掲しておきます。
ファイル名を入力す場面では Tab キーを使ったファイル名の補完機能を使えます。例えば「 mv ../ 」と入力した時点で、Tab キーを押してください。画面上には以下のように「一つ上」のディレクトリ階層にあるファイル名の候補が現れます。
これで「ああ今このディレクトリ階層を覗いているんだな」とわかるでしょう。また、sub くらいまでタイプして Tab を押せば「 mv ../subdir/ 」まで補完してくれますし、そこでもう一度 Tab キーを押せば、今度は subdir の下の階層について出してくれます。
ところで mv コマンドで一つずつファイルを移していっても良いのですが、こういう時はワイルドカードが使えます。ワイルドカードとはファイル名指定の一部に「 * 」や「 ? 」を使うと、それがマッチするファイルを全て処理の対象としてくれる機能です。「 * 」は「複数の文字」、「 ? 」は「一つの文字」にマッチします。
以下に今回の images ディレクトリ以下でマッチするパターンの例を挙げておきます。
パターン | マッチするファイル |
---|---|
* | すべてのファイル |
*.* | すべてのファイル |
*.jpg | confectionaries.jpg, KSU.jpg, leaves.jpg すべての JPEG ファイル |
*.png | icon01.png〜icon6.png すべての PNG ファイル |
icon*.png | icon01.png〜icon6.png すべての PNG ファイル |
icon0?.png | icon01.png〜icon6.png すべての PNG ファイル |
??????.* | icon01.png〜icon6.png と、leaves.jpg (ドットより前が6文字) |
???????*.* | confectionaries.jpg (ドットより前が7文字以上) |
*e* | confectionaries.jpg, leaves.jpg (どこかに e が含まれるもの) |
ワイルドカードについてはまだ書き方があります。検索してみると良いでしょう。例えばこんな資料がありました。
他にも(ワイルドカードに似た)正規表現や、さまざまな機能があります。検索してみると良いでしょう。例えばこんな資料がありました。