快捷键操作
- Ctrl + a:移到行首
- Ctrl + b:向行首移动一个字符,与左箭头作用相同
- Ctrl + e:移到行尾
- Ctrl + f:向行尾移动一个字符,与右箭头作用相同
- Alt + f:移动到当前单词的词尾( ESC + f )
- Alt + b:移动到当前单词的词首 ( ESC + b )
变量
- 读取变量的时候,变量名也可以使用花括号{}包围,比如$a也可以写成${a}
这种写法可以用于变量名与其他字符连用的情况
$ a=foo
$ echo $a_file
$ echo ${a}_file
foo_file
- unset命令用来删除一个变量
- $$为当前 Shell 的进程 ID,可以用来命名临时文件 LOGFILE=/tmp/output_log.$$
- $_为上一个命令的最后一个参数
${varname:-word} 如果变量varname存在且不为空,则返回它的值,否则返回word
${varname:=word} 如果变量varname存在且不为空,则返回它的值,否则将它设为word
${varname:+word} 如果变量名存在且不为空,则返回word,否则返回空值
${varname:?message} 如果变量varname存在且不为空,则返回它的值,否则打印出varname: message
${#varname} 获取字符串长度
${varname:offset:length} 提取子字符串
${varname^^} 转为大写
${varname,,} 转为小写
算术
脚本
#!/usr/bin/env bash
指定解释器
# 给所有用户执行权限
$ chmod +x script.sh
# 给所有用户读权限和执行权限
$ chmod +rx script.sh
# 或者
$ chmod 755 script.sh
- getopts命令用在脚本内部,可以解析复杂的脚本命令行参数,通常与while循环一起使用,取出脚本所有的带有前置连词线(-)的参数
while getopts 'lha:' OPTION; do
case "$OPTION" in
l)
echo "linuxconfig"
;;
h)
echo "h stands for h"
;;
a)
avalue="$OPTARG"
echo "The value provided is $OPTARG"
;;
?)
echo "script usage: $(basename $0) [-l] [-h] [-a somevalue]" >&2
exit 1
;;
esac
done
shift "$(($OPTIND - 1))"
- 在shell脚本中,默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕),它们分别对应的文件描述符是0,1,2
1>&2 正确返回值传递给2输出通道 &2表示2输出通道
2>&1 错误返回值传递给1输出通道, 同样&1表示1输出通道
> /dev/null 所有传给它的东西它都丢弃掉
#!/bin/bash
filename='/etc/hosts'
while read myline
do
echo "$myline"
done < $filename
# 上面的例子通过read命令,读取一个文件的内容。
# done命令后面的定向符<,将文件内容导向read命令,每次读取一行,存入变量myline,直到文件读取完毕。
- read命令读取的值,默认是以空格分隔。可以通过自定义环境变量IFS(内部字段分隔符,Internal Field Separator 的缩写),修改分隔标志。
if结构
if commands; then
commands
[elif commands; then
commands...]
[else
commands]
fi