Linux系统认知——常用命令(全)
创始人
2024-05-25 22:48:36
0

文章目录

  • 一、帮助命令
    • 1.man(查看帮助手册)
    • 2.info(阅读 info 格式的文档)
    • 3.whatis(查询命令功能)
  • 二、文件及目录相关命令
    • 1.touch(创建新的空文件,改变已有文件的时间戳)
    • 2.mkdir(创建目录)
    • 3. rm(删除文件或目录)
    • 4.rmdir(删除空目录)
    • 5.rm(移动文件,重命名文件)
    • 6.cp(复制文件或目录)
    • 7.cd(切换目录)
    • 8.pwd(显示当前目录)
    • 9.ls(显示目录信息)
    • 10.tree(以树状图列出目录内容)
    • 11.stat(显示文件或文件系统详细信息)
    • 12.rename(批量改变文件名)
    • 13.basename(提取文件路径的文件名)
    • 14.dirname(提取文件名中的路径部分)
    • 15.chattr(改变文件属性)
    • 16.lsattr(查看文件的第二扩展文件系统属性)
    • 17.file(识别文件类型)
    • 18.md5sum(生成和校验文件md5值)
    • 19.find(搜索指定文件)
    • 20.which(查找命令文件所在位置)
    • 21.whereis(查找命令的相关信息)
    • 22.locate(快速查找文件或目录)
    • 23.chown(改变文件或目录的用户和用户组)
    • 24.chmod(改变文件或目录权限)
    • 25.chgrp(更改文件用户组)
  • 三、文本处理相关命令
    • 1.grep(文本搜索)
    • 2.egrep(查找指定字符串)
    • 3.cat(显示文件内容)
    • 4.more(分页显示文本文件内容)
    • 5.less(分页显示文本内容)
    • 6.head(显示文件开头的内容)
    • 7.tail(查看文件尾部内容)
    • 8.tac(反向显示文件内容)
    • 9.nl(添加行号)
    • 10.wc(统计文本信息)
    • 11.split(文件切割)
    • 12.cut(提取文本的一部分)
    • 13.paste(合并两个或多个文件)
    • 14.sort(对文本内容进行排序)
    • 15.uniq(去除文件中的重复行)
    • 16.diff(比较文件的差异)、patch(根据差异打补丁)
    • 17.join(拼接两个文件)
    • 18.tr(转换或删除文件中的字符)
    • 19.awk(文本和数据进行处理的编程语言)
    • 20.sed(批量编辑文本文件)
  • 四、磁盘与文件系统相关命令
    • 1.du(查看磁盘使用空间)
    • 2.df(显示磁盘空间使用情况)
    • 3.sync(强制将更改的内容立刻写入磁盘)
    • 4.mount(把文件系统挂载到目录)
    • 5.umount(卸载文件系统)
    • 6.dd(拷贝及转换文件)
    • 7.tar(打包/解压工具)
    • 8.zip/unzip(压缩/解压文件)
    • 9.gzip/gunzip(压缩/解压文件,对文本压缩比率较高)
  • 五、系统管理与性能监控相关命令
    • 1.uname(显示系统信息)
    • 2.hostname(显示和设置系统的主机名)
    • 2.dmesg(显示开机信息)
    • 3.uptime(查看系统启动时间及负载信息)
    • 4.free(显示系统内存使用量情况)
    • 5.ulimit(控制shell程序的资源)
    • 6.init(切换系统运行级别)
    • 7.service(控制系统服务)
    • 7.vmstat(显示虚拟内存状态)
    • 8.iostat(监视系统输入输出设备和CPU)
    • 9.ipcs(显示进程间通讯设备信息)
    • 10.sar(系统运行状态统计)
    • 11.ipcrm(删除一个或更多的消息队列、信号量集或者共享 内存标识)
  • 六、网络工具相关命令
    • 1.route(显示并设置路由)
    • 2.ping(测试主机间网络连通性)
    • 3.traceroute(追踪数据包在网络上的传输时的全部路径)
    • 4.ifconfig(显示或设置网络设备)
    • 5.ifup/ifdown(激活/禁用网络接口)
    • 6.netstat(显示网络状态)
    • 7.ss(显示活动套接字)
    • 8.telnet(远程进入服务器)
    • 9.ssh(远程连接工具)
    • 10.ftp(文件传输协议客户端)
    • 11.sftp(交互式的文件传输程序)
    • 12.lftp(文件客户端程序)
    • 13.wget(文件下载)
    • 14.scp(远程拷备文件)
    • 15.curl(文本传输工具)
    • 16.host(域名查询)
    • 17.tcpdump(监听网络流量)
    • 18.nc(设置路由器)
  • 七、用户管理相关命令
    • 1.useradd(创建并设置用户信息)
    • 2.adduser(创建用户账户)
    • 3.passwd(修改用户的密码)
    • 4.userdel(删除用户账户)
    • 5.su(切换用户身份)
    • 6.sudo(以系统管理员的身份执行指令)
    • 7.id(显示用户ID和组ID)
    • 8.usermod(修改用户账号信息)
    • 9.groups(显示一个用户所加入的所有用户组)
    • 10.groupadd(创建新的用户组)
    • 11.groupdel(删除用户组)
    • 12.whoami(打印当前登录用户)
    • 13.who(查看当前登录用户信息)
    • 14.w(显示已登录用户)
    • 15.last(显示用户或终端的登录情况)
    • 16.users(显示当前登录的用户)
  • 八、进程管理相关命令
    • 1.top(实时显示进程动态)
    • 2.ps(显示进程状态)
    • 3.pstree(以树状图显示进程)
    • 4.pgrep(检索当前正在运行的进程)
    • 5.pmap(显示进程的内存映像)
    • 6.lsof(查看进程打开的文件)
    • 7.jobs/bg/fg(终端任务调度)
    • 8.kill(发送信号到进程)
    • 9.killall(使用进程名称来杀死进程)
    • 10.nice/renice(调整进程的优先级)
    • 11.nohup(后台运行程序)
  • 九、包管理器
    • 1.apt(包管理工具)
    • 2.apt-get(包管理工具)
  • 十、环境变量相关
    • 1.export(设置环境变量)
    • 2.source(在当前Shell环境中从指定文件读取和执行命令)
    • 3.set/unset(设置/删除shell变量)
  • 十一、终端操作
    • 1.echo(在终端输出字符串)
    • 2.printf(格式化并输出结果)
    • 3.clear(清除屏幕)
    • 4.history(显示与管理历史命令记录)
    • 5.login/logout(登入/登出系统)
    • 6.exit(退出终端/ssh连接)
  • 十二、命令相关
    • 1.xargs(过滤器)
    • 2.exec(调用并执行指定的命令)
    • 3.alias/unalias(设置/取消命令别名)
    • 4.type(显示指定命令的类型)
  • 十三、时间相关
    • 1.date(显示或设定系统日期和时间)
    • 2.cal(显示日历)
    • 3.crontab(定时执行任务)
    • 4.at/atq/atrm(时间执行一个任务)
    • 5.time(显示命令执行时所消耗的时间)
    • 6.watch(周期性执行命令)
  • 十四、小工具
    • 1.bc(数字计算器)
    • 2.ln(为文件创建快捷方式)
    • 3.shutdown/halt/poweroff/reboot(关闭/重启服务器)

一、帮助命令

1.man(查看帮助手册)

可通过键入

man man

查看man命令介绍
(1)作用:查看帮助手册
(2)语法:man+(选项)+参数
(3)章节:
在这里插入图片描述
1.用户命令手册
2.系统调用手册
3.库调用手册
4.设备文件手册
5.配置文件或者某些文件的格式
6.游戏
7.惯例和协议等杂项
8.系统管理工具
9.内核例程

(4)常用选项:

-f:显示给定关键字的简短描述信息
-k:根据关键字搜索帮助手册
-w:显示手册文件所在位置

(5)示例:

  • 查看cp命令的帮助手册
man cp

在这里插入图片描述

  • 查看sleep命令的简要信息
man -f sleep 

在这里插入图片描述

  • 查看第3个章节的sleep信息
man 3 sleep

在这里插入图片描述

  • 查看passwd文件的详细介绍
man 5 passwd

在这里插入图片描述

  • 查看ls命令帮助手册文件所在位置
man -w ls

在这里插入图片描述

  • 搜索与disk相关的帮助手册
man -k disk

在这里插入图片描述

2.info(阅读 info 格式的文档)

(1)作用:info命令是Linux下info格式的帮助指令。阅读 info 格式的文档。
(2)语法:info [选项] 参数
(3)常用选项:

-w:显示info文档的物理位置
-f:指定要访问的info文件
-n:在首个浏览过info文件中指定节点

(4)常用操作

N键:显示(相对于本节点的)下一节点的文档内容。
P键:显示(相对于本节点的)上一节点的文档内容。
I键:返回上一个访问节点的页面内容
B/E:一个节点内容的开始/结束。
H:打开info教程。
D:回到info初始节点。
回车:跳转到连接文本。
SPACE键:向前滚动一页。
BACKUP或DEL键:向后滚动一页。
Q:退出info。

(5)示例:

  • 查看pwd命令的帮助文档
 info pwd

在这里插入图片描述

  • 显示pwd命令info文档的物理位置
info -w pwd

在这里插入图片描述

3.whatis(查询命令功能)

(1)作用:查询一个命令执行什么功能,并将查询结果打印到终端上(等同于man -f)
(2)语法:whatis 命令
(3)示例:

  • 查询sleep命令功能 :
whatis sleep

在这里插入图片描述

二、文件及目录相关命令

1.touch(创建新的空文件,改变已有文件的时间戳)

(1)作用:

  • 改变已有文件的时间戳属性(注:在修改文件的时间属性的时候,用户必须是文件的属主,或拥有写文件的访问权限
  • 创建新的空文件

(2)语法:touch [选项] FILE
(3)选项:

- a	改变档案的读取时间记录。
-c	假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
-d	设定时间与日期,可以使用各种不同的格式。
-f	不使用,是为了与其他 unix 系统的相容性而保留。
-h	影响每个符号链接,而不是任何引用的文件(仅在可以更改符号链接时间戳的系统上有用)
-m	改变档案的修改时间记录。
-r	使用参考档的时间记录,与 ![在这里插入图片描述](https://img-blog.csdnimg.cn/265643a6537f41bdab17e116a651bb56.png)

–file 的效果一样。
-t 设定档案的时间记录,格式与 date 指令相同。
–help 列出指令格式。
–version 列出版本讯息

(4)示例:

  • 创建一个新文件 (并通过stat 命令查看创建文件的信息)
touch file.txt

在这里插入图片描述

  • 修改已有文件的时间戳为当前系统时间(包括修改时间及访问时间)
    在这里插入图片描述
    与之前创建完相比较,时间更新

  • 修改文件的access时间

touch -a file.txt

在这里插入图片描述

  • 修改文件的Modify时间:
touch -m file.txt

在这里插入图片描述

  • 强制避免创建新文件
touch -c nofile.txt
touch --no-creat nofile.txt

在这里插入图片描述
在这里插入图片描述

  • 将访问时间和修改时间从一个文件复制到另一个文件
touch file.txt -r ref_file.txt

在这里插入图片描述 在这里插入图片描述

  • 修改文件时间为明天:
touch -d "tomorrow" file.txt

在这里插入图片描述

  • 修改文件时间为任意时间:

改为2022年5月20日13点14分00秒:

touch -t 2205201314.00 file.txt

在这里插入图片描述

2.mkdir(创建目录)

(1)作用:创建目录
注意:默认状态下,如果要创建的目录已经存在,则提示已存在,而不会继续创建目录,新建的目录与它所在目录下的文件有重名也不行
(2)语法 :mkdir [选项] DIRECTORY
(3)选项:

-p:递归创建多级目录
-m:建立目录的同时设置目录的权限
-v :显示目录的创建过程

(4)示例:

  • 在当前目录下创建一个名为dir1的子目录
mkdir dir1

在这里插入图片描述

  • 创建多个目录:
mkdir dir2 dir3 dir4
mkdir dir{5..7}

在这里插入图片描述

  • 递归创建目录
mkdir -p dir7/dir8/di9

在这里插入图片描述

  • 在dir1目录下建立子目录dir10,并设置文件权限为700
mkdir -m 700 dir1/dir10

默认创建的目录权限为775
在这里插入图片描述
更改目录权限为700
在这里插入图片描述

  • 显示目录的创建过程
mkdir -v dir{11..16}

显示创建dir11到dir16的过程:
在这里插入图片描述

3. rm(删除文件或目录)

(1)作用:删除文件或目录
(2)语法:rm [选择] [file]
(3)选项:

-f:忽略不存在的文件,不会出现警告信息
-i:删除前会询问用户是否操作
-r/R:递归删除
-v:显示指令的详细执行过程

(4)示例

  • 删除一个文件:
rm file.txt
  • 删除一个目录
    因为目录下可能有其他文件或者目录,因此需要递归删除
rm -r dir

在这里插入图片描述

  • 强制删除文件/目录(不再提示)
rm -f dir

在这里插入图片描述
说明:一般与-r配合使用,可以不用考虑删除的是文件还是目录

在这里插入图片描述
在这里插入图片描述

  • 删除前逐一询问确认
rm -i file1.txt file2.txt

在这里插入图片描述

4.rmdir(删除空目录)

(1)作用:删除空目录
(2)语法:rmdir [选项] DIRECTORY
(3)选项:

	-p:用递归的方式删除指定目录路径中所有的父级目录,非空则报错-v:显示命令的详细执行过程

(4)示例:

  • 删除空目录
rmdir dir

在这里插入图片描述

  • 递归删除多重目录
rmdir -p dir1/dir2/dir3

在这里插入图片描述
在这里插入图片描述

  • 显示指令详细执行过程
rmdir -v dir

在这里插入图片描述

5.rm(移动文件,重命名文件)

(1)作用:
①移动文件
②重命名文件

(2)语法:
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…

(3)选项

-i:若存在同名文件,则向用户询问是否覆盖
-f:覆盖已有文件时,不进行任何提示
-b:当文件存在时,覆盖前为其创建一个备份
-u:当源文件比目标文件新,或者目标文件不存在时,才执行移动操作

(4)示例

  • 将文件file.txt移动到目录dir中
mv file.txt ./dir

在这里插入图片描述

  • 将file.txt 重名为 newfile.txt
mv file.txt newfile.txt

在这里插入图片描述

  • 将目录dir1移动到目录dir2中(前提是目录dir2已经存在,若不存在则改名)
mv dir1 dir2

在这里插入图片描述

  • 将文件file1.txt改名为file2.txt,如果file2.txt已经存在,则询问是否覆盖
mv -i file1.txt file2.txt

在这里插入图片描述

  • 文件覆盖前做备份
mv -b file1.txt file2.txt 

在这里插入图片描述
箭头所指为之前的file2文件的备份

  • 源文件比目标文件新时执行更新
    在这里插入图片描述
    将一个旧的文件覆盖一个新的文件时执行以下操作:
mv -u newfile.txt ./dir

在这里插入图片描述
发现无法将newfile.txt移动到./dir下并且覆盖./dir下已经存在的newfile.txt
只有更新/mv目录下的时间戳才可以移动:
在这里插入图片描述

6.cp(复制文件或目录)

(1)作用:复制文件或目录
(2)语法:
cp [OPTION]… [-T] SOURCE DEST
cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…

(3)选项:

-f:若目标文件已经存在,则会直接覆盖
-i:若目标文件已经存在,则会询问是否覆盖
-a:通常在复制目录时使用,它保留连接,文件属性,并复制目录下所有内容
-r:递归复制文件和目录
-b:覆盖已经存在的文件或目录前将目标文件备份
-v:详细显示cp命令执行过程

(4)示例:

  • 复制文件
cp file1.txt file2.txt

在这里插入图片描述

  • 复制目录
cp -r dir1 dir2

在这里插入图片描述

  • 复制文件,若目标文件已经存在,则询问是否覆盖
cp -i file1.txt file2.txt

在这里插入图片描述

  • 复制文件,若目标文件已经存在则先进行备份
cp -b file1.txt file2.txt

在这里插入图片描述

  • 复制目录,并且保留源目录所以属性都一致:
cp -a dir1 dir2

在这里插入图片描述
在这里插入图片描述

7.cd(切换目录)

(1)作用:切换目录
(2)语法:cd [参数] 目录
(3)几个特殊目录

~:用户家目录
.:当前目录
..:当前目录的上一级目录
/:根目录
-:上一次所在目录

(4)相对路径与绝对路径

绝对路径:起始路径为/称为绝对路径
相对路径:起始地址不为/的称为相对路径

(5)示例

  • 切换到dir目录
cd dir
  • 切换到上两级目录
cd ../..
  • 切换到家目录
cd
cd ~
  • 切换到上一次所在目录
cd -

8.pwd(显示当前目录)

(1)作用:显示当前目录
(2)语法:pwd
(3)示例

pwd

9.ls(显示目录信息)

(1)作用:显示目录信息
(2)语法: ls [OPTION]… [FILE]…
(3)选项:

-a:显示所以文件及目录(包括一“.”开头的隐藏文件)
-l:使用长格式列出文件及目录信息
-r:将文件以相反次序显示(默认以英文字母次序)
-t:根据最后的修改时间排序
-h:以人类可读的格式显示数字大小
-A:同-a,但不列出.(当前目录)以及..(父目录)
-S:根据文件大小排序
-R:递归列出所以目录
-F:在列出的文件名称后加一符号;例如,可执行文件加“*”,目录加“/”

(4)示例

  • 列出当前目录所有文件(包含隐藏文件)
ls -a

在这里插入图片描述

  • 列出当前目录文件的详细信息
ls -l

在这里插入图片描述

  • 列出当前目录下所有文件和目录的详细信息(包括子目录内容)
ls -lR

在这里插入图片描述

  • 列出当前目录下所有以f开头的文件详细信息:
ls -l *f

在这里插入图片描述

  • 列出当前目录下所有文件,并根据修改时间倒序排序:
ls -ltr

在这里插入图片描述

  • 列出当前工作目录下所有文件及目录;目录在名称后加/,可执行文件在名称后加*
ls -AF

-A 不显示.(当前目录)以及..(父目录)
在这里插入图片描述

  • 列出当前目录详细信息并以可读大小显示文件大小
ls -lh

在这里插入图片描述

10.tree(以树状图列出目录内容)

(1)作用:以树状图列出目录内容
(2)语法:tree[选项]
(3)选项:

	-a:显示所有文件和目录-L:层级显示-t:用文件和目录的更改时间排序-r:用文件和目录的更改时间倒序排序-f:在每个文件或目录之前,显示完整的相对路径名称-d:显示目录名称而非内容

(4)示例:

  • 显示当前目录下的文件和目录
tree

在这里插入图片描述

  • 显示所有文件和目录(包括隐藏文件)
tree -a

在这里插入图片描述

  • 只显示目录
tree -d

在这里插入图片描述

  • 只显示n层目录
tree -L 1

在这里插入图片描述

  • 显示权限信息
tree -p

在这里插入图片描述

  • 用文件和目录的更改时间排序
tree -t

在这里插入图片描述

  • 以相反次序排序
tree -r

在这里插入图片描述

  • 显示完整的相对路径
tree -f

在这里插入图片描述

11.stat(显示文件或文件系统详细信息)

(1)作用显示文件或文件系统详细信息
(2)语法:stat [OPTION]… FILE…
(3)选项:

	-L:支持符号链接-f:显示文件系统的信息-t:以简洁的方式输出

(4)三种时间:

	Access time:访问时间 (当文件被读取,被修改是改变)Modify time:修改时间(修改文件时改变)Change time:状态改变时间(修改文件,文件属性变换时改变)

(5)示例:

  • 查看文件信息:
stat file1.txt

在这里插入图片描述

  • 查看文件所在文件系统信息
stat -f file1.txt

在这里插入图片描述

  • 以简洁方式输出信息
stat -t file1.txt

在这里插入图片描述

12.rename(批量改变文件名)

(1)作用:用字符串替代的方式批量改变文件名
(2)语法: rename ‘s/old-name/new-name/’ files

	old-name:原字符串,原文件需要替换的字符串new-name:目标字符串,将要替换的目标字符串files:指定要改变文件名的文件列表

(3)选项

-n:模拟运行,实际没有进行重命名
-v:输出每步执行信息
-f:强制改写 

(4)通配符

?:可替代单个字符
*:可替代多个字符

(5)示例

  • 将myfile.txt改为 myfile.doc:
rename 's/.txt/.doc/' myfile.txt

在这里插入图片描述

  • 模拟将file1.txt 到file5.txt 改为file01.txt,file05.txt
rename  -n 's/file/file0/' file*

在这里插入图片描述

  • 实际将file1.txt 到file5.txt 改为file01.txt到file05.txt,并输出执行结果
rename  -v 's/file/file0/' file*

在这里插入图片描述

13.basename(提取文件路径的文件名)

(1)作用:提取文件路径中的文件名

(2)语法:
basename NAME [SUFFIX]
basename OPTION… NAME…

(3)选项:

-a:支持处理多个文件
-s:删除指定货后缀

(4)示例

  • 提取文件名
basename /etc/passwd

在这里插入图片描述

  • 提取目录名(删除最后/)
basename /usr/local

在这里插入图片描述

  • 提取多个输入
basename -a /etc/passwd /usr/local

在这里插入图片描述

  • 删除指定后缀
basename -s .conf /etc/sysctl.conf
basename /etc/sysctl.conf .conf

在这里插入图片描述

14.dirname(提取文件名中的路径部分)

(1)作用:去除文件名中的非路径部分,及提取文件名中的路径部分
(2)语法:dirname [OPTION] NAME…
(3)示例:

  • 提取文件路径
dirname /usr/bin/cat

在这里插入图片描述

  • 提取目录路径
dirname /home/zh1/commands/

在这里插入图片描述

15.chattr(改变文件属性)

(1)作用:来改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性。
(2)语法: chattr [ -RVf ] [ -v version ] [ -p project ] [ mode ] files…
(3)选项:

	-R:递归处理,将指令目录下的所有文件及子目录一并处理;-v<版本编号>:设置文件或目录版本;-V:显示指令执行过程;+<属性>:开启文件或目录的该项属性;-<属性>:关闭文件或目录的该项属性;=<属性>:指定文件或目录的该项属性。

(4)属性:

A:即Atime,告诉系统不要修改对这个文件的最后访问时间
S:即Sync,一旦应用程序对这个文件执行了写操作,系统立刻把修改的结果写到磁盘
a:即Append Only,若是文件有此属性:只允许在这个文件之后追加数据,不允许覆盖或截断这个文件,若是目录有此属性,只允许在这个目录下建立和修改文件,而不允许删除任何文件
b:不更新文件或目录的最后存取时间;
c:将文件或目录压缩后存放;
d:将文件或目录排除在倾倒操作之外;当dump程序执行时,该文件或目录不会被dump备份
i:不得任意更动文件或目录;不允许对文件进行任何操作,对于目录,只能修改目录下的文件,不允许建立和删除文件
s:彻底删除文件,不可恢复
S:即时更新文件或目录;
u:预防意外删除。当一个应用程序请求删除这个文件,系统会保留其数据以便以后能够恢复删除。
t:文件系统支持尾部合并
X:可以直接访问压缩文件的内容

(5)示例:

  • 防止某个关键文件被修改:
sudo chattr +i file.txt

在这里插入图片描述

  • 解除某个文件禁止被修改状态
sudo chattr -i file.txt

在这里插入图片描述

  • 只允许对文件追加内容
sudo chattr +a file.txt

在这里插入图片描述
在这里插入图片描述

  • 对一个目录中的所有文件添加限制:
 sudo chattr -R +i dir

在这里插入图片描述

16.lsattr(查看文件的第二扩展文件系统属性)

(1)作用:查看文件的第二扩展文件系统属性
(2)语法:lsattr(选项)(参数)
(3)选项:

-E:可显示设备属性的当前值,但这个当前值是从用户设备数据库中获得的,而不是从设备直接获得的。
-D:显示属性的名称,属性的默认值,描述和用户是否可以修改属性值的标志。
-R:递归的操作方式;
-V:显示指令的版本信息;
-a:列出目录中的所有文件,包括隐藏文件。

(4)示例

  • 显示文件第二属性及版本信息:
lsattr -v dir
lsattr -v file.txt 

在这里插入图片描述

17.file(识别文件类型)

(1)作用:识别文件类型
(2)语法:file[选项]文件
(3)选项:

	-b:列出文件类型,不显示文件名称-c:详细显示指令执行过程-f:指定名称文件,显示多个文件类型信息-L:直接显示符号连接所指向的文件类别-m:指定魔法数字文件-z:尝试解读压缩文件内容-i:显示MIME类别

(4)示例:

  • 查看文件类型
file file.txt
file dir
file /dev/sda

在这里插入图片描述

  • 查看文件类型,但不显示文件名:
file -b file.txt

在这里插入图片描述

  • 显示MIME类别
 file -i file.txt

在这里插入图片描述

  • 查看某个符号链接文件(快捷方式)的类别
file /dev/cdrom

在这里插入图片描述

  • 直接查看某个符号链接文件(快捷方式)所对应的目标文件的文件类型
file  -L /dev/cdrom

在这里插入图片描述

18.md5sum(生成和校验文件md5值)

(1)作用:为防止文件传输过程中损坏或被植入病毒,官方会生成根据文件内容生成md5值,用来核验
(2)语法: md5sum [OPTION]… [FILE]…
(3)选项:

-b:以二进制模式读取文件
-t:以文本模式读取文件内容
-c:根据已生成的md5值,对现存文件进行校验
--status:校验完成后,不生产错误或正确的提升信息,可以通过命令的返回值判断

(4)示例:

  • 生成file.txt文件的md5值:
md5sum file.txt

在这里插入图片描述

  • 不同模式计算同一个文件的md5值:
md5sum  -b file.txt
md5sum  -t file.txt

在这里插入图片描述

  • 将生成的md5值重定向到指定文件:
md5sum file.txt > file.md5

在这里插入图片描述
此时定向的md5值记录了file.txt的相关信息,可以定位到file.txt,故可以用来判断file.txt文件是否被修改

  • md5 校验
 md5sum -c file.md5

在这里插入图片描述
当修改file.txt文件后再次校验,发现无法匹配,说明文件被修改
在这里插入图片描述

  • md5校验,不显示任何输出,用返回码表示成功与否
 md5sum -c --status file.md5echo $?

在这里插入图片描述
在这里插入图片描述

19.find(搜索指定文件)

(1)作用:搜索指定文件
(2)语法:find pathname -option [-print ] [ -exec | -ok command ] {} ;

-pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为command { };,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

(3)选项:

① 查找名称查找文件的基本查找命令

-name filename :查找名为filename的文件。
-iname filename :与-name相同,查找名为filename的文件,但忽略大小写。
-type:按照文件类型查找,可以是以下类型:b - 块设备文件。d - 目录。c - 字符设备文件。p - 管道文件。l - 符号链接文件。f - 普通文件。s -socket文件

② 根据他们的权限查找文件

-perm :按执行权限来查找(mode为完全匹配, -mode为包含即可)
-empty :查找长度为零(即空文件)的文件

③ 基于所有者和组的搜索文件

-user username :文件属主来查找
-group groupname :按组来查找
-nogroup :查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser :查无有效属主的文件,即文件的属主在/etc/passwd中不存(孤儿文件 没有所有者的文件)

④ 根据日期和时间查找文件和目录

-mtime -n +n :按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n :按文件访问时间来查,-n指n天以内,+n指n天以前
-ctime -n +n :按文件创建时间来查找文件,-n指n天以内,+n指n天以前

⑤ 根据大小查找文件

-size [+/-]n
按照文件大小查询文件,+n表示文件大小大于n,-n表示文件大小小于n。常用单位:k, M, G

(4)示例:

  • 全盘搜索系统中所有以.conf结尾的文件
find / -name *.conf

在这里插入图片描述

  • 在/etc目录中搜索所有大于1k大小的文件
sudo find /etc -size +1k

在这里插入图片描述

  • 在/home目录中搜索所有属于指定用户的文件
sudo find /home -user zh1

在这里插入图片描述

  • 搜索指定目录下所有的文件
find ../ -type f

在这里插入图片描述

  • 搜索指定目录下所有权限为664的文件,并列出来
find ../ -perm 664 -exec ls -l {} \;

在这里插入图片描述

  • 在指定目录下搜索所有指定后缀的文件,后缀不需要大小写
find ../ -iname "*.txt"

在这里插入图片描述

  • 搜索指定工作目录中所有七天内被修改过的文件
find -mtime -7

在这里插入图片描述

20.which(查找命令文件所在位置)

(1)作用:查找命令文件所在位置
(2)语法:which [-a] filename …
(3)示例:
查找命令所在位置

which ls
which bash
which fdisk

在这里插入图片描述

21.whereis(查找命令的相关信息)

(1)作用:查找命令的二进制程序,源代码文件和man手册页
(2)语法: whereis [options] [-BMS directory… -f] name…
(3)选项:

	-b:查找二进制程序或命令-B:从指定目录下查找二进制程序或命令-m:查找man手册文件-M:从指定目录下查找man手册文件-s:只查找源代码文件-S:从指定目录下查找源代码文件

(4)示例:

  • 查找ls命令的程序路径和man手册页位置
whereis ls

在这里插入图片描述

  • 查找ls命令的二进制程序路径
whereis -b ls

在这里插入图片描述

  • 查找ls命令的man手册页路径
whereis -m ls 

在这里插入图片描述

22.locate(快速查找文件或目录)

(1)作用:快速查找文件或目录,同whereis命令一样,在数据库中查找,而非在磁盘上找,这个数据库每天会更新一次,故有可能无法找到最近添加或删除的文件,故查找前,需要更新数据库:sudo updatedb
(2)语法:locate [选项][文件]
(3)选项:

-i:忽略大小写
-c:输出匹配条目的数量
-p:忽略空格

(4)示例:

  • 查找系统中所有file.txt文件
locate file.txt

在这里插入图片描述

  • 搜索路径中包含/etc/sh的文件
locate /etc/shs

在这里插入图片描述

  • 查找与whereis 相关的所有文件
locate whereis 

在这里插入图片描述

  • 查找指定目录下的以f开头的文件,不区分大小写
locate -i /home/zh1/commands/locate/f

在这里插入图片描述

23.chown(改变文件或目录的用户和用户组)

(1)作用:改变文件或目录的用户和用户组
(2)语法:chown [选项] 所属主:所属组 文件
(3)选项:

-R:对目前目录下的所有文件与目录进行相同的变更
-c:显示所属信息变更信息

(4)示例:
首先创建用户和组:
(创建组和用户分别为:sudo groupadd zh2sudo useradd -m -g zh2 zh2
创建zh2用户,该用户组为zh2,并在/home目录下创建zh2目录

  • 改变指定文件的所属主与所属组
 sudo chown zh2:zh2 file.txt 

在这里插入图片描述

  • 只改变指定文件的所属主
sudo chown zh2 file.txt 

在这里插入图片描述

  • 只改变指定文件的所属组
sudo chown :zh2 file.txt

在这里插入图片描述

  • 改变指定文件的所属用户和所属组,并显示过程
sudo chown -c zh2:zh2 file.txt

在这里插入图片描述

  • 改变指定目录及其内所以子文件的所属用户和所属组
sudo chown -R zh2:zh2 dir

在这里插入图片描述

24.chmod(改变文件或目录权限)

(1)作用:改变文件或目录权限
(2)语法:
chmod [OPTION]… MODE[,MODE]… FILE…
chmod [OPTION]… OCTAL-MODE FILE…
chmod [OPTION]… --reference=RFILE FILE…

(3)修改权限的两种模式:

① 符号模式:

  • 格式:[ugoa][[±=][rwx]]
  • 对象:
    在这里插入图片描述
  • 操作:
    在这里插入图片描述
  • 权限:
    在这里插入图片描述

② 数字模式
在这里插入图片描述

(4)选项:

-R:对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)

(5)示例:

  • 将文件 file.txt 设置为所有人都可读取
chmod a+r file.txt

在这里插入图片描述

  • 将当前目录下所有文件及递归目录文件设置为所有人可读取
chmod -R a+r *

在这里插入图片描述

  • 将 file.txt 设置为只有该文件拥有者才可以执行
chmod u+x file.txt

在这里插入图片描述

  • 将 file.txt 设置为文件拥有者及其同组人员可写入,但其他人不可写入
chmod ug+w,o-w file.txt

在这里插入图片描述

  • 将 file.txt 设置为所有人都可读可写可执行
chmod a+r,a+w,a+x file.txt
chmod 777 file.txt

在这里插入图片描述

  • 将 file.txt 设置为文件拥有者可读可写可执行,此外的其他人可读可执行
chmod 755 file.txt
chmod u+r,u+w,u+x,go = rx

在这里插入图片描述

  • 将 file.txt 设置为文件拥有者可读可写,此外其他人都没任何权限
chmod u=rw,go= file.txt

在这里插入图片描述

25.chgrp(更改文件用户组)

(1)作用:更改文件用户组
(2)语法:chgrp [参数][目录]
(3)选项:

-v:显示指令执行过程
-R:递归处理,将指定目录下的所有文件及子目录一并处理
--reference:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同

(4)示例:

  • 改变文件的用户组
sudo chgrp zh2 file.txt 

在这里插入图片描述

  • 改变文件的用户组,并显示命令执行过程
sudo chgrp -v zh1 file.txt

在这里插入图片描述

  • 根据参照文件改变文件的用户组
 sudo chgrp --reference=reffile.txt file.txt 

在这里插入图片描述

  • 将dir及其子目录下的所有文件的用户组改为zh2
sudo chgrp -R zh2 dir

在这里插入图片描述

三、文本处理相关命令

1.grep(文本搜索)

(1)作用:文本搜索工具
(2)语法:grep [选项] 文件
(3)选项:

-i:忽略大小写
-c :只输出匹配行的数量
-l 只列出符合匹配的文件名,不列出具体的匹配行
-n 列出所有的匹配行,显示行号
-h 查询多文件时不显示文件名
-s 不显示不存在、没有匹配文本的错误信息
-v 显示不包含匹配文本的所有行
-w 匹配整词
-x 匹配整行
-r 递归搜索
-q 禁止输出任何结果,已退出状态表示搜索是否成功
-b 打印匹配行距文件头部的偏移量,以字节为单位
o 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位
-F 匹配固定字符串的内容
-E 支持扩展的正则表达式

(4)示例:

  • 搜索某个文件中,包含某个关键词的内容
grep zh1 /etc/passwd

在这里插入图片描述

  • 搜索多个文件中,包含某个关键词的内容
sudo grep zh1 /etc/passwd /etc/shadow

在这里插入图片描述

  • 搜索多个文件中,包含某个关键词的内容,不显示文件名称
sudo grep -h zh1 /etc/passwd /etc/shadow

在这里插入图片描述

  • 递归搜索,不仅搜索指定目录,还搜索其内子目、录内是否有关键词文件
grep -r hellp *

在这里插入图片描述

  • 输出在某个文件中,包含某个关键词行的数量
sudo grep -c zh1 /etc/passwd /etc/shadow

在这里插入图片描述

  • 忽略大小写
grep -i ZH1 /etc/passwd

在这里插入图片描述

  • 在文件中查找要搜索的内容,并显示行号
grep -n zh1 /etc/passwd

在这里插入图片描述

  • 反向查找(不包含指定内容的其他内容)
grep -v zh1 /etc/passwd

在这里插入图片描述

  • 只列出符合匹配的文件名,不列出具体的匹配行
grep -l hello *

在这里插入图片描述

  • 搜索某个文件中,精准匹配到某个关键词的内容
grep -x hello file.txt
grep -x hello file1.txt

在这里插入图片描述

  • 判断某个文件中,是否包含某个关键词,通过返回状态值输出结果(0为包含,1为不包含),方便在Shell脚本中判断和调用
 grep -q hello file1.txtecho $?grep -q hello file2.txtecho $?

在这里插入图片描述

2.egrep(查找指定字符串)

(1)作用:查找指定的字符串
(2)语法:egrep [选项] [文件]
(3)选项:同grep
(4)示例:

file.txt内容:

linux hello
55 66 77 888
li   nux
linuxlinux
linuxlinuxlinux
#world
abab
ababab
abc
abd
abe
  • 查找包含一个或一个以上"a"的内容
egrep 'a+' file.txt

在这里插入图片描述

  • 查找包含linux或66的内容
egrep 'linux|66' file.txt

在这里插入图片描述

  • 查找包含linux整体的内容
egrep '(linux)' file.txt

在这里插入图片描述

  • 查找包含一个或多个linux整体的内容
egrep '(linux)+' file.txt

在这里插入图片描述

  • 查找以#开头的内容
egrep '^#' file.txt

在这里插入图片描述

  • 查找以linux结尾的内容
egrep 'linux$' file.txt

在这里插入图片描述

  • 查找连续出现3次ab的内容
egrep '(ab){3}' file.txt
egrep '(linux){3}' file.txt

在这里插入图片描述
在这里插入图片描述

  • 查找包括abc或abd的内容
egrep 'ab[cd]' file.txt

在这里插入图片描述

3.cat(显示文件内容)

(1)作用:在终端上显示文件内容
(2)语法:cat [OPTION]… [FILE]…
(3)选项:

-n 显示行数(空行也编号)
-s 去除重复的空行
-b 显示行数(空行不编号)
-E 每行结束处显示$符号
-T 将TAB字符显示为 ^I符号

(4)示例:

  • 查看 file.txt 文件内容
cat file.txt

在这里插入图片描述

  • 查看多个文件内容
cat file1.txt file2.txt

在这里插入图片描述

  • 查看 file.txt 文件内容,并显示行数编号
cat -n file.txt

在这里插入图片描述

  • 去除重复的空行
 cat -s file.txt

在这里插入图片描述

  • 每行结束处显示$符号
cat -E file.txt

在这里插入图片描述

  • 将TAB字符显示为 ^I符号
cat -T file.txt

在这里插入图片描述

  • 重定向文件内容
cat file1.txt > file3.txt #如果file3.txt不存在,则创建,并且内容会被覆盖
cat file1.txt >>file3.txt# 如果file3.txt不存在,则创建,并且内容会被追加到末尾

在这里插入图片描述
在这里插入图片描述

  • 将 file1.txt 和 file2.txt 合并为一个文件
cat file1.txt file2.txt > combinedfile.txt

在这里插入图片描述

  • 使用 cat 创建文件(按键 Enter 入文本,完成后按 CRTL+D 保存文件)
cat > file5.txt

在这里插入图片描述

4.more(分页显示文本文件内容)

(1)作用:分页显示文本文件内容,不支持上翻
(2)语法:more [options] file…
(3)基本操作:

回车:下滚一行
空格:下翻一页

(4)选项:

-num 指定每屏显示的行数
+num 从第num行开始显示
-p 先清除屏幕再显示文本文件的剩余内容
-c 与-p相似,不滚屏,先显示内容再清除旧内容
-s 多个空行压缩成一行显示

(5)示例:

  • 分页显示指定的文本文件内容
more ~/.bashrc

在这里插入图片描述

  • 先进行清屏操作,随后以每次10行内容的格式显示指定的文本文件内容
more -c -10  ~/.bashrc

在这里插入图片描述

  • 分页显示指定的文本文件内容,遇到连续两行以上空白行的情况,则以一行空白行显示

more -s ~/.bashrc
  • 从第10行开始,分页显示指定的文本文件内容
more +10 ~/.bashrc

在这里插入图片描述

5.less(分页显示文本内容)

(1)作用:分页显示文本内容,支持上翻下翻
(2)语法:less [参数] 文件
(3)快捷操作:

空格键 下翻一页
回车键 下滚一行
j 下滚一行
k 上滚一行
b 回翻一页
f 下翻一页
q 退出
/word 搜索word关键词

(4)示例:

  • 查看文件
less ~/.bashrc
  • 查看多个文件
less  ~/.bashrc ~/.bash_history # :n - 浏览下一个文件 :p - 浏览前一个文件
  • 查看历史命令并使用 less 命令分页显示
history | less

在这里插入图片描述

6.head(显示文件开头的内容)

(1)作用:显示文件开头的内容
(2)语法:head [OPTION]… [FILE]…
(3)选项:

-c  <数字> 指定显示头部内容的字符数
-n <数字> 定义显示行数

(4)示例:

  • 显示文件的前10行内容(默认)
head ~/.bashrc

在这里插入图片描述

  • 显示文件的前5行内容
head -n 5 ~/.bashrc

在这里插入图片描述

  • 显示文件除了最后6行的全部内容
head -n -6 ~/.bashrc

在这里插入图片描述

  • 显示文件的前20个字符
head -c 20 ~/.bashrc

在这里插入图片描述

  • 显示文件除了最后30个字符的全部内容
head -c -30 ~/.bashrc

在这里插入图片描述

7.tail(查看文件尾部内容)

(1)作用:查看文件尾部内容
(2)语法:tail [OPTION]… [FILE]…
(3)选项:

-c N 输出文件尾部的 N(N为整数)个字节内容
-f 动态显示文件最新追加的内容
-n N 输出文件的尾部N(N位数字)行内容

(4)示例:

  • 显示 指定文件的最后 10 行内容
tail ~/.bashrc

在这里插入图片描述

  • 显示指定文件的最后 20 行内容
tail -n 20 ~/.bashrc

在这里插入图片描述

  • 显示指定文件从第 20 行至文件末尾
tail +20 ~/.bashrc

在这里插入图片描述

  • 显示 file.txt 文件的最后 10 个字符
tail -c 10 ~/.bashrc

在这里插入图片描述

  • 动态显示文件的最后 10 行内容
tail -f file1.txt# 脚本
while true ; do echo hello >> file1.txt ;sleep 1;done

在这里插入图片描述
在这里插入图片描述

8.tac(反向显示文件内容)

(1)作用:反向显示文件内容
(2)语法:tac [选项] [文件]
(3)示例:

  • 返乡显示指定文件内容
tac file.txt

在这里插入图片描述

9.nl(添加行号)

(1)作用:添加行号
(2)语法:nl [OPTION]… [FILE]…
(3)选项:

-b a 也给空行添加行号(类似 cat -n)
-b t 空行不显示行号
-n 列出行号表示的方法:-n ln 行号在屏幕的最左方显示-n rn 行号在自己栏位的最右方显示,且不加0-n rz 行号在自己栏位的最右方显示,且加0
-w 行号栏位的占用的位数

(4)示例:

  • 用nl列出file.txt的内容(默认空行不显示行号)
nl file.txt

在这里插入图片描述

  • 用nl列出file.txt的内容,空行也加上行号
nl -b a file.txt

在这里插入图片描述

  • 行号在自己栏位的最右方显示,且加0对齐格式,且显示空行
 nl -b a -n rz  file.txt

在这里插入图片描述

  • 行号宽度设置为3
 nl -b a -n rz -w 3 file.txt

在这里插入图片描述

10.wc(统计文本信息)

(1)作用:统计文本信息
(2)语法:wc [OPTION]… [FILE]…
(3)选项:

	-w 统计字数,或--words:只显示字数。一个字被定义为由空格、跳格或换行字符分隔的字符串-c 统计字节数,或--bytes或--chars:只显示Bytes数-l 统计行数,或--lines:只显示列数-m 统计字符数-L 打印最长行的长度(不包含不可见字符)

(4)示例:

file.txt:

123456789
hello world
  • 统计指定文件的行数、字数、以及字节数
wc file.txt

在这里插入图片描述

  • 统计指定文件的字数
wc -w file.txt

在这里插入图片描述

  • 统计指定文件的字符数
wc -m file.txt

在这里插入图片描述

  • 统计指定文件的字节数
wc -c file.txt

在这里插入图片描述

  • 统计指定文件的行数
wc -l file.txt

在这里插入图片描述

  • 打印 file.txt 文件最长行的长度(不包括不可见字符)
wc -L file.txt

在这里插入图片描述

  • 使用管道统计文本行数
cat file.txt | wc -l

在这里插入图片描述

11.split(文件切割)

(1)作用:文件分割
(2)split [OPTION]… [FILE [PREFIX]]
(3)选项:

-l 行数/-<行数> 指定每多少行切成一个小文件
-b<字节> 指定每多少字节切成一个小文件
-d 使用数字作为后缀
-a 指定后缀长度(默认为2)
[输出文件名] 设置切割后文件的前置文件名,split会自动在前置文件名后再加上编号

(4)示例:

  • 将file1.txt每2行切割成一个小文件
split -2 file1.txt

在这里插入图片描述

  • 将file1.txt每50切割成一个小文件
 split -b 50 file1.txt 

在这里插入图片描述

  • 以数字作为后缀,并指定后缀宽度为3
split -b 50 -d -a 3 file1.txt

在这里插入图片描述

  • 为分割后的文件指定文件名的前缀
split -b 50 -d -a 3 file1.txt split_file

在这里插入图片描述

12.cut(提取文本的一部分)

(1)作用:从文件中提取文本的一部分
(2)语法:cut OPTION… [FILE]…
(3)选项:

-b 以字节为单位进行分割 ,仅显示行中指定字节范围的内容
-c 以字符为单位进行分割 , 仅显示行中指定范围的字符
-d 自定义分隔符,默认为制表符”TAB”
-f 显示指定字段的内容 , 与-d一起使用
-n 取消分割多字节字符
--complement 取被选择的字节、字符或字段的补集
--out-delimiter 指定输出内容是的字段分割符

(4)示例:

  • 提取file1.txt第2列的内容
    file1.txt内容:
NO	Name	Genger	Score
01	Lili	f	99
02	Tim	m	88		
03	Tom	m	100
04	Seven	m	70

在这里插入图片描述

 cut -f 2 file1.txtcut -f 1 file1.txt

在这里插入图片描述

  • 提取file1.txt除第2列外的其它内容
cut -f 2 --complement file1.txt 

在这里插入图片描述

  • 使用 -d 选项指定字段分隔符
    file2.txt:
NO;Name;Genger;Score
01;Lili;f;99
02;Tim;m;88		
03;Tom;m;100
04;Seven;m;70

在这里插入图片描述

cut -f 2 -d";" file2.txt

在这里插入图片描述

  • 提取指定文件每行第2,3,4,6个字节
cut -b 2-4,6 file3.txt

在这里插入图片描述

  • 提取第1个到第3个字符
cut -c1-3 file3.txt

在这里插入图片描述

  • 提取前2个字符
cut -c -2 file3.txt

在这里插入图片描述

  • 提取第4个之后的字符
cut -c 4- file3.txt

在这里插入图片描述

13.paste(合并两个或多个文件)

(1)作用:合并两个或多个文件
(2)语法:paste [OPTION]… [FILE]…
(3)选项:

-d 默认域的分隔符是空格或tab键,设置新的域分隔符
-s 将每个文件粘贴成一行
- 从标准输入中读取数据

(4)示例:

  • 将file1.txt和file2.txt粘贴成一个新的文件
paste file1.txt file2.txt # 默认以列的形式拼接
paste file2.txt file1.txt # 文件键入的顺序不一样,结果不一样
paste file2.txt file1.txt file3.txt # 多文件拼接

在这里插入图片描述
在这里插入图片描述

  • 设置域分隔符为 ;粘贴成新的文件
paste -d ";" file1.txt file2.txt

在这里插入图片描述

  • 将每个文件粘贴成一行
paste -s file1.txt file2.txt

在这里插入图片描述

  • 从标准输入中读取数据,每行显示4个文件名
ls | paste -d" " - - - - 

在这里插入图片描述

14.sort(对文本内容进行排序)

(1)作用:对文本内容进行排序
(2)语法:sort [选项] 文件
(3)选项:

-n 依照数值的大小排序
-t <分隔字符> 指定排序时所用的栏位分隔字符
-k 指定需要排序的栏位
-r 以相反的顺序来排序

(4)示例:

  • 按字母顺序排序
sort file1.txt

在这里插入图片描述

  • 反向排序
sort -r file1.txt

在这里插入图片描述

  • 按数字大小排序

sort -n file2.txt # 按数字大小升序排
sort -n  -r file2.txt  # 按数字大小降序排

在这里插入图片描述

  • 以;为间隔符,对指定的文件内容按照数字大小对第3列进行排序
 sort -t";" -k 3 -n file3.txt

在这里插入图片描述

15.uniq(去除文件中的重复行)

(1)作用:去除文件中的重复行
(2)语法:uniq [OPTION]… [INPUT [OUTPUT]]
(3)选项:

-c 打印每行在文本中重复出现的次数
-d 只显示有重复的纪录,每个重复纪录只出现一次
-u 只显示没有重复的纪录

(4)示例:

  • 删除连续文件中连续的重复行
uniq file.txt

在这里插入图片描述

  • 打印每行在文件中出现重复的次数
uniq -c file.txt

在这里插入图片描述

  • 只显示有重复的纪录,且每个纪录只出现一次
uniq -d file.txt

在这里插入图片描述

  • 只显示没有重复的纪录
uniq -u file.txt

在这里插入图片描述

16.diff(比较文件的差异)、patch(根据差异打补丁)

(1)作用:比较文件的差异
(2)语法:diff [OPTION]… FILES
(3)选项:

-y 以并列的方式显示文件的异同之处
-c 显示全部内容,并标出不同之处
-u 以合并的方式来显示文件内容的不同
-W 设置宽度

(4)显示提示:

a - add 增加内容
c - change 改变内容
d - delete 删除了内容
| 前后2个文件内容有不同
< 后面文件比前面文件少了1行内容
> 后面文件比前面文件多了1行内容
+比较的文件的后者比前着多一行
- 比较的文件的后者比前着少一行
! 比较的文件两者有差别的行

(5)示例:

  • 比较两个文件
diff file1.txt file2.txt

在这里插入图片描述

  • 并排格式输出
diff -y -W50 file1.txt file2.txt

在这里插入图片描述

  • 上下文格式输出
diff -c file1.txt file2.txt

在这里插入图片描述

  • 统一格式输出
diff -u file1.txt file2.txt

在这里插入图片描述

  • 生成补丁
diff file1.txt file2.txt > file.patch

在这里插入图片描述

  • 打补丁(将file1.txt 改为与file2.txt一致)
patch file1.txt file.patch

在这里插入图片描述

17.join(拼接两个文件)

(1)作用:连接两个文件
(2)语法:join [OPTION]… FILE1 FILE2
(3)选项:

-a1或-a2 除了显示共同域的纪录之外,-a1显示第一个文件没有共同域的纪录,
-a2显示第二个文件中没有共同域的纪录
-o 设置结果显示的格式
-t 改变域的分隔符
-v1或-v2 不显示共同域的纪录之外,-v1显示第一个文件没有共同域的纪录,
-v2显示第二个文件中没有共同域的纪录
-j 指定一个域作为匹配字段

(4)示例:

file1.txt:

1 Tim 99
2 Jim 100
3 Seven 98 
4 Blck 87
5 Lili 78

file2.txt:

1 Tim male aa
2 Jim male bb
3 Seven male cc 
4 Blck male dd
6 Lila fmale ee 
  • 连接两个文件,默认以第一列匹配(只连接第一列相同的内容)
join file1.txt file2.txt

在这里插入图片描述

  • 显示左边文件中的所有记录(右边文件中没有匹配的不显示)
join -a1 file1.txt file2.txt

在这里插入图片描述

  • 显示右边文件中的所有记录(左边文件中没有匹配的不显示)
join -a2 file1.txt file2.txt

在这里插入图片描述

-全连接(显示左边和右边所有记录)

join -a1 -a2 file1.txt file2.txt 

在这里插入图片描述

  • 指定输出字段
join -o 1.2 1.3 2.3 file1.txt file2.txt

在这里插入图片描述

  • 指定分隔符
 join -t' ' file1.txt file2.txt

在这里插入图片描述

  • 只显示第1个文件中没有相同栏位的行
join -v 1 file1.txt file2.txt

在这里插入图片描述

  • 指定了以两个文件里第2列做匹配字段
join -j 2 file1.txt file2.txt

在这里插入图片描述

18.tr(转换或删除文件中的字符)

(1)作用:转换或删除文件中的字符
(2)语法:tr [OPTION]… SET1 [SET2]
(3)选项:

-c 反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
-d 删除字集合中出现的所有字符
-s 缩减连续重复的字符成指定的单个字符

(4)可以使用的字符类

[:alnum:]:字母和数字 
[:alpha:]:字母 
[:cntrl:]:控制(非打印)字符
[:digit:]:数字 
[:graph:]:图形字符
[:lower:]:小写字母
[:print:]:可打印字符
[:punct:]:标点符号
[:space:]:空白字符
[:upper:]:大写字母 
[:xdigit:]:十六进制字符

(5)示例:

  • 大小写转换
    文件重定向
tr "[a-z]" "[A-Z]" < file.txt # 文件重定向

在这里插入图片描述
配合管道

cat file.txt | tr A-Z a-z # 配合管道

在这里插入图片描述

echo "hello world" | tr [:lower:] [:upper:] # 使用字符类

在这里插入图片描述
大小写互换

echo "Hello World" | tr '[A-Za-z]' '[a-zA-Z]' # 大小写互换

在这里插入图片描述

  • 删除字符

  • 删除小写字母

echo "abcABdefCD" | tr -d "[a-z]"

在这里插入图片描述

  • 删除数字
echo "abc123def888hello" | tr -d 0-9

在这里插入图片描述

  • 删除空格和tab符
echo -e "\thello world " | tr -d "[ \t]"

在这里插入图片描述

  • 删除不在指定集合中的字符
echo -e "abc123*&\n def888" | tr -d -c '0-9 \n'

在这里插入图片描述

  • 删除重复字符,只保留一个

  • 压缩重复的空白行

echo -e "1\n\n2\n\n\n3" | tr -s '\n'

在这里插入图片描述

  • 删除字符集中的重复字符
echo "Hellooo Worldddddddd" | tr -s "[ od]"

在这里插入图片描述

  • 将多个连续空格合并为一个空格,并将空格替换为破折号‘-’
echo "2022         11   16" | tr -s " " "-"

在这里插入图片描述

  • 将制表符转换为空格
echo -e "hello\tworld" | tr -s "\t" " "

在这里插入图片描述

19.awk(文本和数据进行处理的编程语言)

(1)作用:文本和数据进行处理的编程语言
(2)语法:awk ‘条件1 {动作1} 条件2 {动作2} …’ file.txt
(3)选项:

-F 指定输入时用到的字段分隔符
-v 自定义变量
-f 从脚本中读取awk命令
-m 对val值设置内在限制

(4)内置变量

ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符

(5)示例:

  • 显示df命令结果的第1和第3列的内容( df命令是用来查看linux系统服务器文件系统的磁盘使用情况)
df -h | awk '{print$1"\t"&3}'

在这里插入图片描述
在这里插入图片描述

  • 指定冒号为分隔符,显示/etc/passwd的第1和第3列的内容
awk -F: '{print$1"\t"$3}' /etc/passwd

在这里插入图片描述
在这里插入图片描述

  • 指定冒号为分隔符,显示(passwd)系统中所有UID号码大于500的用户信息(第3列)
awk -F: '$3>=500' /etc/passwd

在这里插入图片描述

  • 搜索/etc/passwd有zh1关键字的所有行
awk -F: '/zh1/' /etc/passwd

在这里插入图片描述

  • 搜索/etc/passwd有zh1关键字的所有行,并显示对应的shell(第7列)
awk -F: '/zh1/{print$7}' /etc/passwd

在这里插入图片描述

  • BEGIN与END的使用(在输出的内容中添加表头和结尾)
head /etc/passwd | awk -F: 'BEGIN{print"name\tuid"}{print$1"\t"$3}END{print"from file /etc/passwd"}'

在这里插入图片描述

20.sed(批量编辑文本文件)

(1)作用:批量编辑文本文件
(2)语法:sed [选项] [动作] 文件名
(3)选项:

-n 仅显示script处理后的结果
-e 以选项中指定的script来处理输入的文本文件
-i 此选项会直接修改源文件,要慎用

(4)动作:

a :新增
c :取代
d :删除
i :插入
p :打印
s :取代

(5)示例:

  • 输出文件内容
    file.txt内容:
hello world
hello linux
linux linux
bcabc
1234
  • 仅输出第2行
sed -n '2p' file.txt

在这里插入图片描述

  • 输出3-5行
sed -n '3,5p' file.txt

在这里插入图片描述

  • 搜索含有nux关键字的行
sed -n '/nux/p' file.txt

在这里插入图片描述

  • 删除文件内容
  • 删除第2-4的数据
sed '2,4d' file.txt

在这里插入图片描述

  • 删除含有nux关键字的行
sed '/nux/d' file.txt

在这里插入图片描述

  • 在第2行后追加nice
sed '2a nice' file.txt

在这里插入图片描述

  • 在第2行前插入一行数据
sed '2i 123456' file.txt

在这里插入图片描述

  • 整行数据替换
sed '2c abcdefg' file.txt # 第2行替换为abcdefg
sed '2,4c love' file.txt # 第2到4行替换为love

在这里插入图片描述
在这里插入图片描述

  • 字符串替换
  • 全局替换,把linux改为love
sed 's/linux/love/g' file.txt

在这里插入图片描述

  • 只替换第3行
sed '3s/linux/love' file.txt

在这里插入图片描述

  • 多个条件,将linux 删除,world替换为Tim
sed 's/linux//g;s/world/Tim/g' file.txt

在这里插入图片描述

  • 将操作写入文件,将第2行的linux替换为WORD,并写入文件
sed -i '2s/linux/WORLD/g' file.txt

在这里插入图片描述

四、磁盘与文件系统相关命令

1.du(查看磁盘使用空间)

(1)作用:查看磁盘使用空间
(2)语法:
du [OPTION]… [FILE]…
du [OPTION]… --files0-from=F

(3)选项:

-a 显示目录中所有文件大小
-h 以易读方式显示文件大小

(4)示例:

  • 列出当前目录下所有文件和目录的容量大小
du

在这里插入图片描述

  • 以易读方式显示 dir 文件夹及其子文件夹大小
 du -h dir

在这里插入图片描述

  • 以易读方式显示 dir 文件夹内所有文件大小
du -ah

在这里插入图片描述

  • 显示文件 file.txt 所占用的磁盘空间
du file.txt

在这里插入图片描述

  • 仅显示目录的总大小
du -s dir
du --max-depth = 0 dir

在这里插入图片描述

  • 显示指定目录下每个文件或目录的容量大小,并且以易读方式显示
du -sh dir

在这里插入图片描述

2.df(显示磁盘空间使用情况)

(1)作用:显示磁盘空间使用情况
(2)语法:df [OPTION]… [FILE]…
(3)选项:

-a 显示所有文件系统,包含所有的具有 0Blocks 的文件系统
-h 以容易阅读的方式显示
-i 显示inode信息
-t <文件系统类型> 只显示指定类型的文件系统
-T 输出时显示文件系统类型

(4)示例:

  • 显示磁盘空间使用情况
df

在这里插入图片描述

  • 以易以阅读的方式显示磁盘空间使用情况
df -h

在这里插入图片描述

  • 显示指定文件/目录所在分区的磁盘使用情况
df -h /home

在这里插入图片描述

  • 显示指定文件类型的磁盘使用情况
df -t squashfs

在这里插入图片描述

  • 以 inode 模式来显示磁盘使用情况
df -i

在这里插入图片描述

  • 显示所有信息
df -ah

在这里插入图片描述

  • 列出文件系统的类型
    在这里插入图片描述

3.sync(强制将更改的内容立刻写入磁盘)

(1)作用:强制将更改的内容立刻写入磁盘,在Linux系统当中对文件的内容进行处理时,先将其内容写入缓冲区,等到适当时候在写入磁盘,可提高系统的运行效率。

4.mount(把文件系统挂载到目录)

(1)作用:把文件系统挂载到目录
(2)语法:mount [参数] [设备] [挂载点]
(3)选项:

-o 挂载方式:loop:用来把一个文件当成硬盘分区挂接上系统ro:采用只读方式挂接设备rw:采用读写方式挂接设备iocharset:指定访问文件系统所用字符集
-t 指定挂载类型

(4)示例:

  • 查看当前系统中挂载的所有文件系统信息
mount

在这里插入图片描述

  • 查看指定类型挂载的文件系统
mount -t tmpfs

在这里插入图片描述

  • 将U盘挂载到指定目录
sudo fdisk -l
sudo mount /dev/sdb /mnt/udisk # 首先在/dev/sdb /mnt/创建udisk
  • 只读模式挂载
sudo mount -o ro /dev/sdb /mnt/udisk
  • 将iso镜像挂载到/mnt/iso目录
mkisofs -o mydisk.iso ./dir # 创建一个.iso镜像
sudo mount -o loop /home/zh1/commands/mount/mydisk.iso /mnt/iso # 将镜像挂载到/mnt/iso

在这里插入图片描述
在这里插入图片描述

5.umount(卸载文件系统)

(1)作用:卸载文件系统
(2)语法:umount [参数]
(3)参数:

-v 执行时显示详细的信息

(4)示例:

  • 通过设备名卸载
umount -v /dev/sdb
  • 通过挂载点卸载
umount -v /media/zh1/mydisk

6.dd(拷贝及转换文件)

(1)作用:拷贝及转换文件
(2)语法:dd 参数 对象
(3)基本格式:

dd if=path/to/input_file of=/path/to/output_
file bs=block_size count=number_of_
blocks

(4)参数:

if=文件名 输入文件名,默认为标准输入。即指定源文件。
of=文件名 输出文件名,默认为标准输出。即指定目的文件。
ibs=bytes 一次读入 bytes 个字节,即指定一个块大小为 bytes 个字节。
obs=bytes 一次输出 bytes 个字节,即指定一个块大小为 bytes 个字节。
bs=bytes 同时设置读入/输出的块大小为 bytes个字节。
cbs=bytes 一次转换 bytes 个字节,即指定转换缓冲区大小。
skip=blocks 从输入文件开头跳过 blocks 个块后再开始复制。
seek=blocks 从输出文件开头跳过 blocks 个块后再开始复制。
count=blocks 仅拷贝 blocks 个块,块大小等于 ibs/obs 指定的字节数。
conv=<关键字> 指定关键字:关键字:conversion 用指定的参数转换文件。ascii 转换 ebcdic 为 ascii。ebcdic 转换 ascii 为 ebcdic。ibm 转换 ascii 为 alternate ebcdic。block 把每一行转换为长度为 cbs,不足部分用空格填充。unblock 使每一行的长度都为 cbs,不足部分用空格填充。lcase 把大写字符转换为小写字符。ucase 把小写字符转换为大写字符。swab 交换输入的每对字节。noerror 出错时不停止。notrunc 不截断输出文件。sync 将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。。conversion 用指定的参数转换文件。

(5)示例:

  • 生成一个指定大小(500M)的新文件
dd if=/dev/zero of=./file1.txt bs=500k count=1 

在这里插入图片描述

  • 拷贝指定文件的前5个字节
dd if=file2.txt of=dfile2.txt bs=5 count=1

在这里插入图片描述

  • 拷贝指定文件的内容,并将所有字符转换成大写后输出到新文件中
dd if=file3.txt of=dfile3.txt conv=ucase

在这里插入图片描述

  • 由标准输入设备读入字符串,并将字符串转换成大写后,再输出到标准输出设备
dd conv=ucase #(按ctrl+d结束)

在这里插入图片描述

7.tar(打包/解压工具)

(1)作用:打包/解压工具
(2)语法:tar {A|c|d|r|t|u|x}[GnSkUWOmpsMBiajJzZhPlRvwo] [ARG…]
(3)参数:

-c 新建打包文件
-x 解压文件,配合 -C 解压到对应的文件目录
-f (压缩或解压时)指定要处理的文件
-j 通过bzip2方式压缩或解压,最后以.tar.br2 为后缀。压缩后大小小于.tar.gz
-z 通过gzip方式压缩或解压,最后以.tar.gz 为后缀
-v 显示操作过程
-t 查看打包文件中内容
-C dir 指定压缩/解压缩的目录,若无指定,默认是当前目录

(4)示例:

  • 将当前目录下所有 .txt 文件打包(未压缩),并显示操作过程
tar -cvf files.tar file*

在这里插入图片描述

  • 打包文件之后,使用 gzip 方式压缩
 tar -cvzf files.tar.gz file*

在这里插入图片描述

  • 打包文件后,使用bzip2方式压缩
 tar -cvjf files.tar.br2 file*

在这里插入图片描述

  • 解压文件到当前目录
tar -zxvf files.tar.gz

在这里插入图片描述

  • 解压文件到指定目录下
 tar -zxvf files.tar.gz -C dir/

在这里插入图片描述

  • 列出压缩包里的内容
tar -tf files.tar.gz

在这里插入图片描述

8.zip/unzip(压缩/解压文件)

①zip:

(1)作用:压缩文件
(2)语法:zip 参数 文件
(3)参数:

-r 递归处理,将指定目录下的所有文件和子目录一并处理
-v 显示指令执行过程
-d 更新压缩包内文件

(4)示例:

  • 将指定目录及其内全部文件都打包成zip格式压缩包文件
zip -r dir.zip dir

在这里插入图片描述

  • 将当前目录下所有txt文件全部压缩成files.zip
zip files.zip *.txt

在这里插入图片描述

  • 将newfile.txt添加到files.zip压缩包
zip -dv files.zip newfile.txt

在这里插入图片描述

②unzip:

(1)作用:压缩文件
(2)语法:unzip 参数 文件
(3)参数:

-l 显示压缩文件内所包含的文件
-v 显示指令执行过程
-d<目录> 指定文件解压缩后所要存储的目录

(4)示例:

  • 查看压缩文件中包含的文件
 unzip -l files.zip 

在这里插入图片描述

  • 查看显示的文件列表还包含压缩比率
unzip -v files.zip

在这里插入图片描述

  • 检查zip文件是否损坏
unzip -t files.zip

在这里插入图片描述

  • 解压files.zip到指定目录
unzip files.zip -d udir/

在这里插入图片描述

9.gzip/gunzip(压缩/解压文件,对文本压缩比率较高)

(1)作用:压缩/解压文件
(2)语法:
gzip [参数] 文件
gunzip [参数] 压缩包
(3)参数:

-d 解开压缩文件
-k 保留原文件
-l 列出压缩文件的相关信息
-r 递归处理,将指定目录下的所有文件及子目录一并处理
-v 显示指令执行过程
-t 测试压缩文件是否正确无误

(4)示例:

  • 压缩指定的文件,原文件将被删除
gzip file.txt

在这里插入图片描述

  • 压缩指定的目录
 gzip -r dir/

在这里插入图片描述

  • 显示指定压缩包的压缩信息
gzip -l file.txt.gz

在这里插入图片描述

  • 解压指定的压缩包文件
gzip -dv file.txt.gz
gunzip -v file.txt.gz

在这里插入图片描述
在这里插入图片描述

  • 递归解压目录
gzip -dr dir
gunzip -r dir.gz

在这里插入图片描述
在这里插入图片描述

  • 压缩指定的文件,原文件不被删除
gzip -k file.txt

在这里插入图片描述

  • 测试指定的压缩包文件内容是否损坏,能够正常解压
echo $?

在这里插入图片描述

五、系统管理与性能监控相关命令

1.uname(显示系统信息)

(1)作用:显示系统信息
(2)语法:uname [OPTION]
(3)选项:

-a 显示系统所有相关信息
-m 显示计算机硬件架构
-n 显示主机名称
-r 显示内核发行版本号
-s 显示内核名称
-v 显示内核版本
-p 显示主机处理器类型
-o 显示操作系统名称
-i 显示硬件平台

(4)示例:

  • 显示系统主机名、内核版本、硬件架构等信息
uname -a

在这里插入图片描述

  • 仅显示主机名
uname -n

在这里插入图片描述

  • 仅显示内核发行版本
uname -r

在这里插入图片描述

  • 仅显示内核名称
uname -s

在这里插入图片描述

  • 仅显示当前系统的硬件平台
uname -i

在这里插入图片描述

  • 打印操作系统类型
uname -o

在这里插入图片描述

2.hostname(显示和设置系统的主机名)

(1)作用:显示和设置系统的主机名
(2)语法:hostname [参数]
(3)参数:

-a 显示主机别名
-d 显示DNS域名
-f 显示FQDN名称
-i 显示主机的ip地址
-s 显示短主机名称,在第一个点处截断
-y 显示NIS域名

(4)注意:

  • 环境变量 HOSTNAME 也保存了当前的主机名 echo $HOSTNAME
  • 使用hostname可临时设置主机名
  • 永久修改主机名有两种方法:
    方法一:修改配置文件
sudo vi /etc/hostname
sudo vi /etc/hosts

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

方法二:hostnamectl命令

sudo hostnamectl set-hostname 
sudo vi /etc/hosts # 一定修改里对应的主机名

在这里插入图片描述
(5)示例:

  • 显示主机名
hostname
  • 临时改变主机名
hostname newname
  • 显示主机的所有IP地址
hostname -I

在这里插入图片描述

2.dmesg(显示开机信息)

(1)作用:显示开机信息
(2)语法:dmesg [参数]
(3)参数:

-c 显示信息后,清除ring buffer中的内容
-s <缓冲区大小> 预设置为8196,刚好等于ringbuffer的大小
-n 设置记录信息的层级
-x 显示级别信息常见级别:emerg、alert、crit、err、warn、notice、info、debug
--level 显示指定级别的信息
-T 显示时间戳
-r 显示原始数据

(4)示例:

  • 显示开机信息
dmesg
dmesg | less # 分页的形式显示

在这里插入图片描述

  • 显示和内存、硬盘、USB、TTY相关的信息
dmesg | grep -i memory # 内存
dmesg | grep -i dma #硬盘
dmesg | grep -i usb # USB
dmesg | grep -i tty #TTY
  • 显示信息级别
dmesg -x

在这里插入图片描述

  • 只输出特定级别的信息
dmesg -x --level=err,warn

在这里插入图片描述

  • 显示时间戳
dmesg -T

在这里插入图片描述

  • 显示原始数据
dmesg -r

在这里插入图片描述

  • 清空dmesg环形缓冲区中的日志
sudo dmesg -c

在这里插入图片描述

3.uptime(查看系统启动时间及负载信息)

(1)作用:查看系统启动时间及负载信息
(2)语法:uptime [options]
(3)选项:

-p 显示机器正常运行的时间
-s 系统启动时间,格式为 yyyy-mm-dd hh:mm:ss

(4)示例:

  • 显示当前系统运行负载信息
uptime
#输出结果:
17:40:12 up 41 min,  1 user,  load average: 0.11, 0.06, 0.01
当前时间	 系统已经运行的时间 用户数   	过去    1min   5min  15min 的负载

在这里插入图片描述

  • 显示系统正常运行时间
uptime -p

在这里插入图片描述

  • 显示系统启动时间
uptime -s

在这里插入图片描述

4.free(显示系统内存使用量情况)

(1)作用:显示系统内存使用量情况
(2)语法:free [参数]
(3)参数:

-b 以Byte显示内存使用情况
-k 以kb为单位显示内存使用情况
-m 以mb为单位显示内存使用情况
-g 以gb为单位显示内存使用情况
-s 持续显示内存
-t 显示内存使用总合
-h 以易读的单位显示内存使用情况

(4)输出内容介绍

Mem 行(第二行)是内存的使用情况。
Swap 行(第三行)是交换空间的使用情况。
total 列显示系统总的可用物理内存和交换空间大小。
used 列显示已经被使用的物理内存和交换空间。
free 列显示还有多少物理内存和交换空间可用使用。
shared 列显示被共享使用的物理内存大小。
buff/cache 列显示被 buffer 和 cache 使用的物理内存大小。
available 列显示还可以被应用程序使用的物理内存大小。

(5)示例:

  • 以默认的容量单位显示内存使用量信
free

在这里插入图片描述

  • 以MB位单位显示内存使用量信息
free -m

在这里插入图片描述

  • 以易读的单位显示内存使用量信息
free -h

在这里插入图片描述

  • 以易读的单位显示内存使用量信息,每个3秒刷新一次
free -hs 3

在这里插入图片描述

5.ulimit(控制shell程序的资源)

(1)作用:控制shell程序的资源
(2)语法:ulimit [参数]
(3)参数:

-a 显示目前资源限制的设定。
-c  设定core文件的最大值,单位为区块。
-d <数据节区大小> 程序数据节区的最大值,单位为KB。
-f <文件大小> shell所能建立的最大文件,单位为区块。
-H 设定资源的硬性限制,也就是管理员所设下的限制。
-m <内存大小> 指定可使用内存的上限,单位为KB。
-n <文件数目> 指定同一时间最多可开启的文件数。
-p <缓冲区大小> 指定管道缓冲区的大小,单位512字节。
-s <堆叠大小> 指定堆叠的上限,单位为KB。
-S 设定资源的弹性限制。
-t  指定CPU使用时间的上限,单位为秒。
-u <程序数目> 用户最多可开启的程序数目。
-v <虚拟内存大小> 指定可使用的虚拟内存上限,单位为KB。

(4)示例:

  • 显示系统资源的设置
ulimit -a

在这里插入图片描述

  • 设置单一用户程序数目上限
ulimit -u 8000
  • 将每个进程可以打开的文件数目加大到2048
ulimit -n 2048
  • 指定可使用的虚拟内存上限为12800KB
ulimit -v 12800
  • 指定CPU使用时间的上限为2s
ulimit -t 2

6.init(切换系统运行级别)

(1)作用:切换系统运行级别
(2)语法:init 数字
(3)示例:

init 0 - 关机
init 1 - 单用户模式
init 2 - 多用户,没有 NFS 不联网
init 3 - 切换到多用户-命令行模式
init 4 - 没有用到
init 5 - 图形化界面模式
init 6 - 重新启动

7.service(控制系统服务)

(1)作用:控制系统服务
(2)语法:service [参数]
(3)参数:

--status-all 显示所服务的状态
start 启动服务
stop 停止服务
restart 重新启动服务
status 查看服务运行状态
reload 重新载入服务配置

(4)示例:

  • 查看系统中所有服务现在的运行状态
service --status-all

在这里插入图片描述

  • 查看sshd运行状态
service ssd status

在这里插入图片描述

  • 启动sshd服务
service sshd start

在这里插入图片描述

  • 停止sshd服务
service sshd stop

在这里插入图片描述

  • 重启sshd服务
service sshd restart

7.vmstat(显示虚拟内存状态)

(1)作用:显示虚拟内存状态
(2)语法:vmstat [选项] [时间间隔] [次数]
(3)选项:

a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 。
-m:显示slab信息
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024bytes)

(4)示例:

  • 显示虚拟内存的使用情况
vmstat

在这里插入图片描述

  • 指定状态信息刷新的时间间隔为1秒
vmstat 1

在这里插入图片描述

  • 显示活跃和非活跃内存统计信息
vmstat -a

在这里插入图片描述

  • 显示从系统启动以来的fork数量
vmstat -f

在这里插入图片描述

  • 显示内存使用的详细信息
vmstat -s

在这里插入图片描述

  • 显示磁盘相关统计信息(磁盘的读/写情况)
vmstat -d

在这里插入图片描述

  • 查看/dev/sda1磁盘分区的读/写情况
vmstat -p 

在这里插入图片描述

  • 显示系统的slabinfo
vmstat -m

在这里插入图片描述

8.iostat(监视系统输入输出设备和CPU)

(1)作用:监视系统输入输出设备和CPU的使用情况
(2)语法:iostat [参数] [设备]
(3)参数:

-c 仅显示CPU使用情况
-d 仅显示设备利用率
-k 显示状态以千字节每秒为单位,而不使用块每秒
-m 显示状态以兆字节每秒为单位
-p 仅显示块设备和所有被使用的其他分区的状态
-t 显示每个报告产生时的时间
-x 显示扩展状态

(4)示例:

  • 显示所有设备负载情况
iostat

在这里插入图片描述

  • 每隔2秒显示一次,总共显示3次
iostat 2 3
  • 显示指定磁盘信息
iostat  -d sda1

在这里插入图片描述

  • 显示tty和cpu信息
iostat -t

在这里插入图片描述

  • 以M为单位显示所有信息
iostat -m

在这里插入图片描述

  • 查看TPS和吞吐量信息
iostat -d -k 1 1

在这里插入图片描述

  • 查看磁盘I/O的详细情况
iostat -x /dev/sda1

在这里插入图片描述

  • 查看设备使用率(%util)、响应时间(await)
iostat -x -k -d 1 1

在这里插入图片描述

  • 查看cpu状态
iostat -c 1 3

在这里插入图片描述

9.ipcs(显示进程间通讯设备信息)

(1)作用:显示进程间通讯设备的信息
(2)语法:ipcs [参数]
(3)参数:

-a 默认的输出信息
-m 打印出使用共享内存进行进程间通信的信息
-q 打印出使用消息队列进行进程间通信的信息
-s 打印出使用信号进行进程间通信的信息

(4)示例:

  • 显示所有的IPC
ipcs 
ipcs -a

在这里插入图片描述

  • 输出信息的详细变化时间
ipcs -t

在这里插入图片描述

  • 输出ipc方式的进程ID
ipcs -p

在这里插入图片描述

  • 输出ipc方式的创建者/拥有者
ipcs -c

在这里插入图片描述

  • 输出当前系统下ipc各种方式的状态信息
ipcs -u

在这里插入图片描述

  • 查看各个资源的系统限制信息
ipcs -l

在这里插入图片描述

10.sar(系统运行状态统计)

(1)作用:系统运行状态统计
(2)语法:sar [参数]
(3)参数:

-R 显示内存状态
-b 显示I/O速率
-B 显示换页状态
-d 显示每个块设备的状态
-i 状态信息刷新的间隔时间
-u 显示CPU利用率

(4)示例:
当sar命令出现:

~$ sar
Cannot open /var/log/sysstat/sa28: No such file or directory
Please check if data collecting is enabled

解决办法:
sudo vim /etc/default/sysstat,将false改为true:
在这里插入图片描述
然后重启sysstat:sudo service sysstat restart

  • 间隔1秒,执行2次,输出磁盘包括设备名
sar -d -p 1 2

在这里插入图片描述

  • 监控cpu使用情况
sar -u -f 

在这里插入图片描述

  • 监控磁盘IO每秒请求
sar -b

在这里插入图片描述

11.ipcrm(删除一个或更多的消息队列、信号量集或者共享 内存标识)

(1)作用:删除一个或更多的消息队列、信号量集或者共享
内存标识
(2)语法:
ipcrm [options]
ipcrm […]
(3)选项:

-m, --shmem-id  按 id 号移除共享内存段
-M, --shmem-key <键> 按键值移除共享内存段
-q, --queue-id  按 id 号移除消息队列
-Q, --queue-key <键> 按键值移除消息队列
-s, --semaphore-id  按 id 号移除信号量
-S, --semaphore-key <键> 按键值移除信号量
-a, --all[=] 全部移除
-v, --verbose 解释正在进行的操作

(4)示例:

  • 通过id删除共享内存
ipcrm -m 262144
  • 通过key删除共享内存
ipcrm -M 0x55
  • 通过id删除消息队列
ipcrm -q 252432
  • 通过key删除消息队列
ipcrm -Q 0x88
  • 通过id删除信号量
ipcrm -s 242438
  • 通过key删除信号量
ipcrm -S 0x65
  • 删除所有共享内存、信号量和消息队列
ipcrm -a

删除所有共享内存、信号量和消息队列,并且显示过程

ipcrm -v -a

六、网络工具相关命令

1.route(显示并设置路由)

(1)作用:显示并设置路由
(2)语法:
route [-f] [-p] [Command [Destination] [
mask Netmask] [Gateway] [metric Metric]] [
if Interface]]

(3)参数

-n :不要使用通讯协定或主机名称,直接使用IP 或 port number
-net:表示后面接的路由为一个网域;
-host:表示后面接的为连接到单部主机的路由;
netmask:与网域有关,可以设定 netmask 决定网域的大小;
gw:gateway 的简写,后续接的是 IP 的数值,与 dev 不同;
dev:如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等

(4)flags

U Up表示此路由当前为启动状态
H Host,表示此网关为一主机
G Gateway,表示此网关为一路由器
R Reinstate Route,使用动态路由重新初始化的路由
D Dynamically,此路由是动态性地写入
M Modified,此路由是由路由守护程序或导向器动态修改
! 表示此路由当前为关闭状态

(5)示例:

  • 显示当前路由
route
route -n

在这里插入图片描述

  • 添加网关/设置网关
route add -net 224.0.0.0 netmask 240.0.0.0 dev ens33

在这里插入图片描述

  • 屏蔽一条路由
route add -net 224.0.0.0 netmask 240.0.0.0 reject

在这里插入图片描述

  • 删除路由记录
route del -net 224.0.0.0 netmask 240.0.0.0
route del -net 224.0.0.0 netmask 240.0.0.0 reject

在这里插入图片描述

2.ping(测试主机间网络连通性)

(1)作用:测试主机间网络连通性
(2)语法:ping [参数] 目标主机
(3)参数:

-c 指定发送报文的次数
-i 指定收发信息的间隔时间
-s 设置数据包的大小
-t 设置存活数值TTL的大小(生存时间)Linux系统的TTL值为64或255Windows NT/2000/XP系统的TTL值为128Windows 98系统的TTL值为32UNIX主机的TTL值为255

(4)示例:

  • 测试与 www.baidu.com 网站的连通性
ping www.baidu.com

在这里插入图片描述

  • 连续 ping 4次
ping -c 4 www.baidu.com

在这里插入图片描述

  • 连续 ping 4次,间隔 3 秒
ping -c 4 -i 3 www.baidu.com
  • 设置数据包为 1024 字节,TTL为255
ping -s 1024 -t 255 www.baidu.com

在这里插入图片描述

3.traceroute(追踪数据包在网络上的传输时的全部路径)

(1)作用:追踪数据包在网络上的传输时的全部路径
(2)语法:traceroute [参数] [域名或者IP]
(3)参数:

-m<存活数值> 设置检测数据包的最大存活数值TTL的大小
-n 直接使用IP地址而非主机名称
-p<通信端口> 设置UDP传输协议的通信端口
-q 探测包个数设置
-r 忽略普通的Routing Table,直接将数据包送到远端主机上
-w 设置等待远端主机回报的时间

(4)示例:

  • 追踪本地数据包到百度的传输路径
traceroute www.baidu.com

在这里插入图片描述

  • 跳数设置
traceroute -m 7 www.baidu.com

在这里插入图片描述

  • 把探测包的个数设置为值4
traceroute -q 4 www.baidu.com

在这里插入图片描述

  • 把对外发探测包的等待响应时间设置为3秒
traceroute -w 3 www.baidu.com

在这里插入图片描述

  • 探测包使用的基本UDP端口设置6888
traceroute -p 6888 www.baidu.com

在这里插入图片描述

4.ifconfig(显示或设置网络设备)

(1)作用:显示或设置网络设备
(2)语法:
ifconfig [-v] [-a] [-s] [interface]
ifconfig [-v] interface [aftype] options |
address …

(3)参数:

add<地址> 设置网络设备IPv6的IP地址
del<地址> 删除网络设备IPv6的IP地址
down 关闭指定的网络设备
up 启动指定的网络设备
IP地址 指定网络设备的IP地址

(4)示例:

  • 显示网络设备信息
ifconfig

在这里插入图片描述

  • 关闭/打开指定网卡
sudo ifconfig ens33 down
sudo ifconfig ens33 up

在这里插入图片描述
在这里插入图片描述

  • 配置 IPV4 地址(子网掩码和广播地址不可随意修改)
sudo ifconfig ens33 192.168.2.66 # 为网卡ens33配置
sudo ifconfig ens33 192.168.2.66 netmask 255.255.255.0 # 加上子网掩码
ifconfig eth0 192.168.2.66 netmask 255.255.255.0 broadcast 192.168.2.255# 再加上广播

在这里插入图片描述

  • 为网卡配置和删除 IPv6 地址(不可随意修改,只说明如何修改)
ifconfig ens33 add fe80::78fb:fd04:908b:c8a1 #为网卡设置IPv6地址
ifconfig ens33 del fe80::78fb:fd04:908b:c8a1 #为网卡删除IPv6地址
  • 修改 MAC 地址(物理地址)
sudo ifconfig ens33 down # 先关闭网卡
sudo ifconfig ens33 hw ether 00:AA:BB:CC:DD:EE # 修改网卡地址
sudo ifconfig ens33 up # 打开网卡

在这里插入图片描述

  • 启用和关闭 ARP 协议
ifconfig ens33 arp # 开启
ifconfig ens33 -arp # 关闭
  • 设置最大传输单元
ifconfig ens33 mtu 1500 #设置能通过的最大数据包大小为 1500 byt

在这里插入图片描述

5.ifup/ifdown(激活/禁用网络接口)

(1)作用:激活/禁用网络接口(与ifconig ens33 up/down作用一致)
(2)语法:

ifup [网络接口]
ifdown [网络接口]

(3)示例:

-关闭网络接口

sudo ifdown ens33

在这里插入图片描述

  • 打开网络接口
sudo ifup ens33
sudo ifdown ens33

6.netstat(显示网络状态)

(1)作用:显示网络状态
(2)语法:netstat [参数]
(3)参数:

-a 显示所有连线中的Socket
-p 显示正在使用Socket的程序识别码和程序名称
-l 仅列出在监听的服务状态
-t 显示TCP传输协议的连线状况
-u 显示UDP传输协议的连线状况
-i 显示网络界面信息表单
-r 显示路由表信息
-n 直接使用IP地址,不通过域名服务器

(4)示例:

  • 显示系统网络状态中的所有连接信息
netstat -a

在这里插入图片描述

  • 显示系统网络状态中的TCP连接信息
netstat -at

在这里插入图片描述

  • 显示系统网络状态中的UDP连接信息
netstat -ut

在这里插入图片描述

  • 输出中显示 PID 和进程名称
netstat -p

在这里插入图片描述

  • 只显示监听端口
netstat -l

在这里插入图片描述

  • 只列出所有监听 tcp 端口
netstat -lt

在这里插入图片描述

  • 只列出所有监听 udp 端口
netstat -lu

在这里插入图片描述

  • 列出所有监听 UNIX 端口
netstat lx

在这里插入图片描述

  • 显示所有端口的统计信息
netstat -s

在这里插入图片描述

  • 显示 TCP 或 UDP 端口的统计信息
netstat -st
netstat -su

在这里插入图片描述
在这里插入图片描述

  • 显示系统网络状态中的UDP连接端口号使用信息
netstat -apu

在这里插入图片描述

  • 显示网卡当前状态信息
netstat -i

在这里插入图片描述

  • 显示网络路由表状态信息(与route命令类似)
netstat -r

在这里插入图片描述

  • 找到某个服务所对应的连接信息(例:ssh)
netstat -ap | grep ssh

在这里插入图片描述

7.ss(显示活动套接字)

(1)作用:显示活动套接字
(2)语法:ss [参数]
(3)参数:

-n 不解析服务名称,已数字方式显示
-a 显示所有套接字
-l 显示处于监听状态的套接字
-o 显示计时器信息
-e 显示详细的套接字信息
-m 显示套接字的内存使用情况
-p 显示使用套接字的进程
-i 显示内部的TCP信息
-s 显示套接字使用概况
-4 仅显示ipv4的套接字
-6 仅显示ipv6的套接字
-0 显示PACKET套接字
-t 只显示TCP套接字
-u 只显示UDP套接字
-d 只显示DCCP套接字
-w 只显示RAW套接字
-x 只显示 Unix套接字
-D 将原始TCP套接字信息转储到文件

(4)示例:

  • 显示TCP套接字
ss -at

在这里插入图片描述

  • 显示UDP套接字
ss -au

在这里插入图片描述

  • 显示套接字使用概况
ss -s

在这里插入图片描述

  • 列出所有打开的网络连接端口
ss -l

在这里插入图片描述

  • 查看进程使用的socket
ss -pl

在这里插入图片描述

  • 找出打开套接字/端口应用程序
ss -lp |grep 6010
  • 查看主机监听的端口
ss -tnl

在这里插入图片描述

  • 解析 IP 和端口号
ss -tlr

在这里插入图片描述

8.telnet(远程进入服务器)

(1)作用:远程登入服务器
(2)语法:telnet [参数] [主机] [端口]
(3)示例:

若遇到:
telnet: Unable to connect to remote host: Connection refused 问题:
可参考这篇文章:
Unable to connect to remote host: Connection refused

  • 登录远程主机
telnet 192.168.109.140

在这里插入图片描述

  • 指定端口
telnet 192.168.109.140 6379

9.ssh(远程连接工具)

(1)作用:远程连接工具
(2)语法:ssh[参数][主机]
(3)参数:

-l <登录名> 指定连接远程服务器的登录用户名
-p <端口> 指定远程服务器上的端口

(4)配置文件:

/etc/ssh/sshd_config

(5)示例:

若遇到MobaXterm本地环境连接远程服务器报错/etc/ssh_config line 1 Missing
可参考这篇文章:
/etc/ssh_config line 1 Missing

  • 登陆远程服务器
 ssh 192.168.109.140ssh -l zh1 192.168.109.140ssh zh1@192.168.109.140

在这里插入图片描述

  • 指定端口及用户名登陆服务器
ssh -p 2222 zh1@192.168.109.140
  • 远程执行命令
ssh 192.168.109.140 date

在这里插入图片描述

10.ftp(文件传输协议客户端)

(1)作用:文件传输协议客户端
(2)语法:ftp [参数] [主机名或IP]
(3)安装ftp步骤:

① 安装ftp

sudo apt install vsftpd

② 修改vsftpd.conf文件:使能可写权限

sudo vi /etc/vsftpd.conf

去除#write_enable=YES前的#:

在这里插入图片描述

③ 重启frp 服务

sudo service vsftpd restart

(4)常用ftp命令

help或?- 列出所有可用的FTP命令。
cd - 切换远程计算机上的目录。
lcd - 切换本地计算机上的目录。
ls - 列出当前远程目录中的文件和目录的名称。	
mkdir - 在当前远程目录中创建一个新目录。
pwd - 打印远程计算机上的当前工作目录。
delete - 删除当前远程目录中的文件。
rmdir- 删除当前远程目录中的目录。
get - 将一个文件从远程复制到本地计算机。
mget - 将多个文件从远程复制到本地计算机。
put - 将一个文件从本地上传到远程计算机。
mput - 将多个文件从本地上传到远程计算机。

(5)示例:

  • 注意:
    在输入ls指令时若遇到:
200 PORT command successful. Consider using PASV.
425 Failed to establish connection.

需要设置客户端的防火墙允许ftp服务:
控制面板>防火墙>允许应用或功能通过Windows Defender 防火墙>更改设置>允许ftp
在这里插入图片描述

  • 建立FTP连接
ftp  192.168.109.140

在这里插入图片描述

  • 下载一个文件
get file.txt

在这里插入图片描述
在这里插入图片描述

  • 下载多个文件
 mget file1.txt file2.txt

在这里插入图片描述
在这里插入图片描述

  • 上传文件
put newfile.txt #上传一个文件
mput newfile1.txt newfile2.txt # 上传多个文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 退出命令
bye
quit

11.sftp(交互式的文件传输程序)

(1)作用:交互式的文件传输程序
(2)语法:sftp [参数] [IP或主机名]
(3)示例:

  • 使用 SFTP 进行连接服务器
 sftp zh1@192.168.109.141

在这里插入图片描述

  • 查看sftp支持的命令
help
?

在这里插入图片描述

  • 从远程服务器下载文件到本地
get sftpfile.txt

在这里插入图片描述

  • 从远程服务器下载目录到本地
get -r sftpdir

在这里插入图片描述

  • 从本地上传文件到远程服务器
put newfile.txt

在这里插入图片描述

  • 从本地上传目录到远程服务器
put -r newdir

在这里插入图片描述
在这里插入图片描述

  • 执行本地 Shell 命令

!command 
!echo hello world

在这里插入图片描述

  • 退出
bye
quit

12.lftp(文件客户端程序)

(1)作用:一款优秀的文件客户端程序
(2)语法:lftp(选项)(参数)
(3)示例:

若没有安装lftp,先安装:

 apt-get install lftp
  • 登陆远程服务器
lftp zh1@192.168.109.141

在这里插入图片描述

  • 查看lftp支持的命令
help
?

在这里插入图片描述

  • 从远程服务器下载文件到本地
get lftpfile.txt # 下载一个文件
mget file*.txt # 下载多个文件
mget -c *.txt #断电续传

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 从远程服务器下载目录到本地
mirror dir

在这里插入图片描述
在这里插入图片描述

  • 从本地上传文件到远程服务器
put newfile.txt # 上传文件
mput newfile*.txt # 上传多个文件

在这里插入图片描述

在这里插入图片描述

  • 从本地上传目录到远程服务器
mirror -R newdir

在这里插入图片描述
在这里插入图片描述

  • 退出
bye
exit

13.wget(文件下载)

(1)作用:文件下载
(2)语法:wget [option]… [URL]…
(3)选项:

-i 下载指定文件里列出的地址
-O 下载后重命令文件
-c 打开断点续传
-b 启动后转入后台执行
-P 指定保存路径

(4)示例:

  • 使用 wget 下载单个文件
wget https://cn.wordpress.org/latest-zh_CN.zip

在这里插入图片描述

  • 使用 wget 下载多个文件
vim urllist.txt
wget -i urllist.txt

在这里插入图片描述

  • 下载后以不同的文件名保存
wget -O wp.zip https://cn.wordpress.org/latest-zh_CN.zip
  • 下载后保存到指定目录
wget -P dir https://cn.wordpress.org/latestzh_CN.zip
  • wget 限速下载
wget --limit-rate=300k https://cn.wordpress.org/latest-zh_CN.zip
  • 打开断点续传功能
wget -c https://cn.wordpress.org/latest-zh_CN.zip
  • 使用 wget 后台下载
wget -b https://cn.wordpress.org/latest-zh_CN.zip
tail -f wget-log # 查看下载进度

在这里插入图片描述

14.scp(远程拷备文件)

(1)作用:远程拷备文件
(2)语法:
scp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-llimit] [-o ssh_option] [-P port] [-S program]source … target
(3)参数:

-r 递归复制整个目录
-p 保留原文件的修改时间,访问时间和模式
-P 指定数据传输用到的端口号

(4)示例:

 scp zh1@192.168.109.141:/home/zh1/commands/scp/scpfile.txt ~

在这里插入图片描述

  • 从远程复制目录到本地
scp -r zh1@192.168.109.141:/home/zh1/commands/scp/scpdir ~

在这里插入图片描述

  • 上传本地文件到远程机器指定目录
scp ~/newfile.txt zh1@192.168.109.141:/home/zh1/commands/scp/

在这里插入图片描述
在这里插入图片描述

  • 上传本地目录到远程机器指定目录
scp -r  ~/newdir zh1@192.168.109.141:/home/zh1/commands/scp/

在这里插入图片描述
在这里插入图片描述

  • 使用指定的端口号传输数据
scp -P 2222 zh1@192.168.109.141:/home/zh1/commands/scp/scpdir ~
  • 保留文件的最后修改时间及访问时间
scp -p zh1@192.168.109.141:/home/zh1/commands/scp/scpfile.txt ~

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

15.curl(文本传输工具)

(1)作用:文本传输工具
(2)语法:curl [参数] 网址
(3)参数:

-o 指定新的本地文件名
-O 保留远程文件的原始名
-u 通过服务端配置的用户名和密码授权访问
-I 打印HTTP响应头信息
-u 指定登录账户密码信息
-A 设置用户代理标头信息
-b 设置用户cookie信息
-C 支持断点续传
-s 静默模式,不输出任何信息
-T 上传文件

(4)示例:

  • 获取指定网站的网页源码
curl www.baidu.com

在这里插入图片描述

  • 保存网页
curl -o baidu.html www.baidu.com

在这里插入图片描述

  • 下载指定网站中的文件
curl -O https://cn.wordpress.org/latest-zh_CN.zip

在这里插入图片描述

  • 下载文件并重命名
curl -o wp.zip https://cn.wordpress.org/latest-zh_CN.zip

在这里插入图片描述

  • 断点续传
curl -C - -O https://cn.wordpress.org/latest-zh_CN.zip
  • 打印指定网站的HTTP响应头信息
curl -I https://cn.wordpress.org/latest-zh_CN.zip

在这里插入图片描述

16.host(域名查询)

(1)作用:域名查询
(2)语法:host [参数] [域名]
(3)参数:

-a 显示详细的DNS信息
-v 显示指令执行的详细信息

(4)示例:

  • 查询域名对应的IP地址
host www.baidu.com

在这里插入图片描述

  • 显示执行域名查询的详细信息
host -v www.baidu.com

在这里插入图片描述

  • 显示详细的DNS信息
host -a www.baidu.com

在这里插入图片描述

17.tcpdump(监听网络流量)

(1)作用:监听网络流量
(2)语法:
tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]

使用-i参数指定tcpdump监听的网络界面,这在计算机具有多个网络界面时非常有用,
使用-c参数指定要监听的数据包数量,
使用-w参数指定将监听到的数据包写入文件中保存
tcpdump总的的输出格式为:系统时间 来源主机.端口 > 目标主机.端口 数据包参数
补充说明:执行tcpdump指令可列出经过指定网络界面的数据包文件头,在Linux操作系统中,你必须是系统管理员root
不带参数的tcpdump会收集网络中所有的信息包头,数据量巨大,必须过滤。
(3)参数:

 -A 以ASCII格式打印出所有分组,并将链路层的头最小化。-c 在收到指定的数量的分组后,tcpdump就会停止。-C 在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size 中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数 file_size 的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。-d 将匹配信息包的代码以人们能够理解的汇编格式给出。-dd 将匹配信息包的代码以c语言程序段的格式给出。-ddd 将匹配信息包的代码以十进制的形式给出。-D 打印出系统中所有可以用tcpdump截包的网络接口。-e 在输出行打印出数据链路层的头部信息。-E 用spi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。-f 将外部的Internet地址以数字的形式打印出来。-F 从指定的文件中读取表达式,忽略命令行中给出的表达式。-i 指定监听的网络接口。-l 使标准输出变为缓冲行形式,可以把数据导出到文件。-L 列出网络接口的已知数据链路。-m 从文件module中导入SMI MIB模块定义。该参数可以被使用多次,以导入多个MIB模块。-M 如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详情可参考RFC 2385)。-b 在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。-n 不把网络地址转换成名字。-nn 不进行端口名称的转换。-N 不输出主机名中的域名部分。例如,‘nic.ddn.mil‘只输出’nic‘。-t 在输出的每一行不打印时间戳。-O 不运行分组分组匹配(packet-matching)代码优化程序。-P 不将网络接口设置成混杂模式。-q 快速输出。只输出较少的协议信息。-r 从指定的文件中读取包(这些包一般通过-w选项产生)。-S 将tcp的序列号以绝对值形式输出,而不是相对值。-s 从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节。-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc远程过程调用)和snmp(简单网络管理协议;)。-t 不在每一行中输出时间戳。-tt 在每一行中输出非格式化的时间戳。-ttt 输出本行和前面一行之间的时间差。-tttt 在每一行中输出由date处理的默认格式的时间戳。-u 输出未解码的NFS句柄。-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。-vv 输出详细的报文信息。-w 直接将分组写入文件中,而不是不分析并打印出来。 

(4)示例:

  • 监视第一个网络接口上所有流过的数据包
tcpdump

在这里插入图片描述

  • 监视指定网络接口的数据包
tcpdump -i ens33

在这里插入图片描述

  • 显示指定数量包
tcpdump -c 20

在这里插入图片描述

  • 精简模式显示 10个包
tcpdump -c 10 -q

在这里插入图片描述

  • 监视指定主机的数据包(主机名)
sudo tcpdump host www.baidu.com

在这里插入图片描述

  • 监听指定主机的数据包(IP地址)
tcpdump host 192.168.107.133

在这里插入图片描述

  • 监听指定端口号的数据包,并以文本形式展示
tcpdump -i any port 22 -A

在这里插入图片描述

18.nc(设置路由器)

(1)作用:设置路由器
- 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
- 端口的扫描,nc可以作为client发起TCP或UDP连接
- 机器之间传输文件
- 机器之间网络测速
(2)语法:
nc [-46bCDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl] [-m minttl] [-O length] [-P proxy_username] [-p source_port] [-q seconds] [-s source] [-T keyword]
[-V rtable] [-W recvlimit] [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]] [-Z peercertfile] [destination] [port]

(3)参数:

-v 显示指令执行过程。
-w<超时秒数> 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。
-n 直接使用IP地址,而不通过域名服务器。
-u 使用UDP传输协议。
-l 使用监听模式,管控传入的资料。

(4)示例:

  • 扫描指定IP的TCP端口,范围1-100
nc -v -z -w2 192.168.109.142 1-100

在这里插入图片描述

  • 扫描指定IP的UDP端口,范围1-100
nc -v -u -z -w2 192.168.109.142 1-100

在这里插入图片描述

  • 扫描指定端口
nc -nvv  192.168.109.142  22

在这里插入图片描述

  • 监听某个端口、连接某个端口(实现中断间的通信聊天)
nc -l 1234
nc 192.168.109.142 1234

在这里插入图片描述

在这里插入图片描述

七、用户管理相关命令

1.useradd(创建并设置用户信息)

(1)作用:创建并设置用户信息
(2)语法:useradd [参数] 用户名
(3)参数:

-d<登入目录> 指定用户登入时的目录。
-g<群组> 初始群组。
-G<群组> 非初始群组。
-m 自动创建用户的家目录。
-M 不要创建用户的家目录。
-N 不要创建以用户名称为名的群组。
-s 指定用户登入后所使用的shell。
-c 添加注释

(4)四个重要文件

/etc/passwd  :记录用户信息
/etc/shadow:保存每个用户的密码
/etc/group:保存组的信息
/etc/gshadow:保存组的密码

(5)示例

  • 直接创建新用户
sudo useradd user1

在这里插入图片描述

  • 常用创建方法(指定shell和在home目录下创建用户目录)
cat /etc/passwd | grep user

在这里插入图片描述

  • 指定家目录(不常用)
 useradd -m -d /new/dir username
  • 指定用户ID
useradd -u 1500 username
  • 指定组ID
useradd -g group username
  • 分配多个组
useradd -g group -G group1,group2 username
  • 自定义注释
sudo useradd -c "Test user" user3

在这里插入图片描述

2.adduser(创建用户账户)

(1)作用:创建用户账户,与useradd一致,创建过程有提醒
(2)语法:adduser [参数] 用户名
(3)示例:

  • 创建一个新用户
sudo adduser newuser1

在这里插入图片描述

3.passwd(修改用户的密码)

(1)作用:修改用户的密码
(2)语法: passwd [参数] 用户名
(3)参数:

-d 删除已有密码
-l 锁定用户的密码值,不允许修改
-u 解锁用户的密码值,允许修改
-e 下次登陆强制修改密码
-k 用户在期满后能仍能使用
-S 查询密码状态

(4)示例:

  • 修改当前登录用户的密码值
passwd

在这里插入图片描述

  • 修改指定用户的密码值 p
sudo passwd newuser1

在这里插入图片描述

  • 锁定指定用户的密码值,不允许其进行修改
passwd -l zh1
  • 解锁指定用户的密码值,允许其进行修改
passwd -u zh1
  • 强制指定的用户在下次登陆时必须重置其密码
passwd -e zh1
  • 删除指定用户的密码值
passwd -d zh1
  • 查看指定用户的密码状态
passwd -S zh1

在这里插入图片描述

4.userdel(删除用户账户)

(1)作用:删除用户账户
(2)语法:userdel [参数] 用户名
(3)参数:

r 删除用户主目录及其中的任何文件

(4)示例:

  • 删除指定的用户账户信息
userdel zh2

在这里插入图片描述
在这里插入图片描述

  • 删除指定的用户账户信息及家目录
userdel -r newuser3

在这里插入图片描述

5.su(切换用户身份)

(1)作用:切换用户身份
(2)语法 :su [参数] 用户名
(3)参数:

- 完全身份变更
-c 执行完指定的指令后,即恢复原来的身份
-f 适用于csh与tsch,使shell不用去读取启动文件
-l 改变身份时,也同时变更工作目录
-m 变更身份时,不要变更环境变量
-s 指定要执行的shell

(4)示例:

  • 变更帐号为zh2并在执行whomai指令后退出变回原使用者
 su -c whoami zh2

在这里插入图片描述

  • 变更帐号为zh2并保留在当前工作目录
 su zh2

在这里插入图片描述

  • 变更帐号为alvin并改变工作目录至alvin的家目录
su -zh2

在这里插入图片描述

6.sudo(以系统管理员的身份执行指令)

(1)作用:以系统管理员的身份执行指令
(2)语法:sudo [参数]
(3)参数:

-l 显示当前用户的权限
-u<用户> 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份

(4)配置文件

/etc/sudoers 授权用户/组 主机=[(切换到哪些用户或组)] 命令

  • 查看配置文件
sudo visudo
sudo vim /etc/sudoers

在这里插入图片描述

(5)示例:

  • 列出当前用户的权限
sudo -l

在这里插入图片描述

  • 指定用户身份执行命令
sudo -u zh2 whoami

在这里插入图片描述

  • 以 root 权限执行上一条命令
sudo !!

在这里插入图片描述

7.id(显示用户ID和组ID)

(1)作用:显示用户ID和组ID
(2)语法:id [参数] [用户名]
(3)参数:

-g 显示用户所属群组的ID
-G 显示用户所属附加群组的ID
-n 显示用户,所属群组或附加群组的名称
-r 显示实际ID
-u 显示用户ID

(4)示例:

  • 显示当前用户的所有信息
 id

在这里插入图片描述

  • 显示指定用户信息
id zh2

在这里插入图片描述

  • 显示用户所属群组的ID
 id -g zh1

在这里插入图片描述

  • 显示用户所属附加群组的ID
id -G zh1

在这里插入图片描述

8.usermod(修改用户账号信息)

(1)作用:修改用户账号信息
(2)语法:usermod [参数] 用户名
(3)参数:

-c<备注> 修改用户账号的备注文字
-d<登入目录> 修改用户登入时的家目录
-e<有效期限> 修改账号的有效期限
-f<缓冲天数> 修改在密码过期后多少天即关闭该账号
-g<群组> 修改用户所属的群组
-G<群组> 修改用户所属的附加群组
-l<账号名称> 修改用户账号名称
-L 锁定用户密码,使密码无效
-s 修改用户登入后所使用的shell
-u 修改用户ID
-U 解除密码锁定

(4)示例:

  • 修改指定用户的家目录路径
sudo usermod -d /home/hometest user1

在这里插入图片描述

  • 修改指定用户的UID号码
usermod -u 1234 user1

在这里插入图片描述

  • 修改指定用户的名称
usermod -l user2 zh2

在这里插入图片描述

  • 锁定指定用户的账户
usermod -L user2

在这里插入图片描述

  • 解锁指定用户的账户
 sudo usermod -U user2

在这里插入图片描述

9.groups(显示一个用户所加入的所有用户组)

(1)作用:显示一个用户所加入的所有用户组
(2)语法:groups 用户
(3)示例:

  • 显示zh1用户所加入的所有组
groups user1
groups suer2

在这里插入图片描述

10.groupadd(创建新的用户组)

(1)作用:创建新的用户组
(2)语法:groupadd [参数] 用户组
(3)参数:

-g 指定新建工作组的id
-r 创建系统工作组

(4)示例:

  • 创建一个新的用户组
groupadd work

在这里插入图片描述

  • 创建一个新的用户组,并指定GID号码
groupadd -g 1234 family

在这里插入图片描述

  • 创建一个新的用户组,设定为系统工作组
groupadd -r grouptest

在这里插入图片描述

11.groupdel(删除用户组)

(1)作用:删除用户组
(2)语法:groupdel [参数] [群组名称]
(3)示例:

  • 删除指定用户组
groupdel family

12.whoami(打印当前登录用户)

(1)作用:打印当前登录用户
(2)语法:whoami
(3)示例:

  • 查询当前登录的用户名
whoami

在这里插入图片描述

13.who(查看当前登录用户信息)

(1)作用:查看当前登录用户信息
(2)语法:who [参数]
(3)参数:

-a 全面信息
-b 系统最近启动时间
-l 系统登录进程
-H 带有列标题打印用户名,终端和时间
-t 系统上次锁定时间
-u 已登录用户列表
-q 列出所有已登录的用户的名称和数量

(4)示例:

  • 查看当前登录用户信息
who

在这里插入图片描述

  • 查看当前登录用户信息,并加上标题栏
who -H

在这里插入图片描述

  • 查看当前全部的登录全部用户信息
who -H -a

在这里插入图片描述

  • 查看系统的最近启动时间
who -b

在这里插入图片描述

  • 显示终端属性
who -T -H

在这里插入图片描述

  • 精简模式显示
who -q

在这里插入图片描述

14.w(显示已登录用户)

(1)作用:显示已登录用户
(2)语法: w [参数]
(3)参数

h 不打印头信息
-u 当显示当前进程和cpu时间时忽略用户名
-s 使用短输出格式
-f 显示用户从哪登录
-o 老式输出
-i 显示IP地址而不是主机名(如果可能)

(4)示例:

  • 显示目前登入系统的用户信息
w

在这里插入图片描述

  • 不打印头信息
w -h

在这里插入图片描述

  • 显示用户从哪登录

w -f

在这里插入图片描述

  • 使用短的输出格式
w -s

15.last(显示用户或终端的登录情况)

(1)作用:显示用户或终端的登录情况
(2)语法:last [选项]
(3)选项:

-R 省略hostname的栏位
-a 把从何处登入系统的主机名称或IP地址,显示在最后一行
-n<显示行数>或-<显示行数> 显示名单的行数
-i 显示ip地址而不是主机名

(4)示例:

  • 显示近期用户或终端的登录情况
last

在这里插入图片描述

  • 简略显示,并指定显示的个数
last -n 5 -R
last -5 -R

在这里插入图片描述

  • 最后一列显示主机IP地址
last -n 5 -a -i

在这里插入图片描述

16.users(显示当前登录的用户)

(1)作用:显示当前登录的用户
(2)示例:

  • 显示当前登录用户
    在这里插入图片描述

八、进程管理相关命令

1.top(实时显示进程动态)

(1)作用:实时显示进程动态
(2)语法:ps [options]
(3)选项:

-d 指定每两次屏幕信息刷新之间的时间间隔(单位为秒)
-c 切换显示命令名称和完整命令行
-p 通过指定监控进程ID来仅仅监控某个进程的状态
-n 信息更新最大次数

(4)快捷键:

c 显示进程绝对路径
P 根据CPU使用率排序
M 根据物理内存使用率排序
1 显示每个核的CPU状况

(5)示例:

-实时显示进程动态

top

在这里插入图片描述

  • 显示完整的进程信息
top -c

在这里插入图片描述

  • 指定信息刷新时间为 5 秒
top -d 5
  • 设置信息更新次数
top -n 2
  • 仅监控进程 22 的状态
top -p 22

在这里插入图片描述

2.ps(显示进程状态)

(1)作用:显示进程状态
(2)语法:ps [options]
(3)选项:

A 显示所有进程
-a 显示所有终端机下执行的程序
-x 通常与 a 这个参数一起使用,可列出较完整信息
-e 列出程序时,显示每个程序所使用的环境变量
-f 用ASCII字符显示树状结构,表达程序间的相互关系
-u <用户识别码> 列出属于该用户的程序的状况,也可使用用户名称来指定

(4)信息说明:

USER,用户名称PID,进程号
%CPU,该进程所占用CPU百分比
%MEM,该进程所占用内存百分比
VSZ,进程所占用的虚拟内存大小
RSS,进程所占用的实际内存大小
TTY,该进程运行在哪个终端上面,若与终端无关,则显示 
STAT,进程状态:R running or runnable (on run queue) 运行S interruptible sleep 可中断睡眠D uninterruptible sleep 不可中断睡眠T stopped by job control signal 停止Z defunct (“zombie”) process 僵死
START,进程启动时间
TIME,进程实际占用CPU的时间
COMMAND,该进程对应的执行程序

(5)示例:

  • 显示当前系统所有进程状态
ps -aux # 列出目前所有的正在内存当中的程序
ps -A # 显示所有进程信息
ps -ef # 显示所有进程信息,连同命令行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 树形显示所有进程
ps -axf

在这里插入图片描述

  • 查找特定进程信息
ps -aux | grep ssh

在这里插入图片描述

  • 显示指定用户信息
ps -u zh1

在这里插入图片描述

  • 配合 less 命令使用
ps -aux |less # 分页显示

在这里插入图片描述

  • 结合管道操作符与sort命令,依据处理器使用量(第三列)情况降序排序
ps -axux | sort -rnk 3

3.pstree(以树状图显示进程)

(1)作用:以树状图显示进程
(2)语法:pstree [参数]
(3)参数:

-a 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示
-c 不使用精简标示法
-G 使用VT100终端机的列绘图字符
-h 列出树状图时,特别标明现在执行的程序

(4)示例:

  • 以树状图显示进程
pstree

在这里插入图片描述

  • 显示该进程的完整指令及参数,遇到相同的进程名可以压缩显示
pstree -a
  • 显示当前所有进程的进程号和进程id
pstree -p

在这里插入图片描述

  • 同时显示用户名称
 pstree -u

在这里插入图片描述

4.pgrep(检索当前正在运行的进程)

(1)作用:检索当前正在运行的进程
(2)语法:pgrep [参数] [模式]
(3)参数:

-d 设置一个字符串,用于分隔输出的每个进程ID
-f 模式参数仅用于匹配进程名
-I 列出进程名及进程ID
-u 选择仅匹配指定有效用户ID进程

(4)示例:

  • 查找ssh进程的pid
pgrep sshd

在这里插入图片描述

  • 指定分隔符输出
pgrep sshd -d" "
  • 显示进程名称和PID
pgrep -l sshd

在这里插入图片描述

  • 匹配所有的参数列表
pgrep -fla ssh 

在这里插入图片描述

  • 使用正则表达式
 pgrep '^sshd$' -l

5.pmap(显示进程的内存映像)

(1)作用:显示进程的内存映像
(2)语法:pmap [参数] [进程ID ]
(3)参数:

x 增加一个标题行,同时显示每个内存映像实际使用的物理内存大小,以及内存已修改但尚未写到磁盘的页面数量等附加进程信息
-d 增加一个标题行,同时显示内存映射文件的偏移值,以及存储设备的主次设备号等附加进程信息
-q 采用安静方式,禁止显示汇总信息行
-V 显示命令的版本信息,然后退出

(4)示例:

  • 显示bash的地址空间,查询每个内存映像的概况
pmap 13777

在这里插入图片描述

  • 显示bash的地址空间,了解更多信息
pmap -x 13777

在这里插入图片描述

6.lsof(查看进程打开的文件)

(1)作用:查看进程打开的文件
(2)语法:lsof [参数] [文件]
(3)参数:

-a 列出打开文件存在的进程
-c <进程名> 列出指定进程所打开的文件
-g 列出GID号进程详情
-d <文件号> 列出占用该文件号的进程
+d <目录> 列出目录下被打开的文件
+D <目录> 递归列出目录下被打开的文件
-n <目录> 列出使用NFS的文件
-i <条件> 列出符合条件的进程
-p <进程号> 列出指定进程号所打开的文件
-u 列出UID号进程详情

(4)示例:

  • 查看当前系统中全部文件与进程对应信息
lsof

在这里插入图片描述

  • 显示指定目录中被调用的文件信息
lsof +d /home

在这里插入图片描述

  • 递归显示指定目录中全部被调用的文件信息
lsof +D /home

在这里插入图片描述

  • 查看谁正在使用某个文件(查找某个文件相关的进程)
lsof /bin/bash

在这里插入图片描述

  • 列出某个用户打开的文件信息
lsof -u zh1

在这里插入图片描述

  • 列出某个程序进程所打开的文件信息
 lsof -c bash

在这里插入图片描述

  • 通过某个进程号显示该进行打开的文件
 lsof -p 1930

在这里插入图片描述

  • 根据文件描述列出对应的文件信息
 lsof -d 1

在这里插入图片描述

7.jobs/bg/fg(终端任务调度)

(1)作用:终端任务调度
(2)示例:

  • 列出当前shell的任务
jobs -l

在这里插入图片描述

  • 将test2.sh调至前台运行
fg 2

在这里插入图片描述

  • 恢复test2.sh在后台运行
bg 2

在这里插入图片描述

  • 杀死test3.sh
kill 3
kill pid

在这里插入图片描述

8.kill(发送信号到进程)

(1)作用:发送信号到进程
(2)语法:kill [options] […]
(3)选项:

-a:当处理当前进程时,不限制命名和进程号的对应关系;
-l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;
-p:指定kill命令只打印相关进程的进程号,而不发送任何信号;
-s <信息名称或编号>:指定要送出的信息;
-u:指定用户。

(4)常用信号:

HUP 1 终端断线
INT 2 中断(同ctrl+c)
QUIT 3 退出(同ctrl+\)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反,fg/bg命令)
STOP 19 暂停(同ctrl+Z)

(5)示例:

  • 列出系统支持的所有信号列表
kill -l

在这里插入图片描述

  • 不指定信号
Kill pid
  • 得到指定信号的数值
kill -l SIGKILL

在这里插入图片描述

  • 杀死指定进程
kill -9 pid
  • 杀死指定用户所有进程
kill -9 $(ps -ef | grep zh1)

9.killall(使用进程名称来杀死进程)

(1)作用:使用进程名称来杀死进程
(2)语法:killall [参数] [进程名称]
(3)参数:

-l 打印所有已知信号列表
-u 杀死指定用户的进程

(4)示例:

  • 杀死所有sleep进程
killall sleep

在这里插入图片描述

  • 查看killall支持的所有信号
killall -l

在这里插入图片描述

  • 发送指定信号
killall -9 sleep

在这里插入图片描述

  • 杀死指定用户所有进程
sudo killall -u zh1

10.nice/renice(调整进程的优先级)

(1)作用:调整进程的优先级
(2)语法:
nice [参数] [命令]
renice [参数] [命令]

(3)参数:

nice:

-n 后面接一个数值,范围在-20~19

renice:

-g 指定进程组id
-p 改变该程序的优先权等级,此参数为预设值
-u 指定开启进程的用户名

(4)示例:

  • 查看nice值
ps -l

在这里插入图片描述

  • 设置优先级为15
nice -n 15 vim &
nice -15 vim &

在这里插入图片描述

  • 根据pid重新设置进程的nice值
renice 6 -p pid

在这里插入图片描述

  • 将zh1的进程nice值全部设置为-5
 renice -5 -u zh1

在这里插入图片描述

11.nohup(后台运行程序)

(1)作用:后台运行程序
(2)示例:

  • 让进程在后台运行
nohup ./test &

在这里插入图片描述

  • 输出重定向到file.txt文件
nohup ./test > file.txt 2>&1 & # 2:标准错误 1:标准输出 表示,标准错误定向到标准输出,标准输出又定向到file.txt

在这里插入图片描述

九、包管理器

1.apt(包管理工具)

(1)作用:包管理工具
(2)语法:apt [选项] 软件包
(3)示例:

  • 列出所有可更新的软件清单
sudo apt update

在这里插入图片描述

  • 升级软件可更新的软件包
sudo apt upgrade 

在这里插入图片描述

  • 单独升级某个安装包
sudo apt upgrade vim 
  • 安装软件包
sudo apt install bat
  • 删除软件包
sudo apt remove bat
  • 打印软件包信息
sudo apt show bat
  • 清理不再使用的依赖和库文件
sudo apt autoremove
  • 列出已安装的所有软件包
 sudo apt list --installed

2.apt-get(包管理工具)

(1)作用:包管理工具
(2)语法: 与apt非常类似
(3)apt与apt-get异同点:

  • apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合
  • apt视觉功能更好:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • apt替换部分apt-get系列命令,但不是全部
    在这里插入图片描述
    在这里插入图片描述

十、环境变量相关

1.export(设置环境变量)

(1)作用:设置或显示环境变量
(2)语法:export [选项] 文件
(3)选项:

-f 代表[变量名称]中为函数名称
-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中
-p 列出所有的shell赋予程序的环境变量

(4)示例:

  • 列出当前所有的环境变量
export -p

在这里插入图片描述

  • 定义环境变量
export MYENV

在这里插入图片描述

  • 定义环境变量赋值
export MYENV = 7

在这里插入图片描述

  • 修改环境变量
PATH export PATH=$PATH:/usr/local/mysql/bin

(5)注意:

  • export 的作用效果仅限于本次登陆,换个终端就不存在添加的环境变量了
    在这里插入图片描述

  • 如果想永久生效,可修改配置文件

    /etc/profile #所有用户

sudo vi /etc/profile

在这里插入图片描述
在这里插入图片描述

~/.bashrc #当前用户
sudo vi ~/.bashrc

在这里插入图片描述
在这里插入图片描述

2.source(在当前Shell环境中从指定文件读取和执行命令)

(1)作用:在当前Shell环境中从指定文件读取和执行命令,该命令通常用命令“.”来替代
(2)语法: source [文件]
(3)示例:

  • 读取和执行bashrc文件
source ~/.bashrc
. ~/.bashrc
  • 执行刚修改的初始化文件,使之立即生效
source /etc/profile

3.set/unset(设置/删除shell变量)

(1)作用:设置/删除shell变量
(2)语法:
set [参数] [变量]
unset [参数] [变量]
(3)参数:

set :-a 标示已修改的变量,以供输出至环境变量
unset:-f 仅删除函数-v 仅删除变量

(4)示例:

  • 显示所有的Shell变量
set

在这里插入图片描述

  • 设置环境变量

第1步:定义新的环境变量 declare myenv=‘666’
第2步:将定义的变量输出为环境变量 set -a myenv
第3步:查看是否设置成功 env | grep myenv
在这里插入图片描述

  • 删除环境变量
unset -v myenv
unset myenv #优先删除变量

在这里插入图片描述

十一、终端操作

1.echo(在终端输出字符串)

(1)作用:在终端输出字符串
(2)语法: echo [OPTION]… [STRING]…
(3)参数:

-n 不输出结尾的换行符
-e “\a” 发出警告音
-e “\b” 删除前面的一个字符
-e “\c” 结尾不加换行符(\c 后面的字符不会输出)
-e “\f” 换行,光标扔停留在原来的坐标位置
-e “\n” 换行,光标移至行首
-e “\r” 光标移至行首,但不换行(会覆写行开头的字符)
-E 禁止反斜杠转义,与-e参数功能相反

(4)示例:

  • 输出一段普通字符串
echo "hello world"
echo hello world

在这里插入图片描述

  • 输出变量提取后的值
echo $PATH

在这里插入图片描述

  • 取消转义
echo \$PATH

在这里插入图片描述

  • 将输出结果重定向到文件
echo "hello world" > file.txt

在这里插入图片描述

  • 显示命令执行结果
 echo `date`

在这里插入图片描述

  • 输出带有换行符的内容(开启转义)
 echo -e "a\nb\nc"

在这里插入图片描述

2.printf(格式化并输出结果)

(1)作用:格式化并输出结果
(2)语法:
printf FORMAT [ARGUMENT]…
printf OPTION

(3)转义序列
在这里插入图片描述
(4)格式替代符
在这里插入图片描述
(6)示例:
常见格式化字符

printf "%d %s \t %d \n" 100 "hello world" 200

在这里插入图片描述

3.clear(清除屏幕)

(1)作用:清除屏幕

4.history(显示与管理历史命令记录)

(1)作用:显示与管理历史命令记录
(2)语法:history [参数]
(3)参数:

-c 清空命令记录
-d 删除指定序号的命令记录
-n 读取命令记录

(4)示例:

  • 显示执行过的全部命令记录
history

在这里插入图片描述

  • 显示执行过的最近5条命令
history 5

在这里插入图片描述

  • 重新执行2039命令
 !2039

在这里插入图片描述

  • 重新执行上一条命
!!

在这里插入图片描述

  • 将搜索与你输入相匹配的最近一个命令,并重新执行它
!ls

在这里插入图片描述

  • 调用命令历史记录的递归搜索
    ctrl+r
    在这里插入图片描述
    在这里插入图片描述

  • 如果想要删除特定命令

 history -d 1234
  • 清空全部历史记录
history -c 

5.login/logout(登入/登出系统)

(1)作用:登入/登出系统
(2)示例:

  • 切换登录用户
login

在这里插入图片描述

  • 退出用户登录
logout

在这里插入图片描述

6.exit(退出终端/ssh连接)

(1)作用:退出终端/ssh连接

十二、命令相关

1.xargs(过滤器)

(1)作用:是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
(2)语法:
xargs [options] [command [initialarguments]]
(3)参数:

-n 多行输出
-d 自定义一个定界符
-I 指定一个替换字符串{}
-t 打印出 xargs 执行的命令
-p 执行每一个命令时弹出确认

(4)示例:

  • 多行输入单行输出
cat file.txt | xargs

在这里插入图片描述

  • 多行输出
cat file.txt | xargs -n3

在这里插入图片描述

  • 自定义分隔符
echo "helloXhelloXhelloXhelloX" | xargs -dX

在这里插入图片描述

  • 执行每一个命令时弹出确认
echo "helloXhelloXhelloXhelloX" | xargs -dX -p

在这里插入图片描述

  • 指定一个替换字符串{}
cat cat.txt | xargs -I {} echo {}

在这里插入图片描述

  • 打印出 xargs 执行的命令
cat cat.txt | xargs -t -I {} echo {}

在这里插入图片描述

  • 将当前目录下所有.txt文件移动到dir目录下
 ls *.txt | xargs -I {} mv {} ./dir

在这里插入图片描述

  • 使用wget下载url-list.txt下所有的URL
cat url-list.txt | xargs wget -c

2.exec(调用并执行指定的命令)

(1)作用:调用并执行指定的命令,在终端中执行后会退出终端
(2)语法:exec [参数] [命令]
(3)参数:

-c 执行指定的命令

(4)示例

  • 调用并执行指定的命令
exec -c echo hello world
  • 结合find命令使用
find . -name "*.txt" -exec ls {} \;

在这里插入图片描述

3.alias/unalias(设置/取消命令别名)

(1)作用:设置/取消命令别名
(2)示例:

  • 查看系统已经设置的别名
alias

在这里插入图片描述

  • 给命令设置别名
alias "ri=rm -i"

在这里插入图片描述

  • 取消别名
unalias ri

在这里插入图片描述

4.type(显示指定命令的类型)

(1)作用:显示指定命令的类型
(2)语法:type [参数] [命令]
(3)参数:

-a 可以显示所有可能的类型,比如有些命令如pwd是shell内建命令,也可以是外部命令。
-p 只返回外部命令的信息,相当于which命令
-f 只返回shell函数的信息
-t 返回指定类型的信息

(4)类型:

alias 别名
keyword 关键字,Shell保留字
function 函数,Shell函数
builtin 内建命令,Shell内建命令
file 文件,磁盘文件,外部命令
unfound 没有找到

(5)示例:

  • 查看命令类型
type -t ls # 别名
type -t cut # 文件
type -t for # 关键字
type -t pwd # 内部命令

在这里插入图片描述

  • 显示包含该命令的所有位置
type -a pwd

在这里插入图片描述

十三、时间相关

1.date(显示或设定系统日期和时间)

(1)作用:显示或设定系统日期和时间
(2)语法:
date [OPTION]… [+FORMAT]
date [-u|–utc|–universal] [MMDDhhmm[[
CC]YY][.ss]]

(3)参数:

-d <字符串> 显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s <字符串> 根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u 显示目前的格林威治时间

(4)日期格式字符串列表:

%H 小时(以00-23来表示)。
%I 小时(以01-12来表示)。
%K 小时(以0-23来表示)。
%l 小时(以0-12来表示)。
%M 分钟(以00-59来表示)。
%P AM或PM。
%r 时间(含时分秒,小时以12小时AM/PM来表示)。
%s 总秒数。起算时间为1970-01-01 00:00:00UTC。
%S 秒(以本地的惯用法来表示)。
%T 时间(含时分秒,小时以24小时制来表示)。
%X 时间(以本地的惯用法来表示)。
%Z 市区。
%a 星期的缩写。
%A 星期的完整名称。
%b 月份英文名的缩写。
%B 月份的完整英文名称。
%c 日期与时间。只输入date指令也会显示同样的结果。
%d 日期(以01-31来表示)。
%D 日期(含年月日)。
%j 该年中的第几天。
%m 月份(以01-12来表示)。
%U 该年中的周数。
%w 该周的天数,0代表周日,1代表周一,异词类推。
%x 日期(以本地的惯用法来表示)。
%y 年份(以00-99来表示)。
%Y 年份(以四位数来表示)。
%n 在显示时,插入新的一行。
%t 在显示时,插入tab。
MM 月份(必要)
DD 日期(必要)
hh 小时(必要)
mm 分钟(必要)
ss 秒(选择性)

(5)示例:

  • 以默认格式显示当前时间和日期
date

在这里插入图片描述

  • 以指定格式输出当前时间和日期
date +"%Y%m%d %H:%M:%S"

在这里插入图片描述

  • 以指定格式输出当前时间和日期
date + "zh: %D %T %P%thello world"

在这里插入图片描述

  • 显示昨天的日期
date -d yesterday +"%Y%m%d"
date -d next-month +%Y%m%d
date -d last-year +%Y%m%d
date -d "7 days" +%Y%m%d

在这里插入图片描述
在这里插入图片描述

  • 日期加减操作
date -d "+1 day" +%Y%m%d
date -d "-1 month" +%Y%m%d
date -d "+1 year" +%Y%m%d

在这里插入图片描述

  • 设置日期与时间
date --date '12:34:56'
date -s '12:34:56'

2.cal(显示日历)

(1)作用:显示日历
(2)语法:cal [参数] [月份] [年份]
(3)参数

1显示一个月的月历
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历

(4)示例:

  • 显示当前月份日历
cal
cal -1

在这里插入图片描述

  • 显示近期三个月的日历
cal -3

在这里插入图片描述

  • 显示指定年月的日历
cal 7 2018

在这里插入图片描述

  • 显示指定年份的全部日历
cal -y 2021
cal 2021

在这里插入图片描述

  • 显示自1月1日的天数
cal -j

在这里插入图片描述

3.crontab(定时执行任务)

(1)作用:定时执行任务
(2)语法:crontab [参数]
(3)参数:

-e 编辑该用户的计时器设置
-l 列出该用户的计时器设置
-r 删除该用户的计时器设置
-u 指定要设定计时器的用户名称

(4)使用crontab设置任务

在这里插入图片描述

  • 参数格式

      未设置的字段以星号*占位- 例:1-5,代表第1分钟到第5分钟执行(其余类推)/ 例:*/10,代表每10分钟执行(其余类推), 例:1,3,5,代表第1、3、5分钟执行(其余类推)
    
  • 字段说明

     minute		表示分钟,0~59hour 		表示小时,0~23day 		表示日期,1~31month		表示月份,1~12week 		表示星期,0~7command	 要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
    

(5)示例:

  • 创建、编辑计划任务
crontab -e
  • 查看当前计划任务
crontab -l
  • 删除该用户的计划任务
crontab -r
  • 每一分钟执行一次 /bin/ls
crontab -e # 编辑任务
* * * * * /bin/ls

在这里插入图片描述

  • 每小时的第3和第15分钟执行/usr/bin/pwd
3,15 * * * * /usr/bin/pwd
  • 每月每天的午夜 0 点 30 分, 3 点 30 分, 6 点 30分…执行 echo “haha”:
30 0-23/3 * * * echo "haha"
  • 每两个小时重启一次smb
0 */2 * * * /etc/init.d/smb restart
  • 每周六、周日的1 : 10重启smb
10 1 * * 0,6  /etc/init.d/smb restart
  • 每月1号和15号的5:50检查/home 磁盘
50 5 1,15 * * fsck /home
  • 每周日晚上10执行/home/zh1/backup这个文件
0 22 * * 0 /home/zh1/backup
  • 每月的1、11、21、31日的6:30执行一次ls命令
30 6 */10 * * ls

4.at/atq/atrm(时间执行一个任务)

(1)作用:时间执行一个任务
(2)语法:at [参数] [脚本] [时间]
(3)参数:(at)

-d 删除系统中的等待作业(等效于atrm命令)
-c 打印任务的内容
-q 使用指定的列队
-f 将指定文件提交等待作业
-t 以时间的形式提交运行作业

(4)示例:

  • 查看系统中的等待作业
atq
  • 删除系统中的等待作业
at -d 1
atrm 1
  • 交互式创建任务
at 11:10 am
echo "hello world"
ctrl+d 保存

在这里插入图片描述

  • 立即执行脚本
at -f script.sh now # 创建一个file.txt

在这里插入图片描述

  • 5分钟后执行脚本
at -f script.sh now+5 min
  • 在17:00执行脚本
at -f script.sh 17:00
  • 在2022年7月1日执行脚本
at -f script.sh 07/01/2022

在这里插入图片描述

5.time(显示命令执行时所消耗的时间)

(1)作用:显示命令执行时所消耗的时间
(2)语法:time [参数] [命令]
(3)时间:

real:
real时间是指挂钟时间,也就是命令开始执行到结束的时间。这个短时间包括其他进程所占用的时间片,和进程被阻塞时所花费的时间。
user:
user时间是指进程花费在用户模式中的CPU时间,这是唯一真正用于执行进程所花费的时间,
其他进程和花费阻塞状态中的时间没有计算在内。
sys:
sys时间是指花费在内核模式中的CPU时间,代表在内核中执系统调用所花费的时间,这也是真
正由进程使用的CPU时间。

(4)示例:

  • 显示命令date的时间统计结果
time date

在这里插入图片描述

6.watch(周期性执行命令)

(1)作用:周期性执行命令
(2)语法:watch [参数] [命令]
(3)参数:

-n 指定间隔的时间
-d 高亮显示变化的区域

(4)示例:

  • 重复执行uptime命令
watch uptime

在这里插入图片描述

  • 每隔1秒执行一次uptime,并高亮显示变化的数字
watch -n 1 -d uptime 

在这里插入图片描述

  • 监测当前目录中file文件的变化
watch -d 'ls -l | grep file'

在这里插入图片描述

  • 监测磁盘inode和block数目变化情况
watch -n 1 df -i

在这里插入图片描述

十四、小工具

1.bc(数字计算器)

(1)作用:数字计算器
(2)语法:bc [选项]
(3)示例:

  • 进去计算器
bc

在这里插入图片描述

  • 计算

      加减乘除 :+ - * /平方:^平方根:sqrt sqrt(100)设置小数位: scale echo "scale=2; (2.344 - 1.3)/1" | bc进制转换:echo "obase=10;ibase=2;110101" | bc
    

    在这里插入图片描述

2.ln(为文件创建快捷方式)

(1)作用:为文件创建快捷方式
(2)语法:ln [参数] 源文件 目标文件
(3)参数:

-s 对源文件建立符号链接,而非硬链接

(4)示例:

  • 创建软链接
ln -s file.txt sfile.txt

在这里插入图片描述

-创建硬链接

ln file.txt hfile.txt

在这里插入图片描述

3.shutdown/halt/poweroff/reboot(关闭/重启服务器)

(1)作用:关闭/重启服务器
(2)参数:

 shutdown:-h 将系统关机-c 取消关机任务-r 将系统重启
halt:-f 强制关机或重启
reboot:-w 模拟重启过程,将过程写入到日志中

(3)示例:

  • 立即关机
shutdown -h now
halt
halt -f
poweroff
  • 立即重启
shutdown -r now
reboot
reboot -w
  • 晚上11点关机
shutdown -h 21:00
  • 5分钟后关机,并通知所有人
shutdown +5 "System will shutdown after 5 minutes"
  • 取消所有关机任务
shutdown -c

相关内容

热门资讯

Python|位运算|数组|动... 目录 1、只出现一次的数字(位运算,数组) 示例 选项代...
张岱的人物生平 张岱的人物生平张岱(414年-484年),字景山,吴郡吴县(今江苏苏州)人。南朝齐大臣。祖父张敞,东...
西游西后传演员女人物 西游西后传演员女人物西游西后传演员女人物 孙悟空 六小龄童 唐僧 徐少华 ...
名人故事中贾岛作诗内容简介 名人故事中贾岛作诗内容简介有一次,贾岛骑驴闯了官道.他正琢磨着一句诗,名叫《题李凝幽居》全诗如下:闲...
和男朋友一起优秀的文案? 和男朋友一起优秀的文案?1.希望是惟一所有的人都共同享有的好处;一无所有的人,仍拥有希望。2.生活,...
戴玉手镯的好处 戴玉手镯好还是... 戴玉手镯的好处 戴玉手镯好还是碧玺好 女人戴玉?戴玉好还是碧玺好点佩戴手镯,以和田玉手镯为佳!相嫌滑...
依然什么意思? 依然什么意思?依然(汉语词语)依然,汉语词汇。拼音:yī    rán基本解释:副词,指照往常、依旧...
高尔基的散文诗 高尔基的散文诗《海燕》、《大学》、《母亲》、《童年》这些都是比较出名的一些代表作。
心在飞扬作者简介 心在飞扬作者简介心在飞扬作者简介如下。根据相关公开资料查询,心在飞扬是一位优秀的小说作者,他的小说作...
卡什坦卡的故事赏析? 卡什坦卡的故事赏析?讲了一只小狗的故事, 我也是近来才读到这篇小说. 作家对动物的拟人描写真是惟妙...
林绍涛为简艾拿绿豆糕是哪一集 林绍涛为简艾拿绿豆糕是哪一集第三十二集。 贾宽认为是阎帅间接导致刘映霞住了院,第二天上班,他按捺不...
小爱同学是女生吗小安同学什么意... 小爱同学是女生吗小安同学什么意思 小爱同学,小安同学说你是女生。小安是男的。
内分泌失调导致脸上长斑,怎么调... 内分泌失调导致脸上长斑,怎么调理内分泌失调导致脸上长斑,怎么调理先调理内分泌,去看中医吧,另外用好的...
《魔幻仙境》刺客,骑士人物属性... 《魔幻仙境》刺客,骑士人物属性加点魔幻仙境骑士2功1体质
很喜欢她,该怎么办? 很喜欢她,该怎么办?太冷静了!! 太理智了!爱情是需要冲劲的~不要考虑着考虑那~否则缘...
言情小说作家 言情小说作家我比较喜欢匪我思存的,很虐,很悲,还有梅子黄时雨,笙离,叶萱,还有安宁的《温暖的玄》 小...
两个以名人的名字命名的风景名胜... 两个以名人的名字命名的风景名胜?快太白楼,李白。尚志公园,赵尚志。
幼儿教育的代表人物及其著作 幼儿教育的代表人物及其著作卡尔威特的《卡尔威特的教育》,小卡尔威特,他儿子成了天才后写的《小卡尔威特...
海贼王中为什么说路飞打凯多靠霸... 海贼王中为什么说路飞打凯多靠霸气升级?凯多是靠霸气升级吗?因为之前刚到时确实打不过人家因为路飞的实力...
运气不好拜财神有用吗运气不好拜... 运气不好拜财神有用吗运气不好拜财神有没有用1、运气不好拜财神有用。2、拜财神上香前先点蜡烛,照亮人神...