Shell,见名知意,就是一个作为用户与Linux OS间接口的程序,允许用户向OS输入需要执行的命令。Shell众多,这里只介绍Bash。
0)实验的Shell版本
显示shell版本:
/bin/bash --version
结果:
1)文件.bash_history
该文件保存历史命令,一般是当用户正常退出Shell的时候保存,所在目录为:”~/.bash_history“。
命令显示~目录下,所有以.开始的文件:
ls -a ~ | grep ".*"
结果:
①!!,两个叹号表示“执行上一条命令”;
②!n,表示执行历史命令中的第n条命令;
③!string,表示执行历史命令中第一次以string开头的命令;
在上图中,还有些其它以.开头的隐藏文件,且意义非凡,它们都是用户级的环境变量配置文件(当然,还有系统级别的):
◆ .bash_profile或.profile:定义用户专用的shell信息。当用户登录时,该文件将执行且仅执行一次。默认情况下,它设置了一些环境变量,执行用户的.bashrc文件。默认内容如下:
◆ .bashrc:该文件包含专用于当前用户的shell的bash信息,当用户登录时以及每次打开新的shell时,该该文件被读取。一般用户自定义的alias或自定义变量会存到该文件中。默认内容如下:
◆ .bash_logout:当退出shell时,将执行该文件。一般可将一些清理工作放在该文件中。默认内容如下:
2)重定向
重定向包括:重定向输出和重定向输出。
①重定向输出
◆ 将显示内容重定向到test.txt文件中:
ls -l > test.txt
使用vim打开文件,结果如下:
◆ 将ps命令结果追加到test.txt文件中:
ps >> test.txt
结果:
②重定向输入
将test.txt文件的内容重定向输入给more命令:
more < test.txt
结果:
3)管道
管道操作符为|,用来连接进程,并且连接进程的数目是没有限制的。不同与MS-DOS,Linux下通过管道连接的进程可以同时运行,并随着数据流在它们之间的传递可自动地进行协调。
查看系统中所有进行,但不包括shell:
ps -xo comm | sort | uniq | grep -v sh | more
结果: