UNIXコマンド

【1】ファイルを扱う

ls …ファイル名を表示する
[使い方]
ls  …ファイル名を表示する(ドット"."で始まるファイルは除く)。
ls -a  …すべてのファイルのファイル名を表示する。
ls -l  …ファイルの詳細情報を表示する(ドット"."で始まるファイルは除く)。
ls -al  …ずべてのファイルの詳細情報を表示する。
$ ls
$ ls -a
$ ls -l
$ ls -al

cp …ファイルをコピーする
[使い方]cp コピー元ファイル名 コピー先ファイル名
[例]ファイル".bashrc"を"renshuu"というファイル名でコピーする
$ cp .bashrc renshuu
$ ls

cat …ファイルの内容を表示する
[使い方]cat ファイル名
[例]ファイル"renshuu"の内容を表示する
$ cat renshuu

more …ファイルの内容を1画面分ずつ表示する
[使い方]more ファイル名
[例]ファイル"renshuu"の内容を1画面ずつ表示する
$ more renshuu
スペースキーで1画面進む。bキーで1画面戻る。

grep …ファイルの中から文字列を(行単位で)検索する
[使い方]grep 文字列 ファイル名
[例]ファイル"renshuu"の中から"color"を含む行を検索する。
$ grep color renshuu

diff …2つのファイルの差異を調べる
[使い方]diff ファイル名1 ファイル名2
[例]ファイル".bashrc"とファイル"renshuu"の差異を調べる。
$ diff .bashrc renshuu
".bashrc"と"renshuu"の内容は同じで差異はないので、何も表示されない。

wc …ファイルの行数、単語数、バイト数を表示する
[使い方]wc ファイル名
[例]ファイル"renshuu"の行数、単語数、バイト数を表示する。
$ wc renshuu
単語数は、単語間がスペースで区切られている前提で数えられる。

touch …ファイルの更新日時を現在時刻にする
[使い方]touch ファイル名 (存在しないファイルだと空ファイルを生成する)
[例1]ファイル"renshuu"の更新日時を現在時刻にする。
$ ls -l renshuu
$ touch renshuu
$ ls -l renshuu

[例2]"renshuu2"という名前の空ファイルを作成する。
$ touch renshuu2
$ ls
$ cat renshuu2

マニュアル参照

man …コマンドのマニュアルを表示する
[使い方]man コマンド名
[例]lsコマンドのマニュアルを表示する。
$ man ls
スペースキーで1画面進む。bキーで1画面戻る。

【2】ディレクトリー(フォルダー)を扱う

UNIXのディレクトリーはWindowsのフォルダーに相当する。 Windowsでは"C:\"等のドライブ名が頂点で、その下にファイルやフォルダーがある。 UNIXでは一番上が"/"(ルートディレクトリー)で、その下にファイルやディレクトリーがある。

pwd …今いる場所のディレクトリー名を表示する
[使い方]pwd
$ pwd

mkdir …ディレクトリーを作成する
[使い方]mkdir ディレクトリー名
[例]"joho"というディレクトリーを作成する。
$ mkdir joho
$ ls

cd …別のディレクトリーへ移動する
[使い方]cd 移動先ディレクトリー名
 次の記号を使って移動先を示すこともできる:
  .. …1つ上
  ~ …ホームディレクトリー
    ※各ユーザー専用の場所として /home/ユーザー名 が割り当てられており、ホームディレクトリーと呼ばれる。
[例]ディレクトリー"joho"へ移動した後、元の場所に戻る。
$ cd joho
$ cd ..
$ cd ~/joho
$ cd ~
$ cd /home/ユーザー名/joho
$ cd /home/ユーザー名

mv …ファイルを移動する、またはファイル名を変更する
[使い方]
mv ファイル名 移動先ディレクトリー名  …ファイルを移動する。
mv 変更前ファイル名 変更後ファイル名  …ファイル名を変更する。
[例1]ファイル"renshuu2"をディレクトリー"joho"へ移動する。
$ mv renshuu2 joho
$ ls
$ ls joho

[例2]ファイル"renshuu"の名前を"renshuu1"に変更する。
$ ls
$ mv renshuu renshuu1
$ ls

rm …ファイルを削除する
[使い方]rm ファイル名
 ※間違って必要なファイルを削除しないよう注意すること。
[例]ファイル"renshuu1"を削除する。
$ ls
$ rm renshuu1
$ ls

rmdir …ディレクトリーを削除する
[使い方]rmdir ディレクトリー名
 ※ディレクトリーが空でないと削除できない。
[例1]ディレクトリー"joho"を削除する。(削除できない例)
$ ls joho
$ rmdir joho

[例2]ディレクトリー"joho"を空にしてから削除する。
$ ls joho
$ rm joho/renshuu2
$ ls joho
$ rmdir joho
$ ls

【3】ネットワーク関連

ip …ネットワーク設定の確認や変更
[例]ip address …IPアドレスを確認する。
$ ip address

ping …ネットワークの接続確認
[使い方]ping IPアドレスまたはホスト名
[例]Googleとの接続を確認する。
$ ping google.com
何度も繰り返されるので、Ctrl+Cで終了する。

【4】ヒストリー機能

history …過去に実行したコマンドを表示する
[使い方]history
$ history

過去に実行したコマンドをもう1度実行する
[使い方]!頭文字
[例]過去に実行した"ma"で始まるコマンドのうち最新のものをもう1度実行する。
$ !ma

【5】リダイレクション

画面に表示する代わりにファイルに保存する機能。
[使い方]
 コマンド > ファイル名  …コマンドの結果をファイルに保存する。
 コマンド >> ファイル名 …コマンドの結果を既存のファイルに追加する。
[例1]ls の結果をファイル"output"に保存する。
$ ls > output
$ cat output
※すでに"output"が存在する場合は上書きになる(設定によって上書きできないこともある)。

[例2]ls -l の結果を既存のファイル"output"へ追加する。
$ ls -a >> output
$ cat output

【6】パイプ

コマンドの結果を別のコマンドへ渡す機能。
[使い方]コマンド1 | コマンド2
[例]ls -al の結果を grep へ渡し、文字列bashを検索する。
$ ls -al | grep bash
grep のファイル名を指定する部分には何も書かない。 ファイルの代わりに ls -al の結果が使われる。

【7】シェルスクリプト

コマンドと制御構文で書いたプログラム。
制御構文とはプログラムの流れを記述する文で、繰り返し処理や条件分岐などがある。
[作り方]テキストエディターでコマンド等を書き、ファイルに保存する。
[使い方]sh ファイル名
[繰り返し処理]
 for 変数名 in 値1 値2 値3 ...
 do
   コマンド
  done
[条件分岐]
  if [ $変数名 = 文字列 ]; then
   コマンド
  fi

[例1] 以下の内容をファイル"rei1.sh"に保存して実行
echo "これは練習として作ったシェルスクリプトです。"
echo "hello, world" > hello
echo "helloというファイルを作りました。情報を表示します。"
ls -l hello

[例2] 以下の内容をファイル"rei2.sh"に保存して実行
for var in taro jiro saburo siro goro
do
  echo $var
done
繰り返し処理で変数varに5つの値taro, jiro, saburo, siro, goroを次々と代入している。 $varは変数varに代入されている値を示す。

[例3]以下の内容をファイル"rei3.sh"に保存して実行
for var in $(seq -w 10)
do
  echo $var
done
seqは連続値を表示するコマンド、-w は桁を揃えるオプション。
$(seq -w 10) は 01〜10の数列となる。

[例3改]ファイル"rei3.sh"を以下のように書き換えて保存し実行
for var in $(seq -w 10)
do
  if [ $var != 03 ]; then
    echo $var
  fi
done
条件分岐によって変数varの値が03以外の時だけ表示するようにした。

[例4] 以下の内容をファイル"rei4.sh"に保存して実行
echo "ユーザー名と初期パスワードを生成します..."
mkdir -p password
for var in $(seq -w 10)
do
  echo "st"$var" "$(head -c 12 /dev/urandom | base64) > password/"st"$var
done
echo "生成しました。"
ディレクトリーpassword の下に10人分のパスワードのファイルを保存した。

[例4改]ファイル"rei4.sh"を以下のように書き換えて保存し実行
echo "ユーザー名と初期パスワードを生成します..."
mkdir -p password
rm -f password/*
for var in $(seq -w 1000)
do
  echo "st"$var" "$(head -c 12 /dev/urandom | base64) > password/"st"$var
done
echo "生成しました。"
ディレクトリーpassword の下の既存ファイルを削除し、新たに1000人分のパスワードのファイルを保存した。

以上