shell是一个命令解释器,他为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序。
shell的分类
bourne Shell:主文件名为sh
C shell:主要应用于BSD版的unix系统当中。
shell的两种主要语法类型有:Bourne和C
(1)Bourne主要有:sh,ksh,Bash,psh,zsh
(2)C主要有:csh,tcsh
现在linux的主流shell就是Bash。
查看linux支持的shell:vi /etc/shells
不用shell之间进行切换:输入目标切换shell的名字即可。
echo 【选项】 输出内容
选项:
-e:支持反斜杠控制格式转换。
转移字符参考:Linux转义字符
输出字符带颜色的标准字符:"\e[1"开始,"\e[0m"结束。
范例:echo -e “\e[1;31m abcd\e[0m”
#30m黑色 31m红色 32m绿色 33m黄色 34m蓝色 35m洋红 36m青色 37m白色
写好一个脚本后命名为hello.sh赋予755权限,运行方式有:
1.直接运行:./hello.sh(建议用这个)
2.通过Bash调用脚本执行:bash hello.sh
如果有windows编辑的脚本文件向转换为linux:
格式:dos2unix 脚本文件
历史命令
history 【选项】 【历史命令保存文件】
-c:清空历史命令
-w:把缓存中的命令写入历史命令保存文件~/.bash_history
历史命令的调用
1.上下箭头不解释
2.!n:重复执行第n条历史命令。
3.!!:重复执行上一条命令。
4.!字符串:重复执行上一条以该字符串开头的命令。
命令与文件补全
TAB
命令别名
alias 别名=‘原命令’
alias #查看别名命令
删除别名:unalias 别名
命令执行时顺序:
1.绝对路径或相对路径执行命令
2.别名(如:ls )
3.执行Bash的内部命令(如:cd)
4.顺为执行按照$PATH环境变量定义的目录查找顺序找到的第一条命令。
别名永久生效:vi /root/.bashrc
Bash常用的快捷键
Bash常用快捷键
输入输出重定向
输出重定向
命令 > 文件 以覆盖的方式把命令的正确输出输出到文件中
命令>>文件 以追加的方式把命令的正确输出输出到文件中
错误命令 2> 以覆盖的方式把命令的错误输出输出到文件中
错误命令 2>>以覆盖的方式把命令的错误输出输出到文件中
注意:错误命令后面需要加上一个2,2和大于号之间不能有空格
但是细心的同学会发现,如果从一开始就知道命令是错的为什么我还要输入,所以此法实用性不大。
正确方法:
命令 &(>/>>)文件 :错的对的都保持到同一个文件中。
命令 (>/>>)文件1 2(>/>>) 文件2
小技巧:shell脚本中的无用输出可以全部丢进垃圾箱:命令 &>/dev/null
输入重定向(少用,一般源码包打补丁的时候用的到)
wc [选项] 文件名
选项:
-c 统计字节数
-w 统计单词数
-l 统计行数
多命令顺序执行与管道符
多命令顺序执行:
;多个命令顺序执行(注意是分号)
&& 与
|| 或 (特别注意:两个只有一个正确的会执行,前者正确则优先执行,和别的语言的或有点不一样。)
经典例子:命令 && echo “yes” || echo “no”
管道符|
命令1|命令2
命令1的正确输出作为命令2的操作对象。
例子:ls -la /etc | more
grep 【选项】 “搜索内容” 文件名
-i:忽略大小写
-n:输出行号
-v:反向查找
–color=auto 颜色
例子:netstat -an | grep “ESTABLISHED”
通配符和其他特殊符号
常见通配符(正则表达式)
其中:
任意一个字符的表示方法:【^0-9】
Bash中的特殊符号
‘’(单引号):所有字符都是普通字符,没有特殊含义。
“”(双引号):在双引号中大多数特殊字符没有特殊含义,但是$ \ ` 除外。
``(反引号):用来包裹命令,输出为命令的输出。
反引号经常看不清,可以用$()来替代。
#:注释
$:调用变量的值
:转义符