新手学 Linux 别死啃命令!第六篇:Shell 基础入门,吃透快捷键、特殊字符与重定向管道

前言

前面我们掌握了文件、权限、进程等独立命令,而 Shell 是 Linux 的命令解释器,也是连接用户与系统的桥梁。它不仅提供便捷操作快捷键、别名、历史命令,还支持特殊字符、变量、重定向、管道等高级用法,更是编写自动化脚本的基础。

本篇完整讲解 Shell 类型、实操快捷键、特殊符号、别名、历史命令、变量、输入输出重定向、管道及脚本基础参数,从日常提效操作到简单脚本语法全覆盖,帮你跳出 “单条命令执行” 的局限。


一、Shell 种类查看

Linux 系统支持多种 Shell 解释器,不同版本语法略有差异,日常默认使用 bash。查看系统内所有 Shell:

ls /bin/*sh

常见类型:bashshcshtcsh 等,Ubuntu、CentOS 主流默认使用 bash


二、Shell 高频快捷键(日常必备,大幅提升效率)

终端操作熟记以下快捷键,告别重复敲命令、反复删字符:

  1. Ctrl + c:终止当前正在运行的前台进程
  2. Ctrl + d:退出当前 Shell 终端,等价于执行 exit 命令
  3. Ctrl + l:清空当前屏幕,等价于 clear 命令
  4. Ctrl + z:将前台运行的进程暂停并挂起至后台
  5. Ctrl + u:删除光标左侧所有字符
  6. Ctrl + k:删除光标右侧所有字符
  7. Ctrl + s:暂停屏幕内容输出(终端卡住)
  8. Ctrl + q:解除暂停,恢复屏幕正常输出

三、Shell 特殊字符与通配符

Shell 内置大量特殊字符,用于注释、匹配、运算、命令嵌套、逻辑判断等,是进阶使用的核心。

1. 基础符号

  • #:注释符,# 后面的内容不会被系统执行,多用于脚本、配置文件备注
  • ~:代表当前用户的家目录
  • ;:命令分隔符,一行内执行多条独立命令

2. 通配符(文件批量匹配)

  • *:匹配 0 个或多个 任意字符
  • ?:匹配 单个 任意字符
  • [] / [-] / [!]:匹配括号内单个字符
    • [0-9]:匹配任意数字
    • [a-z]:匹配任意小写字母
    • [!a]:匹配除字母 a 以外的任意单个字符
  • {,,,}:批量匹配大括号内的字符串,支持批量创建、操作文件

3. 算术运算

$[]$(()):用于整数算术运算示例:

echo $[10+5]
echo $((20*3))

4. 逻辑判断符号

  • &&:逻辑与,左侧命令执行成功,才会执行右侧命令
  • ||:逻辑或,左侧命令执行失败,才会执行右侧命令

5. 命令替换

`(反引号)、$():将一个命令的执行结果,作为另一个命令的参数示例:

# 以当前日期为名创建文件
touch `date +%y%m%d`
ls -l $(date +%y%m%d)

6. 引号与转义符

  • \:转义符,屏蔽紧跟其后字符的特殊含义,使其作为普通字符使用
  • '' 单引号:原样输出内容,屏蔽所有特殊字符功能
  • "" 双引号:保留大部分字符原有含义,仅不屏蔽 $!` 等符号

四、命令别名 alias

别名可以用简短名称替代冗长的命令,简化日常操作。

  1. 查看当前系统所有已设置别名
alias

      2.自定义别名:alias 别名='原命令'

alias ll='ls -l'

      3.取消已定义的别名

unalias ll

补充规则:如果别名和系统原生命令重名,优先执行别名


五、命令历史 history

Shell 会自动记录所有执行过的命令,借助历史功能可快速复用旧命令。

  1. history:查看全部历史命令;history n:仅查看最后 n 条历史命令
history
history 10
  1. !!:重复执行上一条命令
  2. !字符:重复执行最近一条以该字符开头的命令
  3. !编号:重复执行历史列表中对应编号的命令
  4. Ctrl + r:搜索历史命令,输入关键词快速匹配对应指令

历史命令文件规则

  1. Shell 启动时,自动从历史文件读取命令到内存列表;退出时,将内存中的命令写入文件保存。
  2. 环境变量 $HISTFILE 指定历史命令文件路径,默认路径:~/.bash_history
  3. 环境变量 $HISTSIZE 限制可保存的命令条数,默认最多保存 1000 条。

历史命令文件读写

# 从指定文件读取命令到历史列表
history -r filename
# 将当前历史列表写入文件,不指定文件则默认使用 $HISTFILE
history -w filename

六、Bash 变量基础

变量是 Shell 脚本的核心,用于存储字符串、数字、路径等数据。

  1. 变量命名规则:由字母、数字、下划线组成,不能以数字开头
  2. 查看系统所有变量:setdeclare
  3. 定义空变量:name=declare name
  4. 变量赋值:变量名=值(等号两侧不能加空格
name="linux"

      读取变量值:$变量名

echo $name

    删除变量:unset 变量名

unset name

七、系统内置常用变量

系统预设了大量全局变量,存放路径、用户信息、进程 ID 等关键数据,日常高频使用:

  • HOME:当前用户的家目录
  • PWD:当前所在工作目录
  • OLDPWD:上一次所在的工作目录
  • PS1:一级命令行提示符(终端最左侧的标识)
  • PS2:二级命令行提示符(命令换行续行时的标识)
  • PATH最重要变量,命令搜索路径,系统根据该路径查找可执行文件
  • $$:当前 Shell 进程的 PID(进程号)

查看变量值示例:

echo $HOME
echo $PATH

八、标准输入输出与重定向

每个进程默认绑定三类文件描述符,对应输入、输出、错误输出,重定向就是重新绑定数据流的目标位置。

  1. 文件描述符定义
    • 标准输入 stdin:编号 0,默认来源为键盘
    • 标准输出 stdout:编号 1,默认输出到屏幕
    • 错误输出 stderr:编号 2,默认输出到屏幕
  2. 重定向作用:将原本输出到屏幕、从键盘读取的数据,改为读写文件。

1. 标准输入重定向 <(描述符 0)

把文件内容作为命令的输入数据。

# 从文件file中读取内容赋值给tmp
read tmp < file
echo $tmp

2. 标准输出重定向 > / >>(描述符 1,可省略 1)

  • >(覆盖输出):将命令执行结果写入文件,清空文件原有内容后写入
  • >>(追加输出):将命令执行结果写入文件,在文件末尾追加,不覆盖原有内容
ls -l > file
ls -l >> file

3. 错误输出重定向 2> / 2>>(描述符 2,不可省略)

仅将命令执行的错误信息输出到文件,正常输出不受影响。常用场景:屏蔽错误信息(/dev/null 是空设备,相当于 “垃圾桶”)

# 错误信息覆盖写入文件
testcmd 2> file
# 错误信息直接丢弃
testcmd 2> /dev/null

4. 合并标准输出与错误输出

将正常输出、错误输出统一重定向到同一位置,四种常用写法:

# 写法1:>&
(ls; wrongcmd) >& file
# 写法2:&>(最简洁,推荐)
(ls; wrongcmd) &> file
# 写法3:标准输出定向到文件,错误输出跟随标准输出
(ls; wrongcmd) > file 2>&1
# 写法4:错误输出定向到文件,标准输出跟随错误输出
(ls; wrongcmd) 2> file 1>&2

九、管道符 |

管道作用:将前一个命令的执行结果,作为后一个命令的输入,实现命令组合、数据筛选。基础语法:命令1 | 命令2

示例:

# 列出目录内容并给所有行编号
ls -l | cat -n
# 筛选历史命令中包含find的记录
history | grep find
# 搭配find与xargs批量处理文件
find . -type f | xargs ls -l

十、脚本位置参数与返回值

多用于 Shell 脚本编写,获取脚本传入参数、判断命令执行结果。

  1. 位置参数
    • $0:代表当前脚本名称
    • $1$2...$n:脚本传入的第 1、2...n 个参数
    • $*:获取脚本所有传入参数
    • $#:统计脚本传入参数的总个数
  2. 命令返回值
    • $?:获取上一条命令的退出状态码0 代表执行成功,非 0 代表执行失败
    • exit n:主动退出脚本 / 终端,并指定退出状态码 n

示例:

# 查看上一条命令是否执行成功
ls
echo $?

十一、source 与 . 、export

1. source / .

二者功能完全一致,用法:source 文件名. 文件名作用:在当前 Shell 环境中执行脚本文件,不会新建子 Shell,常用于加载配置文件。

2. export

作用:将普通变量升级为环境变量,让当前 Shell 的所有子进程、子 Shell 都可以读取该变量。

# 定义变量并导出为环境变量
name="test"
export name

本篇小结

  1. Shell 是命令解释器,ls /bin/*sh 可查看系统支持的 Shell 类型,默认使用 bash。
  2. 熟记终端快捷键、通配符、引号、逻辑符等特殊字符,是高效使用 Shell 的基础。
  3. alias 简化命令、history 复用历史指令,都是日常提效必备功能。
  4. 变量分为自定义变量和系统内置变量,PATH 是核心搜索路径变量。
  5. 重定向分为输入、输出、错误输出,&> 可合并两类输出,常配合 /dev/null 屏蔽日志。
  6. 管道 | 实现命令串联,位置参数、exportsource 是编写 Shell 脚本的基础。

下期预告

下一篇我们学习 grep/sed/awk 文本处理三剑客,学会筛选、编辑、格式化文本与日志,搞定日常日志分析、文本批量处理场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值