名词解释
Shell:
shell(外壳)是一个命令解释器(也是一种应用程序),处于kernel(内核)和用户之间,负责把用户的指令传递给内核并且把执行结果回显给用户,同时,shell也可以作为一门强大的脚本语言。
终端:
接受Shell命令的输入输出程序,Ubuntu默认的终端应用是Terminal。Windows系统中时cmd命令窗口。
Shell解释器:
Shell有多种解释器实现,目前多数Linux发行版本默认是bash。可以近似地认为linux shell=bash而windows=cmd,都是命令行解释器,都是用户与操作系统的交互接口。但是bash要比cmd强大很多
脚本编写工具:
gedit(Ubuntu预装)、vim
一些规则
Shell中的标识符大小写敏感,系统命令的参数大小写也有不同的意义。
Shell空格规则:=左右必须无空格,其他符号加空格准没错,如[ ] | 等。
Shell是解释型的脚本语言,变量不区分数据类型,均以字符串形式存储,通过$符实现对变量的引用。因此,将变量打印输出时最好均带上双引号,防止变量中的空格(如日期)截断字符,导致输出异常。如:printf "$username"
常见命令
常规命令
命令 | 解释 |
---|---|
reset | 清除屏幕 |
clear | 清屏(向后翻滚一个屏幕,内容还在) |
alias cls=’clear’ | 为命令clear起别名为cls |
printf | 打印,参数式(c语言) |
echo | 打印+自动换行,但不转义 |
echo -e | 打印+自动换行,转义输出,如\n换行 |
\Enter | 续行符,由反斜杠+Enter键组成 |
date | 系统命令,获取当前日期时间 |
帮助命令
- | |
---|---|
命令 –help | 命令解释 |
man 命令 | 命令解释,需安装manpages-zh |
系统信息
- | |
---|---|
printenv SHELL | 查看shell的实际实现 |
hostname | 主机名 |
whoami | 当前用户 |
uname -a | 操作系统信息 |
ps -u | 在普通用户模式下以 root 权限查看进程 |
du –sh /home | 显示/home目录下,磁盘使用情况的总和 |
chmod a+x | 为所有用户增加执行权限 |
sleep | 线程睡眠 |
文件IO
- | |
---|---|
cd | 进入目录 |
~ | 根目录(/Home/用户名) |
./ | 当前目录 |
../ | 上级目录 |
mkdir | make directory创建目录 |
touch | 创建文件 |
cp | copy复制文件或目录 |
mv | move移动文件或目录,同目录时相当于重命名 |
rm -r | remove删除文件或目录,需谨慎操作。参数-r表示递归删除子目录和文件 |
ls -l | list列出当前目录下的文件与子目录,参数-l表示以长列表形式显示详细记录 |
cat | catch获得文件内容并输出 |
逻辑算术
- | |
---|---|
-ne | not equals 不等 |
-gt | great than 大于 |
-lt | less than 小于 |
expr | 类似运算函数,将之后的字符串当做表达式处理,完成加减乘除幂模。用法num=`expr $num - 1` |
+-*/%^ | 注意,运算符两侧均要有空格 |
脚本命令
- | |
---|---|
vim | 使用vim创建shell脚本,进入编辑器 |
:wq | 保存vim编写的脚本并退出编辑器。首先要按esc进入命令模式,然后输入:wq |
:set number | vim显示行号 |
./脚本.sh | 执行Shell脚本,需./指定当前目录 |
#!/bin/bash | 指定shell解释器 |
# | 单行注释 |
:<<! 注释 ! | 多行注释内容 |
‘’(单引号对) | 表示文本,仅仅表示文本 |
“”(双引号对) | 表示文本,但遇到$(参数替换)与`(反引号,命令替换)会进行替换 |
= | 变量赋值,等号左右两侧均不能有空格,否则会把变量名当做命令处理,如num=1 |
$ | 参数替换符,引用变量,表示某个字符串是一个变量如num2=$num |
`命令` | 命令替换符(反引号,tab上方),调用函数,并将函数返回值输出给变量(理解为调用函数后再toString()) |
$(命令) | 命令替换符推荐用法,不推荐使用反引号 |
$# | 脚本输入的参数个数 |
$1 $2 $n | 引用输入的第1.2.n个参数 |
| | 管道符,将前一个命令的输出作为后一个命令的输入,将命令串起来 |
sed | 管道命令,按行为单位处理文本,替换字符串等 |
awk | 管道命令,根据规则处理文本 |
grep | 管道命令,在指定字符串中查找特定内容 |
gsub | 字符串匹配 |
tee | 管道命令,读取标准输入的数据,并将其内容输出成文件 |
exit | 退出脚本,0正常退出,1异常退出(Windows下1正常退出,0异常退出) |
export | 设置/获取环境变量 |
env | 查看更多环境变量 |
vmstat | 统计操作系统的相关信息 |
trap | 调试 |
流程控制语句
#if-else
if [ … ]; then # [左右必须有空格,]左侧有空格,右侧可无
elif [ … ]; then
else
fi
#switch
case $num in
"1")
;;
"2")
;;
*) # 别忘了默认
;;
esac
#while
while [ $n –gt 0 ]; do
done
#for
for 变量 in 列表; do
done