《Linux中地shell与shell命令》由会员分享,可在线阅读,更多相关《Linux中地shell与shell命令(14页珍藏版)》请在金锄头文库上搜索。
1、word shell与shell命令本章主要内容:shell根本功能与种类shell根本概念I/O重定向与管道shell的启动根本shell命令 3.1 shell根本功能与根本概念3.1.1 shell根本功能shell是用户和Linux内核之间的接口程序 。shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。 shell一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构shell具有以下根本功能:3.1.2 字符与保存字1. 字符 (1) 白空格 (2) 通配符
2、*:代表从它所在位置开始的任何字符串。 ?:代表它所在位置上的任何单个字符。 :代表一个指定X围的字符。方括号中的字符X围可以由直接给出的字符组成,也可以由表示限定X围的起始字符、终止字符与中间的连字符“-组成。通配符模式串意义*Text*ab-dm*当前目录下所有以a、b、c、d、m开头的文件名ab-dm?当前目录下所有以a、b、c、d、m开头且后面只跟有一个字符的文件名!ab-dm?或ab-dm?当前目录下所有不以a、b、c、d、m开头且后面只跟有一个字符的文件名/dev/hd?目录/dev下所有以hd开头且只有三个字符的文件名(3) 注释符与注释 在shell命令或shell编程中从字符
3、“#开始以后到行末的局部作为注释,因此以“#开头的行是注释行。(4) 转义字符转义字符所代表的意义转义字符所代表的意义a响铃符tTab键b退格键v垂直制表符f换页n换行0?8进制表示x?16进制表示(5) Linux系统的特殊键 特殊键意义Ctrl+D完毕当前程序输入或终止当前程序或从系统中注销Ctrl+C终止当前程序的执行Ctrl+终止当前程序的执行系统内部处理时不同于Ctrl+CCtrl+Z挂起当前程序执行,将推到后台Ctrl+S/Ctrl+Q暂停/继续屏幕的输出,必须配合使用ScrollLock暂停/继续屏幕的输出,开关键Ctrl+Alt+Del默认动作为重启系统Alt+F#字符终端切换
4、。比如Alt+F2将终端切换至F2Ctrl+Alt+F#从图形介面切换终端到字符终端。比如Ctrl+Alt+F1从图形界面切换至F12. 保存字任何编程语言或系统都有一定数量的保存字,bashell的局部保存字如下:!,break,continue,cd,echo,eval,exec,exit,export,function,getopts,hash,pwd,read,readonly,return,select,set,shift,test,time,trap,type,ulimit,unset,umask,wait,for,do,done,case,in,esac,if,else,elif
5、,if,while,until3.1.3 文件命名与文件类型1. 文件与文件名 文件是被命名称为文件名的存储在某种介质如磁盘、光盘和磁带等上的一组信息的集合。UNIX/Linux的文件均为无结构的字符流形式。 文件名是文件的一种标识,一般情况下,它由字母、数字、下划线和圆点组成的字符串来构成。 Linux支持长文件名,但要求文件名的长度限制在255个字符以内。2. 文件类型 UNIX/Linux系统中有三种根本的文件类型:普通文件目录文件设备文件3.1.4 目录结构与路径1. 目录与目录结构 UNIX/Linux系统以文件目录的方式来组织和管理系统中的所有文件。所谓文件目录就是将所有文件的说明
6、信息采用树型结构组织起来即目录。UNIX/Linux系统中,整个文件系统有一个“根root,然后在根上分“杈directory,任何一个分杈上都可以再分杈,也可以长出“叶子。“根和“杈在Linux中被称为“目录或“文件夹,而“叶子如此是一个个的文件。在UNIX/Linux系统中文件系统的根目录用符号“/表示。Linux是一个多用户系统,操作系统本身的程序或数据存放在以根目录开始的某些专用目录中,有时被指定为系统目录2. 工作目录、用户主目录与路径 自从用户登录到系统中之后,每时每刻都“处在某个目录之中,此目录被称作工作目录或当前目录Working Directory。工作目录用“.表示,且可以
7、随时改变。 用户刚登录到系统中时,其工作目录便是该用户主目录。root用户的主目录为/root,其它用户的主目录是在/home下的与登录名一样的目录。路径是指从树型目录中的某个目录层次到某个文件或目录路线。 对任一文件在文件系统中的位置可以由相对路径或绝对路径来决定。绝对路径是指从“根开始的路径;相对路径是从用户工作目录开始的路径。3.1.5 shell命令解释与执行命令格式如下: 命令名 选项 参数 在Linux系统中默认的分隔符为白空格。 参数是Linux命令操作的对象,而选项如此影响命令对对象的操作行为。 选项是由符号“-引导的字符或字符串,“-是必须的,Linux用它来区别选项和参数。
8、在Linux系统中选项有两种形式:一种是传统UNIX风格的选项,以“-开始,紧跟一个字符;另一种是GNU风格的选项,以“-开始,紧跟着完整的英文单词或由“-连接的单词组合,来说明选项的意义。bash命令行具有命令和文件名扩展特性。bash也能列出当前目录下局部匹配的文件名来完成文件名扩展。 bash还允许用户对正在输入的命令行进展编辑。 Linux的回车后命令也被保存在历史记录中,通过光标键“和“上下翻动历史记录,对出现的当前记录可以进展编辑和使用。假设用户要重新执行某条历史记录的命令可以使用格式:!记录编号 用户还可使用格式: history nbash命令行编辑键 编辑键意义Ctrl+A光
9、标移至行首Ctrl+E光标移至行尾Alt+F光标前移至右一词末Alt+B光标后移至左一词前Ctrl+L清屏并在屏幕顶端重显当前行Ctrl+-恢复上一次的操作Ctrl+K删除光标处至行末内容Ctrl+U删除光标处至行首内容Alt+D删除光标处至单词末内容Alt+DEL删除光标处至单词首内容Ctrl+W删除光标处左一词至词首内容Ctrl+Y将刚删除的内容插入到光标处3.1.6 环境变量与变量1. 环境变量 shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,用户还可以重新定义这些变量。环境变量可用命令env来查询。常用的shell环境变量有:HOME:根目录。 LOGNAME:登录用
10、户名。IFS:命令行内部域分割符:空格,tab。PATH:命令搜索路径。TERM:终端的类型。PWD:当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化。PS1:主提示符,默认情况下,超级用户的主提示符是#,普通用户主提示符是$。PS2:辅助提示符,提示用户继续输入命令的其余局部,默认的辅助提示符是“2. 变量在UNIX/Linux系统中,除了环境变量外,用户还可以定义自己的变量。定义后的变量就像在其它程序设计语言里一样被引用。 变量引用时需要使用“$作为变量名的前导字符。 变量的定义方法:var_name=var_value 3.1.7 标准流与输入输出重定向当执行一个命令时,sh
11、ell通常会自动为其打开三个标准文件,即标准输入文件、标准输出和标准错误。文件号描述符使用设备标准输入0stdin键盘标准输出1stdout屏幕标准错误2stderr屏幕I/O重定向也称作改道是指通过文件的形式实现I/O输入和输出。I/O重定向可以通过以下符号实现:u :以覆盖方式实现输出重定向。u :以追加方式实现输出的重定向。u &:标准输出和标准错误同时重定向。3.1.8 管道u 管道机制是在两个或多个进程之间建立一种连接,使得前一个命令的输出作为后一个命令的输入。u 管道机制常用于进程间的通信。u 实现管道机制的符号是“|,其方法为:n 命令1 | 命令2 | |命令nu 有时候需要对
12、某文件处理既要在屏幕上看到输出同时又要保存一个副本。这时使用管道与tee命令配合来实现。u tee命令的功能是读取标准输入的数据,并将其内容输出到指定文件,其用法为:tee -ai 文件 n -a 追加方式。 n -i 忽略中断信号 3.1.9 引号机制、命令替换与参数替换1. 引号机制u 在shell中引号分为三种:单引号,双引号和反单引号。u 由单引号括起来的字符都作为普通字符。u 反单引号的作用是命令替换。u 命令替换的另一种形式是:$cmd 它的作用与cmd一样。 u 双引号的作用与单引号的功能根本一样,可用来定义变量,所不同的是在双引号内可进展变量和命令替换。 例:#string=$
13、PATH#定义string变量#echo $string#显示变量的值$PATH#x=pwd #通过命令pwd替换定义变量x。pwd的功能是显示用户工作目录#y=whoami #通过命令whoami替换定义变量y。whoami的功能是显示用户名#echo $x $y#显示变量x和y的内容/root root#MyVar=$(whoami) #通过命令whoami替换定义变量MyVar #echo $MyVar $(pwd) #显示变量MyVar和$(pwd)的值 root /root#myname=whoami #通过命令替换定义变量myname#定义变量myself。注意使用了变量替换和命令
14、替换#myself=I am a student my uname is $myname and my work dir is pwd.#定义变量myself1。注意使用了继续行和转义字符#myself1=I am a student my uname is $myname and my work dir is pwd.#echo $myselfI am a student my name is root and my work dir is /root.#echo myself1I am a student my uname is “root and my work dir is “/root. 2. 参数替换参数替换主要是指命令行参数的替换。在执行命令时,它的命令行参数也可以是变量,也可以包括命令替换。设有命令DispAllVar用于显示所有的命令行参数,有变量x其值为test parm,如此命令 DispAllVar I am whoami the value of x is $x