一、简介
1、Shell是一个命令行解释器,也是一个功能强大的编程语言,类似Windows的操作界面。即将命令翻译成内核可以懂得机器语言。
2、在/etc/shells可查看支持的shell版本,主要使用bash版本。输入对应shell名称即可切换不同shell版本,如sh,csh。sh常在单用户模式使用,此为古老的简单版本占资源少。切换后使用exit即可退出返回基础版本。shell可在此版本shell中再依次调用别的shell,称为子shell。
二、脚本执行方式
1、echo输出命令:echo [选项] [输出内容] ,-e 支持控制字符(各\n\t之类),详细自行百度,!不要加。
Xshell远程操作支持中文,Linux字符界面不支持,图形界面支持。
\e[1;31m xxx \e[0m 此为输出带颜色的字符。
2、脚本编写执行:
使用vim hello.sh打开编辑器(一般使用vim不使用vi,毕竟是增强版)
①#!/bin/bash,除了这句#后一般都当作注释;
②正常编写相关语句,比如之前的 echo -e "\e[1;31m xxx \e[0m "
③编辑成功,按esc返回一般模式,输入:wq,回车执行便可成功返回命令行
④赋予执行权限,chmod 755 hello.sh
⑤输入路径直接运行(或者不用赋予执行权限,直接bash hello.sh就可以运行)。
三、Bash的基本功能
1、命令别名
简介:命令别名可以当做人的小名
①alias:查看系统中所有别名
②alias ls = 'ls --color=never':像这种格式便可以设置更改别名,临时生效
③vi ~/.bashrc:通过vi将别名写入环境变量配置文件即可永久生效(需要重新登录或source .bashrc)
④unalias 别名:即可删除,临时删除,彻底删除依旧需要编辑文件。
⑤命令生效顺序: 用路径执行的命令>别名>Bash的内部命令>按照环境变量定义的目录查找顺序找到的第一个命令(外来命令)
2、快捷键
①ctrl + c :强制终止当前命令
②ctrl + l :清屏
③ctrl + a/e:光标移动到行首/行尾
④ctrl + u:从光标位置删除到行首
⑤ctrl + z:把命令放到后台
⑥ctrl + r:在历史命令中搜索
3、历史命令
①history [选项] [历史命令保存文件] :-c 清空历史命令,-w 把缓存中的历史命令写入历史命令保存文件(~/.bash_history),一般都默认写入(不加最后那段)
可通过对/etc/profile中的HISTSIZE进行更改来改变历史命令的最大数量
②历史命令调用:上下箭头即可,使用!+1、3之类来重复执行第n条命令。!!:执行上一条命令,!字符串:执行最后一条以该字符串开头的命令。
4、命令与文件补全
双击tab键找出列表,如果唯一单击tab键便可补全。
5、输出重定向(记录错误信息>两边都没有空格!)
①命令 > 文件名:将命令执行结果保存到文件中(覆盖)
②命令 >> 文件名:右侧有空格!!同上,不过这次是追加。
③命令 2>>文件名:右侧无空格!!将错误输出保存,否则错误信息无法存储到文件中(追加,覆盖依旧>)
④命令 >(>>) 文件 2>&1:将正确错误命令输出到同一文件
⑤命令 &>(>>) 文件:同上,将文件名设为/dev/null可以把命令丢到“黑洞里”。
⑥命令 >> 文件1 2>>文件2:正确的存到文件1,错误的存到文件2
6、输入重定向
①wc [选项] [文件名]:-c 统计字节数,-w 统计单词数,-l 统计行数。统计用
②输入重定向(<):将文件作为命令的输入。<<基本不用。
7、管道符
①多命令顺序执行:
命令1;命令2:顺序执行(第一个命令出错后面的依旧会执行)
命令1&&命令2:命令1正确执行才执行2
命令1||命令2:命令1正确执行就不执行2了
②管道符:
命令1|命令2:命令1的正确输出作为命令2的操作对象,可多个管道符一起使用。
P.S.netstat:查看所有网络情况;more:逐页显示长文本;grep [字符串] 查看带有字符串的对象。
8、通配符(类似正则,随时可以使用主要用来匹配文件名,如ls sss*)
①?:任意一个字符
②*:任意多个字符
③[]:括号里的任意一个字符
④^:非
⑤[a-z]:a到z
9、其他特殊符号
①$:用于得到变量的值。如 aa=123,echo $aa
②'':令其视为普通字符串,echo '$aa'为 $aa
③"":所有字符有其含义,echo为123
④$():作用与反引号一样,aa=$(ls),echo "$aa"即可列出文件。先执行()里的命令再把命令结果赋给变量。
⑤#:注释
⑥\:转义符,令特殊符号失去作用。