unix のコマンドラインの使い方

初版作成  1990.1.31
最終更新  2024.04.01


◆◆ 基本的なキー操作 ◆◆


^h   バックスペース
^a   コマンドの先頭
^k      カーソル以降を削除

^c   プロセスの中断
^s   表示の一時停止
^q   表示の再開
^d   入力の終了 セッションの終了

◆◆ man コマンド ◆◆


マニュアルを表示する。

  $ man ls                    ls のヘルプを表示する

   SPC  次のページ
   b      前のページ
   h      ヘルプ
   q      終了

◆◆ ファイルに関するコマンド ◆◆


pwd             カレントディレクトリの表示
cd dir-name       ディレクトリの変更
mkdir dir-name   ディレクトリの作成
rmdir dir-name   ディレクトリの削除
mv aa bb          ファイル名・ディレクトリ名の変更
rm aa             ファイルの削除

cat fname       ファイルの内容を表示する
ls             ディレクトリの内容を表示する
cp aa bb          ファイル aa をコピーして bb にする。


◆◆ メタキャラクター ◆◆


コマンドラインで何か打ったときは、メタキャラクタを展開してから
コマンドに送る。例えば ls -l a*  と打つと、
a* がカレントディレクトリの中の a で始まるファイル名に
置き換えられて ls コマンドに送られる。

例えば、aa abb accc というファイルがカレントディレクトリに存在
した場合、

  $ ls -l a*    -----> $ ls -l aa abb accc

となって、2 つの引数を ls コマンドに送る。

*   0 個以上の文字列
?   1 個の文字


◆◆ リダイレクト・パイプ ◆◆


unix には 3 つの入出力がある。

入口1つ ---- 標準入力
出口2つ ---- 標準出力 標準エラー出力

例)$ ls > dir.txt
例)$ cc sample.c 2> err.log  標準エラー出力のリダイレクト

あるコマンドの出力を次のコマンドの入力として送る。

例)$ ps aux | grep httpd


◆◆ 環境変数 ◆◆


env           全ての環境変数の内容を表示する
echo $PATH  環境変数 PATH の内容を表示する

環境変数の設定方法

例) $ export PATH=$PATH:~/bin
        $PATH : 現在の PATH 変数の内容

: が区切り文字

これだけは設定しておきたい環境変数

PATH     実行型ファイルを実行するとき、そのファイルを検索するディレクトリ
CDPATH   cd コマンドでディレクトリを変更するとき、普通は今から行きたい
         ディレクトリの親ディレクトリまたは子ディレクトリからしか行けないが、
         この変数にディレクトリを設定しておけば、その下のディレクトリも検索する。


◆◆ 別名機能(エイリアス) ◆◆


alias          定義されている別名のリストを表示
alias  rm='rm -i'   別名を定義


◆◆ シェルスクリプト ◆◆


実行するコマンドをファイルの中に書いておき、

  $ file-name

と打つことでそのファイルの内容を実行する。
シェルスクリプトファイルは以下の 2 つが必要。

1. 実行可能属性を付けておく。

  $ chmod 755 fname
  $ chmod u+x fname

  ファイルの属性を見るには $ ls -l ↓ と打てば良い。

2. 1 行めは以下のとおり

#!/bin/sh

            --------

1 行めはそのファイルを実行するコマンドを示す。
シェルスクリプトは /bin/sh である。

pytyon スクリプトなら /usr/bin/python
perl   スクリプトなら /usr/bin/perl
ruby   スクリプトなら /usr/bin/ruby

である。

例えば、co という名前のシェルスクリプトを作り、

   $ co abc

と打てば、abc.c というファイルをコンパイルして実行する。

シェルスクリプト co の内容は以下の通り。

----------------------------------------
#!/bin/sh
#
#    ここはコメント     行頭が # はコメントを表す
#
cc -o $1 $1.c       n 個めの引数は $n 表す
$1           $1 後に改行を入れるのを忘れないように
-----------------------------------------

◆◆ ログインファイル ◆◆


ログインした時、.bashrc を実行する。
環境変数の設定や別名機能の設定はこれらのファイルの中で行う。


◆◆ メイクファイルの作り方 ◆◆


 $ make↓

と打つと、makefile  という名前のファイルを参照してコンパイルを行う。

例えば次のような構成で 1 つの実行型ファイルを作る場合、
メイクファイルは以下のように記述すると良い。

      コンパイル     リンク
 prog1.c   →→   prog1.o
 prog2.c   →→  prog2.o  →→  prog
               ライブラリ

メイクファイルの内容
#
# makefile       # はコメント文を表す
#
prog : prog1.o prog2.o
    cc -o prog prog1.o prog2.o

prog1.o : prog1.c
    cc -c prog1.c

prog2.o : prog2.c
    cc -c prog2.c

上の例は丁寧に書いた。しかし、例えば、メイクコマンドでは、cc を使ってリンクする時、

  $$$.o  は  $$$.c  から作成され、それをコンパイルする時は、
  cc -c $$$.c を実行する

という暗黙の了解があるため、上の例において prog1.o : 以降は不要である。
メイクファイルの書き方についての詳細は別ファイルで行う。

◆◆ 他のマシンとのファイル転送 ◆◆


$ ftp 192.168.xx.yy

または

$ ftp
ftp>open 192.168.xx.yy

と打ってファイル転送モードに入る。/etc/hosts ファイルに
マシン名と ip アドレスの対応を書いておけば、マシン名に
よる指定も可

ftp> help           コマンド一覧

ftp> pwd            ftp 先マシンで pwd
ftp> ls             ftp 先マシンで ls
ftp> cd dir-name    ftp 先マシンで cd

ftp> !ls            自マシンで ls
ftp> lcd .          自マシンで pwd
ftp> lcd dir-name   自マシンで cd

ftp> get fname      持ってくる
ftp> mget *.c       ワイルドカードを使って複数ファイルを指定
ftp> put fname      送り込む

ftp> quit           終了


◆◆ バックグラウンドでの実行 ◆◆


コマンドを実行して、プロンプトが戻ってこない状態で、

  ^z

とすると、一時中断してコマンドを受け付ける状態になる。

  bg

と打つと、バックグラウンドで実行する。

  fg

と打つと、フォアグランドに戻る。


◆◆ 良く使うコマンド ◆◆


$ diff file1.txt file2.txt    2つのテキストファイルの内容の比較

$ which ls                    ls コマンドの場所を表示する

$ grep aa a.txt               a.txt の中から aa という文字パターンが
                              存在する行を抽出する
  grep の使用例

  $ ps agx | grep httpd

$ find . -mtime -1 -print     過去 1 日以内に変更されたファイルの名前を
                              列挙する。サブディレクトリも検索する。

$ ps         プロセスを表示する (Windows のタスクマネージャ)
$ ps aux
$ ps agx
$ ps ax

◆◆ ftp のコマンド ◆◆


user xxx     ユーザー名を入れる

get fname    ファイルを取ってくる
mget *       複数のファイルを取ってくる ワイルドカード可能
mget *.py

put fname    ファイルを送り込む
mput *       複数指定

prompt       mget, mput のときに一個ずつ問い合わせない
       トグル動作

cd           リモートのフォルダ移動
ls      リモートの ls

lcd          ローカルのフォルダ移動
!ls          ローカルの ls

binary       バイナリモード(デフォルト)
ascii        アスキーモード

アスキーモードにすると、テキストファイルについては、
改行コードを OS に合わせたものに置換する。
混乱の元なので ascii モードは推奨しない。