Linux笔记及正则表达式

一、Linux命令的分类
1.文件
<1>基础知识
ls——列出当前目录下的文件及文件夹
image
cd 目录名——切换目录
image
pwd ——显示目前的目录路径
image
mkdir 文件名:——创建目录
image
cp——复制
cp 文件名 路径——将文件复制到路径下的文件夹
image
cp -r 目录名 路径——将文件夹复制到路径下的文件夹
image
rm——移除文件或目录
rm 文件名——删除文件
image
rmdir 目录——移除目录
image
rm -rf 文件名/目录——移除文件/目录及目录下的所有文件且不可恢复
image
mv 文件/文件名——移动或重命名
mv 源文件 目标文件——重命名
image
mv 源文件 目标目录——移动
image
vim test.sh : 新建test.sh文件
按下键盘i : 进入插入模式,可输入
#!/bin/bash :输入bash类型的shell
echo "hello!":输入hello!
按下ESC:退出编辑模式
:wq : 保存
cat test.sh :看一下test.sh里的内容
clear :清屏
cd ~ : 回到home目录

cd … :返回到上层目录
mv test.txt ~/tmp : 将test.txt文件移动到~/tmp目录
rmdir tmp :删除空文件夹

<2>实战
①文件移动:
* 在home/username下创建test目录
* 将一个文件移入test目录下
* 删除test目录
步骤:
step1切换到根目录下:cd ~
image
step2显示根目录下所有文件及文件夹:ls
image
step3创建username文件夹:mkdir username
step4展示根目录下所有文件及文件夹
image
step5切换到username文件夹下:cd username
image
step6显示username下的文件及文件夹:ls
step7创建test目录mkdir test
step8显示username下的文件及文件夹
image
step9移动文件:mv test.txt ~/username/test
image
step10删除文件:rm -rf test.txt
image
step11.删除文件夹test:rmdir test
image
<3>文件属性
基础知识:
image
d——代表目录
r——可读 4
w——可写 2
x——可执行 1
chmod 777 test——将test的文件属性修改为拥有者、所属组、其它人的权限都是可读可写可执行
ls -l——查看所有文件属性
ls -ld——查看指定文件属性
<4>实战:查看和修改文件属性

  • ls -l——查看所有文件属性

image
其中,test.txt的所有者权限是可读可写,所属组权限是可读可写,其他人权限是可读
ls -ls—— -s是查看每个文件的block数
image
total是列出所有文件的总块(block)数

  • chmod 777 test.txt——修改test.txt的所有者、所属组】其他人权限均为可读可写可执行
    image

  • ls -ld test.txt——查看指定文件的属性
    image
    chmod 477 test.txt
    ls -ld test.txt
    image
    网络
    ping : 测试网络连接情况
    Linux下的ping命令不会自动终止,需要按ctrl C才可以终止
    语法:ping
    -c : ping的次数
    -l : ping的时间间隔
    netstat : 打印Linux网络系统的状态信息
    -t :列出所有tcp
    -u :列出所有udp
    -l :只显示监听端口
    -n :以数字形式显示地址和端口
    -p :显示进程的pid和名字
    性能

shell是与操作系统进行交互的
运行shell
Step1.使脚本具有执行test.sh文件的权限
chmod +x ./test.sh
Step2. 执行脚本
方法一:
./test.sh
方法二:
/bin/sh test.sh 指定了用哪种shell来执行
/bin/bash test.sh

常用命令:

网络命令

性能
top:持续监控系统性能
退出top命令:Ctrl +C
ps:查看进程信息
-aux:显示所有进程,包括用户,分组情况

管道
Linux提供管道符“|”将两个命令隔开,管道符左边命令的输出,会作为管道符右边命令的输入

正则表达式
正则表达式就是记录文本规则的代码
Eg1:
找出所有的hi单词(单纯的hi,没有其它字符):\bhi\b
image
image
image
image
image
Eg2:
找到hi单词后面有lucy单词
\bhi\b.*\blucy\b
.*代表任意字符
image
image
Eg3:
找到以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字
\d:代表一个任意数字
\d{2}:代表任意两个数字
image

正则表达式语法
常用的元字符:
. :匹配除换行符以外的任意单个字符,除了换行符
\d:匹配任意一个数字
\b:匹配单词的开始或结束
\w:匹配字母或数字或下划线或汉字
\s:匹配任意的空白符
^:匹配字符串的开始
$:匹配字符串的结束
常用的限定符:
*:匹配前面的子表达式0次或多次(.*代表匹配0个或多个任意字符,除了换行符)
+:匹配一次或更多次
?:匹配0次或一次
{n}:重复n次
{n,}重复n次或更多次
{n,m}重复n到m次
Eg1:
匹配以字母a开头的单词
image

Eg2:
匹配刚好6个字符的单词
image
Eg3:
匹配1个或更多的连续数字
image
Eg4:
5到12位QQ号:
image
image
image

grep
根据用户指定的模式(pattern),对目标文本进行过滤,显示被模式匹配到的行

命令形式
grep[options]pattern[file]

选项
-v显示不被pattern匹配到的行
-i 忽略字符大小写
-n显示匹配的行号
-c统计匹配的行数
-o仅显示匹配到的字符串
-E使用ERE,相当于egrep

实战1
查找文件内容包含root的行数
grep -n root test.txt
image
查找文件内容不包含root的行数
grep -nv root test.txt
image

实战2
查找以s开头的行
grep -n ^s test.txt
image
查找以n结尾的行
grep -n n$ test.txt
image

sed
sed是流编辑器,一次处理一行内容
模式空间

命令形式
sed [-hnv][-e][-fscript文件][文本文件]
[-e]:以选项中指定的script来处理输入的文本文件,-e指定脚本
[-fscript文件]:以选项中指定的script文件来处理输入的文本文件 -f指定脚本文件
-i 直接修改文件内容

常用动作
a:新增 sed -e ‘4 a newline’ 在第四行后面新增一行
c:取代 sed -e ‘2,5c No 2-5 number’ 用c后面的内容取代2行到5行的内容??? :face_with_monocle:
d:删除 sed -e ‘2,5d’ 删除2到5行
i:插入 sed -e ‘2i newline’ 在第2行前面插入新行
p:打印 sed -n ‘/root/p’ 打印匹配root的内容,/正则表达式/
s:取代 sed -e ‘s/old/new/g’ 用new替代old ,/g代表全局,替换全局的,如果不加/g就只替换第一个

实战1
查看帮助
man sed
按g键向下翻页,K向上翻页,按↑↓键翻页,按/查找,按n查找下一个,按N查找上一个
退出man sed 按q键
sed -h

在第四行后添加新字符串
sed '4 a new line' test.txt
image
test.txt文件并没有被修改,
因为是流处理,因为是把一行读入模式空间,对模式空间进行处理

实战2
在第二行后加上newline
sed ‘2 a newline’ test.txt
在第二行前加上newline
sed ‘2 i newline’ test.txt
image

实战3
全局替换
sed ‘s /root/hello/g’ test.txt
image
只修改第一个
image
加上g
image
直接修改文件内容
sed -i ‘s/root/hello/g’ test.txt
image

awk
把文件逐行地读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理

命令形式
awk ‘pattern+action’ [filenames]
pattern 正则表达式
auction 对匹配到的内容执行的命令(默认为输出每行内容)

常用参数
image
image

实战1
image
image

awk -F : ‘{print $2}’ /etc/passwd 以冒号为分隔符,打印第2列,文件为/etc/passwd
image

image

实战2
使用begin加入标题
image
自定义分隔符
image

7 Likes

格式有点乱,能格式化一下就完美啦

先看视频临时记录,后续调格式,谢谢提醒~ :smiling_face_with_three_hearts: :smiling_face_with_three_hearts:

cd …是返回上一级目录,cd - 是返回刚刚的目录

关闭