Shell脚本命令

13. 一月 2020 Other, 技术 0

由于工程中有一些打包脚本还是使用shell去实现的,记录一些常用的Shell命令,方便后面查阅。💾

🌟感觉有些终端对有些命令做了特殊处理,所以这份参考只适用于 .sh脚本

我的bash版本: GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin19)

查看自己的bush和找到帮助使用ba sh --help

echo

1. 输出

  • echo -n 不进行转义

  • echo -e 将特殊字符进行转义

  • echo $var_name 打印变量内容

  • echo "file's text" > somefile 显示结果定向至文件

  • echo 反引号date反引号 输出当前时间 反引号 -> 【 `

2. 输出打印选项

因为有转义字符需要结合 echo -e来做打印。

表达式是:echo -e "\e[选项;选项;选项...;m 打印字符串" (🌟注:在脚本中 \e 需要转义表示为 \033m代表的应该是截止) -> 即脚本内的一个选项表达式为 \033[选项..m

选项为:

  • 0~9:0:关闭所有生效选项 1:高亮显示 2:暗色显示 3:未知 4:下划线 5:未知 6:未知 7:反显字体颜色和背景 8:未知 9:贯穿线

  • 30~37: 字体颜色。30黑色;31红色;32绿色;33黄色;34蓝色;35紫色;36天蓝;37白色

  • 40~47:背景色。40黑色;41红色;42绿色;43黄色;44蓝色;45紫色;46天蓝;47白色

read

1. 读取用户输入

  1. 直接使用read:命令之后会等待用户输入,输入后可使用$REPLY变量来获取用户输入

  2. 加上变量名 read [var_name] :例如read choice,输入后,可使用$choice获取用户输入

 

文件读写

1. 读文件

  • head -n [num] [file_name] 读取文件的前几行

  • tail -n [num] [file_name] 读取文件末尾倒数几行

  • head -n 13 [file_name] | tail -n 10 这个表达式意思为:读取文件的10~13行

  • cat [file_name] 读取整个文件

🌟这些输出均可以var_name=$(表达式)存储到变量中

2. 写文件

  • echo something > file_name 写入数据

函数

1. 函数定义

[function] func_name (){ implemention } 关键字可不写

2. 函数返回值

$?为获取函数返回值

test

cmd 含义
-b FILE 如果FILE存在且为块特殊文件,则为True
-c FILE 如果FILE存在且为特殊字符文件,则为True
-d FILE 如果FILE存在且为目录,则为True
-e FILE 如果FILE存在且为文件,则为True,无论类型(节点,目录,套接字等)
-f FILE 如果FILE存在且为常规文件(不是目录或设备),则为True
-G FILE 如果FILE存在且与运行命令的用户具有相同的组,则为True
-r FILE 如果FILE存在且可读,则为True
-s FILE 如果FILE存在且非零大小,则为True
-w FILE 如果FILE存在且可写,则为True
-x FILE 如果FILE存在且可执行,则为True

🌟以上命令均可写为 [-f file_name]

其它

1. 变量赋值

2. PWD 输出当前目录路径

3. 变量特殊字符

参数            说明
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。 如”$*”用「”」括起来的情况、以”$1 $2 … $n”的形式输出所有参数。
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。 如”$@”用「”」括起来的情况、以”$1″ “$2” … “$n” 的形式输出所有参数。
$- 显示Shell使用的当前选项,与set命令功能相同。
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

4. 参考资料

🌟强烈建议以后还是用node.js来些这些脚本…