Shell基础

一、Shell概述
Shell的作用 —— 命令解释器,“翻译官”
• shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上。

Shell基础_第1张图片
Shell在Linux系统中的位置
Shell基础_第2张图片

Shell的分类
 Bourne Shell:从1979起Unix就开始使用,Bourne Shell的主文件名为sh。
 C Shell: C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名。

Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。

 Bash: Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell。 其属于Bourne家族。

二、Shell基础
命令与文件补全
在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全,经常使用

命令别名
[root@localhost ~]# alias 别名=‘原命令’
#设定命令别名
[root@localhost ~]# alias grep=‘grep --color=auto’(注意等号两边不能有空格

alias的作用仅在该次登入的操作,即输入一次alias后,这个修改只在当前的Shell生效。如果重新开启一个 Shell,或者重新登录,则这些alias将无法使用。好在linux中提供alias永久化的方法:
<1>.若要每次登入就自动生效别名,则把别名加在/etc/profile或~/.bashrc中。然后# source ~/.bashrc
<2>.若要让每一位用户都生效别名,则把别名加在/etc/bashrc最后面,然后# source /etc/bashrc

删除别名
[root@localhost ~]# unalias 别名

多命令顺序执行
Shell基础_第3张图片

管道符
命令格式:
[root@localhost ~]# 命令1 | 命令2
#命令1的正确输出作为命令2的操作对象

tee
想个简单的东西,我们由前一节知道 > 会将数据流整个传送给文件或装置,因此我们除非去读取该文件或装置, 否则就无法继续利用这个数据流。万一我想要将这个数据流的处理过程中将某段信息存下来,应该怎么做?
Shell基础_第4张图片
[root@www ~]# tee [-a] file
选项与参数:
-a :以累加 (append) 的方式,将数据加入 file 当中!

[root@www ~]# last | tee last.list | cut -d " " -f1
这个范例可以让我们将 last 的输出存一份到 last.list 文件中;

[root@www ~]# ls -l /home | tee ~/homefile | more
#这个范例则是将 ls 的数据存一份到 ~/homefile ,同时屏幕也有输出信息!

[root@www ~]# ls -l / | tee -a ~/homefile | more
要注意! tee 后接的文件会被覆盖,若加上 -a 这个选项则能将信息累加。

echo输出命令 [root@localhost ~]# echo [选项] [输出内容]
选项: -e : 支持反斜线控制的字符转换
Shell基础_第5张图片
三、Shell脚本
为什么要使用Shell脚本
使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象。缺点是:它们的效率通常不如编译型语言。不过权衡之下,通常使用脚本编程还
是值得的:花一个小时写成的简单脚本,同样的功能用C或C++来编写实现,可能需要两天,而且一般来说,脚本执行的速度已经够快了,快到足以让人忽略它性能上的问题。

Shell脚本的基本元素
(1) #!/bin/bash 必须的,指出shell的类型
(2)# 注释
(3)变量
(4)控制

例:一个shell脚本
vi datewho.sh
#!/bin/bash
this is first shell
date; who

常见运行Shell脚本方法
方法1:

sh ./datewho.sh
2016年 12月 16日 星期五 11:05:55 CST
root tty1 2016-12-16 11:03 (:0)
root pts/0 2016-12-16 11:05 (:0.0)

方法2:
#chmod +x datewho.sh
./datewho.sh
2016年 12月 16日 星期五 11:15:55 CST
root tty1 2016-12-16 11:03 (:0)
root pts/0 2016-12-16 11:05 (:0.0)

你可能感兴趣的:(Shell基础)