文章目录
🌼 find查找、wc统计命令、sort uniq排序去重组合
在Linux系统中,以“.”开头的文件和目录都是隐藏的。
在Linux中,“..”表示上一级目录,“.”表示当前目录。
长格式选项:以双短横线(--)引导的单词选项。
短格式选项:以单短横线(-)引导的字母选项。
文件类型及颜色表示:
普通文件:无特殊标记
可执行文件:绿色
压缩文件:红色
目录:蓝色(d)
链接文件:浅蓝色(l)
块设备文件:黄色(b)
字符设备文件:黄色(c)
套接字文件:紫色(s)
管道文件:紫色(p)
路径类型:
- 绝对路径:从根目录(/)开始的路径。
- 相对路径:从当前目录开始的路径。
🌼 ls命令
1、ls (list) 列出目录下的内容查
用法:
ls
示例:
ls(列出当前目录的内容)
示例:
ls -la(详细列出包括隐藏文件在内的所有文件和目录)
–help | 看帮助信息列表 |
-a (all) | 查看所有内容,包括隐藏文件⭐⭐⭐ |
-h (–human-readable) | 以人类可读方式显示⭐⭐⭐ |
-l (–long) | 以长格式显示文件信息⭐⭐⭐ |
-d | 查看目录本身 |
-S | 由大到小排序 |
-r | 由小到大排序(由旧到新),一般-rt 一起用 |
-t | 按照修改时间排序 |
也可参考👉linux命令-ll之按时间、大小顺序排列显示👈 | |
查看帮助命令:help man info |
🌼 cd命令
用法:
cd 目录名
示例:
cd /home/user/documents(切换到指定目录)
cd | 切换目录(后面跟路径“/”) |
---|---|
cd - | 返回上一个工作目录 |
cd .. | 返回上一级目录 |
cd ~ | 回到家目录 |
🌼 pwd命令
用法:
pwd
示例:
pwd(显示当前所在的目录路径)
pwd | 打印工作目录 |
---|---|
su -root | 切换到管理员命令 |
用法:
su -root
示例:
su -(切换到root用户,需要输入root用户密码)
🌼 date命令
用法:
date
示例:
date(显示当前日期和时间)
date | 查看系统时间和日期 (+%Y-%m-%d %H:%M:%S) |
---|---|
-d<字符串> | 显示字符串所指的日期与时间。字符串前后必须加上双引号 |
-s<字符串> | 根据字符串来设置日期与时间。字符串前后必须加上双引号 |
日期格式字符串列表 | |
如果需要以指定的格式显示日期,可以使用“+”开头的字符串指定其格式 | |
更多时间设置参考👉linux时间设置👈 |
%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:00 UTC
%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 秒(选择性)
这些格式化符号用于定制和显示时间和日期信息,有助于更精确地管理和展示时间相关数据
🌼 创建、删除文件和目录命令
用法:
touch 文件名
示例:
touch newfile.txt
touch | 创建文件或者更新文件时间戳 |
---|---|
stat | 查看文件信息(stat后面加文件名) |
用法:
mkdir 目录名
示例:
mkdir newdirectory
mkdir | 创建一个新的目录 |
---|---|
-v(详细) | 为每个创建的目录打印一条消息(在mkdir后面加-v和目录名) |
-p(层级) | 如果存在,就不会创建,如果不存在,就会创建父目录(例如:mkdir -pv dir1/dir2/dir3) |
用法:
rm 文件名 或 rm -r 目录名(递归删除目录及其内容)
示例:
rm oldfile.txt
示例:
rm -r olddirectory
rm | 删除文件 |
---|---|
-r | 递归删除文件及目录(rm -r 目录名) |
-f | 忽略提示,直接强制删除 |
🌼 alias 命令
用法:
alias 别名='命令'
示例:
alias ll='ls -la'
alias | 别名 | (例如:a=”rm -r“好比如rm -r) |
alias | 取消别名 | (unalias 别名) |
设置永久可参考👉Linux设置永久别名alias的方法👈 |
🌼 echo 命令
用法:
echo [选项] 字符串
示例:
echo "Hello, World!"(在终端输出“Hello, World!”)
echo
命令可以与花括号扩展(brace expansion)结合使用,以生成一系列字符串。以下是用法和示例:
生成字母序列:
用法:
echo {a..z}
示例:
echo {a..z}(输出从a到z的字母序列)
其他花括号扩展的常见示例:
生成数字序列:
用法:
echo {1..10}
示例:
echo {1..10}(输出从1到10的数字序列)
带步长的序列:
用法:
echo {起始..结束..步长}
示例:
echo {1..10..2}(输出从1到10,每次增加2的数字序列,即1 3 5 7 9)
混合使用文本和序列:
用法:
echo 前缀{序列}后缀
示例:
echo file{1..3}.txt(输出file1.txt file2.txt file3.txt)
这些示例展示了如何使用
echo
命令与花括号扩展来生成一系列有规律的字符串或数字,有助于批量处理和自动化脚本编写。
🌼 复制、移动、重命名、查看(文件、目录)命令位置命令
移动文件或目录:
用法:
mv 原路径 目标路径
示例:
mv /home/user/file.txt /home/user/documents/
重命名文件:
用法:
mv 原文件名 新文件名
示例:
mv oldname.txt newname.txt
mv | 移动或重命名 |
---|---|
-b | 覆盖前为目标文件创建备份 |
-f | 强制覆盖目标文件而不询问 |
-i | 覆盖目标文件前询问用户是否确认 |
-n | 不要覆盖已有文件 |
-u | 当源文件比目标文件更新时,才执行覆盖操作 |
-v | 显示执行过程详细信息 |
-Z | 设置文件安全上下文 |
–help | 显示帮助信息 |
–version | 显示版本信息 |
复制文件或文件夹:
用法:
cp [选项] 原路径 目标路径
示例:
cp file.txt /home/user/documents/(将file.txt复制到指定目录)
cp | 复制 |
---|---|
-r | 递归复制目录及其内容 |
-i | 在覆盖文件前提示确认 |
-v | 显示复制过程中的详细信息 |
* | 匹配任意所有 |
? | 匹配任意一个字符 |
查看文件或目录:
用法:
cat [选项] 文件名
示例:
cat file.txt(显示file.txt文件的内容)
cat | 查看文件内容 |
---|---|
-n | 显示每一行的行号 |
-b | 显示非空行的行号 |
-s | 压缩空白行 |
-E | 在每行结束处显示$ |
查找命令的位置:
用法:
which 命令
示例:
which wc mkdir sed awk
查询命令及相关文件的位置:
用法:
whereis 命令
示例:
whereish awk
🌼 head、tail、less、more 日志查看命令
用法:
head [选项] 文件名
示例:
head -n 10 file.txt(显示file.txt文件的前10行)
head | 显示文件的前几行 |
---|---|
-n num | 指定显示的行数,默认显示头10行 |
用法:
tail [选项] 文件名
示例:
tail -n 10 file.txt(显示file.txt文件的后10行)
tail | 显示文件的后几行 |
---|---|
-n num | 指定显示的行数,默认显示最后10行 |
-f | 实时显示文件的新增内容,常用于查看日志文件 |
用法:
less 文件名
示例:
less file.txt(分页浏览file.txt文件内容)
less | 分页浏览文件内容,支持向前和向后滚动 |
---|---|
q | 退出 |
空格或f | 向前滚动一页(下一页) |
b | 向后滚动一页(上一页) |
G | 最后1行 |
g | 第1行 |
99g | 到第99行 |
/内容 | 搜索,n继续向下搜索,N继续向上搜索 |
选项 | |
less -N | 显示行号 |
用法:
more 文件名
示例:
more file.txt(分页浏览file.txt文件内容)
more | 分页浏览文件内容,但只支持向前滚动 |
---|---|
q | 退出 |
空格 | 向前滚动一页(下一页) |
回车 | 向前滚动一行(下一行) |
🌼 find查找、wc统计命令、sort uniq排序去重组合
用法:
find 查找范围 [条件]
示例:
find /path/to/search -name "filename"(在指定目录中查找名为 "filename" 的文件)
-name "文件名" | 按名字查找(例如:find / -name "example.txt"(查找名字是example.txt的文件)) |
-type 文件类型 | 按文件类型查找(例如:find /var -type d(在 /var 目录中查找所有目录) |
-size [+/-]大小 | 按大小查找(例如:find /home -size +10M(在 /home 目录中查找大于 10MB 的文件)) |
-mtime [+/-]天数 | 按修改时间查找(例如:find /application/log/ -mtime +0 -type d (查找/application/log下一天前的日志,类型为目录)) |
-atime [+/-]天数 | 按访问时间查找(例如:find /var/log -atime +30(在 /var/log 目录中查找超过30天未访问的文件)) |
-perm 权限 | 按权限查找(例如:find /etc -perm 644(在 /etc 目录中查找权限为 644 的文件)) |
-user 用户名 | 按用户查找(例如:find /home -user alice(在 /home 目录中查找所有属于用户 alice 的文件)) |
-group 组名 | 按用户组查找(例如:find /home -group developers(在 /home 目录中查找所有属于组 developers 的文件)) |
管道 | | 将前一个命令的执行结果给后一个命令处理 |
举例:删除系统中所有名为
a.txt
文件的几种方法,并附有解释:1.使用命令替换:
命令:
rm -rf $(find / -name "a.txt")
解释:
find
命令从根目录/
开始查找名为a.txt
的文件,并将其结果传递给rm -rf
命令进行删除。此方法使用了命令替换$(...)
,可能会因为找到的文件路径过多而导致命令长度限制问题。
2.使用-exec选项:
命令:
find / -name "a.txt" -exec rm -rf {} \;
解释:
find
命令从根目录/
开始查找名为a.txt
的文件,对于找到的每个文件,使用-exec
选项调用rm -rf
进行删除。{}
表示每个找到的文件,\;
表示命令结束。
3.使用xargs:
find / -name "a.txt" | xargs rm -rf
解释:
find
命令从根目录/
开始查找名为a.txt
的文件,并将结果通过管道|
传递给xargs
,由xargs
将每个文件传递给rm -rf
命令进行删除。xargs
可以有效地处理大量文件路径。
举例:删除/application/log/下的一天前的日志并设置为每周一删除,类型为目录:
设置
crontab
任务:
使用
crontab -e
命令打开当前用户的crontab
编辑器。添加以下行来设置任务每周一凌晨 0 点执行:
0 0 * * 1 find /application/log/ -type d -mtime +1 | xargs rm -rf
这行命令的含义是:每周一凌晨 0 点执行
find
命令,查找/application/log/
目录下修改时间超过一天的目录并使用xargs
将这些目录传递给rm -rf
进行删除。解释各部分:
0 0 * * 1
:表示每周一凌晨 0 点执行任务。find /application/log/ -type d -mtime +1
:
/application/log/
:要查找的目录路径。-type d
:只查找目录。-mtime +1
:查找修改时间超过一天的目录(注意这里应使用+1
而不是+0
,+0
表示的是今天一天前)。| xargs rm -rf
:将找到的目录传递给rm -rf
命令进行删除。
wc:
用法:
wc [选项] 文件名
示例:
wc file.txt(显示file.txt文件中的行数、单词数和字符数)
wc | 统计文件中的行数、单词数和字符数 |
---|---|
-l | 统计行数 |
-w | 统计单词数 |
-c | 统计字节数 |
-m | 统计字符数 |
sort:命令用于对文件的行进行排序。
用法:
sort [选项] 文件名
示例:
按字典顺序排序:
sort file.txt
按数值排序:
sort -n file.txt
按逆序排序:
sort -r file.txt
按特定字段排序:
假设文件内容以空格分隔,按第二个字段排序
sort -k 2 file.txt
按特定字段并指定分隔符排序:
假设文件内容以逗号分隔,按第三个字段排序
sort -t ',' -k 3 file.csv
sort | 排序 |
---|---|
-n | 按数值排序 |
-r | 按逆序排序 |
-k | 指定排序字段 |
-t | 指定字段分隔符 |
-u | 去除重复行(与 uniq 类似) |
uniq:命令用于报告或忽略文件中的重复行。通常与 sort 命令一起使用,因为 uniq 只能去除相邻的重复行。
用法:
uniq [选项] 文件名
示例:
- 去除重复行:
sort file.txt | uniq
- 统计每行出现的次数:
sort file.txt | uniq -c
- 仅显示重复的:
sort file.txt | uniq -d
- 仅显示不重复的行:
sort file.txt | uniq -u
uniq | 去重 |
---|---|
-c | 去重并显示次数 |
🌼 vi/vim命令
vi/vim 进入编辑模式
编辑模式:
i:在光标显示的地方直接编辑
示例:在普通模式下,按
i
进入插入模式,并从当前光标位置开始编辑。
I:在光标显示的行首编辑
示例:在普通模式下,按
I
进入插入模式,并从当前行的行首开始编辑。
a:在光标显示的后一个位置编辑
示例:在普通模式下,按
a
进入插入模式,并从当前光标位置的下一个字符开始编辑。
A:在光标显示的行尾编辑
示例:在普通模式下,按
A
进入插入模式,并从当前行的行尾开始编辑。
o:在光标显示的下一行编辑
示例:在普通模式下,按
o
在当前行的下一行插入新行,并进入插入模式。
O:在光标显示的上一行编辑
用法:
O
示例:在普通模式下,按O
在当前行的上一行插入新行,并进入插入模式。
s:删除光标所在的位置并进行编辑
示例:在普通模式下,按
s
删除光标所在的字符,并进入插入模式。
S:删除光标所在的行并进行编辑
示例:在普通模式下,按
S
删除光标所在的整行,并进入插入模式。
编辑模式–>Esc键–>命令模式
命令模式:
跳转:
gg
跳转到文件第一行
G
跳转到文件最后一行
数字
gg
跳转到指定行
home
或^
跳转到行首
end
或$
跳转到行尾
w
每次跳过一个单词
删除或剪切:
dd
删除光标所在行
D
删除从光标所在位置到行尾
数字
dd
删除从光标所在行开始的指定行数
dG
删除从光标所在行到文件结束位置
x
或delete
删除光标所在的字
复制与粘贴:
yy
复制光标所在行
数字
yy
复制从光标所在行开始的指定行数
p
粘贴到光标的下一行
P
粘贴到光标的上一行
其他:
u
撤销上一步操作
ctrl+r
恢复撤销的操作
命令模式 --> :/?-->末行模式
末行模式:
查找与替换:
/
查找
n
继续向下搜索
N
继续向上搜索
:s#old#new#g
替换单行(将 old 替换为 new,# 作为分隔符)
:%s/old/new/g
替换整个文件(将 old 替换为 new,/ 作为分隔符,g 表示全局替换)
文件操作:
:w
保存当前文件
:w 文件路径
另存为指定路径
:q
退出编辑器
:wq
保存并退出
:q!
强制退出(不保存)
:w!
强制保存
:wq!
强制保存并退出
:r 文件路径
读取另一个文件并插入到当前光标位置
显示设置:
:set number
或:set nu
显示行号
:set nonumber
或:set nonu
取消显示行号
:set nohlsearch
取消高亮搜索结果
可视模式:
选择模式:
ctrl+v
可视块模式
shift+v
或V
可视行模式
v
可视模式
🌼 压缩与解压缩
gzip与gunzip
压缩和解压缩的概念
压缩级别:
gzip
提供 1 到 9 的压缩级别,其中 1 表示最快速但压缩率最低,9 表示最慢速但压缩率最高。默认压缩级别为 6。1-9:压缩级别,数值越大,生成的文件越小,但速度越慢。
使用特定压缩级别压缩文件
用法:
gzip -数字 原文件
示例:
gzip -9 file.txt(使用最高压缩率压缩 file.txt,生成 file.txt.gz)
示例:
gzip -1 file.txt(使用最低压缩率压缩 file.txt,生成 file.txt.gz)
gzip:压缩文件
用法:
gzip [选项] 原文件
示例:
gzip file.txt(压缩 file.txt,生成 file.txt.gz)
gunzip:解压缩文件(等同于
gzip
-d
)用法:
gunzip [选项] 压缩文件
示例:
gunzip file.txt.gz(解压缩 file.txt.gz,生成 file.txt)
bzip2与bunzip2
bzip2
和bunzip2
是用于文件压缩和解压缩的命令,类似于gzip
和gunzip
,但bzip2
通常提供更高的压缩比,尽管速度较慢bzip2:压缩文件
用法:
bzip2 [选项] 原文件
示例:
bzip2 file.txt(压缩 file.txt,生成 file.txt.bz2)
bunzip2:解压缩文件
用法:
bunzip2 [选项] 压缩文件
示例:
bunzip2 file.txt.bz2(解压缩 file.txt.bz2,生成 file.txt)
tar压缩与解压缩
tar常用的压缩与解压缩操作
压缩文件:
- 用法:
tar cvf
归档文件名.tar
要归档的文件/目录- 示例:
tar cvf archive.tar /dir1
- 解释:将
/dir1
目录归档为archive.tar
,不压缩。压缩文件并使用 gzip 压缩:
- 用法:
tar czvf
归档文件名.tar.gz
要归档的文件/目录- 示例:
tar czvf archive.tar.gz /dir1
- 解释:将
/dir1
目录归档并使用 gzip 压缩为archive.tar.gz
。压缩文件并使用 bzip2 压缩:
- 用法:
tar cjvf
归档文件名.tar.bz2
要归档的文件/目录- 示例:
tar cjvf archive.tar.bz2 /dir1
- 解释:将
/dir1
目录归档并使用 bzip2 压缩为archive.tar.bz2
。解压缩文件:
- 用法:
tar xvf
归档文件名.tar
- 示例:
tar xvf archive.tar
- 解释:解压
archive.tar
归档文件。解压缩 gzip 压缩的文件:
- 用法:
tar xzvf
归档文件名.tar.gz
- 示例:
tar xzvf archive.tar.gz
- 解释:解压
archive.tar.gz
归档文件。解压缩 bzip2 压缩的文件:
- 用法:
tar xjvf
归档文件名.tar.bz2
- 示例:
tar xjvf archive.tar.bz2
- 解释:解压
archive.tar.bz2
归档文件。
tar | 制作或释放归档文件 |
---|---|
-c | 创建新的归档文件 |
-x | 解压归档文件 |
-v | 显示操作过程中的详细信息 |
-f | 指定归档文件名 |
-z | 使用 gzip 压缩或解压缩 |
-j | 使用 bzip2 压缩或解压缩 |
-t | 列出归档文件内容 |
-C | 指定解压目录 |
使用
--exclude
排除指定文件模式用法:
tar -czvf 归档文件名.tar.gz 要归档的目录 --exclude="排除模式"
示例:
tar -czvf bash.tar.gz /dir1 --exclude="*.txt"
此命令将
/dir1
目录压缩为bash.tar.gz
,但排除所有以.txt
为后缀的文件。
在 Linux 中,
file
命令可以用来查看文件的类型,包括检查一个文件是否是压缩包及其具体的压缩类型。以下是file
命令的用法和示例:用法:
file 文件
示例:
file archive.tar.gz
输出示例:
archive.tar.gz: gzip compressed data, from Unix, last modified: Fri Jun 18 10:20:18 2021
🌼 grep sed awk命令以及正则表达式
grep:grep
用于在文件中搜索文本并输出匹配的行。
基本用法:
grep [选项] '内容' 文件名
示例:
搜索包含"hello"的行:
grep 'hello' file.txt
忽略大小搜索"hello":
grep -i 'hello' file.txt
递归搜索目录中包含"hello"的文件:
grep -r 'hello' /path/to/directory
显示行号的同时搜索"hello":
grep -n 'hello' file.txt
反向搜索不包含"hello"的行:
grep -v 'hello' file.txt
grep | 以行为单位过滤 |
---|---|
-i | 忽略大小写 |
-r | 递归搜索目录 |
-n | 显示号 |
-v | 反向匹配 |
-c | 统计过滤的行数 |
-o | 只输出过滤的内容 |
-w | 以单词为单位进行过滤 |
-A | 指定行数,过滤指定内容以及上几行 |
-B | 指定行数,过滤指定内容以及下几行 |
-C | 指定行数,过滤指定内容以及上下各几行 |
sed:是一个流编辑器,用于在文件中搜索、替换和处理文本。
基本用法:
sed [选项] ‘[操作地址]sed内置操作’ 文件
示例:
将文件中所有"hello"替换为"world":
sed 's/hello/world/g' file.txt
直接在文件中替换"hello"为"world":
sed -i 's/hello/world/g' file.txt
删除包含"hello"的行:
sed '/hello/d' file.txt
常用选项
sed | 流文件处理工具 |
---|---|
-i | 修改文件内容,直接编辑文件 |
-e | 允许多个编辑命令,多个sed内置操作可以使用分号隔开 |
-n | 只输出处理的行 |
-r | 支持扩展正则表达式 |
操作地址
2 | 代表处理文件的第2行 |
1,5 | 代表处理文件的第1到5行 |
1;5 | 代表处理文件的第1行和第5行 |
1~2 | 代表指定步长为2,处理的是1,3,5…行 |
2,~2 | 代表处理文件的第2行开始,到2的倍数行结束。(2,~2=2,4 ;4,~4=4,8行) |
4,$ | 代表处理文件第4行到最后一行 |
1,+2 | 代表处理文件的第1行到第1+2行,也就是1到3行 |
内置操作
p | 打印 |
a | 在指定行后追加数据 |
i | 在指定行前插入行前 |
d | 删除匹配的行 |
c | 替换指定整行 |
s | 替换指定字符,默认替换每行第一个字符 |
g | 通常与s组合使用,替换全部指定字符 |
n | 获取下一行 |
y | 字符转换,类似于tr命令(正则不能使用) |
r | 将文件读入指定行后 |
w | 将指定行另存为文件 |
q | 结束sed操作 |
n | 不会清空模式空间内的内容,将下一行追加到模式空间,两行数据以换行符 |
awk:是一个强大的文本处理工具,用于在文件中搜索、替换和格式化文本。
基本用法:
awk [选项] ‘BEGIN{command}匹配模式{command}END{command}’ 文件
$0 | 文件的整行 |
$1~$n | awk处理的列,以FS为分隔符 |
NF | 查看一共有多少列 |
$NF | 查看文件的最后一列 |
NR | 表示处理的行数(一共有多少行) 外:指定输出第几行 |
FNR | 表示处理当前文件的行数 |
FS | 输入字段的分隔符,默认空格或制表符 |
RS | 输入记录的分隔符,默认是换行 |
OFS | 输出字段的分隔符,默认空格 |
ORS | 输出行的分隔符,默认换行 |
FILENAME | awk处理的文件名 |
PATH | 文件路径 |
ARGC | 命令行参数个数 |
ARGV | 命令行参数数组 |
ENVIRON | 获取Linux系统中的环境变量 |
正则表达式:正则表达式是用于文本匹配和处理的强大工具。
基础正则表达式 -->grep可以直接使用
$ 以…结尾
^ 以…开头
. 匹配任意一个字符
- 匹配前一个字符或子表达式任意次(例如:grep "g.d" a.txt(过滤a.txt文件中的以g开头以d结尾可以代表有任意多个字符或没有字符))
[A-Z] [a-z] [0-9] [A-Za-z0-9]
[^a-z] 取反
扩展正则表达式 egrep =grep -E
{n,m} 匹配前一个字符或子表达式n到m次
{n, } 匹配前一个字符或子表达式最少n次
{ ,m} 匹配前一个字符或表达式最少m次
{n} 匹配前一个字符或子表达式n次+ 匹配前一个字符或子表达式1次以上(*包括0+不包括,至少)
? 匹配前一个字符或子表达式0次或1次以上
| 或
() 分组(例如:(g|f)ood)\ 转义,取消一个字符的特殊含义
想要查看更多的正则表达式就去👉 正则表达式(全)👈
示例:查找/root这层目录有多少个普通文件?find ./ -maxdepth 1 -type f ! -name “.*” | wc -l | ll | grep -c “^_”
🌼 防火墙与selinux的关闭及开启和永久生效
查看防火墙详情请看:👉Linux防火墙命令👈
systemctl status firewalld 查看防火墙状态
systemctl start firewalld 开启防火墙服务
systemctl stop firewalld 关闭防火墙服务
systemctl disable firewalld 禁止防火墙,禁止开机启动
systemctl enable firewalld 开启防火墙,开机自启防火墙
systemctl restart firewalld 重启防火墙
systemctl is-enabled firewalld 查看防火墙是否开机自启动
关闭selinux:
getenforce 查看selinux的状态
setenforce 设置selinux的状态
vi /etc/selinux/config
vi /etc/sysconfig/selinux
SELINUX=disabled
重启系统生效
重启系统的命令:reboot、init 6、shutdown -r
🌼 用户、用户组管理
用户类型及其特性:
超级用户:
root
UID = 0
普通用户:
Shell: /bin/bash
UID ≠ 0
程序用户:
Shell: /sbin/nologin
用户目录模板
在 Linux 系统中,创建用户后,会以目录
/etc/skel/
为模板复制文件到用户家目录。
重要文件
/etc/passwd:存放用户信息
/etc/shadow:存放用户密码
/etc/passwd文件格式
示例条目:root
:
x:
0:
0:
root:
/root:
第一段: 用户名
第二段: 密码占位符(
x
表示密码存储在 /etc/shadow 中 )第三段: 用户 ID (UID)
第四段: 组 ID (GID)
第五段: 描述信息
第六段: 用户家目录
第七段: 用户登录的 shell
常见 Shell
/bin/bash:允许用户登录
/sbin/nologin:禁止用户登录
示例:创建禁止登录的程序用户
要创建一个名为
mysql
的程序用户,并禁止其登录系统,可以使用以下命令:useradd -s /sbin/nologin mysql
示例解释
useradd:创建新用户的命令
-s /sbin/nologin:指定用户的 shell 为 /sbin/nologin,禁止该用户登录
mysql:用户名
这样,
mysql
用户将被创建为一个程序用户,并且无法登录到系统。
用户管理:
新增用户语法
useradd [选项] 用户名
useradd | 新增用户 |
---|---|
-u | 指定UID |
-g | 指定GID,用户的主要组 |
-G | 指定用户的附加 |
-s | 指定登录shell,默认是/bin/bash |
-M | 不创建用户家目录 |
-m | 创建用户家目录 |
-d | 指定用户家目录 默认家目录/home/与用户同名 |
在创建用户时,默认会从/etc/skel目录下复制内容到用户家目录下
su 用户名 切换用户
su - 用户名 系统环境变化
ctrl+d或exit 退出登录
修改用户信息语法:
usermod [选项] 用户名
usermod | 修改用户信息 |
---|---|
-c | 修改描述字段 |
-d | 修改家目录位置 |
-g | 修改GID |
-u | 修改用户的UID |
-l | 修改用户名 |
-s | 修改登录的Shell |
-L | 锁定用户 |
-U | 解锁 |
修改或设置用户密码的命令
修改或设置密码
passwd:
修改当前用户的密码
passwd <username>:
修改指定用户的密码例如,更改
root
用户的密码:passwd root
不交互设置用户密码
使用
echo
和passwd --stdin
组合来非交互地设置用户密码。例如,为用户
test
设置密码123123:
echo "123123" | passwd --stdin test
锁定和解锁用户密码
passwd -l <username>:
锁定用户密码,使用户无法登录
passwd -u <username>:
解锁用户密码,恢复用户登录权限例如,锁定用户
test:
passwd -l test
解锁用户
test:
passwd -u test
查看用户密码状态
passwd -S <username>:
查看用户密码状态例如,查看用户
test
的密码状态:passwd -S test
删除用户语法:
userdel [选项] 用户名
userdel | 删除用户 |
---|---|
-r | 删除用户时删除家目录 |
用户组管理: