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"の内容を表示する
more …ファイルの内容を1画面分ずつ表示する
[使い方]more ファイル名
[例]ファイル"renshuu"の内容を1画面ずつ表示する
スペースキーで1画面進む。bキーで1画面戻る。
grep …ファイルの中から文字列を(行単位で)検索する
[使い方]grep 文字列 ファイル名
[例]ファイル"renshuu"の中から"color"を含む行を検索する。
diff …2つのファイルの差異を調べる
[使い方]diff ファイル名1 ファイル名2
[例]ファイル".bashrc"とファイル"renshuu"の差異を調べる。
".bashrc"と"renshuu"の内容は同じで差異はないので、何も表示されない。
wc …ファイルの行数、単語数、バイト数を表示する
[使い方]wc ファイル名
[例]ファイル"renshuu"の行数、単語数、バイト数を表示する。
単語数は、単語間がスペースで区切られている前提で数えられる。
touch …ファイルの更新日時を現在時刻にする
[使い方]touch ファイル名 (存在しないファイルだと空ファイルを生成する)
[例1]ファイル"renshuu"の更新日時を現在時刻にする。
$ ls -l renshuu
$ touch renshuu
$ ls -l renshuu
[例2]"renshuu2"という名前の空ファイルを作成する。
$ touch renshuu2
$ ls
$ cat renshuu2
マニュアル参照
man …コマンドのマニュアルを表示する
[使い方]man コマンド名
[例]lsコマンドのマニュアルを表示する。
スペースキーで1画面進む。bキーで1画面戻る。
【2】ディレクトリー(フォルダー)を扱う
UNIXのディレクトリーはWindowsのフォルダーに相当する。
Windowsでは"C:\"等のドライブ名が頂点で、その下にファイルやフォルダーがある。
UNIXでは一番上が"/"(ルートディレクトリー)で、その下にファイルやディレクトリーがある。
pwd …今いる場所のディレクトリー名を表示する
[使い方]pwd
mkdir …ディレクトリーを作成する
[使い方]mkdir ディレクトリー名
[例]"joho"というディレクトリーを作成する。
cd …別のディレクトリーへ移動する
[使い方]cd 移動先ディレクトリー名
次の記号を使って移動先を示すこともできる:
.. …1つ上
~ …ホームディレクトリー
※各ユーザー専用の場所として /home/ユーザー名 が割り当てられており、ホームディレクトリーと呼ばれる。
[例]ディレクトリー"joho"へ移動した後、元の場所に戻る。
$ 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"を削除する。
rmdir …ディレクトリーを削除する
[使い方]rmdir ディレクトリー名
※ディレクトリーが空でないと削除できない。
[例1]ディレクトリー"joho"を削除する。(削除できない例)
[例2]ディレクトリー"joho"を空にしてから削除する。
$ ls joho
$ rm joho/renshuu2
$ ls joho
$ rmdir joho
$ ls
【3】ネットワーク関連
ip …ネットワーク設定の確認や変更
[例]ip address …IPアドレスを確認する。
ping …ネットワークの接続確認
[使い方]ping IPアドレスまたはホスト名
[例]Googleとの接続を確認する。
何度も繰り返されるので、Ctrl+Cで終了する。
【4】ヒストリー機能
history …過去に実行したコマンドを表示する
[使い方]history
過去に実行したコマンドをもう1度実行する
[使い方]!頭文字
[例]過去に実行した"ma"で始まるコマンドのうち最新のものをもう1度実行する。
【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を検索する。
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人分のパスワードのファイルを保存した。
以上