一、总结通配符,管道,重定向,并且结合示例,添加注释信息
1.通配符
通配符用于匹配文件名,简化文件操作。
通配符 | 描述 | 示例用途 |
---|---|---|
* | 匹配0个或多个任意字符 | *.txt 匹配所有以 .txt 结尾的文件 |
? | 匹配任意单个字符 | file?.txt 匹配 file1.txt, fileA.txt 等 |
[ ] | 匹配括号内任意一个字符 | file[12].txt 匹配 file1.txt 或 file2.txt |
[! ] | 匹配不在括号内的任意一个字符 | file[!1].txt 匹配 fileA.txt 但不匹配 file1.txt |
{ } | 匹配逗号分隔的字符串或范围(Bash特有) | {a...c}.txt 扩展为 a.txt b.txt c.txt |
示例:
# 创建一些测试文件
touch file1.txt file2.txt file3.log filea.txt fileb.txt
# 使用通配符列出文件
ls *.txt # 输出: file1.txt file2.txt
ls file?.txt # 输出: file1.txt file2.txt
ls file[a-b].txt # 输出: filea.txt fileb.txt
ls file[!1].txt # 输出: file2.txt file3.log filea.txt fileb.txt
2.管道
管道符号 | 将一个命令的输出作为另一个命令的输入,这允许你将多个命令组合起来,完成更复杂的操作。
· 基本语法:命令A | 命令B
· 命令A的输出结果变成命令B的输入结果
示例:
# 列出当前目录下的所有文件,并按大小排序
ls -l | sort -k5 -n # ls -l 列出文件详细信息,sort -k5 -n 按第五列(文件大小)进行数字排序
# 统计当前目录下 .txt 文件的数量
ls *.txt | wc -l # ls *.txt 列出所有 .txt 文件,wc -l 统计行数 (即文件数量)
3.重定向
重定向用于改变命令默认的输入来源和输出目的地。
重定向符号 | 描述 |
---|---|
> | 将命令的标准输出重定向到文件,如果文件存在,则覆盖文件内容 |
>> | 将命令的标准输出追加到文件末尾 |
< | 将文件作为命令的标准输入 |
2> | 将命令的标准错误重定向到文件 |
&>或>& | 将命令的标准输出和标准错误都重定向到文件 |
示例:
# 将 ls -l 的输出保存到文件
ls -l > file_listing.txt
# 将错误信息保存到 error.log 文件
find / -name "nonexistent_file" 2> error.log
# 将标准输出和标准错误都保存到 output.log 文件
./my_script.sh &> output.log
# 丢弃命令的输出和错误信息
ping google.com > /dev/null 2>&1
二、总结linux用户和用户组相关知识点以及常见的操作命令,添加注释信息
1.用户
· 用户类型:
· 超级用户(root):拥有系统最高权限,可以执行所有操作
· 普通用户:权限受限,只能操作自己拥有的文件或被授权的资源
· 用户信息存储:
· /etc/password:存储用户账户信息,但不包含密码
· /etc/shadow:存储用户加密后的密码,仅root用户可以读取
· /etc/group:存储用户组信息
2.用户组
· 用户组类型:
· 主要用户组:用户创建文件时默认所属的用户组
· 附加用户组:用户可以加入的其他用户组,以获得更多权限
· 用户组信息存储:
· /etc/group:存储用户组信息及组成员
3.常见操作命令
3.1.用户管理
# 添加新用户
sudo useradd [-m] [-s shell] username # -m 创建用户家目录,-s 指定默认shell
# 删除用户
sudo userdel [-r] username # -r 删除用户家目录及文件
# 修改用户信息
sudo usermod [-l new_username] [-d home_dir] [-s shell] username # 修改用户名、家目录、shell
# 锁定/解锁用户
sudo passwd -l username # 锁定用户
sudo passwd -u username # 解锁用户
# 设置/修改用户密码
sudo passwd username
3.2.用户组管理
# 添加新用户组
sudo groupadd groupname
# 删除用户组
sudo groupdel groupname
# 修改用户组信息
sudo groupmod [-n new_groupname] groupname # 修改组名
# 将用户添加到附加组
sudo usermod -aG groupname username # -a 保留原有组,-G 添加到附加组
3.3.查看用户和用户组信息
# 查看当前用户信息
id username # 显示用户UID、GID及组信息
# 查看所有用户
cut -d: -f1 /etc/passwd # 提取所有用户名
# 查看所有用户组
cut -d: -f1 /etc/group # 提取所有组名
# 查看用户所属的组
groups username
3.4.切换用户和权限
# 切换用户
su [-] username # 切换到指定用户,- 切换到根目录环境
# 使用sudo临时获取root权限
sudo command # 执行单个命令
sudo -i # 进入root交互shell
3.5.文件权限与所有权
# 修改文件所有者
sudo chown owner[:group] filename # 修改文件所有者及组
# 修改文件所属组
sudo chgrp groupname filename
# 修改文件权限
chmod [u/g/o/a][+/-=][rwx] filename # 修改权限
三、总结文件权限管理相关的知识点,包括权限位,特殊权限和ACL,添加详细的注释和解释
内容 | 描述 |
---|---|
基本权限 | 用户、组其他的读、写、执行权限,使用rwx表示,数字表示法方便权限设置 |
特殊权限 | SUID、SGID、Sticky Bit,提升权限或控制目录中文件删除权限 |
ACL | 细粒度权限控制,支持为多个用户和组单独设置权限,超越传统权限模型 |
常用命令 | chmod(修改权限)、chown(修改所有者)、chgrp(修改组)、getfacl、setfacl |
示例:
# 查看权限
ls -l filename
# 设置权限为 rwxr-xr--
chmod 754 filename
# 设置SUID位
chmod u+s filename
# 设置SGID位
chmod g+s directory
# 设置Sticky位
chmod +t /tmp
# 查看ACL
getfacl filename
# 给用户liu添加读写权限
setfacl -m u:liu:rw filename
# 删除用户liu的ACL权限
setfacl -x u:liu filename
四、总结文件时间戳的用法
时间戳 | 含义 | 更新条件 | 主要用途 |
---|---|---|---|
atime | 访问时间 | 文件被读取或访问 | 追踪文件使用情况,缓存策略 |
mtime | 修改时间 | 文件内容被修改 | 备份,版本控制,构建系统 |
ctime | 状态改变时间 | 文件元数据被修改 | 追踪元数据修改,安全审计 |
示例:
# 查找7天内未被访问的文件
find /path -type f -atime +7
# 查找24小时内被修改的文件
find /path -type f -mtime -1
# 查看文件状态改变时间
stat -c %Y file.txt
# 修改文件权限,更新 ctime
chmod 644 example.txt
五、总结find和xargs的用法
1.find命令
1.1.基本用法
find [路径] [表达式]
1.2.常用选项
· -name:按名称搜索文件
find /path -name "*.txt"
· -type:按文件类型搜索(如f表示普通文件,d表示目录)
find /path -type f
· -size:按文件大小搜索
find /path -size +100k
· -mtime:按文件修改时间搜索
find /path -mtime -7
2.xargs命令
2.1.基本用法
command1 | xargs command2
2.2.常用选项
· -I:指定替换字符串
find /path -name "*.txt" | xargs -I {} mv {} new_directory/
· -n:指定每次运行命令时传递的参数数量
find /path -name "*.txt" | xargs -n 1 grep "pattern"
· -P:指定并运行的进程数
find /path -name "*.txt" | xargs -P 4 grep "pattern"
六、总结几种压缩工具的使用方法
1.tar
# 打包
tar -cvf archive.tar files/
# 解包
tar -xvf archive.tar
# 打包并压缩(gzip)
tar -czvf archive.tar.gz files/
# 解压并解包
tar -xzvf archive.tar.gz
2.gzip/gunzip
# 压缩文件(原文件会被删除)
gzip file.txt
# 解压文件
gunzip file.txt.gz
# 或
gzip -d file.txt.gz
# 保留原文件
gzip -k file.txt
3.zip/unzip
# 压缩文件或目录
zip archive.zip file1 file2
zip -r archive.zip directory/
# 解压文件
unzip archive.zip
# 解压到指定目录
unzip archive.zip -d /path/to/extract/
4.7z
# 压缩
7z a archive.7z files/
# 解压
7z x archive.7z
# 查看压缩包内容
7z l archive.7z
5.rar
# 压缩(需要rar工具)
rar a archive.rar files/
# 解压
unrar x archive.rar
# 查看内容
unrar l archive.rar