Liunx 命令
使用 :s
命令可以实现字符串的替换
1 | # 用字符串 str2 替换行中首次出现的字符串 str1 |
Shell 基础
- #! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行
1 | #!/bin/bash |
- 字符串 ‘’ 和 “” 的区别:单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;双引号里可以有变量或者转义字符。
1 | your_name="test" |
- 以 # 开头的行就是注释。
- 传递参数
参数处理 | 说明 |
---|---|
$# | 传递到脚本的参数个数 |
$* | 以一个单字符串显示所有向脚本传递的参数 |
$$ | 脚本运行的当前进程 ID 号 |
$! | 后台运行的最后一个进程的 ID 号 |
$@ | 以 “$n” 的形式输出所有参数 |
$? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
1 | $* 与 $@ 区别: |
- 数组
1 | # 获取数组所有元素 |
- 基本运算符
数字运算符 | 说明 |
---|---|
-eq | 检测两个数是否相等,相等返回 true。 |
-ne | 检测两个数是否不相等,不相等返回 true。 |
-gt | 检测左边的数是否大于右边的,如果是,则返回 true。 |
-lt | 检测左边的数是否小于右边的,如果是,则返回 true。 |
-ge | 检测左边的数是否大于等于右边的,如果是,则返回 true。 |
-le | 检测左边的数是否小于等于右边的,如果是,则返回 true。 |
字符串运算符 | 说明 |
---|---|
= | 检测两个字符串是否相等,相等返回 true。 |
!= | 检测两个字符串是否相等,不相等返回 true。 |
-z | 检测字符串长度是否为 0,为 0 返回 true。 |
-n | 检测字符串长度是否不为 0,不为 0 返回 true。 |
$ | 检测字符串是否为空,不为空返回 true。 |
逻辑运算符 | 说明 |
---|---|
&& | 逻辑的 AND |
|| | 逻辑的 OR |
文件运算符 | 说明 |
---|---|
-d file | 检测文件是否是目录,如果是,则返回 true。 |
-f file | 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 |
-r file | 检测文件是否可读,如果是,则返回 true。 |
-w file | 检测文件是否可写,如果是,则返回 true。 |
-x file | 检测文件是否可执行,如果是,则返回 true。 |
-s file | 检测文件是否为空(文件大小是否大于 0),不为空返回 true。 |
-e file | 检测文件(包括目录)是否存在,如果是,则返回 true。 |
- 流程控制
1 | # if else |
- 函数
1 | [ function ] funname [()] |
- 输入、输出重定向
命令 | 说明 |
---|---|
command > file | 将输出重定向到 file |
command < file | 将输入重定向到 file |
command >> file | 将输出以追加的方式重定向到 file |
n > file | 将文件描述符为 n 的文件重定向到 file |
n >> file | 将文件描述符为 n 的文件以追加的方式重定向到 file |
n >& m | 将输出文件 m 和 n 合并 |
n <& m | 将输入文件 m 和 n 合并 |
<< tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入 |
注意:文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)
1 | # 将 stdout 和 stderr 合并后重定向到 file |
如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null
。