Help us understand the problem. What is going on with this article?

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

はじめに

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は魅力的ですね。

w_atame
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした