鱼C论坛

 找回密码
 立即注册
查看: 3860|回复: 1

[学习笔记] Shell学习日志

[复制链接]
发表于 2020-11-26 12:58:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 MFwxy 于 2020-12-1 23:42 编辑

来源:
《Linux Shell 自动化运维(慕课版)》千锋教育高教产品研发部(中国工信出版集团   人民邮电出版社)——知识点
《shell脚本实战(第二版)》戴夫·泰勒,布兰登·佩里;门佳(译)(中国工信出版集团   人民邮电出版社)——代码

变量种类:
        1. 环境变量
         定义 —— export back_dir = /home/backup;        export back_dir(转换自定义变量为环境变量)
         使用 —— $变量名   or   ${变量名}
        2. 自定义变量
         定义 —— 变量名 = 变量值
         使用 —— $变量名
         3. 位置变量
         脚本后面的参数就是(a,b,c...)
         ./test.sh a b c...
         //大于10——${10}
        4. 预定义变量
         $0                脚本名
         $*                所有的参数
         $@                所有的参数
         $#                参数的个数
         $$                当前进程的PID
         $!                上个后台进程的PID
         $?                上个命令的返回值,0表示成功

赋值方式:
        1. 直接赋值
         a=3
        2. 键盘输入赋值
         read -p [提示]:[变量名]
        3. 命令行参数赋值
         ./name.sh $1 $2
        4. 命令输出结果赋值
         cmd=`date + %F`

touch:
        touch stu{1..4} && ls  -->利用{ }有序序列批量创建文件
        stu1,sut2...stu4
        https://www.cnblogs.com/MineGi/p/12171457.html
        https://www.cnblogs.com/MineGi/p/11124223.html

ls(英文全拼:list files):
        查看当前文件夹文件列表
        ls [-alrtAFR] [name...]

            -a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
            -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
            -r 将文件以相反次序显示(原定依英文字母次序)
            -t 将文件依建立时间之先后次序列出
            -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
            -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
            -R 若目录下有文件,则以下之文件亦皆依序列出

mkdir(英文全拼:make directory):
        创建目录
        mkdir [-p] dirName
        -p 确保目录名称存在,不存在的就建一个。

运算:
        1. expr
         num1=10 && num2=20
         expr $num1 + $num2
         30
        2. (())    or     $(())
         sum=$(($num1 + $num2))
        3. []     or     $[]
         sum=$[$num1 + $num2]
        4. let        (低效)
         sum=2
         let sum=sum+8                     //没let不会进行运算。
        5. bc小数计算
         "2*4"        |bc

删除(都会删掉找到并比较的关键字符):
        1. {变量名#关键字符}
         变量内容从头开始,删除到第一个符合关键字符的字符为止
        2. {变量名##关键字符}
         变量内容从头开始,删除到最后一个符合关键字符的字符为止
        3. {变量名%关键字符}
         变量内容从尾开始,删除到第一个符合关键字符的字符为止
        4. {变量名%%关键字符}
         变量内容从尾开始,删除到最后一个符合关键字符的字符为止

替换:
        1. ${变量名/旧字符串/新字符串}
         变量内容里符合旧字符串的第一个“旧字符串”会被新字符串替代
        2. ${变量名//旧字符串/新字符串}
         变量内容里符合旧字符串的全部“旧字符串”会被新字符串替代

迭代:
        ${变量名-新的变量值}
        如果变量名没有被赋值,那么使用新的变量值;若赋值了(包括空),则不代替。

自增跟 C\C++ 一样

符号:
         # —— 注释行
         ; —— 命令分隔符。用于同一行两命令。(;;用于终止case)
         . —— 等价于source命令,bash内建命令。也可用于文件名开头,将文件制成隐藏文件,ls也不会正常显示
         : —— 等价于true
         $ —— 变量替换或引用变量内容
         () —— 子Shell中执行
         (()) —— 数值比较,运算,支持正则。(( i=1;i<3;i++)) , ((command1 && command2))
         $() —— 命令替换,如=>`command`
         $(()) —— 支持运算,$(( 1+2 ))
         {} —— 集合,可将命令与字符串隔开,{Num}%
         ${} —— 变量的引用
         [] —— 文件测试,数值比较,文件比较,字符串比较,如[ -a ] 且,[ -o ] 或
         [[]] —— 增加了对正则的支持,如[[ =~ ]]包含,[[ || ]] 或, [[ && ]]且
         $[] —— 支持变量运算,如$[ 2**2 ]=>2^2 => $ [ var1**var2 ]
         # ./01.sh —— 需要执行权限,在子Shell中执行
         # bash sh —— 不需要执行权限,在子Shell中执行
         # .01.sh —— 不需要执行权限,在当前Shell中执行
         # source 01.sh —— 不需要执行权限,在当前Shell中执行
         # sh -n 02.sh —— 仅调试 syntax error
         sh -vx 02.sh —— 以调试方法执行,查询整个执行过程
         我们通常会修改系统中的配置文件(eg: /etc/profile)的PATH等变量,使之在当前Shell中生效

chmod(英文全拼:change mode):
        https://www.runoob.com/linux/linux-comm-chmod.html
        chmod [-cfvR] [--help] [--version] mode file...



-------------------------------------end---------------------------------------------
不写那么详细了。。。像个沙比,我又不会看,写个索引的了。重点在手打代码和翻看熟悉知识点上。



先弃坑,这玩意儿在一定程度上影响我学习了。以后有机会再来吧。

shell脚本库.zip

7.74 KB, 下载次数: 15

未完成作品

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-27 21:35:10 | 显示全部楼层
写的不错,拿走了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 09:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表