linux shell
1. linux shell 是什么
- shell 系统的用户界面, 提供了用户与内核交互操作的一个接口, 用于收集用户的指令并将其反馈给内核, 同时也会将内核反馈的信息发送到指定的地方.
- shell 的用处就是方便用户操作内核.
- shell 简单理解就像是 安卓手机的系统, 每家手机厂商都有自己的操作系统, 但是底层都是linux 内核, 每家的系统都能够打电话, 发短信, 但是各自的界面, 操作可能都有所不同, 最终能实现同一种功能.
- 常见的shell有 bash, sh, csh, ksh 等等.
2. bash 中的一些常用操作
2.1 tab 补全
- 在 bash shell 中, 如果输入命令的开头部分, 然后按下tab 键, bash 将会自动补全后半部分, 如果有多个相同开头的命令, bash 将会把所有相同开头的 命令输出出来, 提供给用户选择.
2.2 bash 中 $ 的作用
- bash 中所有的变量都是以
$
符号开头定义的, 如$PATH
就是系统的环境变量命令的路径,$HOME
就是当前用户的家目录. - 用户可以自定义 变量, 只需要
$变量名=变量值
即可 - bash 中也有一些特殊的变量
$?: 上一条命令的返回状态, 0表示成功
$#: 传递参数的个数
$*: 所有传递的参数
$@: 与$* 类似, 不过会在引号内返回每个参数
$0: 执行命令/文件名
$$: shell 或脚本 的进程号
$_: 上一条命令的最后一个变量
$-: 显示当前shell的选项
- bash 常见返回状态
0: 正常结束
1: 通用执行错误
2: 调用shell错误
126: 命令不可执行
127: 命令未找到
128: 无效退出参数
139: 被ctrl-c 强制终止
255: 退出状态码越界
2.3 ! 的使用
# ! 是引用 History历史命令的值
!n: 表示引用history 中 第n 条命令
!!: 引用上一条 命令 , 等同于 !
!COMMAND: 引用上一条 command 开头的命令
!COMMAND:N 引用上一条COMMAND 命令的 第N 个参数
!COMMAND:$ 引用上一个 COMMAND 命令的 最后一个参数
!^: 使用上一个命令的 第一个参数
2.4 bash 常用快捷键
# 移动操作
Ctrl + a: 移动到命令 行首
Ctrl + e: 移动到命令 行尾
Ctrl + ←: 向左移动一个单词
Ctrl + →: 向右移动一个单词
Ctrl + x: 在命令行首和光标处切换
# 删除(剪切)操作 粘贴
Ctrl + a: 剪切光标处到 命令行首
Ctrl + w: 剪切光标处到 光标前一个空格
Ctrl + k: 剪切光标处到 命令行尾
Ctrl + d: 相当于 delete 键, 向后删除
Ctrl + y: 粘贴至光标后
# 搜素历史命令
Ctrl + r: 从下向上搜索历史命令
Ctrl + p: 上一条历史命令
Ctrl + n: 下一条历史命令
Ctrl + g: 停止搜索, 还原命令行
# 其他操作
Ctrl + l: 清屏
2.2 bash 中的通配符
- bash 中的通配符原理和 正则里面的通配符类似.
- * 通配符
- 代表任意多个字符
- ? 通配符
- 表示统配任何单个字符
- [] 通配符
- 通配 一个区间内的字符
- [^] 通配符
- 不取[] 内定义的字符, 取反
- { } 通配符
- 表示包含多个文件
3. 输入输出重定向 以及管道
3.1 标准输入输出
- linux 中有定义了标准输入输出
名称: 文件描述 含义 设备 说明
STDIN 0 标准输入 键盘 命令在执行时所要的输入数据通过它来取得
STDOUT 1 标准输出 屏幕 命令在执行后的输出结果从该端口送出
STDERR 3 标准错误 屏幕 命令执行时的错误信息通过该端口送出
3.1 输出重定向
- 输出重定向符号为
>
- 语法:
COMMAND > FILE
- 示例
-- 如果不希望覆盖的话, 需要使用 >>
用于追加内容.
3.2 输入重定向
- 输入出重定向
<
- 一般在shell 脚本中用的较多
3.3 多命令顺序执行
-
;
符号用作连接两个命令, 顺序执行, 第二个命令不受第一个命令的结果干扰 -
&&
用作于连接两个命令, 如果第一个成功执行, 才会执行第二个命令 -
||
第一个如果成功执行了, 就不会执行第二个命令 -
|
管道符用作将第一个命令的结果传递 第二个命令 作为参数使用.
3. 环境变量
3.1 Linux 下变量分类
- 全局永久性变量
- 定义在 /etc/profile 内, 对所有用户都生效, 且重启后任生效
- 用户级永久变量
- 定义在 ~/.bash_profile 中, 对于单个用户生效, 重启后任存在
- 临时变量
- 在 shell 中使用 export 声明的变量, 仅在用户当前登录的shell 中生效, 退出shell 或重启 均会失效.
3.2 变量设置方法
- 变量声明使用 export ,
- 可以直接声明, 或添加在 /etc/profile, 或~/bash_profile 中.
3.3 环境变量相关文件
- /etc/profie 所有用户的环境变量, 全局的
- /etc/bashrc 用户在非登录状态下执行的命令 就会使用这个配置文件
- ~/bash_profile 用自己的环境变量配置文件
- ~/bashrc 同上, 非登录状态下执行的操作, 就可以调用这个配置
- ~/bash_history 用户所有操作命令 的历史文件
- ~/bash_logout 用户退出时执行的配置
END