认识和学习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:tab键转换成空格键

jion:将两个文件当中有相同数据的那一行加在一起

paste:将两行直接贴在一起

expand:将tab键转换成空格键

split:切割命令,可以将大文件切割

xargs:参数代换

 

重点回顾

原文地址:https://www.cnblogs.com/droidxin/p/3840455.html