shell学习笔记(一)shell基础

术语:在unix中,shell被称为工具(unility)命令(command)
关键字:命令,shell

1.1 什么是命令

术语: 命令(command)是一个可以运行的程序。
例:

$ date

产生输出:

2020年 12月 17日 星期四 20:33:40 CST

该命令(date)显示当前日期、时间和年份。
例:

$ who

产生输出:

jianghao :0           2020-12-15 22:45 (:0)

该命令显示了所有正在使用unix系统的人员或用户的一个列表。
第一列为登录的用户名,第二列为登录的终端,第三列为登录的时间。

1.1.1 简单命令

术语: 简单(simple)命令,一条简单的命令只需要在提示符后面输入要执行的命令名(command)即可(按ENTER键执行,美元符“$”为系统提示符)。

$ command

1.1.2 复杂命令

术语: 复杂(complex)命令,是由一条命令和参数列表组成的命令。
例:

who am i

术语: 参数(argument),是命令修饰符,用以改变命令的行为。在本例中命令名是who,参数是am和i。
术语缺省(default)行为,一条命令在作为简单命令运行时产生的输出。
参数am和i改变了who命令的行为,使它仅列出了自己的信息。在unix中大多数命令可以接受参数来改变他们的行为。
复杂命令语法:

$ command  argument1 argument2 argument3 ...argumentN

复合命令

unix的一个强大特征就是能把简单和复杂的命令组合起来形成复合命令。
术语: 复合(compound)命令,由一组被分号”;“隔开的简单和复杂命令的组成。
例:

$ date; who am i;

产生输出:

2020年 12月 17日 星期四 21:06:52 CST
jianghao :0           2020-12-15 22:45 (:0)

在复合命令下不需要在两条命令之间返回到提示符下,直接按顺序执行命令。
复合命令语法:

$ command1; command2; command3 ... commandN

这里的command1 到 commandN 是简单或者复杂命令。按顺序执行到最后一条命令后返回到提示符下。

1.1.4 命令分隔符

术语: 分隔符(separator),分号(;)被看作一个命令分隔符,它指出一条命令的结束和一条命令的结尾。如果命令之间不加分号,则会报错,使用复合命令时候必用分号分隔。
在脚本中常用分号来终止简单或者复杂命令。

1.2 什么是shell

计算机是如何知道用户要运行命令呢?
术语: 计算机通过shll来与用户进行交互。shell提供一个到unix系统的接口,它收集用户的输入,并跟据用户的输入来执行程序。当一个程序运行结束之后,它显示程序的输出。因此,shell也被叫做命令解释器
shell的真正强大不仅在于是一个命令解释器,还是一个强大的编程语言。有着完整的条件语句、循环和函数。

1.2.1 shell提示符

当显示第一个提示符时,用户可以输入一条命令。shell在用户按Enter后读入该输入。跟据输入的第一个单词来决定要执行的是什么命令。单词是一组无间隔的字符,通常用空格或者tab来分割。
对于shell,用户输入命令如下:

$ word1 word2 word3 ... wordN

shell总是选择word1作为要执行的命令名。如果只有一个单词:

$ date

shell的工作就很容易了,只要执行该命令即可。如果有多个单词:

who am i

shell会把who后面的单词作为参数传递给who。

1.2.2 shell类型

使用不同的shell类型,所显示的提示符是不同的,在UNIX中有两种主要的类型shell:

  • Bourne Shell(包括sh,ksh,bash)——提示符:$
  • C Shell(包括csh,tcsh) ——提示符:%
    Note:
       在UNIX中有两类账号:普通用户账号和root账号。普通用户被赋予普通用户账号。root账号是拥有特殊权限的账号,UNIX系统的系统管理员(叫做sysadmin)用其对系统进行维护和升级。
       如果用户使用root账号, Bourne和C shell都显示#字符作为提示符,当作为root用户执行命令时要格外小心,因为该命令对整个系统都有影响。

    不同的Bourne Shell如下:
        - Bourne Shell(sh)
        - Korn Shell(ksh)
        - Bourne Again Shell(bash)
        - POSLX Shell
    不同类型的C Shell如下:
        - C Shell(csh)
        - TENEX/TOPS C Shell(tcsh)
    1、Bourne Shell
       Bourne Shell特征:
           - 进程控制
           - 变量
           - 正规表达式
           - 流控制
           - 强大的输入和输出控制
           - 函数
       所有的Bourne 类型的shell都支持以上的特征。
       最初的Bourne Shell的一个重要缺陷是交互使用困难。三个主要缺点是:
           - 没有文件名完整功能
           - 没用命令历史或命令编辑
           - 很难执行多个后台进程或任务。
    2、C Shell
       主要缺陷:
           - 输入和输出控制比较弱
           - 缺少函数
           - 由于“懒惰”的命令解释器而容易造成语法混乱。
       关键发展:
           - 命令历史——可以重复执行以前执行的命令,在重新执行前还可以编辑命令。
           - 别名——可以为一条命令创建一个短的别名。别名是Bourne Shell函数的一种简化形式。
           - 文件命完整——可以只输入文件名的几个字符而让C Shell自动完整文件名。
           - 任务控制—— C Shell可以让用户使用job命令执行多个进程并对其进行控制。
        C Shell在多数机器上通常安装在/bin/csh下。
    3、Korn Shell
        Bourne Shell使用来编程的而C Shell用于交互式使用。为了改变这种状况,则产生了Korn Shell,即ksh,把C Shell中所有交互式特征移入Bourne Shell的语法中。因此,Korn Shell受到了用户的喜爱。
       ksh通常被安装在/bin/ksh或/usr/bin/ksh下。
       ksh通常被认为与sh完全兼容,但其中一些区别使脚本并不能正确实现功能。
        Korn Shell带给Bourne Shell的一些额外特征:
           - 命令历史和历史替换
           - 命令别名和函数
           - 文件名完整
           - 数组
           - 内置的整数运算
        还有三种主要的ksh版本可供使用:
           - Official版(ksh)
           - Public Domain版(pdksh)
           - Desktop版本(dtksh)
    对于程序员来说,Official版和Public Domain版的ksh之间没有区别——在一个版本下能运行的所有脚本在另一个版本下也能运行。
    4、Bourne Again Shell
        Bourne Again Shell,即bash,是作为GNU工程的一部分开发的,它已在Linux这样的基于GNU的系统中取代了Bourne Shell。所有主要的Linux产品,包括Red Hat、Slackware和Caldera,都用bash代替了sh。
        bash仍然保留了Bounre Shell的语法兼容,于是可以运行几乎所有的Bourne Shell脚本。(bash很容易移植,一般安装在/bin/bash中)
       bash中的一些Korn Shell所没有的特征如下:
           - 对变量名、用户名、主机名、命令和文件名的名字完整功能
           - cd命令中的路径名拼写修改
           - 无大小限制的数组。
           - 2~64之间任何进制的整数运算
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值