linux基础命令
stat
uname
alias
-
- alias
- 显示别名列表
- alias key=command
- alias
-
-
- alias nk='cd /etc/sysconfig/network-scripts/'
-
yum
-
- yum install -y 包名
- yum provides 命令名
- 根据命令查出该命令的所属包,之后我们可以通过下载包使用该命令
- yum源的存放位置:/etc/yum.repo.d/
- 配置阿里云yum源:curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
- 配置本地yum源
-
- 温馨提示:在开发过程中,使用的是阿里云yum源
curl
-
- curl 是一个工具,用于传输来自服务器或者到服务器的数据。「向服务器传输数据或者获取来自服务器的数据」
- 访问网页
- curl 网页地址
- 下载网络服务器资源
- 常用参数
wget
-
- wget是个专职的下载利器,简单,专一,极致; wget可以递归,支持断点。加 -c选项不怕断网
- 默认下载路径为当前文件夹:wget 网络资源地址
- 指定下载路径:wget -O 存储文件路径 网络资源地址
- -O 将下载内容写入到file文件中
- 例子: wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
- 具体看以下这个网页:https://www.jb51.net/article/250111.htm
whereis
-
- 用于查找文件:whereis 文件名
- 该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。 该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。
- 选项:
- 用于查找文件:whereis 文件名
-
-
- 例子:
- 例子:
-
whatis
-
- 查看命令手册页信息:whatis 命令
- 精确匹配:whatis
- 精确匹配:whatis
- 查看命令手册页信息:whatis 命令
-
-
- 正则匹配:whatis -r
- whatis -r ^ls
- 查询以ls为首的手册
- whatis -r ls\$
- 查询以ls结尾的手册
- whatis -r ^ls\$
- 查询包含ls的手册
- whatis -r ^ls
- 通配符匹配:whatis -w
- whatis -w ls*
- 查询以ls为首的手册
- whatis -w *ls
- 查询以ls结尾的手册
- whstis -w *ls*
- 查询包含ls的手册
- whatis -w ls*
- 正则匹配:whatis -r
-
which
-
- 用于查看给定命令的绝对路径:which 命令
date
-
- date '+%Y-%m-%d %H-%M-%S'
- 年:%Y
- 月:%m
- 日:%d
- 小时:%H
- 分:%M
- 秒:%S
- 例子:
- date '+%Y-%m-%d %H-%M-%S'
-
- date '+%F-%T'
- 年月日:%F
- 时分秒:%T
- 例子:
- date '+%F-%T'
系统启动时间
-
- last reboot
- 查看启动系统历史时间记录:last reboot
- 查看最近的一次启动系统时间:last reboot | head -n1
- who
- who 命令用来打印当前登录的用户信息,包含了系统的启动时间 、 活动进程 、 使用者 ID、使用终端等信息,是系统管理员了解系统运行状态的常用命令。
- 查看所有选项的组合命令:who -a
- 查看最后一次系统启动时间: who -d
- 查看当前的运行级别: who -r
- 列出已登录的用户:who -u
- uptime
- up后表示系统到目前运行了多久时间
- last reboot
tree
-
- 以树形显示目录结构
- tree 目录
- 不包括隐藏文件夹
- tree -a 目录
- 包括隐藏文件夹
- tree -h 目录
- 显示文件的大小(KB,MB,GB)
- tree -L 1 目录
- 显示文件的层级,1表示1层,可改变
- tree -f 目录
- 显示每层的完整路径
- tree - o 文件存储地址 目录
- 将显示的目录存储在文件中
查看文件内容
-
- cat
- cat file
- 查看文件内容(适合小型文件)
- cat -n file
- 带行号的方式,显示文件内容
- cat -a file
- 显示文件内的隐藏信息,通常用来检查从windows中复制到linux中的文件内容
- cat file
- tac
- tac file
- 以倒立式查看文件内容(适合小型文件),是cat的反面
- tac file
- more
- more file
- 以全屏幕的方式按页显示文件内容(适合小型文件)
- 内部命令
- more file
- cat
-
- less
- less file
- 相比于more,功能更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容(对于显示大型文件具有较高的效率)。
- 内部命令
- less file
- less
-
- head
- head -n file
- 显示文件的前n行
- head -n file
- tail
- tail -n file
- 显示文件的后n行
- tail -F file
- 常用于实时监控log文件
- tail -n file
- head
diff
-
- diff 以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录。
- 正常格式(normal diff)(默认模式)
- diff t1 t2
- 使用diff命令,对t1和t2文件进行对比,得出结果,进行分析,具体看下面案例和解析
- 案例:
- diff t1 t2
-
-
-
- 解析: 第一行:3c3 是一个提示,用来说明变动位置。3c3 分成 三个部分:前面的"3",表示 t1 的第 3 行有变化;中间的 "c" 表示变动的模式是内容改变(change),其他模式还有"增加"(a,代表addition)和"删除"(d,代表deletion);后面的"3",表示变动后变成 t2 的第 3 行。 第二行:< a 分成两个部分。< a:前面的 小于号,表示要从 t1 当 中去除该行(也就是第 4 行),后面的 "a" 表示该行的内容。 第三行:--- 分隔线
- 总结: 带有c,a,d的表明哪一行出现不同,<表示问题出在左侧文件,>表示问题出在右侧文件
-
- 上下文格式(context diff)
- diff -c t1 t2
- 使用context模式进行两个文件的匹配不同,相比normal模式,更加符合人类阅读
- 案例:
- diff -c t1 t2
-
-
-
-
- 解析: 这个结果分为四个部分 第一部分的两行,显示两个文件的基本情况:文件名和时间信息。 *** t1 2023-04-25 17:19:42.996495774 -0400 --- t2 2023-04-25 17:19:56.086494853 -0400 提示:"***" 表示变动前的文件,"---" 表示变动后的文件。 第二部分是15个星号,将文件的基本情况与变动内容分割开。 *************** 第三部分显示变动前的文件,即 t1。 *** 1,4 **** a a !a a 这时不仅显示发生变化的第 3 行,还显示第 3 行的前面二行和后面一行,因此一共显示4行。所以,前面的"*** 1,4 ****"就表示,从第 1 行开始连续 4 行。 另外,文件内容的每一行最前面,还有一个标记位。 如果为空,表示该行无变化; 如果是感叹号(!),表示该行有改动; 如果是减号(-),表示该行被删除; 如果是加号(+),表示该行为新增。 第四部分显示变动后的文件,即f2。 --- 1,4 ---- a a !b a 除了变动行(第3行)以外,也是上下文各显示三行,总共显示4行。与第二行一样。
- 总结: 优点:context模式更好用,更详细,更容易阅览 缺点:如果文件大点,可能就会显得浪费空间
-
- 合并格式(unified diff)
- diff -u t1 t2
- 使用unifiex模式对两个文件内容进行对比,相比context模式,变得更加节省空间
- 案例:
- diff -u t1 t2
-
-
-
-
- 解析: 第一部分,也是文件的基本信息。 --- t1 2023-04-25 17:19:42.996495774 -0400 +++ t2 2023-04-25 17:19:56.086494853 -0400 "---"表示变动前的文件,"+++"表示变动后的文件。 第二部分,变动的位置用两个@作为起首和结束。 @@ -1,4 +1,4 @@ 前面的"-1,4"分成三个部分:减号表示第一个文件(即t1),"1"表示第1行,"4"表示连续4行。合在一起,就表示下面是第一个文件从第1行开始的连续4行。 同样的,"+1,4"表示变动后,成为第二个文件从第1行开始的连续4行。 第三部分,是变动的具体内容。 a a -a +b A 除了有变动的那些行以外,也是上下文各显示3行。它将两个文件的上下文,合并显示在一起,所以叫做"合并格式"。 每一行最前面的标志位,空表示无变动,减号表示第一个文件删除的行,加号表示第二个文件新增的行。
- 总结: 相比context更节省空间,可用于大型文件内容对比
-
- 比较目录
-
vimdiff
-
- vimdiff f1 f2
- 同时对两个文件进行内容修改,并且里面会显示内容不同的颜色
- vimdiff f1 f2
find
-
- find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或目录显示在终端
- flind 查找范围 模式
- 如果不加type模式,则默认可以查到所有文件类型和目录
- find / -name kk -type f
- 按照指定的文件名进行查找,也可以使用通配符*?
- find / -user root -type -f
- 查找属于指定用户名所有文件
- find / -size +10 -type f
- +10k
- 查找文件大于10k(kMG)
- -10k
- 查找文件小于10(kMG)
- 10k
- 查找文件小于等于10(kMG)
- 例子:查找/etc/下大于500K并且小于等于1M的文件
- +10k
-
-
- 命令解析: find 查找范围 -size(选项) +500K(大于500K) -a(并且) 1M(小于等于1M) -type(类型选项) f(文件类型) |(管道符) xargs(传递参数值) -n1(一次传递一行) du(查看传递过来的文件的大小) -hS(h:显示(kB,MB,GB), S: 显示总和)
- 注意: -a 表示并且and的意思 -o 表示或者or的意思 这两个选项后面不能跟-size +size 只能加size
- find / -type f
- f
- 查找文件为普通文件的文件
- d
- 目录
- b
- 块设备文件
- c
- 字节设备文件
- f
-
du
-
- du /
- 显示根目录磁盘所有文件和目录占空间情况
- du -ah /
- 显示根目录所有磁盘的文件和目录占空间情况,并显示KB,MB,GB
- du -sh /
- 显示整个根目录的大小
- du /
pidof
-
- pidof命令用于查找指定名称的进程的进程号
- pidof 进程名
- 选项
- -s:仅返回一个进程号; -c:仅显示具有相同“root”目录的进程; -x:显示由脚本开启的进程; -o:指定不显示的进程ID。
kill
-
- kill -9 进程号
- 强制杀死进程号对应的进程
- kill -9 进程号
killall
-
- killall 进程名称
- 通过进程名称杀死该进程,可一次性杀死多个进程
- killall 进程名称
ps
-
- ps -aux
- 以用户的形式显示所有进程,并显示后台进程运行的参数
- ps -ef
- 以全格式显示当前所有的进程
- ps -aux
top
-
- 动态显示进程
- top-d 秒数
- 指定top命令每隔几秒更新,默认是3秒
- top -i
- 使top不显示任何闲置或僵死的进程
- top -p
- 通过指定监控进程ID来仅仅监控单个进程状态
free
-
- free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。
- free -h
- 显示内存使用状况,带有KB,MB,GB
- free -hl
- 显示高低内存的利用率
- free -ht
- 显示内存总和列
- free -hs 3 -c 4
- 每隔3秒打印一次内存信息,打印4次结束
last
-
- 显示上次登录用户的列表
- last -aFiw
- 查看尽可能详细的用户登录信息
- last -d
- 将IP转换回主机名
- last -f
- 读取特定文件(二进制文件)而不是 /var/log/wtmp
- last -s time
- 显示指定时间以来的行
- last -t time
- 显示指定时间之前的行
- last -p time
- 显示在指定时间出现的人员
- last命令的数据源
- 执行 last 命令时,默认读取 /var/log/wtmp 文件 它是一个二进制文件,记录每个用户的登录系统次数和持续时间、注销、系统重启、停机等事件 它是永久记录这些信息的,系统运行时间增加,文件也会越来越大,因为它本身是一个二进制文件,所以无法直接 cat 查看,因此诞生了 last 命令来查看 还有另外一个命令,lastb 它是读取 /var/log/btmp 文件,记录登录系统失败的每个用户 当然,用 last -f 读取这个文件也是一样效果的 /var/run/utmp 它比较重要,记录着当前正在登录系统的每个用户 它的数据结构和 /var/log/wtmp 的数据结构一样 /var/log/lastlog 记录着每个用户最后登录系统的信息 它的数据结构和 /var/run/utmp 、 /var/log/wtmp 不一样
- lastlog
- 可以直接查看/var/log/lastlog,而无需指定last -f /var/log/lastlog
history
-
- history
- 显示历史命令
- !数字
- 执行数字对应的历史命令
- history -c
- 清空历史命令
- history
tr
-
- Linux tr 命令用于转换或删除文件中的字符。 tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
- cat file | tr a-z A-Z
- 将file文件的内容全部转换为大写
- cat file | tr A-Z a-z
- 将file文件的内容全部转换为小写
- cat file | tr a b
- 将file文件中为a的字符转换为b
- cat file | tr " " "\\n"
- 将file文件中的空格转化为换行符
- cat file | tr -d "a"
- 将file文件中的字符a全部删除
- cat file | tr -s "\\n"
- 将file文件中的多个连续的换行符压缩为一个
- cat file | tr -s "a" "b"
- 将file文件中的多个连续的a压缩为一个b
- cat file | tr -c a b
- 将file文件中的a字符串以外的字符转换为b
- cat file | tr -cd b
- 删除file文件中的b以外的字符
xargs
-
- xagrs -n1
- 传递单个参数,1可变
- xagrs -n1
-exec
-
- -exec 命令 选项 {} 参数2 /;
- 将-exec前面的结果,放入到后面的{}中,当成多个参数使用,以\\;结尾
- 例1:
- 将/root/test1中以t为首的文件,复制一份到/opt目录下
- find /root/test1/ -name 't*' -type f -exec cp {} /opt/ \\;
- 将/root/test1中以t为首的文件,复制一份到/opt目录下
- 例2:
- 将/opt/下的以t为首的文件,移动到/opt/kk目录下(注意:前提kk目录存在)
- find /opt/ -name 't*' -type f -exec mv {} /opt/kk/ \\;
- 将/opt/下的以t为首的文件,移动到/opt/kk目录下(注意:前提kk目录存在)
- -exec 命令 选项 {} 参数2 /;
wc
-
- 统计和检索文件内容
- wc -c file
- 统计文件内容的字节数
- wc -l file
- 统计文件内容的行数
- wc -w file
- 统计文件内容中的单词数
- 例子
dd
-
- Linux dd 命令用于读取、转换并输出数据。 dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
- 参数说明
-
- 实例
- 示例一:将testfile文件中的所有英文字母转换为大写,然后转成为testfile_1文件,在命令提示符中使用如下命令:
- 示例一:将testfile文件中的所有英文字母转换为大写,然后转成为testfile_1文件,在命令提示符中使用如下命令:
- 实例
-
-
- 示例二:在Linux 下制作启动盘,可使用如下命令:
- 示例二:在Linux 下制作启动盘,可使用如下命令:
-
-
-
- 示例三:在tmp目录中,制作一个200M的文件,可使用如下命令:
- dd if=/dev/zero of=/tmp/f1 bs=200M count=1
- /dev/zero
- 被称为黑洞
- 示例四:备份hosts文件,可使用如下命令
- dd if=/root/hosts of=/root/hosts1
- 实例五:备份压缩hosts文件,可使用如下命令
- dd if=/root/hosts | gzip > /root/hosts.gz
- 示例三:在tmp目录中,制作一个200M的文件,可使用如下命令:
-
tar
-
- tar -zxvf 被解压的文件 -C 存放地址
- 解压.tar.gz结尾的文件
- tar -jxvf 被解压的文件 -C 存放地址
- 解压.tar.bz2结尾的文件
- tar -zcvf 存放地址 被压缩的文件
- 压缩成.tar.gz结尾的文件
- tar -jcvf 存放地址 被压缩的文件
- 压缩成.tar.bz2结尾的文件
- tar -zxvf 被解压的文件 -C 存放地址
grep
-
- grep "name" file
- 从file中过滤出包含name内容的行
- grep "^name" file
- 从file中过滤出以name开头的行
- grep "name\$" file
- 从file中过滤出以name结尾的行
- grep -i "name" file
- 从file中过滤出忽略大小写包含name的行
- grep -v "name" file
- 从file中过滤出不包含name的行,v取反
- grep "^\$" file
- 过滤出空行
- grep -A 1 "" file
- 从file中过滤出包含name的行,以及该行下面一行的内容
- grep -B 1 "" file
- 从file中过滤出包含name的行,以及该行上面一行的内容
- grep -C 1 "" file
- 从file中过滤出包含name的行,以及该行上面和下面一行的内容
- grep -n "name" file
- 从flile中过滤出包含name的行,并显示行号
- grep -o "name" file
- 显示匹配过程
- grep -c "name" file
- 显示符合条件的行的数量
- 同时过滤多个关键字
- grep -E 'master|node1' file
- egrep 'master|node1' file
- 从file文件中,过滤出包含master或node1的行
- grep 'master\\|node1' file
- grep "name" file
gzip
-
- gzip不能压缩目录,只能压缩文件
- gzip 被压缩的文件
- 压缩文件为.gz结尾的压缩文件,存放在当前目录下
- gunzip 被解压的文件
- 将.gz结尾的压缩文件解压到当前目录下
bzip2
-
- bzip不能压缩目录,只能压缩文件
- bzip2 被压缩的文件
- 压缩文件为.bz2结尾的压缩文件,存放在当前目录下
- bunzip2 被解压的文件
- 将.bz2结尾的压缩文件解压到当前目录下
cut
-
- cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。
- cut -d ':' -f n file
- n 表示分割后取出来的第几列,可以是多列用,号分隔,也可以范围-分隔
- cut -d ':' -f 1,2,3 file
- d 表示文件内容按照什么分割
- 注意:不改变文件内容
- n 表示分割后取出来的第几列,可以是多列用,号分隔,也可以范围-分隔
sed
-
- sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。
- sed -e '2a\\kk\\' f1
- 在f1文件的第二行后面添加一行内容,内容:kk,打印输出
- sed '1d' f1
- 将f1文件的第一行删除,打印输出
- sed '2s\\a\\b' f1
- 将f1文件的第二行,为a的字符串转换成b,打印输出
- sed -i '2s\\a\\b' f1
- 将f1文件的第二行,为a的字符串转换成b,并且源文件内容改变
- sed 's\\a\\b\\g' f1
- 将f1文件内,所有为a的字符串转换成b
- 总结: a 添加 d 删除 s 查找替换 i 改变源文件 g 全局(global)
awk
-
- 一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。
- 基本用法
- awk [选项参数] 'pattern1{action1} pattern2{action2}...' filename pattern:表示AWK在数据中查找的内容,就是匹配模式 action:在找到匹配内容时所执行的一系列命令
- awk -F , '{print \$1 "," \$3} ' /etc/passwd
- 命令解析
- awk -F 分割符 '{命令 第一列 ","' 第三列}' 文件
- 打印/etc/passwd文件中,以 ,为分割符,对整个文件进行分割,取出第一列和第三列,第一列与第三列之间用 , 分隔
- 注意:-F 选项用于指定分割符
- 命令解析
- awk -F : '/^root/{print \$1 ":" \$3}' /etc/passwd
- 命令解析:
- awk -F 分割符 '/匹配模式/{命令 第一列 ":" 第三列}' 文件
- 打印/etc/passwd文件中,以:为分割符,并查找以root为行首的行进行分割,取出第一列和第三列,第一列和第三列之间用:分隔
- 注意:
- 只有匹配了pattern才会执行action
- 命令解析:
- awk -F : 'BEGIN{print "start"}/^root/{print \$1 ":" \$3}/^liu/{print \$1 ":" \$3}END{print "end"}' /etc/passwd
- 命令解析:
- awk -F 分割符 'BEGIN{命令1}匹配模式1{命令2}匹配模式2{命令3}END{命令四}' 文件
- 命令解析:
-
-
- 注意: BEGIN 在所有数据读取行之前执行; END 在所有数据执行之后执行;
- awk -v i=1 -F: '{print \$3+i}' /etc/passwd
- 命令解析
- awk -v 变量=值 -F 分割符 '{命令} ' 文件
- 打印第三列每行数值+1后的结果
- 命令解析
- awk的内置变量
-
-
-
-
- 例子:
- 查询sed.txt中空行所在的行号
- awk '/^\$/{print NR}' sed.txt
- 例子:
-
-
sort
-
- sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。
- 基本语法
- sort 选项 参数
- 常用选项
- -n 依照数值的大小排序 -r 以相反的顺序来排序 -t 设置排序时所用的分隔字符 -k 指定需要排序的列 -u 去重
- 案例
- 案例1:
- 对f1文件内容去重
- sort -u f1
- 对f1文件内容去重
- 案例1:
uniq
-
- uniq 用于去除有序文件中的重复行并将结果输出到标准输出。 为了使 uniq 起作用,所有的重复行必须是相邻的,所以 uniq 经常和 sort 合用。
- 基本语法
- uniq 选项 参数
- 常用选项
- -c 显示连续出现的次数 -d 显示连续重复出现的行,行数>=2 -i 忽略大小写字符的不同 -u 只显示唯一的行,即出现连续次数等于1的行 -s 跳过前面N个字符不比较 -w 指定每次行要比较的前N个字符数
- 案例
- 案例一:
- uniq 结合sort命令,对f1排序文件去重
- cat f1 | sort | uniq
- 其实跟sort -u f1 效果一样
- 案例二:
- 排序之后删除重复行,并统计该行重复的次数
- sort f1 | uniq -c
- 案例一:
seq
-
- 生成自然序列
- seq 5
- 默认从1开始,自增1
- 语法
- seq [选项] [起始值] [步长] [最终值]
- 选项
- 特定选项 -f
- 特定选项 -f
-
-
- 统一宽度 -w
- 统一宽度 -w
-
-
-
- 统一形式 -s
- 统一形式 -s
-
clear
-
- 清屏操作
echo
-
- echo "ss"
- 简单输出字符使用,但无法使用转义字符
- echo -e "\\tss"
- 可以使用转义字符
- echo "ss"