Linux命令总结
声明
-
本文中,[参数]表示文件、目录或路径; [name]表示文件名;
[number]表示任意整数;[letter]表示任意字母;[word]表示任意内容;
文章目录
- Linux命令总结
-
- 声明
- xshell快捷键
- 缓冲区(buffer)和缓存区(cache)
- man 查看帮助手册
- 常见的Linux操作系统类型
- --help 查看帮助信息
- shutdown 关机重启命令
- pwd 查看当前所在的路径
- cd 切换用户当前工作目录
- ls 显示目录内容列表
- stat 用于显示文件的状态信息(时间)
- file 查看文件类型
- which 查找并显示给定命令的绝对路径
- du 显示每个文件和目录的磁盘使用空间
- touch 创建新的空文件
- cat 查看文件的内容
- mkdir 创建目录
- tree 树状图列出目录的内容
- cp 文件的复制操作
- mv 移动文件或对文件重命名
- rm 删除给定的文件和目录
- vi编辑器
- echo 输出指定的字符串或者变量
- tail 在屏幕上显示指定文件的末尾若干行
- head 显示文件的开头部分
- less 上下翻页浏览文件内容
- more 显示文件内容,每次显示一屏
- wc 统计文件的字节数、字数、行数
- sort 对文本文件中所有行进行排序
- uniq 显示或忽略重复的行。
- 日志分析实战(四剑客、sort、uniq、head的实际应用)
- lrzsz 上传、下载文件的插件
- 压缩与解压缩
- hostnamectl 查看与修改主机名
- cat /etc/os-release 查看版本信息
- uname 打印系统信息(内核版本)
- lscpu 显示有关CPU架构的信息
- free 显示内存的使用情况
- df 显示磁盘的相关信息
- uptime 查看系统负载信息
- ln 软硬链接的创建
- 用户管理
- sudo/visudo 以其他身份来执行命令(默认root)
- alias 定义或显示别名
- md5与aide 计算和校验文件报文摘要的工具程序
- 权限管理
- date 显示或设置系统时间与日期
- Linux系统的特殊符号
- 正则表达式
- 四剑客
- 软件安装 yum/apt/rmp/dpkg
- dd 复制文件并对原文件的内容进行转换和格式化处理
- 系统优化
- crontab 定时任务
- 磁盘管理
- 系统重要的配置文件
- 进程管理
xshell快捷键
Ctrl + C:中断当前运行的命令。
Ctrl + Z:将当前任务放到后台,并暂停。
Ctrl + A:移动光标到行首。
Ctrl + E:移动光标到行尾。
Ctrl + U:剪切;删除光标前的所有内容。
Ctrl + K:剪切;删除光标后的所有内容。
Ctrl + Y:粘贴;Ctrl + U或Ctrl + K删除的内容。
Ctrl + L:清屏,等同于输入clear命令。
Tab:命令或文件名自动补全。
缓冲区(buffer)和缓存区(cache)
将数据写入到内存中,这个存放数据的内存空间在linux系统中一般被称为缓冲区(buffer),例如:写入到内存缓冲区,即写缓冲。
从内存里读取数据,这个存放数据的内存空间在linux系统中一般被称为缓存区(cache),例如:从内存读取,即读缓存
man 查看帮助手册
语法形式
man [linux命令]
示例
[root@Dezyan ~]# man mkdir
常见的Linux操作系统类型
Kylinv10sp3 国有政府机构使用 政治原因
Ubuntu22.04.4 开发人员进行使用
centos7.6/centos7.9 国有互联网企业 已停止维护
Debian 金融行业应用
kali 网安人员关注的
–help 查看帮助信息
语法形式
[Linux命令] --help
示例
[root@Dezyan ~]# mkdir --help
shutdown 关机重启命令
语法形式
shutdown
shutdown [选项]
选项
-c # 取消关机
-h now/[number] # now:立刻关机;[number]:n分钟后关机
# <=>halt;init 0;
-r [number] # [number]:n分钟后重启系统;不加[number]:默认一分钟后重启
# <=>reboot;init 6;
pwd 查看当前所在的路径
语法形式
pwd
示例
[root@Dezyan ~]# pwd
/root
cd 切换用户当前工作目录
语法形式
cd [选项] [参数]
选项(可为空)
~ # 切换到家目录 <=> 直接输入cd
- # 返回上一次所在的目录
. # 进入当前目录
.. # 进入上一级目录
# ../../ 进入上两级目录
/ # 进入到根目录
示例
#进入到/opt目录下
[root@Dezyan ~]# cd /opt
[root@Dezyan opt]#
ls 显示目录内容列表
语法形式
ls [选项] [参数]
选项(可为空)
-l #显示文件的详细信息 <=> ll
-a #显示目录下所有文件信息(包括隐藏文件)
-i #显示文件inode号
-s #显示文件大小信息
-h #显示文件大小信息(以人类可读方式查看)
-t # 按时间信息排序。
#常用 -lhi 来展示文件全部信息;
示例
[root@Dezyan ~]# ls -l /opt/
总用量 0
dr-xr-xr-x 5 root root 79 3月 24 2023 kylin-sm-package
drwxr-xr-x 4 root root 58 10月 25 00:43 patch_workspace
[root@Dezyan ln]# ls -lih /etc/sysconfig/network-scripts/ifcfg-ens33
1324991 -rw-r--r-- 1 root root 357 10月 24 16:45 /etc/sysconfig/network-scripts/ifcfg-ens33
ls -lhi输出内容详解
[root@Dezyan ~]# ls -lhi /etc/hosts
67162862 -rw-r--r-- 1 root root 158 6月 23 2020 /etc/hosts
第1列 文件inode号信息: 从磁盘调取查看数据的索引(指示板)
第2列 文件数据类型: 文本文件 目录文件 设备文件 链接文件...
第3列 文件权限信息: 文件如何进行管理操作,登录系统用户可以不可以管理操作指定文件
第4列 数据文件硬连接数:查看文件数据多个方式
第5列 文件数据属主信息:文件创建者 文件管理者
第6列 文件数据属组信息:除了文件创建者和管理者,还有哪些其他的系统用户可以管理文件“}
第7列 文件数据大小信息:占用磁盘空间情况(默认大小单位 字节)
第8列 文件数据修改时间:文件信息被修改编辑的时间记录信息
stat 用于显示文件的状态信息(时间)
stat
输出的文件信息相较于ls
更全面
语法格式
stat [参数]
输出内容详解(ubt系统)
root@Dezyan01:~# stat /etc/hosts
File: /etc/hosts
Size: 204 Blocks: 8 IO Block: 4096 regular file
Device: fc03h/64515d Inode: 654183 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 4/ adm)
Access: 2024-11-04 20:17:58.347748698 +0800
Modify: 2024-09-26 16:56:53.159484223 +0800
Change: 2024-09-26 16:56:53.159484223 +0800
Birth: 2024-09-26 16:56:53.159484223 +0800
对应中文可将字符集改为中文查看,或在国产Linux系统kylin中查看:
[root@Dezyan ~]# stat /etc/hosts
文件:“/etc/hosts”
大小:158 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:67162862 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2024-11-04 08:14:07.897695822 +0800
最近更改:2020-06-23 14:11:43.000000000 +0800
最近改动:2024-10-25 00:42:08.647004736 +0800
创建时间:-
- Access 访问时间 atime 看一次文件,时间就会改变。
- Modify 修改时间 显示文件上一次修改时间
- Change 属性改变时间 ctime 上一次修改文件属性的时间
- Birth 创建时间 btime 文件的创建时间
inode和block
inode(索引节点)
每个文件、目录和软链接在文件系统中都有一个与之对应的inode。
注意:inode号是inode的唯一标识符,它是一个数字,用于在文件系统中快速定位inode。
- 存储文件的属性信息:inode存储文件的元信息,包括文件的字节数、文件拥有者的User ID(UID)、文件的Group ID(GID)、文件的读、写、执行权限、文件的时间戳(atime、ctime、mtime)等。
- 作为文件的索引:inode不仅存储文件的属性信息,还指向文件的实际数据块(指向数据块的指针)。通过inode,系统可以快速定位和访问文件内容。
- 硬连接:具有相同inode的文件互为硬连接文件,这意味着它们共享同一个inode,但可以有不同的文件名。
block(数据块)
文件存取的最小单位,用来存储文件的具体内容。
注意:一个文件至少占用一个block,如果文件大小超过一个block的容量,则会占用多个block。
如果未满一个block,仍会占用一个block,不会将剩余的空间分给其他文件存储使用。
inode和block的关系
-
在Linux文件系统中,每个文件必须占用一个inode和一个或多个block。
-
inode用于存储文件的元信息和作为文件的索引,而block用于存储文件的具体内容。
-
通过inode中指向数据块的指针,系统可以快速定位和访问文件的数据(block)。
file 查看文件类型
语法格式
file [选项] [参数]
选项
-b #列出辨识结果时,不显示文件名称;
示例
#查看/etc/hosts的文件类型,且输出时不显示文件名称
[root@Dezyan ~]# file -b /etc/hosts
ASCII text
常见的文件类型
- #普通文件;
d #目录;
l #软连接;
c #字符设备;/dev/null,不断吸收(黑洞);/dev/urandom ,/dev/zero不断输出(白洞);
b #块设备;
s #socket文件、套接字文件;
详解
1.常用字节文件:
urandom 不停的往外吐 没啥用
/dev/null 可以将命令的结果定向到此文件;
写脚本执行命令的时候,会根据自己想要输出的内容来定义输出格式。
使用 ping -c1 -W2 www.baidu.com &>/dev/null 后
可通过$? 判断上一条命令是否成功 0是成功 非0失败
/dev/zero 用来生成固定大小的文件 或者磁盘读写测试
dd if=/dev/zero of=/tmp/1.txt bs=1M count=1000
which 查找并显示给定命令的绝对路径
语法形式
which [参数]
示例
#查找pwd、vim命令的绝对路径
[root@Dezyan ~]# which pwd
/usr/bin/pwd
[root@Dezyan ~]# which vim
/usr/bin/vim
du 显示每个文件和目录的磁盘使用空间
语法形式
du [选项] [参数]
选项
-s #仅显示总计,只列出最后加总的值。
-h #以K,M,G为单位,提高信息的可读性。
#上述两个参数通常一起使用,表示查看目录或者文件的大小
示例
#将/var/log中的所有文件和目录按大小排序
[root@Dezyan ~]# du -sh /var/log/* | sort -rhk1
touch 创建新的空文件
语法形式
touch [参数] [参数] ....
参数选项
{
[number]/[letter]..[number]/[letter]} #批量创建文件
示例
#创建单个文件
[root@Dezyan ~]# touch 1.txt
#同一目录下创建多个文件
[root@Dezyan ~]# touch 1.txt 2.txt 3.txt
#不同目录下创建多个文件
[root@Dezyan ~]# touch 1.txt /opt/2.txt
#批量创建Dezyan01.txt....Dezyan10.txt文件
[root@Dezyan Dezyan01]# touch Dezyan{01..10}.txt
[root@Dezyan Dezyan01]# ls
Dezyan01.txt Dezyan03.txt Dezyan05.txt Dezyan07.txt Dezyan09.txt
Dezyan02.txt Dezyan04.txt Dezyan06.txt Dezyan08.txt Dezyan10.txt
注意
#如果创建的文件存在,只会修改文件时间,不会修改内容;
#使用绝对路径创建时,必须保证目录存在;
cat 查看文件的内容
语法形式
cat [选项] [参数]
选项
-n #显示文件行数
-E #每行行尾显示'$'符
-A #同-E
示例
[root@Dezyan ~]# cat -n /etc/hosts
1 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
2 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
mkdir 创建目录
语法形式
mkdir [选项] [参数]
选项
-p #递归创建目录
参数选项
{
[number]/[letter]..[number]/[letter]} #批量创建目录
示例
#同一目录下创建多个目录
[root@Dezyan dzt]# mkdir a b c
[root@Dezyan dzt]# ls
a b c
#在不同目录下创建多个目录
[root@Dezyan dzt]# mkdir f /opt/e
#递归创建多级目录
[root@Dezyan dzt]# mkdir -p /aa/bb/cc/dd
#批量创建Dezyan01....Dezyan10目录
[root@Dezyan bb]# mkdir Dezyan{01..10}
[root@Dezyan bb]# ls
cc Dezyan02 Dezyan04 Dezyan06 Dezyan08 Dezyan10
Dezyan01 Dezyan03 Dezyan05 Dezyan07 Dezyan09
tree 树状图列出目录的内容
语法形式
tree [选项] [参数]
选项
-L [number] #显示一级目录下所有文件
示例
#显示目录下所有文件
[root@Dezyan ~]# tree dzy
dzy
├── a
│ └── b
│ └── c
│ └── d
│ └── e
#显示目录下一级目录的所有文件
[root@Dezyan ~]# tree -L 1 dzt
dzt
├── a
cp 文件的复制操作
语法形式
cp [选项] [源文件地址参数] [目标地址参数]
选项
-r #递归处理,将指定目录下的所有文件与子目录一并处理;
-i #覆盖既有文件之前先询问用户;
-p #保留源文件或目录的属性;
-d #当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-a #此参数的效果和同时指定"-dpR"参数相同;
示例
#将某一文件复制到某一目录之中
[root@Dezyan ding]# cp 1.txt /zhi/
[root@Dezyan ding]# ll /zhi
-rw-r--r-- 1 root root 11 10月 25 23:09 1.txt
#将某一目录及目录中的所有文件复制到另一个目录之中
[root@Dezyan ding]# ll aa/bb/cc/dd/2.txt
-rw-r--r-- 1 root root 0 10月 25 23:11 aa/bb/cc/dd/2.txt
[root@Dezyan ding]# cp -r /ding /zhi
[root@Dezyan ding]# tree /zhi
/zhi
├── 1.txt
└── ding
├── 1.txt
└── aa
└── bb
└── cc
└── dd
└── 2.txt
mv 移动文件或对文件重命名
语法形式
mv [选项] [源文件地址参数] [目标地址参数]
选项
-i #移动既有文件之前先询问用户;
-t #可更改语法顺序为 mv [选项] [目标地址] [源文件地址]
示例
#对当前目录的文件进行重命名(移动同理)
[root@Dezyan ding]# ll
-rw-r--r-- 1 root root 11 10月 25 23:09 1.txt
drwxr-xr-x 3 root root 16 10月 25 23:20 aa
[root@Dezyan ding]# mv ./1.txt ./aa.txt
[root@Dezyan ding]# ls
aa aa.txt
rm 删除给定的文件和目录
语法形式
rm [选项] [参数] [参数] [参数] ...
选项
-i #删除文件之前先询问用户;
-r #递归处理,将指定目录下的所有文件与子目录一并处理;
-f #强制删除文件或目录;
示例
#强制删除一个(多个)文件
[root@Dezyan ding]# touch 1 2 3 4
[root@Dezyan ding]# ls
1 2 3 4 aa aa.txt
[root@Dezyan ding]# rm -f 1 2 3 4
[root@Dezyan ding]# ls
aa aa.txt
#强制删除一个目录及目录下的所有文件
[root@Dezyan ding]# tree aa
aa
└── bb
└── cc
└── dd
└── 2.txt
3 directories, 1 file
[root@Dezyan ding]# rm -rf aa
[root@Dezyan ding]# tree aa
aa [error opening dir]
0 directories, 0 files
vi编辑器
三种模式及相关命令
-
命令行模式(在其他两种模式下,按Esc即可进入) (使用vi编辑器是此模式为进入时的默认模式)
相关命令
<#>#移动:
G #移动光标到文件<最后一行>;
gg #移动光标到文件内容的的<第一行>;
Ngg #移动光标到文件内容的<第N行>;
^ #移动光标到当前行<行首>;
$ #移动光标到当前行<行尾>;
##删除:
x或X #删除一个字符,x删除光标<后>的,而X删除光标<前>的;
D #删除从当前光标到光标所在行尾的<全部字符>;
dd #删除光标行<整行>的内容;
ndd #删除当前行及其后<n-1行>;
##复制粘贴:
nyy #将当前行及其下n行的内容复制;
p #粘贴文本操作,将复制的内容粘贴到当前光标所在位置的<下方>;
P(大写) #粘贴文本操作,将复制的内容粘贴到当前光标所在位置的<上方>;
##查找:
/[字符串] #从<当前光标所在位置>开始向文件<尾部>查找指定字符串的内容;
?[字符串] #从<当前光标所在位置>开始向文件<头部>查找指定字符串的内容;
# n 向下继续查找;
# N 向上继续查找;
##撤销:
u #撤销上一次的操作;
-
插入模式(在命令行模式下,按i即可进入)
相关命令
A #进入插入模式,并在<行末>添加文本;
a #进入插入模式,并在当前字符<后>添加文本;
i #进入插入模式,并在当前字符<前>插入文本;
I #进入插入模式,并在<行首>插入文本;
o #进入插入模式,并在当前行<后面>插入一空行;
O #进入插入模式,并在当前行<前面>插入一空行;
-
底行模式(在命令行模式下,按:即可进入)
相关命令
set nu #编辑时显示行号;
set nonu #编辑时不显示行号;
w #在执行存盘操作;w!表示强制保存;
q #执行退出vi操作;q!表示强制退出;
wq #执行存盘退出操作;
$ #光标跳转到最后一行的行首;
示例1:批量添加注释
1. 使用vim打开文件;
2. ctrl+v选择需要添加注释的行;
3. 输入大写I,并输入#;
4. Esc退出,完成批量注释;
示例2:替换动作
:s/root/oldboy/g # 只替换光标所在行的所有root
:%s/root/oldboy/g # 将文件中所有的root替换成oldboy
echo 输出指定的字符串或者变量
语法形式
echo [word] [重定向符号] [参数]
重定向符号
> #覆盖输入;
>> #追加输入;
示例
#将手机号覆盖输入到phone.txt文件中
[root@Dezyan Dezyan01]# echo 110 > phone.txt
[root@Dezyan Dezyan01]# cat phone.txt
110
#将手机号追加输入到phone.txt文件中
[root@Dezyan Dezyan01]# echo 120 >> phone.txt
[root@Dezyan Dezyan01]# echo 119 >> phone.txt
[root@Dezyan Dezyan01]# cat phone.txt
110
120
119
tail 在屏幕上显示指定文件的末尾若干行
语法形式
tail [选项] [参数]
选项
-[number]/-n[number] #输出文件的尾部number行内容;
-f #显示文件最新追加的内容;
示例
#查看/var/log/secure日志文件中的后10行
[root@Dezyan ~]# tail -n10 /var/log/secure
head 显示文件的开头部分
语法形式
head [选项] [参数]
选项
#默认显示前10行内容;
-[number] #输出头部number行的内容;
示例
#查看/var/log/secure日志文件中前5行的内容
[root@Dezyan ~]# head -5 /var/log/secure
Oct 24 16:46:29 Dezyan polkitd[758]: Loading rules from directory /etc/polkit-1/rules.d
Oct 24 16:46:29 Dezyan polkitd[758]: Loading rules from directory /usr/share/polkit-1/rules.d
Oct 24 16:46:29 Dezyan polkitd[758]: Finished loading, compiling and executing 5 rules
Oct 24 16:46:29 Dezyan polkitd[758]: Acquired the name org.freedesktop.PolicyKit1 on the system bus
Oct 24 16:46:30 Dezyan sshd[948]: Server listening on 0.0.0.0 port 22.
less 上下翻页浏览文件内容
语法形式
less [参数]
快捷键
ctrl + f #下一页;
ctrl + b #上一页;
g #第一行;
G #最后一行;
[number] #第N行;
/ #搜索;
q #退出;
more 显示文件内容,每次显示一屏
语法形式
more [参数]
wc 统计文件的字节数、字数、行数
语法形式
wc [选项] [参数]
选项
# 查看文件的字节数、字数、行数;
-l # 统计行数;
示例
#查看文件的字节数、字数、行数
[root@Dezyan ~]#wc test.txt
## 输出结果
7 8 70 test.txt
##行数 单词数 字节数 文件名
#统计文件行数
[root@Dezyan ~]#wc -l /etc/services
11473 /etc/services
sort 对文本文件中所有行进行排序
语法形式
sort [选项] [参数]
sort [选项] [选项] [参数]
选项
#<=> cat 文件 | sort 默认第一列内容进行排序(从小到大)
-r #倒序排序(从大到小);
-n #根据数字排序;
-rn #根据数字逆序排序;
-k[num] #按照第n列进行排序;
-k[n1],[n2] #按照第n1列,第n2列(若第n1列相同则比较第n2列)进行排序
-kn.m #按照第n列的第m个字符排列
-h #根据存储容量排序(注意使用大写字母,例如:2K 1G)。
-t[符号] #指定分隔符
注意
#在选项中:
# -rnk[num] 三个选项可以连在一起使用
# -rhk[num] 三个选项可以连在一起使用
## -n 和 -h 两个选项互相冲突,不能一起使用
## -t[符号] 与所有选项都冲突,需要单独使用
示例
#将文件按照第二列的大小逆序排序
[root@Dezyan ~]# sort -rnk2 num.txt
#将/var/log中的所有文件和目录按大小排序
[root@Dezyan ~]# du -sh /var/log/* | sort -rhk1
#根据/etc/passwd 第3列按照大小逆序排序
[root@Dezyan ~]# sort -rnk3 -t: /etc/passwd | head -3
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
deyzan:x:12346:12346::/home/deyzan:/bin/bash
docker:x:12345:12345::/home/docker:/sbin/nologin
#排序:在ip.txt文件中,以.为分隔符,按照第3列,第4列(若第三列相同则比较第四列)进行从小到大排序
[root@Dezyan ~]# sort -t. -k3,4 ip.txt
uniq 显示或忽略重复的行。
语法形式
uniq [选项] [参数]
选项
#邻行去重;
-i #忽略大小写的差异;
-d #所有邻近的重复行只被打印一次。
-c #统计文件中相同行出现的次数
示例
#统计一个文件,其内容为:第一列是用户登录的ip地址,然后统计每个ip出现的次数,并取出次数最多的前5个
cat access.log | sort | uniq -c | sort -rn | head -5
日志分析实战(四剑客、sort、uniq、head的实际应用)
1)查看用户登录失败的ip地址
- 1️⃣过滤出failed password,失败登录。 取行
- 2️⃣ 提取出这行中的ip的列。 取列
- 3️⃣ 对ip进行排序。 相同的ip在一起。
- 4️⃣ 去掉重复,统计次数。 去重并统计次数。uniq -c
- 5️⃣ 对次数排序并取出前20
#本命令在ubt系统中使用
root@Dezyan02:~# grep -i 'failed password' /var/log/auth.log |awk '{print $(NF-3)}' |sort |uniq -c |sort -rn |head -20
2)若IP以列规律显示,亦可使用awk命令
awk '{print $1}' access.log |sort |uniq -c |sort -rn |head -20
lrzsz 上传、下载文件的插件
安装
yum install -y lrzsz
命令说明
rz #上传 rz回车即可或直接拖拽
sz #下载 sz /etc/hostname 下载指定的文件。
压缩与解压缩
tar
语法形式
tar [选项1]