Linux笔记

BASH特性

bash 复制代码
# history命令
-c 清楚历史记录
-r 恢复历史记录

# 调用历史记录命令
# !加历史id,快速执行历史命令
!362 

# !! 执行上次的命令,以及上下左右寻找
!!

shell变量

bash 复制代码
root@lisheng-VMware20-1:~# echo $music 
大碗宽面
root@lisheng-VMware20-1:~# echo ${music}
大碗宽面

单引号变量不识别特殊语法

双引号变量能识别特殊语法

bash 复制代码
lisheng@lisheng-VMware20-1:~$ name='${me}'
lisheng@lisheng-VMware20-1:~$ echo $name
${name}
lisheng@lisheng-VMware20-1:~$ name2="${name}"
lisheng@lisheng-VMware20-1:~$ echo $name2
me

特殊变量学习

参数传递

bash 复制代码
位置参数的获取
$0 获取文件名
$1 获取第一个参数
$2 ....
bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ cat >touch_a.txt<< EOF
> 1
> 2
> 3
> EOF
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ cat touch_a.txt 
1
2
3
# 以前的数据会被清空

grep

bash 复制代码
# -n现实行号
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ grep -n hello touch_a.txt 
1:hello

# -v显示不包含lisi的
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ grep -v "lisi" touch_a.txt 
hello
world
wangwu text

# -i不区分大小写
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ grep Lisi touch_a.txt 
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ grep -i Lisi touch_a.txt 
lisi text

# -E支持正则表达式
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ grep -E "lisi||hello" touch_a.txt 
hello
world
lisi text
wangwu text

# -c显示匹配数量
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ grep -c "lisi" touch_a.txt 
1

sed:流编辑器

测试文件内容

bash 复制代码
I am zhangsan
I like badminton ball, billiard ball and chinese
chess my site is http://www.zhangsan.com
my telphone is 123456

输出第2-3行的内容

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ sed -n '2,3p' touch_a.txt 
I like badminton ball, billiard ball and chinese chess
my site is http://www.zhangsan.com

过滤出含有zhangsan字符串的行

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ sed -n '/zhangsan/p' touch_a.txt 
I am zhangsan
my site is http://www.zhangsan.com

删除含有zhangsan字符串的行,默认不会修改文件

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ sed '/zhangsan/d' touch_a.txt 
I like badminton ball, billiard ball and chinese chess
my telphone is 123456

删除指定的行

bash 复制代码
sed -i '3d' touch_a.txt
sed -i '5,8d' touch_a.txt

将文件中的zhangsan字符串全部替换为lisi,默认不会修改文件

bash 复制代码
sed 's#zhangsan#lisi#g' touch_a.txt

将文件中的zhangsan字符串全部替换为lisi,同时将telephone号码123456改为654321

bash 复制代码
sed -e 's#zhangsan#lisi#g' -e 's#123456#654321#g' touch_a.txt

在touch_a.txt文件的第二行后追加文本

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ sed '2a hello' touch_a.txt 
I am zhangsan
I like badminton ball, billiard ball and chinese chess
hello
my site is http://www.zhangsan.com
my telphone is 123456

在touch_a.txt文件的第二行插入文本

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ sed '2i test' touch_a.txt 
I am zhangsan
test
I like badminton ball, billiard ball and chinese chess
my site is http://www.zhangsan.com
my telphone is 123456

awk

准备测试文件

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ cat awk_text.txt 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
1p:x:4:7:1p:/var/spool/1pd:/sbin/nologin

取文件第二行到第三行的内容

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ awk 'NR>1&&NR<5' awk_text.txt 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

过滤出含有root字符串的行

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ awk '/root/' awk_text.txt 
root:x:0:0:root:/root:/bin/bash

过滤出以非r开头的行

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ awk '/[^r]/' awk_text.txt 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
1p:x:4:7:1p:/var/spool/1pd:/sbin/nologin

取文件的第一列、第三列和最后一列的内容,并打印引号

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ awk -F ":" '{print NR,$1,$3,$NF}' awk_text.txt 
1 root 0 /bin/bash
2 bin 1 /sbin/nologin
3 daemon 2 /sbin/nologin
4 adm 3 /sbin/nologin
5 1p 4 /sbin/nologin

处理以下文件内容,将域名取出并根据域名进行计数排序处理

bash 复制代码
http://www.etiantian.org/index.html
http://www.etiantian.org/1.html
http://post.etiantian.org/index.html
http://mp3.etiantian.org/index.html
http://www.etiantian.org/3.html
http://post.etiantian.org/2.html
bash 复制代码
# 取出每行中的域名:
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ awk -F '/' '{print $3}' awk_text.txt 
www.etiantian.org
www.etiantian.org
post.etiantian.org
mp3.etiantian.org
www.etiantian.org
post.etiantian.org

# 排序
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ awk -F '/' '{print $3}' awk_text.txt|sort 
mp3.etiantian.org
post.etiantian.org
post.etiantian.org
www.etiantian.org
www.etiantian.org
www.etiantian.org

# 去重计数
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ awk -F '/' '{print $3}' awk_text.txt|sort|uniq -c
      1 mp3.etiantian.org
      2 post.etiantian.org
      3 www.etiantian.org
相关推荐
天水幼麟4 小时前
动手学深度学习-学习笔记(总)
笔记·深度学习·学习
2401_826097625 小时前
JavaEE-Linux环境部署
java·linux·java-ee
涛哥码咖6 小时前
chrome安装AXURE插件后无效
前端·chrome·axure
天水幼麟6 小时前
动手学深度学习-学习笔记【二】(基础知识)
笔记·深度学习·学习
绿皮的猪猪侠6 小时前
算法笔记上机训练实战指南刷题
笔记·算法·pta·上机·浙大
(:满天星:)6 小时前
第31篇:块设备与字符设备管理深度解析(基于OpenEuler 24.03)
linux·运维·服务器·网络·centos
沧海一笑-dj6 小时前
【51单片机】51单片机学习笔记-课程简介
笔记·学习·51单片机·江科大·江科大学习笔记·江科大单片机·江科大51单片机
爱莉希雅&&&7 小时前
shell编程之awk命令详解
linux·服务器·git
笑稀了的野生俊7 小时前
在服务器中下载 HuggingFace 模型:终极指南
linux·服务器·python·bash·gpu算力
老虎06277 小时前
JavaWeb(苍穹外卖)--学习笔记04(前端:HTML,CSS,JavaScript)
前端·javascript·css·笔记·学习·html