Loading

二、常用命令和相关知识

二、常用命令和相关知识

2.1 基础命令

2.1.1 ls 显示指定工作目录下的内容及属性信息
ls -a  #列出所有文件,包括以 "." 开头的隐含文件。
ls -l  #输出的信息从左到右依次包括文件名、文件类型、权限、硬链接数、所有者名、组名、大小等
ls -al #列出所有文件(包括隐藏)的详细信息
ls -t  #按文件最近修改时间新文件靠前
ls -lS  #以文件大小排序
ls -lh # 列出详细信息并以可读大小显示文件大小(默认为kb)
ls -l --block-size=m  #以m为单位显示,可换k,m,g(不足直接进1计算)
ls -l --full-time    #代表以完整格式年月日时分输出

2.1.2 cd 切换目录
cd    # 进入用户主目录;
cd /  # 进入根目录
cd ~  # 进入用户主目录;
cd ..  # 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
cd ../..  # 返回上两级目录;

2.1.3 cp 复制文件或目录
cp file /usr/men/tmp/file1  #将文件file复制到目录/usr/men/tmp下,并改名为file1
cp -r /usr/men /usr/zh      #将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh中
cp -p  #保留源文件或目录的属性
cp -f  #强行复制文件或目录,不论目标文件或目录是否已存在

2.1.4 mv 移动或改名文件
mv /usr/men/* .   #将目录/usr/men中的所有文件移到当前目录(用.表示)中
mv file_1.txt /home/office/  #将file_1.txt移到/home/office/目录中
mv file_2.txt file_3.txt file_4.txt /home/office/  #移动多个文件
mv -f *.txt /home/office   #无条件覆盖已经存在的文件

2.1.5 rm 移除文件或目录
rm testfile.txt   #删除单个文件
rm testfile.txt testfile2.txt  #删除多个文件
rm -r /root/test  #删除这个在root目录底下的test目录下文件及其子目录所有文件
rm -f /root/test  #强制删除(不询问)

2.1.6 mkdir 创建文件夹
mkdir -m 700 /usr/meng/test   #在目录”/usr/meng”下建立子目录test,并且赋予权限
mkdir -p /test/chen           #在根目录底下如果没有test文件夹会创建,同时二级目录也会创建

2.1.7 touch 创建空文件
touch test.txt  #创建text.txt文件

2.1.8 id 查询用户和组信息
[root@localhost ~]# id yinjay		<=查看yinjay用户及组的相关信息
uid=1000(yinjay) gid=1000(yinjay) groups=1000(yinjay)
[root@localhost ~]# id -u yinjay	<=只查看UID
1000
[root@localhost ~]# id -g yinjay	<=只查看GID
1000
[root@localhost ~]# id -un yinjay	<=只查看用户名
yinjay
[root@localhost ~]# id -gn yinjay   <=只查看组用户名
yinjay

2.1.9 whoami 查看当前登陆的用户
[root@localhost ~]# whoami
root

2.1.10 w 显示已经登录的用户
[root@localhost ~]# w   <=显示已经登录的用户,并且展示他都做了什么的信息。
 15:37:47 up 3 days, 12:06,  3 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.100.1    10:16    3.00s  0.32s  0.32s -bash
root     :0       :0               26Oct22 ?xdm?  26:48   1.18s /usr/libexec/gnome-session-binary --sess
root     pts/3    :0               Sun11    5days  0.02s  0.02s bash

上面第1行的输出依次显示了当前的系统时间、系统从启动到现在已经运行的时间、登录到系统中的用户数和系统平均负载。平均负载是指在1分钟、5分钟、15分钟之内系统的负载状况。


USER:表示登录系统的用户。

TTY:表示用户使用的TTY名称。

FROM:表示用户从哪里登录进来,一般是显示远程登录主机的IP地址或者主机名。

LOGIN@:用户登录的日期和时间。

IDLE:显示终端空闲时间。

JCPU:表示该终端上的所有进程及子进程使用系统的总时间。

PCPU:当前活动进程使用的系统时间。

WHAT:当前用户执行的进程名称和选项。


2.2 文件编辑操作快捷键

2.2.1 光标快速移动快捷方式
  • 快速切换光标到底行:G
  • 快速切换光标到首行:gg
  • 切换光标到指定位置:10gg #切换到第十行
  • 切换光标到单行行首:0 #数字
  • 切换光标到单行行尾:$

2.2.2 移动光标转为编辑状态

在光标所在位置上面插入新行进入编辑状态:o #英文小写

在光标所在位置下面插入新行进入编辑状态:O #英文大写

删除光标所在位置到行尾内容进入编辑状态:C

快速切换光标所在位置到行尾进入编辑状态:A


2.2.3 快速编辑文本内容信息

复制单行内容: yy
复制多行内容: nyy
粘贴一次内容:p
粘贴多次内容:3p
删除一行内容:dd
删除多行内容:3dd


2.2.4 特殊操作编辑文本方式

显示文本内容行号信息:set nu

取消行号显示:set nonu

撤销文本内容编辑操作:u

快速搜索方法:/搜索内容 (继续向下查找 n、继续向上查找 N)

忽略大小写字母的查找:/搜索内容\c


2.3 终端操作快捷键

Ctrl+a 光标回到命令行首

Ctrl+e 光标回到命令行尾

Ctrl+f 光标向右移动一个字符(相当于方向键右键)

Ctrl+b 光标向左移动一个字符(相当于方向键左键)

Ctrl+k 复制剪切(删除)光标处到行尾的字符

Ctrl+u 复制剪切(删除)光标处到行首的字符

Ctrl+y 粘贴Ctrl+u,Ctrl+k,Ctrl+w删除的文本

Ctrl+l 清除屏幕所有内容,并在屏幕最上面开始一个新行


2.4 文件相关命令

2.4.1 cat 在终端设备上显示文件内容
cat  test.log       #显示文件内容
cat -n test.log     #显示文件内容并在所有行开头附加行号

2.4.2 more 显示文本文件内容
more test.txt  #显示文件内容,每次显示一屏
                按 Space 键:显示文本的下一屏内容。
                按 Enter 键:只显示文本的下一行内容。
                按B键:显示上一屏内容。
                按Q键:退出more命令。

more -dc test.txt     #显示文件test.txt的内容,但在显示之前先清屏,并且在屏幕的最下方显示完成的百分比。
more -c -10 test.txt  #显示文件test.txt的内容,每10行显示一次,而且在显示之前先清屏。

2.4.3 head 显示文件开头内容
head text.txt    #显示文件开头内容,默认前10行
head -n 20 test.txt   #显示文件开头内容,前20行

2.4.4 tail 显示文件末尾内容
tail  text.txt         #显示文件末尾内容,默认后10行
tail  -n 20 test.txt   #显示文件末尾内容,后20行

2.4.5 grep 文本搜索工具
grep yinjay /etc/passwd       #将/etc/passwd 中包含yinjay字符所在行内容取出
grep -n yinjay /etc/passwd    #将/etc/passwd中包含yinjay所在行内容取出,并显示行号
grep -v nologin /etc/passwd   #将/etc/passwd中不包含nologin的行取出
grep -r chen /etc/            #在/etc目录下查找包含字符“chen”的文件,并显示所在行内容
grep -r -l chen /etc/         #在/etc目录下查找包含字符“chen”的文件,并只显示匹配的文件
grep ^my /etc/passwd          #显示/etc/passwd文件中以“^my”开头的行
grep -n nologin$ /etc/passwd  #显示以nologin结尾的行,并显示行号

2.4.6 find 查找和搜索文件
//按文件名
find /test -name abc    #查找/test目录下名称为abc的文件
find /test -iname abc   #查找/test目录下abc文件,不区分大小写

//按文件类型
find /root -type d      #查找/root目录下的目录
find /root -type f      #查找/root目录下的文件
find / -type b          #查找根目录下的设备文件
find /root -type l      #查找/root目录下的软链接

//按文件大小
find /data -size +10M   #查找/data目录下超过10M的文件
find /data -size -1G    #查找/data目录下小于1G的文件
find /data -size 98k    #查找/data目录下等于98k的文件

//按文件权限
find /test -perm 777    #查找/test目录下权限为777的所有文件

//按属主及属组查询
find / -user yinjay -type f    #查找属主为yinjay的文件
find / -nouser -type f         #查找无属主的文件
find / -group yinjay -type f   #查找属组为yinjay的文件
find / -nogroup -type f        #查找无属组的文件

2.4.7 tar 打包和备份的归档工具
参数详解:
    -z 压缩
	-c 创建
	-v 输出详细信息
	-f 文件
	-x 解压
	-C 指定解压路径

tar -zcvf test.tar.gz ./test      #打包当前目录下的test目录
tar -zxvf test.tar.gz             #解压到当前目录
tar -zxvf test.tar.gz -C /tmp/    #解压到指定目录
tar -zcvf test.tar.gz ./* --exclude=4.txt --exclude=5.txt  #排除当前目录中的4、5.txt进行打包

2.4.8 chattr 更改文件属性
chattr +a test   #只能向文件中添加数据,而不能删除
chattr -a test   #解锁文件
chattr +i test   #设定文件不能被删除、改名写入或者新增内容
chattr -i test   #解锁文件
chattr -R test   #递归更改目录属性,后面加+a、-a、+i、-i

2.4.9 lsattr 显示文件隐藏属性
lsattr test     #显示文件隐藏属性
lsattr -d test/    #显示文件夹隐藏属性

2.4.10 chmod 设置和更改文件、目录权限

通过chmod改变文件或目录的权限有两种方法,一种是使用数字方法(常用)来设置权限;另一种是通过字母和操作符表达式的方法来设置权限。


chmod命令数字权限

可读r对应的数字为4,可写w对应的数字为2,可执行x对应的数字为1,“-”对应的数字为0。

image-20221106145634606


rw-rw-r-x 代表的数字权限为665
--xr-x-wx 代表的数字权限为153
-wx--x--x 代表的数字权限为311

chmod 665 test.sh
chmod 665 /test
chmod 777 -R /test  #赋予test目录和该目录底下所有目录、文件都为777权限

chmod命令字符权限

u:代表属主用户(owner/user)

g:代表属组(group)

o:代表其他用户(other)

+:添加权限

-:取消权限

=:取消其他所有权限,然后赋予给定的权限。

image-20221106150145874


chmod u-x test.sh  #取消用户权限位的x权限。
chmod g+w test.sh  #用户组权限位增加w权限。
chmod u-x,g+w,o-rwx test.sh   #用户位取消x权限,用户组增加w权限,其他用户取消rwx权限。
chmod ugo=rw test.sh   #所有权限组赋予rw权限。
chmod a=rw test.sh   #所有权限组赋予rw权限。
chmod +x test.sh   #所有权限组增加x权限,这个命令比较常用。

2.4.11 chown 改变文件或目录的用户和用户组
chown 用户文件或目录   #仅授权用户。
chown :用户组 文件或目录   #仅授权用户组,等同于“chgrp组文件或目录”。
chown 用户:用户组 文件或目录   #同时授权用户和用户组。

同样,使用-R参数的话,可以进行递归。

当文件及目录的用户或用户组被删除时,对应的用户和用户组位就会显示为如下的数字形式:

image-20221106161349178


解决办法就是重新创建uid为1003的用户,以及gid为1003的用户组(以下忽略创建组过程)

image-20221106161435249


2.4.12 sort 用于排序

默认是按照字符顺序对比,从左到右一位一位对比。

选项
-n 对数字排序
-r 逆序排序
-k 指定某列 -k1
指定多列 -k1 -k2
-k 1.1 根据第1列的第1个字符进行排序
-t 指定分隔符

示例

1.对数字进行排序

image-20230103150546629


2.对数字逆序(降序)排序

image-20230103150622098


3.对某一列进行排序

image-20230103150729273


4.对/etc目录下面 文件、目录 大小排序 (取前5)

image-20230103150837492


5.对多列进行处理,对第2列或第4列进行排序,并格式化输出

image-20230103151108415


6.先对第2列排序,第2列如果有一样的则对第4列排序 (对2列排序)

image-20230103151433941


7.以 “ . ” 为分隔符按照第3列,然后第4列进行从小到大排序

image-20230103152320167


2.4.13 uniq 去重并显示次数

image-20230103153319294


2.5 通配符和特殊符号的使用

2.5.1 通配符符号集合

image-20221026142231662


2.5.2 与路径和位置有关的特殊符号

image-20221026142702625


2.5.3 不同引号的特殊符号

image-20221026143122515


2.5.4 其他特殊符号

image-20221026143826220


2.5.5 Bash中的逻辑操作符

image-20221026144019035


2.5.6 重定向符号

image-20230103212344529


2.6 正则表达式与三剑客

Linux三剑客的正则表达式可分为两类

基本正则表达式(BRE,basic regular expression):BRE对应的元字符有“^$.[]*”。

扩展正则表达式(ERE,extended regular expression):ERE在BRE的基础上增加了“(){}?+|”等字符。


基本正则表达式常用的特殊字符及功能,如下图:

image-20221026194939084


扩展正则表达式常用的特殊字符及功能,如下图:

image-20221026195128178


2.6.1 grep示例

测试文件如下

image-20221026200938768


”称为尖角号,用法如“m”,表示匹配以m字母开头的行(当然my这个单词也可以)

image-20221026201110762


\(”符号,称为美元符,用法如“m\)”,表示匹配以m字母结尾的行(当然单词也可以)

image-20221026201320444


在正则表达式中,“.”(点号)表示匹配任意一个字符(有且只有一个),但是不包含空行。

image-20221026201543963


显示以“.”(点号)结尾的行,转义符号(\)

image-20221026201708420


“*”号表示匹配前一个字符0次或0次以上,从结果可以看出,grep的确将连续的数字0都找到了,并且显示了它们所在的行。这里的“0*”之所以会将文件所有行都匹配显示出来,是因为“*”表示前一个字符连续出现了0次。0次即什么也没有,实际上每一行也都被匹配了,整个文件内容都显示出来了。

image-20221026202006513


“.”(点号)表示任意一个字符,“*”(星号)表示匹配前一个字符0次或0次以上,所以“.*”放在一起就表示匹配所有字符,包括空行。

image-20221026202200154


中括号表达式,[abc]表示匹配一个“[]”中的任何一个字符,a或b或c。常用的形式具体如下:

  • [a-z]表示匹配所有单个小写字母
  • [A-Z]表示匹配所有单个大写字母
  • [a-zA-Z]表示匹配所有单个大小写字母
  • [0-9]表示匹配所有单个数字
  • [a-zA-Z0-9]表示匹配所有字母和数字

匹配出文件中所有的大写字母

image-20221026202422431


[abc]或[a-c]这种命令中,“^”在中括号的第一位时表示排除,即排除字母a或字母b或字母c,这里在“[]”里面出现的尖角号就表示取反(非),下面匹配除了小写字母以外的符号

image-20221026202600960


匹配文件中的数字0一次或多次

image-20221026202931881


换一个测试文件

image-20221026203026080


“?”(问号)表示匹配前一个字符0次或1次,然后再看看换成“ * ”号看看,匹配前一个字符0次或者0次以上

image-20221026203120218


“ | ”竖线在扩展正则表达式中表示或者,取出包含3306或1521的行

image-20221026203346086


{n,m}匹配次数功能实践

image-20221026203925791


2.6.2 sed示例

sed常用参数如下

image-20221026213257211


sed常用内置命令如下

image-20221026213326541


测试文件如下

image-20221026213604796


输出oldboy.txt第2-3行的内容

image-20221026213632774


过滤出含有oldboy字符串的行

image-20221026215047288


删除含有oldboy字符串的行,这是考察sed命令的删除功能(d字符),默认不会修改文件,如果需要修改文件,则要用-i参数配合。

image-20221030144334095

image-20221030144452360

sed -i “3d” oldboy.txt    #删除第3行
sed -i “5,8d” oldboy.txt  #删除第5~8行

将文件中的oldboy字符串全部替换为oldgirl(默认不会修改文件,如果需要修改文件,则要用-i参数配合)

image-20221030155841787

image-20221030160117513


将文件中的字符串oldboy全部替换为oldgirl,同时将QQ号码49000448改为12345678

image-20221030160745187


在oldboy.txt文件的第2行后追加文本

image-20221030161548848

也可以同时增加多行,不同的行之间使用“\n”间隔开,例如:sed'2a I teacher linux.\nand you?'oldboy.txt。


在oldboy.txt文件的第2行插入文本

image-20221030162001561


在oldboy.txt文件的第2行插入两行文本

image-20221101092919146


2.6.3 awk示例

awk不仅仅是Linux系统中的一个命令,而且其还是一种编程语言,可以用来处理数据和生成报告(excel)。处理的数据可以是一个或多个文件,它是Linux系统最强大的文本处理工具。

image-20221101093537218

image-20221101093630715

image-20221101093708811


首先准备好测试文件,取passwd文件的前5行,示例代码如下:

image-20221101094854236


取123123.txt文件的第2行到第3行的内容

image-20221101094936325


如果是只取某一行,就使用awk “NR==2” 123123.txt这样的写法。

image-20221101095518562


过滤出含有root字符串的行,这个功能与sed的过滤功能类似,需要将要过滤的内容用两个斜线包含起来。

image-20221101095726959


取文件的第一列、第三列和最后一列的内容,并打印行号。“:”表示以冒号为分隔符,print是打印,$1是取分隔符后的第一列,NF是取最后一列,NR表示行号。

image-20221101100147918


利用多管道获取IP(CentOS7),NR==2表示输出第二行,默认以空格作为分隔符,$2表示取第二列。CentOS7下取IP变得简单了。

image-20221101100914470


过滤下列test1.txt文件中第三列内容分数大于70,并且小于95的人名和性别。

image-20221101101518584


posted @ 2023-07-17 21:06  YinJayChen  阅读(41)  评论(0编辑  收藏  举报