Linux 命令大全
1、命令帮助手册—help、man
# 查看命令的帮助文档
man 命令
命令 --help
info 命令
# 查看命令存在哪里
[root@localhost ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
2 、 更改目录—cd
# 进入opt目录
cd /opt
#几个特殊的符号表示
. 当前目录
.. 上一级目录
- 上一次目录
~ home目录 ,root用户的话进入 root目录, 普通用户的话进入 home/用户名 目录
3 、 创建文件夹—mkdir
# 创建一个abc文件夹
mkdir abc
# 在abc下创建一个123文件夹,若abc不存在,则无法创建123
mkdir abc/123
# 递归创建文件夹,若abc不存在,则会先创建abc,再创建123
mkdir -p abc/123
# 批量创建文件夹
mkdir {a,b,c,d}
# 批量创建格式类似的文件夹, 创建 abc1 abc2..到abc10 的文件夹
mkdir abc{1..10}
4 、查看目录下的文件—ls
语法 : ls 可选参数 文件夹
-a 列出所有文件,包含隐藏文件
-l 同 ll 命令,显示文件详情
-h 以人们常见的形式显示文件大小
-t 根据文件的修改时间倒序
-F 显示的文件,不同类型有不一样的后缀 /: 表示文件夹
@:表示软连接(类似快捷方式)
*:表示可执行文件
-d 显示文件夹信息,不显示文件夹下的内容
-S 按照文件的大小逆序显示
-r 反转, -S是文件从大到小排列, -Sr是文件从小到大排列
-i 显示文件的inode节点
5 、系统时间—date 、 hwclock
# 显示系统时间
[root@yqs work]# date
Fri Nov 20 14:06:16 CST 2020
# 指定格式显示系统时间
[root@yqs work]# date "+%Y-%m-%d"
2020-11-20
[root@yqs work]# date "+%H:%M:%S"
14:57:52
# 手动设置时间
[root@yqs ~]# date -s '2020-11-20 19:45:30'
# 手动设置后,重启后会失效,需要将时间写入BIOS: 将系统时间同步到硬件时间上
[root@yqs ~]# hwclock -w
# 将硬件时间同步到系统时间上
[root@yqs ~]# hwclock -s
# 其他显示时间命令
[root@yqs ~]# uptime
19:49:12 up 5 min, 1 user, load average: 0.00, 0.01, 0.01
#系统时间 运行时间 登录用户数 过去 1分钟 5分钟 15分钟的系统负载的均值
5.1、关于硬件时间跟系统时间
硬件时间是只bios里面的时间,系统时间是kernel中的时钟
所有系统执行的命令和函数都是依照系统时钟而设定,
当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。
hwclock是一种访问硬件时钟的工具
显示硬件时钟 hwclock 或者 hwclock -r 或者 hwclock --show
详细文档参阅:https://blog.51cto.com/shisen/1847111
6、文件查找—find 、 locate
6.1、stat
# stat 查看文件详细信息
[root@localhost opt]# stat geci.txt
File: ‘geci.txt’
Size: 1111 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 8768655 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:usr_t:s0
Access: 2021-06-28 15:58:40.789724487 +0800
Modify: 2021-06-28 15:58:32.433725026 +0800
Change: 2021-06-28 15:58:32.434725026 +0800
Birth: -
# file : 文件名字
# Size : 文件大小/字节
# Access : atime 指文件上一次打开的时间
# Modify :mtime 指文件内容上一次变动的时间
# Change :ctime 指 inode 上一次变动的时间
6.2、find
# find 在哪里找 找什么
# 根据名称搜索文件,以下命令---在 根路径 搜索名称为'init'的文件,精确查找
[root@yqs ~]# find / -name init
/sys/fs/selinux/initial_contexts/init
/etc/sysconfig/init
# 根据名称查找,模糊匹配, 结果太多,可用 | more 分页
[root@yqs ~]# find / -name *init* | more
/boot/initramfs-0-rescue-eeab2f6320ae4cc99443c4e9e74b0760.img
/boot/initramfs-3.10.0-1127.el7.x86_64.img
/boot/initramfs-3.10.0-1127.el7.x86_64kdump.img
# 根据名称查找,模糊匹配,指定文件名字段数,init开头,且向后模糊匹配三个字符
[root@yqs ~]# find / -name init???
/dev/initctl
/run/systemd/initctl
/etc/inittab
/usr/lib/dracut/modules.d/99base/init.sh
# 忽略大小写查找 "." 表示在当前目录下查找, -i表示忽略大小写
[root@yqs test]# find . -iname xuzhu
./xuzhu
./XuZhu
# 指定目录层级搜索 -maxdepth n -mindepth n
[root@localhost opt]# find . -maxdepth 1 -name '123.txt'
./123.txt
[root@localhost opt]# find . -maxdepth 2 -name '123.txt'
./123.txt
./dir1/123.txt
[root@localhost opt]# find . -mindepth 2 -name '123.txt'
./dir1/123.txt
# 根据文件类型 -type b(块设备文件)-c(字符设备文件) f(普通文件) d(目录文件) p(管道文件) l(符号链接文件) -s(socket文件)
[root@localhost opt]# find . -type f -name 'yqs*'
./yqs.txt
[root@localhost opt]# find . -type d -name 'yqs*'
./yqs
# 根据文件大小 -size n[bckwMG] c(字节) k w(2字节) M G b(代表512位原组的区块)
[root@localhost opt]# find . -size 8c +8 超过8字节 -8 8字节以内
./123.txt
# 根据各种时间 -atime -ctime -mtime
-atime -2 两天内访问的文件
-atime 2 恰好在两天前被访问的文件
-atime +2 超过两天前被访问的文件
# 根据文件所属分组 -group
# 根据文件的权限 -perm
# 根据文件所属用户 -user
# 取反 !
[root@localhost opt]# find . -type f -name 'yqs*'
./yqs.txt
[root@localhost opt]# find . ! -type f -name 'yqs*'
./yqs
# -a 交集 -o 并集
# 排除某个目录 -path -prune 再加上 -o 取并集 -print 将取出的结果标准输出
[root@localhost opt]# find . -path './dir1' -prune -o -name '123*' -print
./123.txt
# 找到文件后删除
[root@localhost opt]# find . -name '123.txt' -ok rm {} \;
< rm ... ./123.txt > ? y
6.3、locate
#该命令有点类似windows中的everything软件,查找速度快,使用前需要先下载
[root@yqs test]# yum -y install mlocate
#下载之后要先创建其locatedb
[root@yqs test]# updatedb
#全局搜索
[root@yqs test]# locate xuzhu
/root/test/xuzhu
#忽略大小写全局搜索
[root@yqs test]# locate -i xuzhu
/root/test/XuZhu
/root/test/xuzhu
#指定目录搜索,其实就是搜索全路径,locate会保存一份文件,里面记录了所有文件的全路径
#在/root/test目录下搜索以x开头的文件
[root@yqs test]# locate /root/test/x
/root/test/xiaofeng
/root/test/xuzhu
#搜索用户主目录下,所有以t开头的文件
[root@yqs ~]# locate ~/t
/root/test
/root/test/XuZhu
/root/test/xiaofeng
/root/test/xuzhu
7、创建普通文件—touch、echo
# touch 其作用为修改文件时间为当前时间, 若文件不存在,则会创建该文件
# 创建abc.txt
touch abc.txt
# 创建多个文件, 创建 abc1 abc2 ... abc10
touch abc{0..10}
# 创建 123a 123b ... 123z
touch 123{a..z}
# 修改文件时间, 若文件不存在,不创建新文件
touch -c 123.txt
# 修改文件时间为指定时间
touch -t 201212120606 123.txt
# 使用echo创建文件, echo命令是用于将输入的内容展示在控制台上,在其后面加上 > 可将内容输出到指定文件中
echo 123 > 1.txt
# >> 表示追加到指定文件
echo 4 >> 1.txt
# 使用vi、vim打开一个不存在的文件,将会创建该文件
vi 1234.txt
8、复制—cp
# 复制123.txt文件,命名为abc.txt
cp 123.txt abc.txt
# 将123.txt 复制到abc目录下
cp 123.txt abc
# 复制多个文件到指定文件夹下
cp 123.txt 456.txt abc
# 复制以123开头的文件到abc目录中,若包含文件夹的话,要加 -r
cp 123* abc
#复制文件夹 -r 表示递归复制,会将源文件夹下的所有文件都复制
cp -r abc abc2
# 复制文件且保持其属性不变 -p
cp -p 123.txt abc.txt
# 复制软连接,直接cp的话,复制的是软连接指向的内容 加-d 参数,可复制软连接
cp -d link_123 link_abc
# 覆盖前询问 -i , 若abc.txt存在,则会询问是否覆盖,其实我们正常的cp命令是个别名,其底层已经加了 -i, 可以通过alias查看
# -i 123.txt abc.txt
9、别名—alias
# 查看别名
[root@yqs test]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
# 设置别名(重新登录后会失效)
[root@yqs test]# alias ls='ls --color=auto'
# 设置别名,永久生效——需要修改配置文件,普通用户 ==> ~/.bashrc , root用户 ==> /root/.bashrc
vim /root/.bashrc
#然后执行以下命令
source /root/.bashrc
若不生效,则需要在~/.bash_profile中加入命令 source ~/.bashrc 后保存
# 删除别名
[root@yqs test]# unalias 别名
10、剪贴—mv
# 移动文件到指定目录下,文件名不变
mv 123.txt ./acb
# 移动文件夹及其内容到指定目录下
mv yqs abc
# 移动多个文件到指定目录下
mv 123.txt 456.txt ./abc
# 修改文件名
mv 123.txt abc.txt
# 移动123开头的文件(包含文件夹)到abc目录下
mv 123* abc
# 覆盖前不询问 -f
# 覆盖前询问 -i
11、删除—rm
# 删除文件
rm 123.txt
# 删除多个文件
rm 123.txt 456.txt
# 删除文件夹,及其内容
rm -r abc
# 删除123开头的文件, 包含文件夹的话要加 -r
rm 123*
# 删除空目录,这个嘛,没啥用,若不是空的,删不掉
rm -d abc
# -v 显示删除过程详情
# 覆盖前不询问 -f
# 覆盖前询问 -i
# 删除当前目录下的所有东西
rm -rf ./*
12、开关机 —shutdown
#重启命令
shutdown -r now # 立即重启
shutdown -r 10 # 10分后重启
shutdown -r 0 # 立即重启
reboot # 立即重启
init 6 # 运行级别为6,表示重启
# 关机命令
shutdown -h now # 立即关机
shutdown -h 10 # 10分钟后关机
shutdown -h 0 # 立即关机
poweroff # 立即关机,且切断电源
halt # 立即关机,但是需要手动切断电源
init 0 # 运行级别为0,0表示关机
# 注销
logout # 注销,退出登录
exit # 注销,退出登录
# 关于Linux的运行级别
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
13、快捷键
ctrl + c # 终止当前操作
ctrl + a # 光标移动到行首
ctrl + e # 光标移动到行尾
ctrl + u # 删除光标到行首之间的内容
ctrl + d # 注销,退出登录
ctrl + l # 相当于clear,清屏
14、重定向符号
# 输出覆盖 >
[root@localhost opt]# echo 与七书不是一本书 > wenben1.txt
[root@localhost opt]# ll
total 8
-rw-r--r--. 1 root root 18 Jun 28 14:57 number.txt
-rw-r--r--. 1 root root 25 Jun 28 15:06 wenben1.txt
# 读取内容 输出到新文件 >
[root@localhost opt]# cat wenben1.txt > wenben2.txt
[root@localhost opt]# ll
total 12
-rw-r--r--. 1 root root 18 Jun 28 14:57 number.txt
-rw-r--r--. 1 root root 25 Jun 28 15:06 wenben1.txt
-rw-r--r--. 1 root root 25 Jun 28 15:09 wenben2.txt
# 追加内容 >>
[root@localhost opt]# echo 火影忍者 >> wenben2.txt
[root@localhost opt]# cat wenben2.txt
与七书不是一本书
火影忍者
# 标准输入重定向 <
[root@localhost opt]# cat < wenben1.txt
与七书不是一本书
火影忍者
# 将一行数据分几段显示
[root@localhost opt]# cat number.txt
1 2 3 4 5 6 7 8 9
[root@localhost opt]# xargs -n 3 < number.txt
1 2 3
4 5 6
7 8 9
# 追加输入玩法 <<, EOF表示文件的边界符号 end of file
[root@localhost opt]# cat >> shige.txt <<EOF
> 枯藤老树昏鸦
> 小桥流水人家
> 古道西风瘦马
> EOF
[root@localhost opt]# cat shige.txt
枯藤老树昏鸦
小桥流水人家
古道西风瘦马
15、查看文件内容—cat
# 查看文件内容
cat 123.txt
# 显示行号
cat -n 123.txt
# 显示每行结尾的$符号
[root@localhost opt]# cat -E 123.txt
abcdefg$
# 合并多个文件
[root@localhost opt]# cat shige.txt shige2.txt > shige3.txt
[root@localhost opt]# cat shige3.txt
枯藤老树昏鸦
小桥流水人家
古道西风瘦马
夕阳西下,断肠人在天涯
# 非交互式编辑
[root@localhost opt]# cat >> shige3.txt << EOF
> 作者
> 马致远
> EOF
[root@localhost opt]# cat shige3.txt
枯藤老树昏鸦
小桥流水人家
古道西风瘦马
夕阳西下,断肠人在天涯
作者
马致远
# 将文件内容设置为空
[root@localhost opt]# cat /dev/null > shige3.txt
[root@localhost opt]# cat shige3.txt
[root@localhost opt]#
16、查看文件内容—more、less
# more分屏查看文件 -num ,显示前几行, 回车键向下翻一行,空格键向下翻一页,=输出当前行的行号
more -5 文件名
# less分屏查看,比more更强大,支持先前翻页, -n显示行号
less -N 文件名
17、查看文件内容—head、tail
# head 查看前五行,默认是显示十行
head -5 文件名
# 查看前五个字符
head -c 5 文件名
# tail 查看后五行,默认显示十行
tail -5 文件名
# 实时更新文件内容变化
tail -f 文件名字
# 实时更新文件内容变化,若文件不存在,也会阻塞住,等文件创建
tail -F 文件名
18、修剪查看文件内容—cut
# cut 分割文件内容查看
# 查看文件的每行的第3个字符
[root@localhost opt]# cut -c 3 geci.txt
啡
住
想
# 查看文件的每行的第3到第5个字符,-n:第一到第n个字符, m-:第m到行尾的字符
[root@localhost opt]# cut -c 3-5 geci.txt
啡离开
住的情
想挽回
# 查看文件的每行的第3和第5个字符,
[root@localhost opt]# cut -c 3,5 geci.txt
啡开
住情
想回
# 将文件根据指定符号分割,并显示第2个分割部分的内容, -d 指定分割符,-f 指定显示分割后的区域,用法给 -c 一样
[root@localhost opt]# cat studet.txt
1:小明:男:17岁
2:小红:女:17岁
3:小蓝:男:18岁
[root@localhost opt]# cut -d ':' -f 2 studet.txt
小明
小红
小蓝
19、排序查看文件内容—sort
文件内容:
1:小一:男:17
7:小七:男:18
3:小三:男:18
2:小二:女:17
8:小八:男:16
6:小六:女:17
4:小四:女:20
5:小五:女:17
9:小九:女:19
# 按照每行的数字大小排序, -n 按照数字从小到大排序,可再加 -r 反转
[root@localhost opt]# sort -n studet.txt
1:小一:男:17
2:小二:女:17
3:小三:男:18
4:小四:女:20
5:小五:女:17
6:小六:女:17
7:小七:男:18
8:小八:男:16
9:小九:女:19
# 按照指定分割符分割后的指定区域进行排序,根据年龄排序, -t:指定分隔符,-k 选择分割后的块
[root@localhost opt]# sort -n -t ':' -k 4 studet.txt
8:小八:男:16
1:小一:男:17
2:小二:女:17
5:小五:女:17
6:小六:女:17
3:小三:男:18
7:小七:男:18
9:小九:女:19
4:小四:女:20
# 去重排序 根据年龄去重排序, -u:根据指定块去重
[root@localhost opt]# sort -n -u -t ':' -k 4 studet.txt
8:小八:男:16
1:小一:男:17
7:小七:男:18
9:小九:女:19
4:小四:女:20
20、去重查看文件内容—uniq
文件内容:
1:小一:男:17
1:小一:男:17
7:小七:男:18
3:小三:男:18
2:小二:女:17
2:小二:女:17
8:小八:男:16
1:小一:男:17
6:小六:女:17
4:小四:女:20
4:小四:女:20
5:小五:女:17
1:小一:男:17
9:小九:女:19
# 连续重复的去重,不在连续位置的重复不去除
[root@localhost opt]# uniq studet.txt
1:小一:男:17
7:小七:男:18
3:小三:男:18
2:小二:女:17
8:小八:男:16
1:小一:男:17
6:小六:女:17
4:小四:女:20
5:小五:女:17
1:小一:男:17
9:小九:女:19
# 完全去除重复
[root@localhost opt]# sort -n studet.txt | uniq
1:小一:男:17
2:小二:女:17
3:小三:男:18
4:小四:女:20
5:小五:女:17
6:小六:女:17
7:小七:男:18
8:小八:男:16
9:小九:女:19
# 完全去除重复,显示重复次数
[root@localhost opt]# sort -n studet.txt | uniq -c
4 1:小一:男:17
2 2:小二:女:17
1 3:小三:男:18
2 4:小四:女:20
1 5:小五:女:17
1 6:小六:女:17
1 7:小七:男:18
1 8:小八:男:16
1 9:小九:女:19
# 完全去除重复,显示只出现过一次的数据
[root@localhost opt]# sort -n studet.txt | uniq -u
3:小三:男:18
5:小五:女:17
6:小六:女:17
7:小七:男:18
8:小八:男:16
9:小九:女:19
# 完全去除重复,显示只出现过多次的数据
[root@localhost opt]# sort -n studet.txt | uniq -d
1:小一:男:17
2:小二:女:17
4:小四:女:20
21、统计文件内容—wc
文本内容:
火影忍者
一人之下
海贼王
龙珠
与七书不是一本书
# 统计文件行数
[root@localhost opt]# wc -l dongman.txt
5 dongman.txt
# 统计字符数, 包含了每行结尾的$符,共26个字符
[root@localhost opt]# wc -m dongman.txt
26 dongman.txt
# 统计单词数, 以空格去统计的。
[root@localhost opt]# wc -w dongman.txt
5 dongman.txt
# 统计最长行字符数,按字节算的
[root@localhost opt]# echo '与七书不是一本书' | wc -L
16
22、标准输入替换— tr
本文内容:
You make me cry make me smile
# 将文本中的小写字母替换为大写
[root@localhost opt]# cat english.txt | tr '[a-z]' '[A-Z]'
YOU MAKE ME CRY MAKE ME SMILE
# 替换a 为 A
[root@localhost opt]# cat english.txt | tr 'a' 'A'
You mAke me cry mAke me smile
# 删除内容中所有的 me
[root@localhost opt]# cat english.txt | tr -d 'me'
You ak cry ak sil
# 把连续重复的指定字符去重显示,
[root@localhost opt]# echo 'aabbccdefgg' | tr -s 'abcd'
abcdefgg
23、参数传递—xargs
# xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
# xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
# xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
# xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
# xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
# xargs 一般是和管道一起使用。
# 之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令,例如:
find /sbin -perm +700 |ls -l #这个命令是错误的
find /sbin -perm +700 |xargs ls -l #这样才是正确的
# 将多行文件合成一行输出
[root@localhost opt]# cat number2.txt
123
456
789
101112
[root@localhost opt]# xargs < number2.txt
123 456 789 101112
# 显示每行输出个数,按照源文件的换行符来分隔
101112
[root@localhost opt]# xargs -n 2 < number2.txt
123 456
789 101112
# 分隔 -d
[root@localhost opt]# echo 'a,b,c,d,e,f,g,h,i,j,k,l,m,n' | xargs -d ','
a b c d e f g h i j k l m n
[root@localhost opt]# echo 'a,b,c,d,e,f,g,h,i,j,k,l,m,n' | xargs -d ',' -n 5 # 每行显示输出5个
a b c d e
f g h i j
k l m n
# 将搜索到的文件放入指定文件夹中 -i {} 用花括号替代传输的数据
[root@localhost opt]# find . -name 'yqs[1-9]*.txt' | xargs -i mv {} ./yqs
# 搜索到的文件放入上一级目录中 -I 用字符串替代传输的数据
[root@localhost yqs]# find . -name '*.txt'| xargs -I files mv files ../
23、进程查看—ps
ps -ef | grep java
ps -aux | grep java
# 查看CPU/内存占用率最高的进程 head -11 是因为标题也算一行
# +、-号可以调整排序,-pcpu 表示降序,+pcpu 表示升序
ps -aux --sort=-pcpu | head -11