Skip to content

Command

hyukke edited this page Jun 9, 2016 · 18 revisions

コマンド

Usage

Linux

Directory

cd - ディレクトリを移動
$ cd sample
$ cd ./sample
  • 上の階層への移動はcd ../..などを指定
pwd - 現在のディレクトリを確認
$ pwd [options]
ls - ファイルやディレクトリの情報を表示
$ ls
  • ls -a ドットファイル(ファイル名の先頭にピリオドがあるファイル)を含んだすべてのファイルを表示
    • ls -al 詳細も併せて表示
  • ls -l 詳細を表示
    • ll エイリアスで指定可能、ls -lと同等
mkdir - ディレクトリを作成
$ mkdir sample
  • mkdir -p sample/sub 指定したサブディレクトリごと作成
  • mkdir -m 755 指定したパーミッションでディレクトリを作成
rmdir - ディレクトリを削除
$ rmdir sample

File

rm - ファイルを削除
$ rm sample.txt
  • rm -f sample.csv ファイルが存在しなくてもエラーにしない
  • rm -R sample ディレクトリを再帰的に削除(中身を含めて削除)
mv - ファイルやディレクトリを移動
$ mv source.txt dest
$ mv source ./dest
  • mv source.txt dest.txt ファイル名が指定された場合は名前を変更
find - ディレクトリ内のファイルを検索
$ find sample.txt
touch - 空ファイルを作成および更新日時を変更
$ touch sample.txt
  • 既存のファイルを指定すると、更新日時を変更できる
cat - ファイルの中身を表示
$ cat sample.txt
  • tail -n sample.txt 行番号を表示
tail - ファイルの末尾を表示
$ tail sample.log
  • デフォルトは10行
  • tail -n 20 末尾から指定した行数を表示
  • tail -f ファイルの内容を監視し表示を更新
script - 標準入出力を記録
$ script sysout.txt
  • exit 記録を終了
tar - TAR 形式で圧縮
$ tar zcvf /sample/data/something.tar.gz *.txt
  • zcvf TAR 形式で GZip 圧縮
  • xfvz TAR 形式で GZip 解凍

Text

cut - 文字列を切り取る
$ echo "sample_text" | cut -c 1-8
  • | パイプは前のコマンドの標準出力を、後ろのコマンドの標準入力にするためのコマンド
  • cut -c 2 指定された文字数を切り取る
    • 2 2文字目を切り取る(位置指定)
    • 1-8 1~8文字を切り取る(範囲指定)
grep - 抽出する
$ grep something sample
  • grep -c something 文字列somethingが含まれる件数を抽出
  • grep -v something 文字列somethingが含まれない行を抽出

Permission

chmod - パーミッションを変更
$ chmod +x *.sh
$ chmod 755 sample.csv
  • 記号または数値(8進数)でモードを指定
chown - 所有者を変更
$ chown smpsys sample.csv

User and Group

su - ユーザを切替
$ su
  • su user ログインするユーザを指定
  • su - ログイン・シェルを使用してユーザを切り替え(ルート権限を保持するスーパーユーザ)

Network

ssh - SSH(Secure Shell)プロトコルで通信を暗号化して接続

$ ssh 1.0.0.999
  • ssh -p 99999 1.0.0.999 ポート番号を指定
  • ssh -l sample 1.0.0.999 ログインするユーザ名を指定
    • ssh sample@1.0.0.999 ホスト名に指定可能
  • ssh -i ~/.ssh/id_rsa 1.0.0.999 秘密鍵ファイルを指定

System

sudo - 指定したユーザーでコマンドを実行
$ sudo cd /sample
  • sudo -s ssh 1.0.0.999 環境変数 SHELL で指定されたシェルを実行
export - 環境変数を定義
$ export VAL="Sample"
  • export -p エクスポートされている環境変数のリストを表示
  • export -n VAL 指定した環境変数を削除

Application

vi - テキストファイルを編集
$ vi sample.txt
  • ファイルが存在しない場合は新規作成
  • 起動直後は編集モード
  • vi -R sample.txt 読取専用でオープン
  • カーソルの操作
    • h 左←に移動
    • j 下↓に移動
    • k 上↑に移動
    • l 右→に移動
    • 0 行頭に移動
    • $ 行末に移動
  • ファイルコマンド(コマンドモードに移行するための:を入力)
    • :q vi を終了
    • :q! vi を保存せずに強制終了
    • :w ファイルを保存
      • :w sample.txt 指定したファイル名に変更して保存
    • :wq ファイルを保存して終了
  • [Esc] でコマンドモードに切り替え
sh - シェルスクリプトを実行
$ sh sample.sh
yum - パッケージを取得してコマンドを実行
$ yum install sample.rpm
  • yum -y install 問い合わせに対してすべて「y」で実行
  • 実行できるコマンド
    • yum install sample.rpm パッケージをインストール
      • バージョンが同じものをインストールするとエラー
    • yum update sample.rpm パッケージをアップデート
    • yum remove sample.rpm パッケージをアンインストール
    • yum reinstall sample.rpm パッケージを再インストール
    • yum info sample.rpm パッケージの情報を表示

Others

echo - 与えられた文字列を表示
$ echo "Sample"
  • echo -e "Name\t: hoge" エスケープ・コードを使用可能
    • \n 改行 LF
    • \r 改行 CR
    • \t 水平タブ

Shell Script

Variables

var1=sample
var2=sample2

echo $var1
echo ${var2}
  • =の前後にスペースは空けない
  • 変数はそのスクリプト内でのみ有効
  • 他のスクリプトに影響した変数は、exportによる環境変数を利用

If Statement

if [ sample==1 ]; then
    # Do something...
elif [ sample==2 ]; then
    # Do something...
else 
    # Do something...
fi
  • 条件では、00以外かの真偽値を指定して判定
  • 通常は1行につき1つのみ記述できるコマンドを、複数個記述するために指定

For Statement

array=(aaa bbb ccc)
for data in ${array[@]}; do
  // Do something...
  echo $data
done

Exit

exit 0
  • 数値は終了ステータスを表す
  • 慣例として、0を正常終了、1(もしくは0以外の数値)を異常終了とすることが多い

Function

# Define function
function sample() {
  arg_1=$1
  arg_2=$2
  # Do something...
  return 0
}

# Call function
sample var_1 var_2
ret=$?
  • 呼び出しは、関数の定義後に関数名を記述し、続けて引数を指定
  • 関数内において、$nで数字を指定して順番に引数を取得
  • returnに指定した値を、標準出力で関数の結果として返却
    • シェルスクリプトには戻り値という概念はない
    • returnを指定することで関数の終了ステータスになるが、一般的な関数の戻り値ではない

Sub Shell

( )でくくると、親と切り離された子のシェルとして実行が可能になる。

( cd /sample; sh sample.sh )
Example
相対パスで圧縮
( cd /sample/data; tar zcvf /sample/data/something.tar.gz *.txt )

Nested Command

バッククォートで囲うと、コマンドの結果を変数に格納することが可能になる。
コマンドが入れ子になる場合は、バッククォートを含む式を$( )で囲うことで入れ子にすることができる。

result=`ls -l`
result2=$(`grep -c sample* sample.txt` - `grep -c sample001 sample.txt`)

Reference

Clone this wiki locally