- 声明:
内容系搬运自他人文章和自己整理
不是完整教程,只是用到的几个点的记录
好坏请自己甄别
参考文章和相关教程
[1]:Shell 入门指南
记录
终端(Bash)基本操作
作为执行 shell 脚本的程序,bash 的交互式版本有的时候甚至比 shell 本身还更常用,毕竟登录到远程服务器,面对的就是一个闪动的光标,也就是 bash 了。我们就先来了解一下 bash 基本的操作,这样在测试命令的时候就会方便许多。
所谓操作,其实就是各类快捷键,这里挑些常用的介绍一下,一句话:熟能生巧(这里为了显示的时候好看,字母都用大写,实际上操作的时候,用小写即可)
- Tab 能够自动补全,从命令名称到文件夹到路径,多按两下还能出个列表方便我们输入,是居家旅行必备操作,如果只能记住一个快捷键,那么记住 Tab 即可
- Ctrl+R 用来搜索,按下之后就可以输入搜索的关键词,再按一次 Ctrl+R 可以切换到下一个匹配的结果,如果找到合适的,按下 Enter 就可以执行,按下 → 会把查询结果放到当前行,我们可以进行编辑
- Ctrl+W 删除该行最后一个单词,至于怎么定义一个单词呢?常见的分隔符有 空格, _, ,, :, - 等等(基本上不是字母和数字就可以认为是分隔符)
- Ctrl+U 删除整行
- Ctrl+A 将光标移到行首
- Ctrl+E 将光标移到行尾
- Ctrl+K 删除从光标处到行尾的所有内容
- Ctrl+L 清屏
- 输入 history 可以查看命令行的历史
- 输入 !$ 查看最后输入的参数
- 输入 !! 查看上一条命令
- 输入 cd - 可以回到上一个工作路径
如果想要设定 bash 的提示文本,需要修改 ~/.bashrc 中的 PS1 环境变量
好!
格式化输出/打印 printf
除了 echo
命令,我们其实还可以用 printf
命令来进行格式化输出,不过需要注意的是这里我们需要自己添加换行符,我们在脚本文件 test.sh
中添加如下三行:
printf "%-5s %-10s %4s\n" No. Name Score
printf "%-5s %-10s %4.2f\n" 1 wdxtub 99.9999
printf "%-5s %-10s %4.2f\n" 43 dawang 66.6566
然后我们执行一下,结果是:
$ ./test.sh
No. Name Score
1 wdxtub 100.00
43 dawang 66.66
这里能学到的套路是什么呢?
-
%s
,%c
,%d
,%f
是格式替代符,就是和 C 语言一样的方式 -
%-5s
指明了一个左对齐且宽度为 5 的字符串,如果内容不足 5 个字符,则会以空格填充 -
%4.2f
表示保留两位小数可以看到是默认四舍五入的 - 最后要加上
\n
才能正确换行
算术比较
条件通常被放置在封闭的中括号内,一定要注意 [ 和 ] 脸变有空格!如果我们需要进行算术比较,就需要使用如下的比较符号
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
-eq 等于
-ne 不等于
-a 逻辑与,例如 [ $var -ne 0 -a $var2 -gt 2 ]
-o 逻辑或,例如 [ $var -ne 0 -o $var2 -gt 2 ]
一个实际的例子:检测是否是超级用户
if [ $UID -ne 0 ]; then
echo "你不是超级用户(root),请以 root 身份运行"
else
echo "当前是超级用户"
fi
条件流程
比较常用的就是 if 的套路,格式为
if condition;
then
commands;
elif condition;
then
commands;
else
commands
fi
如果觉得这样写太长,可以利用逻辑操作与短路原理来进行编写
# 如果 condition 为真,则执行 action
[ condition ] && action;
# 如果 condition 为假,则执行 action
[ condition ] || action;
函数
函数的定义和非常简单,比如
function foo()
{
echo "Arguments work just like script arguments: $@"
echo "And: $1 $2..."
echo "This is a function"
return 0
}
也可以省略 function 关键词,比如
bar ()
{
echo "Another way to declare functions!"
return 0
}
执行的话,直接输入函数名即可,比如
foo
bar
foo hello world
网友评论