shell:透过shell将我们的输入的命令与Kernel沟通,让内核控制硬件来正确无误的工作。
bash shell的功能
- 命令编修能力
- 命令与文件的补全功能
- 命令别名的设定功能
- 工作控制、前景背景控制
- 程序化脚本
- 通配符
type:查询指令是否为bash shell的内建命令
type [-tpa] name :type会显示出name是外部指令还是bash内部指令
-t :file 表示外部指令 alias 表示指令为别名所设定的名称 builtin 表示该指令为bash内建的指令功能
-p :如果后面借的是外部指令时,才会显示完整文件名
-a :在PATH变量定义的路径中,将所有name的指令都列出来,包括alias
shell变量
变量的取用 echo
echo $variable
变量的设定规则
-
变量与变量内容之间以一个等号连接
-
等号两边不能直接接空格符
-
变量名称只能是英文字母与数字,且数字不能作为开头字符
-
变量内容若有空格可使用双引号或单引号结合起来
-
可用\将特殊字符转化为一般纯文本字符
myname=VBird\ Tsai `` -
可以使用反单引号
指令或者$(指令) -
若该变量为扩展变量内容,则可用“
{变量名称}累加内容
PATH="$PATH":/home/bin 或 PATH={PATH}:/home/bin
- 若该变量需要在其他子程序执行,则需要以export来使变量变成环境变量
export PATH
- 取消变量的方法为使用 unset命令
env观察环境变量与常见环境变量说明
set观察所有变量
PS1:提示字符的设定
\d :可显示出【星期 月 日】的日期格式
\H :完整的主机名
\h :仅取主机名在第一个小数点之前的名字
\t :显示时间,为24小时格式HH:MM:SS
\T :显示时间,为12小时格式HH:MM:SS
\A :显示时间,为24小时格式HH:MM
@ :显示时间,为12小时格式HH:MM
\u :目前使用者帐号
\v :bash的版本信息
\w :完整的工作目录,由根目录写起
\W :利用basename函数去的工作目录名称,仅会显示最后一个目录名
# :下达的第几个指令
$ :提示字符,如果是root时,提示字符为#,否则就是$
$ 关于本shell的PID(process ID)
? 关于上个指令的回传值
locale 影响显示结构的语系变量
变量键盘读取、数组与宣告:read、array、declare
read [-pt] variable -p :后面可以接提示字符 -t :后面可以接等待的秒数
declare [-aixr] variable
-a :将后面的变量定义为数组类型
-i :将后面的变量定义为整数数字
-X :将后面的变量变为环境变量
-r :将后面的变量设定为只读
变量内容的删除、取代与替换
#代表变量内容从前面开始向后删除,且删除最短的一个
##代表变量内容从前面开始向后删除,且删除最长的一个
% 代表变量内容从后面开始向前删除,且删除最短的一个
%%代表变量内容从后面开始向前删除,且删除最长的一个
bash的进站与欢迎讯息:/etc/issue /etc/motd
##数据流的重定向
-
标准输入(stdin):代码为0,使用<或<<
-
标准输出(stout):代码为1,使用>或>>
-
标准错误输出(stderr):代码为2,使用2>或2>>
/dev/null垃圾黑洞设备与特殊写法
find /home -name .bashrc 2> /dev/null
将正确和错误的信息统统输入一个一个文件中
find /home -name .bashrc > list 2> list 错误
find /home -name .bashrc > list 2>&1 正确
find /home -name .bashrc &> list 正确
bash的环境配置文件
主要分为login shell与nologin shell。login shell主要读取/etc/profile与~/.bash_profile。nologin shell主要读取~/.bashrc
source :读取环境配置文件的指令
source 配置文件档名
排序命令:sort,wc,uniq
sort排序
uniq [-ic] 将重复的资料仅列出一个显示 -i :忽略大小字符的不同 -c :进行计数
wc [-lwm] 计算讯息的整体数据 -l :仅列出行; -w :仅列出多少字 -m :多少字符
tee 双向重定向
tee [-a] file 同时将数据流送到文件与屏幕
字符转换命令:tr,col,join,paste,expand
tr可以用来删除一段信息中的文字,或者进行文字信息的替换
tr [-ds] SET1 .....
:替换
-d:删除信息当中的SET1这个字符
-s:替换掉重复的字符
col [-xb]
-x :将[tab]键转换为对等的空白键
-b :在文字内有反斜杠时,仅保留反斜杠最后接的那个字符
join [-ti12] file1 file2 处理两个文件的数据,将两个文件有相同数据的那一行加在一起
-t : join默认以空白格作为分隔符,并且对比“第一段字段”的数据,如果两个文件相同,则将两条数据连成一行,且第一个字段放在第一个
-i :忽略大小写差异
-1 :代表第一个文件要哪段字符分析的意思
-2 :代表第二个文件要那段字符分析的意思
paste 直接将两行贴在一起,且中间以[tab]来分隔
expand 将[tab]用空格键代替
-t :后面接数字,一般来说一个[tab]按键可以用8个空格键代替,但我们也可以自己定义
split 切割命令
split [-bl] file PREFIX
-b :后面可接欲切割的文件大小,可加单位 -l :以行数来进行切割
xargs :参数代换