39
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

コマンドライン上でのbashを1行で (for文/if文)

Last updated at Posted at 2018-03-23

#はじめに
linuxを使うならやはりbashが魅力的
ちょっとした作業に1行bash
コマンドライン上でbashコマンドを一行で実行する方法を紹介します。
最後に1行bashの魅力を伝えるため空のファイルのみを移動する方法を紹介します。

動作環境: linux全般

#for(繰り返し処理)
基本定な形

for 変数 in 値のリスト;do 処理 ;done

###◯数値を使ったfor
for文を使って1~5までの数字を画面に表示する1行bash

command
$ for i in {1..5};do echo $i;done
実行結果
1
2
3
4
5

###◯ファイル名を読み込む
バッククォート``でlsコマンドを囲む(アポストロフィ''では無いので注意)

カレントディレクトリのファイル名を読み込みfor文を使って1行ずつ画面に表示する1行bash

.directory/
 ├ file1
 ├ file2 
 ├ file3
 ├ ...

command
$ for file in `ls`;do echo $file;done
実行結果
file1
file2
file3
...

#if(条件分岐)
基本的な形

if [ 条件式 ];then 処理;else 処理;fi

条件式の前と後に半角スペース必要
##文字列比較

条件 条件式
文字列が等しい =
文字列が異なる !=
文字列の長さが0 -z
文字列の長さが1以上 -n

###◯文字列が等しい場合

文字列が比較する場合「Match」一致しない場合「Missmatch」と表示する1行bash

command
$ if [ "a" = "a" ];then echo "Match";else echo "Missmatch";fi
実行結果
Match  

###◯文字の長さが0の場合

文字列の長さが0の場合「Match」0以外の場合「Missmatch」と表示する1行bash

command
$ if [ -z "" ];then echo "Match";else echo "Missmatch";fi
実行結果
Match

##数値比較

条件 条件式
= -eq
-ne
< -lt
> -gt
-le
-ge

###◯数値が等しい
数値が等しい場合「Match」等しくない場合「Missmatch」と表示する1行bash

command
$ if [ 1 -eq 1 ];then echo "equal";else echo "not equal";fi
実行結果
equal

#forとifの組み合わせ
##◯空のファイルのみ移動

カレントディレクトリ内の空ファイルのみを別ディレクトリに移動させる1行bash

ディレクトリ構成(コマンド実行前)

.directory/
 ├ file1 (空ファイル)
 ├ file2 
 ├ file3 (空ファイル)
trash/

command
$ for file in `ls`;do if [ -z -f `cat $file` ];then mv $file ../trash/;fi;done

ディレクトリ構成(コマンド実行後)

.directory/
 ├ file2 
trash/
 ├ file1 (空ファイル)
 ├ file3 (空ファイル)

今回は空ファイルのみを移動する方法を紹介しました。
他にも組み合わせ次第でわざわざプログラムを組まなくても手軽に解決できます。
やはりbashは魅力的ですね。

39
37
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
39
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?