[Linux]Shell必知必会


1.ヒント付き入力
#!/bin/bash
read -p "input file name:" FILENAME
echo $FILENAME

2.常用判断フラグ
-c     
-d    

3.パラメータ関連
 $0      ;      $1       

4.switch-case文
case $1 in
    'start')
        echo "start";;
    'stop')
        echo "stop";;
      *)
        echo "error";;
esac

5.ユーザーとグループを追加し、変数計算賦値し、ファイルの所属を変更し、ユーザーを削除する
i=1
groupadd class1
while [[ $i -le 30 ]];do
    if [[ $i -le 9 ]];then
         USERNAME=stu0$i
    else
         USERNAME=stu$i
    fi
    useradd -G class1 $USERNAME
    chown -R $USERNAME /home/$USERNAME
    chgrp -R class1 /home/$USERNAME
    userdel -r $USERNAME
    i=`expr $i + 1`  #       i=$(( $i + 1 ))           expr        
done

6.タイミングタスク
# vim /etc/crontab
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
0 8-18/1 * * *   => 8  18        
0 23,1-8/2 * * *  => 23  8        

7.文書処理
cut -f1   == >        ,   tab   ,
       -d      ,  cut -d "," -f1  ( f1-3 f1,3      )
sed–i '23s/test/tset/g' test.txt  ==>    23   test   tset
sed -n '5p' test.txt | cut -f3  ==>    5  3 
sed -i '1,3d' test.txt  ==>   1 3 
echo -n ==>      
awk -F "," '{if($2>56789){print $0}}' file.txt  ==>        56789  
sed -n "1p;3p;5p;7p;10p;15p" file.txt  ==>    1,2,5,7,10,15    
      awk 'NR==1||NR==3||NR==5||…||NR=15{print $0}' file.txt
sed -i "s#\t#\|#g" file.txt  ==>   tab     | 
               sed -i 's/\t/|/g' file.txt
grep -n     
head -n 3     3 

8.日付処理
date "+%y-%m-%d %H:%M:%S"       

9.浮動小数点数演算
$(echo "$i + $j" | bc)

10.Forサイクル
for (( j=1;j<=3;j++ ));do
    echo $j
done
for i in $array;do
    echo $i
done

11.演算関連
($(du ./*))  ==>               
${#A[@]}  ==      A    
$(VAR%sh)          sh 

12.ファイル操作
find / -size +50k -size -100k  ==>       50K    100K   

13.suとsu-の違い
suディレクトリは切り替えず、環境変数は変えずsu-ルートと環境変数を含むrootユーザーに完全に切り替える
14.sudoとsuの違い
a.必要なパスワードが異なり、sudo権限を持つユーザーはrootパスワードを知らなくても権利付与コマンドを実行できる
b.sudoは一時的に実行権限を高め、suはrootユーザー権限を直接使用し、suはsudoより危険係数が高い