六十天Linux从0到项目搭建第四天(通配符命令、其他命令、压缩解压工具、shell的感性理解、linux权限解析)

通配符(Wildcard)

Shell 提供的特殊字符 ,用于 匹配文件名或路径名,可以代替一个或多个字符,使得命令能批量操作文件,而无需手动输入每个文件名。

典型用法 * 匹配任意字符

*.txt → 匹配所有 .txt 文件

bash 复制代码
ls *.txt      # 列出所有 .txt 文件
rm *.log      # 删除所有 .log 文件

a* → 匹配以 a 开头的文件

bash 复制代码
ls a*         # 列出所有以 a 开头的文件

*a* → 匹配文件名中包含 a 的文件

bash 复制代码
ls *a*        # 列出所有文件名包含 a 的文件

批量删除

bash 复制代码
rm -v *.tmp     # 删除所有 .tmp 文件,并显示删除过程

压缩与解压工具

1. zip 压缩文件/目录

bash 复制代码
zip 压缩包名.zip 文件1 文件2 ...  # 压缩指定文件
zip -r 压缩包名.zip 目录名/      # 递归压缩目录(包含子目录)

常用选项

  • -r:递归压缩(用于目录)。
  • -q:静默模式(不显示压缩过程)。
  • -e:加密压缩(需输入密码)。
  • -9:最高压缩率(速度较慢)。

示例

bash 复制代码
zip archive.zip file1.txt file2.txt      # 压缩 file1.txt 和 file2.txt
zip -r project.zip my_project/          # 压缩整个目录
zip -e secret.zip confidential.txt      # 加密压缩(需输入密码)

2. unzip 解压 .zip 文件

bash 复制代码
unzip 压缩包名.zip                # 解压到当前目录
unzip 压缩包名.zip -d 目标目录    # 解压到指定目录

常用选项

  • -d:指定解压目录。
  • -l:查看压缩包内容(不解压)。
  • -o:覆盖已有文件(不提示)。
  • -P 密码:直接指定密码(不安全,建议手动输入)。

示例

bash 复制代码
unzip archive.zip                     # 解压到当前目录
unzip archive.zip -d ~/extracted/     # 解压到 ~/extracted/
unzip -l archive.zip                  # 仅查看压缩包内容

tar(归档与解档 .tar.tar.gz.tar.xz 等)

1. 归档(打包)
bash 复制代码
tar -cvf 归档名.tar 文件1 文件2 ...  # 打包文件(不压缩)
tar -czvf 归档名.tar.gz 目录名/      # 打包并压缩(gzip 格式)
tar -cjvf 归档名.tar.bz2 目录名/     # 打包并压缩(bzip2 格式)
tar -cJvf 归档名.tar.xz 目录名/      # 打包并压缩(xz 格式)

选项说明

  • -c:创建归档。
  • -v:显示详细过程。
  • -f:指定归档文件名。
  • -z:使用 gzip 压缩(.tar.gz)。
  • -j:使用 bzip2 压缩(.tar.bz2)。
  • -J:使用 xz 压缩(.tar.xz)。

示例

bash 复制代码
tar -cvf backup.tar /path/to/files/      # 仅打包
tar -czvf backup.tar.gz /path/to/files/  # 打包并用 gzip 压缩
2. 解档(解包)
bash 复制代码
tar -xvf 归档名.tar              # 解包
tar -xzvf 归档名.tar.gz          # 解压 .tar.gz
tar -xjvf 归档名.tar.bz2         # 解压 .tar.bz2
tar -xJvf 归档名.tar.xz          # 解压 .tar.xz
tar -xvf 归档名.tar -C 目标目录  # 解压到指定目录

选项说明

  • -x:解包。
  • -C:指定解压目录。

示例

bash 复制代码
tar -xzvf backup.tar.gz                   # 解压 .tar.gz
tar -xvf backup.tar -C ~/extracted/       # 解压到 ~/extracted/
3. 查看归档内容(不解压)
bash 复制代码
tar -tvf 归档名.tar.gz      # 查看 .tar.gz 内容
tar -tjvf 归档名.tar.bz2    # 查看 .tar.bz2 内容

对比总结

工具 格式 特点 典型用途
zip .zip 跨平台兼容(Windows/Linux) 分享文件、加密压缩
tar .tar 仅打包,不压缩 备份目录结构
tar + gzip .tar.gz 高压缩率,通用 Linux 软件源码分发
tar + bzip2 .tar.bz2 压缩率更高,速度较慢 大文件归档
tar + xz .tar.xz 最高压缩率,速度最慢 发行版镜像文件

其他命令

bc

  • 计算器工具,支持浮点运算。
bash 复制代码
echo "5 + 3" | bc   # 输出 8

反斜杠 \ 的作用

  • 转义字符 :在 Shell 中,\ 用于取消下一个字符的特殊含义,使其被当作普通字符处理。

  • 换行续写 :如果 \ 出现在行尾,表示命令未结束,继续到下一行输入。

(1) ls \(后面有空格或回车)

bash 复制代码
$ ls \
>          # 等待继续输入(可输入路径后回车执行)
(2) ls \ 后接特殊字符
bash 复制代码
ls \*       # 查找名为 * 的文件(而不是通配符展开)
ls \?.txt   # 查找名为 ?.txt 的文件
  • 用途 :当文件名包含 *?、空格等特殊字符时,用 \ 转义。

uname 命令解析

  • 显示系统信息(内核版本、硬件架构等)。
常用选项
选项 作用 示例输出
-a 显示所有信息 Linux mypc 5.15.0-76-generic x86_64 GNU/Linux
-s 内核名称(默认) Linux
-n 主机名 mypc
-r 内核版本 5.15.0-76-generic
-m 硬件架构 x86_64
-o 操作系统 GNU/Linux

history

  • 查看命令历史,!n 可重复执行第 n 条命令。

Ctrl+C

  • 终止当前进程。

Shell

Shell 是什么?

  • 用户与内核的中介:接收用户输入的命令,传递给操作系统执行,并返回结果。
  • 外壳程序:Linux 默认使用命令行(如 Bash),Windows 有图形化界面(如 Explorer)和命令行(CMD/PowerShell)。

Shell 的核心意义

  • a. 命令传递与结果返回 :核心功能,如执行 ls 并显示文件列表。
  • b. 保护操作系统 :通过创建子进程执行命令,避免用户误操作直接破坏内核。(例如:rm / 会被 Shell 提示禁止,除非加 --no-preserve-root

Shell的感性理解

  • 像"智能家居中控系统"的中介

1. 一句话比喻

  • Shell 是计算机的"智能家居中控系统"
  • (用户)是屋主,通过 语音或手机指令(命令)控制全屋设备。
  • 中控系统 (Shell)负责 解析指令,协调家电(内核)执行任务。
  • 家电(内核)直接操控硬件(灯光、空调、门锁等),但你不能直接改写电路(危险且复杂)

2. 为什么需要 Shell?

  • 想象你住在一栋智能别墅里:
    • 直接操控家电电路?
      • 你需要懂电工知识,且操作失误可能烧毁设备(系统崩溃)。
    • 中控系统(Shell)的作用
      • 翻译指令:将你的语音"打开客厅灯" → 发送电信号开灯。
      • 权限管理 :禁止访客操作保险箱(chmod 设置文件权限)。
      • 自动化场景:一键启动"观影模式"(关灯、开投影仪、调温) = Shell 脚本

3. Shell 的两种"交互模式"

(1) 命令行 Shell(CLI)

  • 像专业控制面板

    • 输入精准代码(如 curl -O http://data.zip 下载文件)。
    • 例如:用 ffmpeg -i video.mp4 -vf "scale=1280:720" output.mp4 批量压缩视频。

(2) 图形化 Shell(GUI)

  • 像触屏家居 APP
    • 点击图标控制设备(如拖拽文件到文件夹)。
    • 但无法批量设置复杂场景(如每天 7 点拉窗帘、煮咖啡、播新闻)
  • 关键差异:
    • 命令行适合深度定制(如自定义自动化规则)。 图形界面适合快捷操作(如临时开关灯)。

4. Shell 的"超能力"

(1) 管道(|)------ 设备联动

  • 串联多个家电,像智能场景联动:

    bash 复制代码
    # 监控摄像头检测到人 → 截图 → 发邮件通知  
    motion_detect | ffmpeg -i - snapshot.jpg | mail -a snapshot.jpg user@email  

(2) 重定向(>>>)------ 数据存储与转发

  • 保存日志到文件

    bash 复制代码
    sensor_data > log.txt    # 温湿度传感器数据存档  
  • 追加报警记录

    bash 复制代码
    echo "ALERT: Window opened at $(date)" >> security.log  

(3) 脚本(Script)------ 自动化场景

  • 编写"智能家居剧本",一键触发复杂操作:

    bash 复制代码
    # 离家模式:关灯、锁门、启动监控  
    lights_off && lock_doors && start_surveillance  

5. 为什么 Shell 要"创建子进程"?

想象中控系统执行指令时:

  • 不亲自操作设备,而是启动"子程序"控制具体家电。
  • 好处
    • 稳定性:某个家电故障(程序崩溃),不影响其他设备运行。
    • 并行控制:同时调节空调温度、播放音乐、扫地机器人工作。

6. Shell 的"智能家居场景"

命令/功能 类比智能家居场景
ps 查看所有运行中的设备状态(进程列表)。
kill 远程关闭故障家电(终止进程)。
cron 定时任务(如每天 7 点煮咖啡)。
sudo 管理员权限(解锁保险箱或燃气阀)。
ssh 远程控制邻居家的智能设备(服务器)。

总结:Shell 的"人设"

  • 翻译中枢:将自然语言指令 → 机器可执行操作。
  • 安全管家:隔离危险操作,守护系统稳定。
  • 自动化引擎:通过脚本实现"一键场景"。
  • 并行指挥官:协调多任务高效运行。

Linux 权限深度解析

1. 权限的本质

  • 限制人与资源的交互:决定"谁"(用户/用户组)能对"什么资源"(文件/目录)做"何种操作"(读/写/执行)。

2. 用户分类

  • root:超级管理员,几乎无限制(可绕过文件权限)。

  • 普通用户 :受权限严格约束,需 sudosu 切换身份执行特权操作。

    bash 复制代码
    su          # 切换用户(默认切到 root,环境变量不变)
    su - user   # 完全切换到 user(加载其环境变量)

3. 文件属性与类型

  • 查看文件属性ls -l 输出示例:

    复制代码
    -rwxr-xr-- 1 user group 4096 Jan 1 10:00 file.txt
    • 首字符 :文件类型(- 普通文件,d 目录,l 链接文件等)。

    • 后缀名 :Linux 不依赖后缀,但约定俗成(如 .sh 表示脚本)。

4. 权限的三元组

权限分组

  • 拥有者(Owner):文件创建者。
  • 所属组(Group):共享权限的用户组。
  • 其他用户(Others):非拥有者且不在组的用户。

权限字符r(读)、w(写)、x(执行),如 rwxr-xr-- 表示:

  • 拥有者:读、写、执行。
  • 组:读、执行。
  • 其他:仅读。

5. 修改权限

chmod [选项] 模式 文件/目录

  • chmod 命令用于更改文件或目录的权限(读、写、执行)。
复制代码
#### 常用选项:

* `-R`:递归修改目录及其子目录和文件的权限。
* `-v`:显示详细的修改信息。
* `-c`:仅在权限确实更改时显示信息。
复制代码
#### 权限表示方法:

*

  #### 1. **符号模式(ugo +/- rwx)**

  * **用户类别**:

    * `u`:所有者(user)
    * `g`:所属组(group)
    * `o`:其他用户(others)
    * `a`:所有用户(相当于 `ugo`)
  * **操作符**:

    * `+`:添加权限
    * `-`:移除权限
    * `=`:直接设置权限
  * **权限类型**:

    * `r`:读(read)
    * `w`:写(write)
    * `x`:执行(execute)
  * **常用命令**
    * 设置文件权限为 `rw-r--r--`(644):
      * chmod 644 文件名
  * **组合示例** :
    * `7` (4+2+1):读 + 写 + 执行(rwx)
    * `6` (4+2):读 + 写(rw-)
    * `5` (4+1):读 + 执行(r-x)
    * `4`:读(r)
    * `2`:写(w)
    * `1`:执行(x)
*

  ##### 2. **数字模式(八进制)**

  * 权限用 3 位八进制数表示,分别对应 **所有者** 、**组** 和 **其他用户**。
  * 权限值:
    * `4`:读(r)
    * `2`:写(w)
    * `1`:执行(x)
  * 给所有者添加执行权限:
    *

      ```
      chmod u+x 文件名
      ```

  * 移除其他用户的写权限:
    *

      ```
      chmod o-w 文件名
      ```

  * 设置组用户的权限为读写:
    *

      ```
      chmod g=rw 文件名
      ```

6. 权限不足的表现

  • cat file.txt 提示 Permission denied

  • echo "test" > file.txt 失败。

  • 执行:运行脚本时提示权限不足。

相关推荐
fridayCodeFly31 分钟前
:ref 和 this.$refs 的区别及 $ 的作用
linux·运维·服务器
阿俊仔(摸鱼版)5 小时前
Ubuntu上安装Docker
linux·ubuntu·docker
BigBookX6 小时前
在 Ubuntu 中配置开机自启动脚本并激活 Anaconda 环境
linux·运维·ubuntu
kfepiza6 小时前
netplan是如何操控systemd-networkd的? 笔记250324
linux·网络·笔记·ubuntu
yi个名字7 小时前
Linux中的yum和vim工具使用总结
linux·运维·vim
青花锁8 小时前
Ubuntu 系统部署 Ollama + DeepSeek + Docker + Ragflow
linux·ubuntu·docker·deepseek
不是编程家8 小时前
Linux第九讲:动静态库
linux·运维·服务器
藏在歌词里8 小时前
ruoyi-vue部署4
linux·运维·服务器·vue.js·windows
IT 小旋风11 小时前
Linux centos7 虚拟用户访问脚本
linux·运维·服务器
ai问道武曲12 小时前
ubuntu服务器server版安装,ssh远程连接xmanager管理,改ip网络连接。图文教程
linux·运维·服务器·ubuntu·ssh