1. shell概念
1.1 什么是shell
Shell是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入需要执行的命令,类似于Windows的命令提示符。简单说,就是用户通过shell告诉Linux内核执行什么命令,Linux内核通过shell告诉用户执行结果。
1.2 常见shell种类
Shell 的种类繁多。除了我们熟悉的 sh、ksh、csh、bash ... 外,还有各种免费或商业版本如: RC、ES、EShell、psh、Zoidberg 等等。
1.3 如何查看shell版本
查看当前使用什么种类的shell:
$ echo $SHELL
如使用bash,则返回:/bin/bash
查看bash版本号:
$ /bin/bash --version
执行结果:
2. 管道和重定向
2.1 重定向输出
使用 >操作符将标准输出重定向到一个文件:
$ ls -l > lsoutput.txt
如果文件存在则覆盖,不存在则创建。
文件描述符0代表标准输入
文件描述符1代表标准输出
文件描述符2代表标准错误输出
使用 >>操作符将输出内容附加到一个文件中:
$ ps >> psoutput.txt
下面命令将标准输出及标准错误输出分别重定向到不同的文件中:
$ kill -HUP 1234 >killout.txt 2>killerr.txt
把两组输出都重定向到同一个文件中,使用 >&操作符:
$ kill -1 1234 >killouterr.txt 2>&1
可以使用Linux通用的“回收站” /dev/null来丢弃输出信息:
$ kill -1 1234 >/dev/null 2>&1
2.2 重定向输入
使用 <操作符重定向标准输入:
$ more < killout.txt
2.3 管道
管道操作符 |用于连接进程,可以将上一个进程的输出结果作为下一个进程的输入。
例如:
$ ps | sort | more
ps命令列出当前的进程,以此作为sor命令的t输入进行排序,再将排序结果作为more命令的输入进行分页输出。
3. 作为程序设计语言的shell
3.1 交互式程序
所谓交互式程序就是直接在命令行上输入shell脚本进行测试的过程。
例如:
$ for file in *
> do
> if grep -l POSIX $file
> then
> more $file
> if
> done
当shell期待进一步的输入时,正常的 $提示符会变成 > 提示符。
3.2 创建脚本
使用文本编辑器,如vi/vim,来创建一个包含命令的文件,命名为first,它的内容如下:
# !/bin/sh
# first
# This file looks through all the files in the current directory for the string POSIX, and then prints
# the names of those files to the standed output.
for file in *
do
if grep -q POSIX $file
then
echo $file
fi
done
exit 0
# 代表注释。第一行 # !/bin/sh代表告诉系统所使用的shell类型。exit命令返回一个有意义的退出码。
3.3 把脚本设置为可执行
使用chmod命令来添加脚本的可执行属性:
$ chmod +x first
运行脚本:
$ ./first
---------------
码字不易,点个赞再走呗~
我是良许,世界500强外企 Linux 开发工程师,专业生产 Linux 干货。欢迎关注我的公众号「良许Linux」,回复「1024」获取最新最全的技术资料,回复「入群」进入高手如云技术交流群;提供永久免费 CSDN 资料下载服务。