よく使うシェルコマンド
提供: Eospedia
ここではコマンド、Makefile、PIONEなどの作成や実行においてよく使うシェルコマンドを簡易的にリストアップしています。
目次
制御文
if文
基本形
if [ (条件) ]; then (処理); fi
ifの後、[の後、]の前には空白が必要
条件、処理が長いときは\を使うと行をまたぐことができ、読みやすいようになります。
if [ (条件1) ]; then \ (処理A); \ if [ (条件2) ]; then \ (処理B); \ fi; \ (処理C); \ fi
elif, else付き
if [ (条件1) ]; then \ (処理A); \ elif [ (条件2) ]; then \ (処理B); \ else \ (処理C); \ fi
条件
コマンド | 用途 | 例 |
---|---|---|
-e | ファイル、ディレクトリが空か調べる | if [ -e Input.txt ] ; then echo "Input.txt is not empty!" fi |
! | 条件の反転 | if [ ! -e Input.txt ] ; then echo "Input.txt is empty!" fi |
-d | ディレクトリの有無を調べる | if [ -d Input.txt ] ; then echo "Input is not directory!" fi |
ループ文
for文
for (i=0; i < Max; i++) タイプ
括弧()を二重にして使用することに注意しましょう。
例
for (( i=0; i<5; i++ )); \ do \ echo "$i"; \ done \
実行結果
0 1 2 3 4
for in
#配列などを利用したリストでループを作成できます。
for (変数名) in (配列) ; do (コマンド); done
例
ARRAY=(ABC EFG HIJ) for data in ${ARRAY[@]} ; \ do \ echo "$data"; \ done
実行結果
ABC EFG HIJ
while文
while [ (条件) ] ; \ do \ (コマンド); \ done
配列
入力
(配列名)=((値1) (値2) ...)
出力
1つだけ出力するとき
${(配列名)[(番号)]}
全ての値を出力するとき
${(配列名)[@]}
要素数を出力するとき
${#(配列名)[@]}
例
コマンド
ARRAY=(123 456 789) echo "${ARRAY[2]}" echo "${ARRAY[@]}" echo "${#ARRAY[@]}"
実行結果
789 123 456 789 3
その他
permission deniedのとき
基本的にはsudoコマンドを前に付ければ管理者権限で実行できます。
sudo echo "XXXX" > data.txt
ライブラリの書き換えなどでうまくいかないときはchownで所有者を変更します。
sudo chown $USER data.txt
ディレクトリ以下を再帰的に変更することもできます。(複数のユーザーで使用しているときは注意が必要です)
sudo chown -R $USER datadirectory/