Linux脚本编程

1、echo

echo 'hello world!'

echo "hello world!"错误,“”解释,!有特殊用途

echo -e "\e[1;31m abcd \e[0m"

30m 黑色,31m红色 32m绿色 33m黄色 34m蓝色 35m洋红 36m青色 37m白色

2、脚本执行

./hello.sh
unix2dos 和dos2unix 讲windows下.sh文件转为linux下,因为系统换行符不同

3、输入输出重定向

date >> abc 2>>&1
date1 >> abc 2>>&1
date &>>abc
date1 &>>abc

把正确和错误信息都追加到文件中
2(不能有空格)>>&1

ls1 >>abc 2>>def

把正确数据输入到abc ,把错误数据输出到def

4、顺序执行和管道符

ls;cd /user;date

cd /user错误不影响date执行

ls && echo yes ||echo no

ls命令正确执行 打印yes 否则打印no

cat /etc/passwd |grep "root"

grep -i 区分大小写
-n 显示行数
--colre=auto 显示颜色

cat /etc/passwd |grep -n --color=auto "root"

5、bash中特殊符号

‘’单引号里的特殊符号不识别
""识别特殊符号
'#'注释
$调用变量值
\ 转义字符
& 放入后台,即最小化

6、变量

aa="aa"
bb=${aa}123
cc="$aa"456
echo "$aa $bb $cc"
unset aa

7、位置参数

 #!/bin/bash
 sum=$(($1+$2))
  echo "sum is $sum"
$0 所有参数 $1第一个参数 $2 第二个参数
 1 #!/bin/bash
  2 echo $#
  3 echo $*
  4 echo $@

./param.sh 1 23 4

3
1 23 4
1 23 4

8、预定义变量

echo $?

判断上一条命令是否正确执行,正确为0,否则非0

#当前进程Pid
echo $$
find /root/ -name "test.txt" &
#后台运行最后一个进程pid
echo $!

9、数值运算和运算符

aa=11
bb=22
ff=$(($aa+$bb))
echo $ff

10、cut

分隔符为空格符时不好判断
制表符,或冒号分号等可以

cat /etc/passwd |grep -n -v "root"|cut -d ":" -f 2,6

提取冒号分隔的第2列和第6列

11、awk

awk 条件 输出 文件

#打印第1、5、6列
df -h|awk '{print $1 "\t" $5 "\t" $6}'
#打印第5列并提取数值
df -h|grep "disk" |awk '{print $5 }'|cut -d "%" -f 1
#先分隔,再打印
cat /etc/passwd|grep ":"|awk 'BEGIN{FS=":"}{print $1 "\t" $3}'
#再末尾加"aaaa"
cat /etc/passwd|grep ":"|awk 'BEGIN{FS=":"}{print $1 "\t" $3}END{print "aaaa"}'

12、sed

#打印第2行
 sed -n "2p" student.txt
#删除第2到4行,没有删除文件
sed '2,4d' student1.txt
#追加,没有更改源文件
sed '2a cheat' student1.txt
#将第4行99替换成55
sed '4s/99/55/g' student.txt
#允许多个条件同时执行
sed -e 's/liming//g;s/gao//g' student.txt

13、流程控制

#判断文件是否存在
test -e student.txt
echo $?
#判断文件是否是普通文件
test -f student.txt && echo yes || echo no
#判断parm.sh是否比sum.sh新修改
test parm.sh -nt sum.sh && echo yes || echo no
#旧修改
est parm.sh -ot sum.sh && echo yes || echo no
#-ef 判断inode号是否一致
#判断23是否大于等于24
test 23 -ge 24 && echo yes || echo no
#-eq 相等 -ne 不相等  -gt 大于 -lt 小于  -ge大于等于  -le 小于等于
#判断$name是不是空 -n不为空判断,==  !=
test -z "$name" &&echo yes ||echo no
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 8,603评论 1赞 19
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 13,706评论 2赞 33
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,845评论 0赞 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 6,404评论 0赞 10
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,280评论 0赞 0

友情链接更多精彩内容