#はじめに
linuxを使うならやはりbashが魅力的
ちょっとした作業に1行bash
コマンドライン上でbashコマンドを一行で実行する方法を紹介します。
最後に1行bashの魅力を伝えるため空のファイルのみを移動する方法を紹介します。
動作環境: linux全般
#for(繰り返し処理)
基本定な形
for 変数 in 値のリスト;do 処理 ;done
###◯数値を使ったfor
for文を使って1~5までの数字を画面に表示する1行bash
$ for i in {1..5};do echo $i;done
1
2
3
4
5
###◯ファイル名を読み込む
バッククォート``でlsコマンドを囲む(アポストロフィ''では無いので注意)
カレントディレクトリのファイル名を読み込みfor文を使って1行ずつ画面に表示する1行bash
.directory/
├ file1
├ file2
├ file3
├ ...
$ for file in `ls`;do echo $file;done
file1
file2
file3
...
#if(条件分岐)
基本的な形
if [ 条件式 ];then 処理;else 処理;fi
条件式の前と後に半角スペース必要
##文字列比較
条件 | 条件式 |
---|---|
文字列が等しい | = |
文字列が異なる | != |
文字列の長さが0 | -z |
文字列の長さが1以上 | -n |
###◯文字列が等しい場合
文字列が比較する場合「Match」一致しない場合「Missmatch」と表示する1行bash
$ if [ "a" = "a" ];then echo "Match";else echo "Missmatch";fi
Match
###◯文字の長さが0の場合
文字列の長さが0の場合「Match」0以外の場合「Missmatch」と表示する1行bash
$ if [ -z "" ];then echo "Match";else echo "Missmatch";fi
Match
##数値比較
条件 | 条件式 |
---|---|
= | -eq |
≠ | -ne |
< | -lt |
> | -gt |
≦ | -le |
≧ | -ge |
###◯数値が等しい
数値が等しい場合「Match」等しくない場合「Missmatch」と表示する1行bash
$ if [ 1 -eq 1 ];then echo "equal";else echo "not equal";fi
equal
#forとifの組み合わせ
##◯空のファイルのみ移動
カレントディレクトリ内の空ファイルのみを別ディレクトリに移動させる1行bash
ディレクトリ構成(コマンド実行前)
.directory/
├ file1 (空ファイル)
├ file2
├ file3 (空ファイル)
trash/
$ for file in `ls`;do if [ -z -f `cat $file` ];then mv $file ../trash/;fi;done
ディレクトリ構成(コマンド実行後)
.directory/
├ file2
trash/
├ file1 (空ファイル)
├ file3 (空ファイル)
今回は空ファイルのみを移動する方法を紹介しました。
他にも組み合わせ次第でわざわざプログラムを組まなくても手軽に解決できます。
やはりbashは魅力的ですね。