linux常见命令以及shell⼊门编程(笔记总结记录)
linux常见命令以及shell⼊门编程(笔记总结记录)
⽂章⽬录
⼀、linux常见命令
1.不常⽤
man diff touch which ssh wc date exit kill id ps sleep uname passwd ping df telnet top sudo su reboot shutdown free rpm useradd yum ip set export 2.常⽤
cd curl ls/ll cat chmod chown cp find mv rm pwd head tail mkdir scp tar zip unzip gzip xargs let
let:是 BASH 中⽤于变量计算的⼯具,⽤于执⾏⼀个或多个表达式
eg:
[root@localhost learn-shell]# a=1
[root@localhost learn-shell]# b=2
[root@localhost learn-shell]# let c=a+b
[root@localhost learn-shell]# echo $c
3
[root@localhost learn-shell]# let c++
[root@localhost learn-shell]# echo $c
4
[root@localhost learn-shell]# let c--
[root@localhost learn-shell]# echo $c
3
[root@localhost learn-shell]# let c+=10
[root@localhost learn-shell]# echo $c
13
[root@localhost learn-shell]# let c-=10
[root@localhost learn-shell]# echo $c
3
[root@localhost learn-shell]# let c=c+10
[root@localhost learn-shell]# echo $c
13
[root@localhost learn-shell]# let c=c-10
[root@localhost learn-shell]# echo $c
3
[root@localhost learn-shell]#
3.数据查处理相关
grep cut awk sed
[PATTERN] [FILE]...
[查的内容]...[file]
[查的内容]...[path]
// 注意:使⽤path,option必须加上-r
// grep -rn zhuyz ./
// grep -r '\w' ./
备注:查的内容可以是正则表达式
2.作⽤:对数据进⾏⾏提取
3.option
-v #对内容进⾏取反提取(打印出不符合条件的内容)
-n #对提取的内容显⽰⾏号
-w #精确匹配
-i #忽略⼤⼩写
^ #匹配开头⾏⾸
-E #正则匹配
-r 递归查⽂件(当前⽬录以及⼦⽬录下所有所有的⽂件)
<
grep zhuyz abc* // 查当前路径下前缀为abc的所有⽂件中包含zhuyz字符串的⽂件,并且打印出该⽂件的⾏
grep zhuyz *.txt // 查当前路径下后缀为.txt的所有⽂件中包含zhuyz字符串的⽂件,并且打印出该⽂件的⾏
grep -r zhuyz ./ // 递归查当前⽬录下以及⼦⽬录下的所有⽂件中包含zhuyz字符串的⽂件,并且打印出该⽂件的⾏
grep -v // 查中不包含有zhuyz字符串的⾏内容,并且答应出这些⾏
grep -rn zhuyz * // 递归查当前路径下以及⼦路径下所有⽂件 && 显⽰⾏号
grep '\W' // 正则匹配\W:匹配⾮字母、数字、下划线
⽣产中查看⽇志:
grep -n '2021-02-28 12:00:00' *.log | grep -n 'ERROR' *.log | grep -n 'Exception' *.log
find ./ -type f -name "*.log" | xargs grep "ERROR|Exception" // 匹配到当前⽬录以及⼦⽬录下以.log后缀的⽂件,传递给grep命令执⾏。
2.cut
1.语法
[FILE]...
2.作⽤:对数据进⾏列的提取
3.option
linux循环执行命令脚本-d #指定分割符
-f #指定截取区域
-c #以字符为单位进⾏分割
<
-d和-f
以':'为分隔符,截取出/etc/passwd的第⼀列跟第三列
cut -d ':' -f 1,3 /etc/passwd
以':'为分隔符,截取出/etc/passwd的第⼀列到第三列
cut -d ':' -f 1-3 /etc/passwd
以':'为分隔符,截取出/etc/passwd的第⼆列到最后⼀列
cut -d ':' -f 2- /etc/passwd
-c
截取/etc/passwd⽂件从第⼆个字符到第九个字符
cut -c 2-9 /etc/passwd
3.awk
awk [option] 'script' var=value file(s)
或awk [option] -f scriptfile var=value file(s)
awk '{[pattern] action}' {filenames}
awk -F "分隔符" 'script' {filenames}
awk -v # 设置变量
awk -f {awk脚本} {⽂件名}
awk '条件 {执⾏动作}'⽂件名
awk '条件1 {执⾏动作} 条件2 {执⾏动作} ...' ⽂件名
或awk [选项] '条件1 {执⾏动作} 条件2 {执⾏动作} ...' ⽂件名
2.作⽤:对数据进⾏列的提取
<
printf #格式化输出,不会⾃动换⾏。
(%ns:字符串型,n代表有多少个字符; %ni:整型,n代表输出⼏个数字;%.nf:浮点型,n代表的是⼩数点后有多少个⼩数)
print #打印出内容,默认会⾃动换⾏
\t #制表符
\n #换⾏符
eg:printf '%s\t%s\t%s\t%s\t%s\t%s\n' 1 2 3 4 5 6
eg:df -h |grep /dev/vda1 | awk '{printf "/dev/vda1的使⽤率是:"} {print $5}'
⼩数:echo "scale=2; 0.13 + 0.1" | bc | awk '{printf "%.2f\n", $0}'
$1 #代表第⼀列
$2 #代表第⼆列
$0 #代表⼀整⾏
eg: df -h | grep /dev/vda1 | awk '{print $5}'
-F #指定分割符
eg:cat /etc/passwd | awk -F":" '{print $1}'
BEGIN #在读取所有⾏内容前就开始执⾏,常常被⽤于修改内置变量的值
FS #BEGIN时定义分割符
eg:cat /etc/passwd | awk 'BEGIN {FS=":"} {print $1}'
END #结束的时候执⾏
NR #⾏号
eg:df -h | awk 'NR==2 {print $5}'
awk '(NR>=20 && NR<=30) {print $1}' /etc/passwd
4.sed
sed [选项][动作] ⽂件名
2.对数据⾏进⾏处理(选取,新增,替换,删除,搜索)
3.常见的选项与参数:
-
n #把匹配到的⾏输出打印到屏幕
p #以⾏为单位进⾏查询,通常与-n⼀起使⽤
eg:df -h | sed -n '2p'
d #删除
eg: sed '2d' df.txt // 删除第⼆⾏
eg: sed '2,5d' df.txt // 删除第⼆⾏到第五⾏
eg: sed '2,$d' df.txt // 删除第⼆⾏到最后⼀⾏
a #在⾏的下⾯插⼊新的内容
eg: sed '2a 1234567890' df.txt
i #在⾏的上⾯插⼊新的内容
eg: sed '2i 1234567890' df.txt
eg: sed '2,5i 1234567890' df.txt
c #替换
eg: sed '2c 1234567890' df.txt
eg: sed '2,5c 1234567890' df.txt
s/要被取代的内容/新的字符串/g #指定内容进⾏替换
eg: sed 's/0%/100%/g' df.txt
-i #对源⽂件进⾏修改(⾼危操作,慎⽤,⽤之前需要备份源⽂件)
eg: sed -i '1i aaa' df.txt //把aaa写⼊到df.txt的第⼀⾏
搜索:在⽂件中搜索内容
eg:cat - | sed -n '/100%/p'
-e #表⽰可以执⾏多条动作
eg:cat - | sed -n -e 's/100%/100%-----100%/g' -e '/100%-----100%/p
4.shell命令相关
1.作⽤:字符串的输出
2.可选参数:
-n 不输出跟随在换⾏符后的内容
-e 启⽤反斜杠转义
-E 不启⽤反斜杠转义(默认)
如果-e有效,则识别字符串中出现的以下:
\\ 反斜杠
\n 换⾏
\r carriage return
\t ⽔平制表符
\v 垂直制表符
3.输出:
1.普通字符 echo "Hello zhuyz" // 输出:Hello zhuyz
2.转义字符 echo "\"Hello zhuyz\"" // 输出:"Hello zhuyz"
3.变量 user_name=zhuyz;echo "${user_name}" // 输出:zhuyz
4.换⾏ echo -e "Hello \n zhuyz" # -e 开启转义 // 换⾏输出
5.不换⾏ echo -e "Hello \c zhuyz"
6.使⽤单引号 user_name=zhuyz;echo 'Hello ${user_name}' //原样输出:Hello ${user_name} 2.read
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论