LoginSignup
0
0

More than 5 years have passed since last update.

ざっと目を通しておきたいbashコマンド

Last updated at Posted at 2019-05-20

はじめに

bashを勉強する上で抑えておくと楽になる数々をメモしました。
徐々に増やしていく予定です。

基本的な構文

ファイル読み込み

source "./env.ini";
# . "./env.ini"でも動作はする

条件文

引数の判別

if [[ $# != "1" ]]; then
  echo "引数を1つ渡して下さい";
fi;

フォルダ存在チェック

if [ ! -e "./tmp" ]; then
  echo "tmpフォルダは存在しません";
fi;

なんちゃって三項演算子

[[ $count == "0" ]] && echo "OK" || echo "NG" ;

直前のコマンド判別

rm -rf ./tmp

# 成功時は0が返る
if [[ $? != "0"]]; then
  echo "削除に失敗しました";
fi

表示

普通の表示

echo "こんにちは";

フォーマット表示

printf "%s %s \n" "1" "2";

「\」を挟むことでコマンドを改行し、見通しを良くすることができます。

printf "%s %s \n" \
  "[error]" "ファイルが存在しません";

ファイル操作

文字コード変換

iconv -f cp932 -t UTF8 nzn.csv > utf8_nzn.csv;

とあるフォルダ内ファイル一覧を取得

ls ./tmp 

とあるフォルダ内ファイル一覧取得を変数格納

file_list=$(ls ./tmp); 

とあるフォルダ内ファイルを降順にして一覧表示

ls -tr ./tmp; 

とあるフォルダ内csvファイル、更新日の絞り込みを降順にして一覧表示(lsと同じ形で)

find ./tmp -type f -mmin +5 -print0 | xargs -0 ls -tr | sed 's!^.*/!!' | grep ".*.csv"; 

CSVの1行目を取得&表示

arr_first_line=$(sed -n "1p" nzn.csv | tr ',' '\n');
# --以降をすべて引数とみなす
set -- $arr_first_line;

id=${1};
name=${2};
price=${3};

ファイル分、ループ

file_list=$(ls ./tmp); 
for file in $file_list; do
  echo $file;
done;

mysqlの実行

mysql="mysql -u $USER -h ${HOST}";
eval $mysql -e "SELECT * FROM users;";

trap

プロセスを強制終了した際などをトリガーに、後始末をさせるコマンド。
一時フォルダ内をバッチ後は全て消しておかなければいけないなどに便利。

trap "
rm -rf tmp/*;
" 0
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0