Shell基础知识
1.概述:
- Shell是一个应用程序,它连接了用户和 Linux内核,让用户能够更加高效、安全、低成本地使用Linux内核,这就是Shell的本质。Shell本身并不是内核的一部分,它只是在内核的基础上编写的一个应用程序,但是其特殊性就是开机立马启动,并呈现在用户面前,用户通过Shell来使用Linux,不启动Shell的话,用户就没办法使用Linux;
- Shell调用内核暴露出来的接口来使用户与内核相连,其接口就是一个一个的函数,使用内核就是调用这些函数;
- shell是一种过程式编程;
程序=指令+数据;
1)过程式编程:以指令为中心,数据服务于命令
- 顺序执行
- 循环执行
- 选择执行
2)对象式编程:以数据为中心,命令服务于数据
2.Shell分类:
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
- ……
注意:由于Bash易使用和免费,所以在日常工作中被广泛使用。同时,Bash也是大多数Linux系统默认的Shell。在一般情况下,人们并不区分Bourne Shel和Bourne Again Shell,所以,像#!/bin/sh,它同样也可以改为#!/bin/bash。
#!:告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序。
3.Shell优点:
(1)可扩展性强:
Shell除本身的内置命令还能使用外部命令。Shell可以调用其他的程序,每个程序就是一个命令,这使得Shell命令的数量可以无限扩展,其结果就是Shell的功能非常强大,完全能够胜任Linux的日常管理工作。
(2)支持编程:
Shell虽然没有C++、Java、Python等强大,但也支持了基本的编程元素【if...else选择结构,case...in开关语句,for、while、until循环;变量、数组、字符串、注释、加减乘除、逻辑运算等概念;函数,包括用户自定义的函数和内置函数】。Shell主要用来开发一些实用的、自动化的小工具,而不是用来开发具有复杂业务逻辑的中大型软件,例如检测计算机的硬件参数、搭建Web运行环境、日志分析等,Shell都非常合适。
(3)使用灵活、部署容易、跨平台性好:
shell是一种脚本语言,我们编写完源码后不用编译,直接运行源码即可。
4.Shell命令:
(1)内置命令:由Bash自身提供的命令,而不是文件系统中的某个可执行文件。
命令
|
说明
|
alias
|
为指定命令定义一个别名
|
bg
|
将作业以后台模式运行
|
cd
|
将当前目录切换为指定的目录
|
echo
|
将指定字符串输出到STDOUT
|
help
|
显示帮助文件
|
history
|
显示命令历史记录
|
jobs
|
列出活动作业
|
kill
|
向指定的进程ID(PID)发送一个系统信号,杀死进程
|
printf
|
使用格式化字符串显示文本
|
pwd
|
显示当前工作目录的路径名
|
times
|
显示累计的用户和系统时间
|
umask
|
为新建的文件和目录设置默认权限
|
unalias
|
刪除指定的别名
|
(2)外部命令:Shell可以调用其他的程序,每个程序就是一个命令。