首页 > 代码库 > 认识和学习shell
认识和学习shell
认识和学习shell
Linux使用的shell版本名为“Bourne Again SHell(简称bash)”,这个shell是Bourne SHell的增强版本,也是基于GNU的架构发展来的
bash shell的功能
1.命令记忆功能:他能够记忆使用过的命令,命令记录在主文件夹内的.bash_history中。注意:~/.bash_history记录的是前一次登陆以前所执行的命令,而这一次登陆所执行的命令则暂存在临时内存中。当注销系统后,这些命令才回被记录到.bash_history中。
2.命令与文件补全功能([Tab]键的好处)
3.命令别名设置功能(alias)
设置: alias lm=’ls -al’
4.作业控制,前台,后台控制
5.脚本程序
6.通配符:*
bash shell 的内置命令:type
在我们的bash中已经有许多内置的命令的。例如 cd ,umask等等
那么,我们如何知道这个命令是来自于外部命令还是内部命令呢?这时,我们可以通过type这个命令来查看即可。
type也可以用来作为类似which命令的用途(which:寻找可执行文件)
shell的变量功能
变量的显示与设置:echo,unset
变量的显示:echo eg:echo $variable
echo $PATH
变量的设置:只要用“=”将变量和其内容连接就好了
eg: myname=Droidxin
对于变量的设置,我们必须掌握一些变量的设置规则。
单引号和双引号的区别:双引号仍然可以保有变量的内容,特殊字符 仍保持原本的特性,但单引号仅能是一般符号,而不会有特殊字符。也就是说,使用了单引号,不在是变量的内容,而仅仅是普通字符了。
反单引号的作用:在一串命令中,反单引号内的命令将会先被执行,而其执行出来的结果将作为外部的输入信息
eg: ls -l `locate wode`
环境变量的功能
首先,我们得知道有多少默认的环境变量?可以通过 env和export两个命令来查阅。
接下来我们看一下一些常见的环境变量
PS1,命令提示符,一个挺有趣的变量
$(关于本shell的PID),这个代表目前这个shell的线程代号,即所谓的PID(Process ID)
?(关于上个执行命令的回传码)一般来说,如果命令执行成功,则会回传一个0值。
变量的操作命令
变量键盘读取,数组与声明:read,array,declare
read:读取来自键盘输入的变量
declare/typeset:声明变量的类型,变量的声明是非常有用的,变量的默认设置为字符串类型。有时候你需要将变量进行运算的话,那么需要将变量的类型设置为整型。
数组变量类型。
ulimit:与文件系统及程序的限制关系,可以限制用户的资源,包括打开的文件数量,可以使用的CPU的时间,使用的内存总量等。
变量内容的删除,替代和替换,详情可参考书本P313
命令别名与历史记录:alias,unalias,history
Bash Shell的操作环境
1.现在我们知道系统里面其实有不少的ls命令,或者是包括内置的echo命令,那么想一想,如果一个命令被执行,到底是哪一个ls被拿来执行呢?基本上,命令运行的顺序是这样 的:
2.bash的登陆与欢迎信息:/etc/issue,/etc/motd
可以自定义一些用户登陆显示信息,例如可以显示一些提示话语之类的信息,对于多用户管理十分的有用。
3.bash的环境配置文件
bash在启动的时候回直接读取bash的环境配置文件,已规划好bash的操作环境。要注意,我们设置的命令别名,自定义的变量在你注销bash后会失效,所以,如果你想要保存你的设置,那么,就需要把这些设置写入配置文件才行。
讲一下login shell 和non-login shell
login shell:取得bash时需要完整的登陆流程。
non-login shell:取得bash接口不需要重复登陆的举动,例如 ,从X的图形界面启动终端机,不需要再次登陆。
login shell 只会读取/etc/profile和~/.bash_profile 或~/.bash_login或~/.profile
/etc/profile:系统整体的设置,最好不要改
~/.bash_profile 或~/.bash_login或~/.profile:用户个人设置,我们需要修改的数据,就是这里
此外,关于bash环境配置文件和如何配置不在多提了
通配符和特殊符号
通配符,让我们利用bash操作更加的简便快捷
bash环境中的特殊符号
数据流重定向
什么是数据流重定向呢?一般来说,如果你要执行一个命令,通常需要这样的过程
在执行完一条命令之后,都会有回传的信息,如果正确执行了命令,那么就会standard output标准输出,输出命令正确执行的信息,否则就会standard error output标准错误输出,输出命令错误执行的信息
而数据流重定向,就是将这些信息分别传送到其他的文件或设备中去。
数据流重定向十分的重要,同时命令操作也多样化,那么可以参考书本的P329
何时使用数据流重定向
既然我们知道了数据流的重定向,那么什么时候要使用数据流重定向呢?数据流重定向一般应用于:
1、屏幕输出的信息很重要,而且我们需要将它保存下来;
2、后台执行中的程序,不希望它干扰屏幕正常的输出结果;
3、一些系统的例行命令的执行结果,希望它能够保存下来;
4、一些执行命令的可能已知出错信息时,想以“2>/dev/null”将它屏蔽掉;
5、错误信息和正确信息需要分别输出;
命令执行的判断依据
判断依据: ; && ||
; 不考虑命令相关性的连续命令执行
管道命令
管道命令“|”仅能够处理经由前面一个命令传来的正确信息,也就是standard output 的信息,对于standard error 并没有直接处理能力
选取命令:cut,grep
cut:切去信息的一部分
grep:分析一行信息,若有需要,则拿出来
排序命令:sort,wc,uniq
tee:双向重定向
字符转换命令:tr,col,join,paste,expand
split:切割命令,可以将大文件切割
xargs:参数代换
重点回顾