[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 危险系数高

 

 

你可能感兴趣的:(编程语言)