环境变量
命令执行的步骤
- 判断是否绝对路径执行
- 检查是否为别名命令*
- 判断是内部命令还是外部命令
- 在系统PATH变量中查找用户输入的命令文件*
*设置alias 别名
alias 别名=命令(临时生效,重启后恢复)
设置永久生效别名,编辑~/.bashrc
,按照格式添加别名选项。
*Linux一切皆文件
- 常用的环境变量
HOME | 用户的主目录 |
---|---|
SHELL | 用户在使用的Shell解释器名称 |
HISTSIZE | 输出的历史命令记录条数 |
HISTFILESIZE | 保存的历史命令记录条数 |
邮件保存路径 | |
LANG | 系统语言、语言名称 |
RANDOM | 生成一个随机数 |
PS1 | 定义解释器搜索用户执行命令的路径 |
EDITOR | 用户默认的文本编辑器 |
VIM编辑器
-
三种模式
命令模式
输入模式
末行模式(底行模式) -
常用末行命令:
命令 | 作用 |
---|---|
:w | 保存 |
:q | 退出 |
:wq | 保存并退出 |
:q! | 强制退出 |
:wq! | 强制保存并退出 |
:set nu | 设置显示行号 |
:set nonu | 不显示行号 |
:命令 | 执行该 命令 |
:整数 | 跳转到该行 |
: s/one/two | 将当前光标所在行的第一个one替换成two |
: s/one/two/g | 将当前光标所在行的所有one替换成two |
:%/one/two/g | 将全文所有的one替换成two |
:?字符串 | 在文本中从上至下搜索该字符串 |
:/字符串 | 在文本从下至上搜索该字符串 |
编写简单脚本
-
脚本的组成
声明(#!/bin/bash)
注释
执行命令(主要内容) -
Shell内置命令
$0
对应的是当前Shell脚本程序的名称
$#
对应的是总共有几个参数
$*
对应的是所有位置的参数值
$?
对应的是显示上一次命令的执行返回值
$1、$2、$3……
则分别对应着第N个位置的参数值
-
四种条件测试语句:
文件测试语句;逻辑测试语句;
整数值比较语句;
字符串比较语句。
条件测试语句格式:
[ 条件表达式 ]
括号与条件表达式之间需空格间隔。
使用 $?
变量显示上一条命令执行后的返回值
- 文件测试参数
参数 | 作用 |
---|---|
-d | 测试文件是否为目录类型 |
-e | 测试文件是否存在 |
-f | 判断是否为一般文件 |
-r | 测试当前用户是否有权限读取 |
-w | 测试当前用户是否有权限写入 |
-x | 测试当前用户是否有权限执行 |
- 逻辑判断语句
&&
逻辑“与”,表示当前面的命令执行成功后才会执行它后面的命令
||
逻辑“或”,表示当前面的命令执行失败后才会执行它后面的命令
!
逻辑"非",它表示把条件测试中的判断结果取相反值。也就是说,如果原本测试的结果是正确的,则将其变成错误的。
- 整数比较运算符
操作符 | 作用 |
---|---|
-eq | 是否等于 |
-ne | 是否不等于 |
-gt | 是否大于 |
-lt | 是否小于 |
-le | 是否等于或小于 |
-ge | 是否大于或等于 |
实例:一个监控系统内存使用量程序
[ free -m | grep Mem: | awk '{print $4}' -lt 1024 ] && echo "Insufficient Memory"
free -m :列出内存使用情况
grep Mem: :过滤出剩余内存量的行
awk ‘{print $4}’:命令只保留第四列
-lt 1024:比较当前剩余内存是否小于1024
&& echo “Insufficient Memory”:如果小于则输出Insufficient Memory
- 字符串比较运算符
操作符 | 作用 |
---|---|
= | 字符串是否相同 |
!= | 字符串是否不相同 |
-z | 判断字符串是否为空 |