Bshell与Cshell详解
- 格式:doc
- 大小:112.00 KB
- 文档页数:43
cshell语法if摘要:1.cshell 语法if 概述2.cshell 语法if 的基本语法3.cshell 语法if 的用法示例4.cshell 语法if 的注意事项正文:1.cshell 语法if 概述cshell 是一种用于编写自动化脚本的编程语言,常用于Unix 和类Unix 系统。
在cshell 中,if 语句是一种条件判断语句,可以根据指定的条件执行相应的代码块。
if 语句广泛应用于脚本中的逻辑判断和条件处理,使得脚本能够根据不同的情况执行不同的操作。
2.cshell 语法if 的基本语法cshell 中的if 语句的基本语法如下:```if 条件then// 条件成立时执行的代码块else// 条件不成立时执行的代码块fi```其中,条件可以是一个表达式,也可以是一个简单的操作符,如-eq、-ne、-lt、-gt 等。
then 和fi 是if 语句的关键字,它们分别表示条件成立时和条件不成立时代码块的开始和结束。
3.cshell 语法if 的用法示例下面是一个简单的cshell if 语句的示例:```#!/bin/cshset var1 = 10set var2 = 20if ($var1 -eq $var2) thenecho "var1 is equal to var2"elseecho "var1 is not equal to var2"fi```在这个示例中,我们首先设置了两个变量var1 和var2 的值,然后使用if 语句判断这两个变量是否相等。
如果相等,则输出"var1 is equal to var2",否则输出"var1 is not equal to var2"。
4.cshell 语法if 的注意事项在使用cshell 中的if 语句时,需要注意以下几点:- 条件判断中的表达式或操作符应正确无误,以避免语法错误。
cshell语法C Shell (Cshell) 是一种功能强大的Unix shell,它是一种命令行解释器,用于管理和控制Unix操作系统。
C Shell 具有与C 语言类似的语法和语义,使得它易于学习和使用。
下面是C Shell语法的相关参考内容:1. 命令格式:- 命令通常由命令名称和选项组成,比如:`command -option1 -option2 argument1 argument2`- 命令选项通常以"-"开头,用于控制命令的行为- 参数是命令的输入,可以是文件名、目录名或其他命令需要的数据2. 变量:- 变量用于存储和操作数据- 变量的命名规则与C语言类似,由字母、数字和下划线组成,区分大小写- 设置变量的语法是:`set variable_name = value`- 获取变量的值使用美元符号:`$variable_name`3. 控制结构:- if-then-else 语句用于根据条件执行不同的操作:```if (condition) thencommand1elsecommand2endif```- for 循环语句用于重复执行一组命令:```for variable_name in (list)commandend```- while 循环语句用于在给定条件为真时重复执行一组命令: ```while (condition)commandend```4. 输入/输出重定向:- 输入重定向用于从文件中读取数据,使用 `<` 符号:`command < input_file`- 输出重定向用于将命令的输出写入文件,使用 `>` 符号:`command > output_file`- 追加重定向用于将命令的输出添加到文件末尾,使用 `>>` 符号:`command >> output_file`5. 常用的内置命令:- `echo` 用于打印变量的值或文本消息到屏幕上- `setenv` 用于设置环境变量- `cd` 用于改变当前工作目录- `rm` 用于删除文件或目录- `ls` 用于列出目录中的文件和子目录- `cat` 用于连接文件并打印到屏幕上以上是C Shell语法的相关参考内容。
linux+shell脚本语言基础知识linuxshell脚本语言基础知识一.shell简介linux系统的shell做为操作系统的外壳,为用户提供更多采用操作系统的界面,更确切的说,shell是用户与linux操作系统沟通的桥梁。
用户既可以输入命令执行,又可以利用shell脚本编程,完成更加复杂的操作。
shell就是一个命令解释器,它从输出设备加载命令,再将其变为计算机可以以了解的指令,然后执行它。
在linux中,shell又不仅是简单的命令解释器,而且是一个全功能的编程环境。
linux的shell种类众多,常用的存有:bourneshell(/usr/bin/sh或/bin/sh)、bourneagainshell(/bin/bash)、cshell(/usr/bin/csh)、kshell(/usr/bin/ksh)、shellforroot(/sbin/sh),等等。
不同的shell语言的语法有所不同,所以不能交换使用。
每种shell都有其特色之处,基本上,掌握其中任何一种就足够了。
通常用bash,也就是bourneagainshell进行编程。
二.shell采用1.建立和运行shell程序shell脚本程序:按照一定的语法结构把若干linux命令非政府在一起,就是这些命令按照我们的要求完成一定的功能。
它可以进行类似程序的编写,并且不需要编译就能执行。
(只需修改其权限)像是撰写高级语言的程序一样,撰写shell程序须要一个文本编辑器,如vi和vim,通常采用vim文本编辑器,积极支持更便捷的填入模式。
首先采用vim编辑器编辑一个hello.sh文件:#!/bin/bash#helloworldexampleecho\这样,一个最简单的shell程序就撰写完了。
第一行:#!说明hello.sh这个文件的类型的,这有点类似于windows系统下的用不同的文件后缀来表示不同的文件类型,但又不完全相同。
cshell语法Cshell是一种Unix Shell程序,主要用于在命令行界面下与操作系统进行交互。
Cshell语法是Cshell编程中必须掌握的一部分,它允许用户编写脚本来自动化一系列操作。
Cshell语法的基本结构与C语言类似,包含命令、参数和控制结构等。
以下是一些常用的Cshell语法:1. 命令和参数:Cshell中,命令和参数是以空格分隔的。
命令用来执行特定的任务,而参数用来给命令传递额外的信息。
例如,在Cshell中执行"ls -l"命令可以列出当前目录下的文件和文件夹,并显示详细信息。
2. 注释:在Cshell中,使用"#"符号来注释一行代码。
注释通常用来解释脚本的功能或提醒自己后续需要添加的代码。
例如,可以在脚本中添加注释,说明某一行代码的作用。
3. 变量:可以在Cshell中使用变量来存储值和临时数据。
变量名不需要预先声明,直接使用即可。
变量赋值使用"="符号,例如"var=100"。
使用变量时需要使用"$"前缀,例如"echo $var"将会输出"100"。
4. 控制结构:Cshell中提供了多种控制结构,用于根据条件执行不同的代码块。
常见的控制结构包括if语句、for循环和while循环。
if语句用于条件判断,for循环用于重复执行一段代码块,while循环用于在满足条件时执行一段代码块。
5. 输入和输出重定向:Cshell提供了输入和输出重定向的功能,允许用户将命令的输入和输出重定向到文件或其他设备。
输出重定向使用">"符号,例如"ls > output.txt"将目录列表输出到名为output.txt的文件中。
输入重定向使用"<"符号,例如"wc -l < input.txt"将会统计input.txt文件中的行数。
CShell简介摘要:本⽂简单的总结了Cshell的基本操作和基础知识。
本⽂摘录于互联⽹,阅读本⽂需要有⼀定的Unix操作基础。
当你执⾏⼀个shell script时, 系统会检查script⽂件的第⼀⾏以确定如何执⾏其中的命令:○如果第⼀⾏以#!开始, 后⾯跟着⼀个程序名, 系统就会⽤那个程序来执⾏script中后⾯的命令.○如果第⼀⾏以#开始, 系统会⽤Cshell执⾏script.等同于#!/bin/csh○如果第⼀⾏不是以#开始, 系统就会⽤Bshell来执⾏script.等同于#!/bin/sh[建议您使⽤明确的写法,即⽤#!/bin/csh(sh)]如果你想快速执⾏Cshell, 即不想读⼊Cshell的启动程序(.cshrc等), 在script⽂件的第⼀⾏应该⽤类似下⾯的格式:#!/bin/csh -f scriptSCRIPT中的参数及变量如何将命令⾏的参数传给script呢? 可以这样: 键⼊script名, 后⾯跟任何你想要传递的参数. Cshell把script名后⾯的字符按照词(words)来划分后传递给⼀个叫做argv的变量数组, 叫做arguments list. 这样命令⾏的参数就作为words存储于argv中, 连同script名, 分别可以被引⽤为argv[0], argv[1], ... argv[n], 或者你也可以⽤等效的⽅法即$0,$1,...,$n来引⽤它们,其中n是参数的个数.除了argv, $0, $1, ... $n, 等以外, 你还可以在script中使⽤其他变量.有许多符号可以对变量进⾏操作: 读取, 赋值, 判断属性等等. 分述如下:o$?name判断变量是否存在, 若存在(被set过)则等于 1 . 否则等于 0 .例如:% set var='abc'% echo $?var #结果为 1% unset var% echo $?var #结果为 0o$#name计算变量name中的词(words)数.例如:% set var=(a b c) # $#var == 3% set var='abc' # $#var == 1% unset var # var: Undefined variable.o$$$$是Cshell的特殊变量, ⽤于表⽰执⾏此script时的进程号. 因为进程号是唯⼀的, 你可以⽤$$来⽣成⼀个唯⼀的临时⽂件,⽐如tmp.$$. 它可以避免任何⽂件名的冲突. 当然你也可以开发你⾃⼰对$$的独特应⽤.o$<重定向符号. 即从终端读⼊(⼀⾏). ⽐如:echo -n "yes or no?"set a=($<)即变量a从终端输⼊. (如果你输⼊了⼀个空⾏或^D, $#a将等于 0 )(此外,还可以通过``来获取⼀些命令⾏程序的输出,如set ab=`pwd`)$n和$argv[n]实际上有个微⼩的差别: 当n⼤于参数个数($#argv)时, $argv[n]要报错,⽽$n永远也不会有这种"下标溢出"的错.对其他变量, 也不会发⽣"下标溢出"的错误, 例如:当(n > $#var) 时, $var[n-]不给任何结果和错误信息.⽽$var[m-n]给出$var[m]到$var[$#var]的words.如果(m > $#var) 则没有任何结果.⽂件操作格式:-操作符 filename-e ⽂件存在返回1(.true.), 否则返回0(.false.).-r ⽂件可读返回1,否则返回0.-w ....可写................-x ....可执⾏...............-o ⽂件属于⽤户本⼈返回1, 否则返回0.-z ⽂件长度为0返回1, 否则返回0.-f ⽂件为普通(plain)⽂件返回1, 否则返回0.-d ⽂件为⽬录⽂件时返回1, 否则返回0.路径名操作:你可以对路径名进⾏操作, 以便于去掉你不需要的部分.:t (tail)只保留路径名最右边的部分, ⽽将前⾯的全部去掉. (相当于basename):r (root)去掉从"."(dot)开始的后缀部分.:e (end)去掉从左边开始⼀直的"."的前缀部分.:h (head)去掉最后的⼀部分, 只保留⽂件所在的⽬录名.⽐如, 你有⼀个叫做 /usr/people/user1/file1.txt的⽂件,在script中将它赋值给变量var_file, 则:$var_file:t == file1.txt$var_file:r == /usr/people/user1/file1$var_file:e == txt$var_file:h == /usr/people/user1返回代码:严谨的程序应该测试返回代码以判断该程序是正常结束还是别的情况.尤其在你写前后相关的script的时候, 后⾯的命令要⽤到前⾯命令的执⾏结果的时候.⼀个命令执⾏后的返回代码存放在叫做status的变量中, 当命令执⾏成功正常退出时status为0, 否则为1.⽐如你想检查前⾯⼀个命令是否正常地被执⾏了, 从⽽判断下⼀个命令是否应该执⾏,就可以:command1set checkpoint=$status[commands...]if(! $checkpoint) thencommand2elsecommand3endif控制结构:Cshell中基本的控制结构包括 foreach, if结构, 另外还有switch及while,当然还有那个从程序设计概念提出来开始就⼀直存在的幽灵: goto.1. 控制循环的foreach语法为:foreach variable (variable_value lists){commands}end变量variable依次取lists中的值, 执⾏command(s)命令. lists中给出多少个值, 就进⾏多少次操作. 结束循环后变量variable的取值为lists中的最后⼀项.○ foreach-end中间可以⽤ break 以及 continue 控制循环的中断及继续: break终⽌循环, continue 终⽌⼀轮循环操作并开始下⼀轮循环.○ noglob变量的设置可以防⽌lists中的值作⽂件名扩展. 在script的前⾯set即可.set noglob⽐如你的lists是 (a b c*), set noglob的结果是直接解释成a, b, c*; ⽽没有设置noglob时则解释成a, b, 以c开始的⽂件名. 如果你的⽬录下没有这样的⽂件时, 就会报错(No match). 当然你应该在script的结束时unset noglob, 以不影响后⾯的操作.2. 条件控制 if○语法为:if ( expression ) then[commands]else[commands]endif○另外还可以⽤else if:if ( expression ) then[commands]else if ( expression ) then[commands]else[commands]endif○还可以⽤简化格式:if ( expression ) commandif ( expression ) \command# "\"(backslash)后⾯只能接newline(回车即可), 不能有任何其他字符; # 单个命令command不能包括"|", "&" 以及";". 也不能使⽤其它控制语句.○不能使⽤下⾯的格式:if ( expression )then或者if ( expression ) then command endif3. 循环控制 while语法为:while ( expression )[commands]end# while中也可以使⽤break以终⽌循环.例程(本例执⾏10次循环):#!/bin/cshset ai=1while ( $ai <= 10 )echo the ${ai}th time running.@ ai++end4. 开关控制 switch语法为:switch ( $word )case str_1:[commands]breaksw...case str_n:[commands]breakswdefault:[commands]breaksw# word为控制变量, breaksw 跳出 switch 操作.5. goto语法为:goto label例如(此例为⽆限循环!):loop:[commands]goto loop其它:1. 中断处理如果你的script还没有运⾏结束, ⼜不想继续运⾏, 你可能要按下^C以终⽌执⾏它,⼜或者你的script设计成那种⽆限循环式的, 即允许使⽤者重复执⾏直到按下^C(⽐如查询程序). 按下^C后, 系统会终⽌整个script, 但是如果你不想这样做(⽐如你还想删除中间的某些临时⽂件), 就可以在script中设定中断处理:onintr labellabel是标识⾏, 其结果是你按了^C后, goto到label⾏继续执⾏.2. exit前⾯讲过命令有返回代码, 同样script也可以有返回代码. ⽤exit可以终⽌script的执⾏并返回⼀个值:exit ( status )status 即是你要返回的值.3. expression(表达式)if和while都要⽤到expression, expression可以是变量值以及他们的操作结果, 或者是任何返回数值的操作. ⽐如 ( $var ), ( -e filename )等等.C 中的所有代数及逻辑运算符都可以⽤于Cshell的expression中. ⽐如 == 和 !=⽐较两个字符是否相同, && 和 || 表⽰逻辑 "与" 和 "或", "!" 表⽰"⾮".代数运算使⽤expr, 如 expr $a + $b。
shell语言
Shell语言是一种允许用户与操作系统进行交互的脚本语言。
它是一种命令行解释器,可用于执行多个命令和控制系统的操作。
本文将介绍Shell语言的基本概念、特性、用途,以及一些示例代码。
Shell语言最初出现在1979年,其设计的初衷是作为一种系统管理工具,用于简化操作系统的管理和自动化任务。
随着时间的推移,Shell语言发展成为一种通用的脚本编程语言,广泛应用于操作系统的自动化、任务编排、系统配置等领域。
常见的Shell语言包括Bourne Shell (sh)、Bash、C Shell (csh)、Korn Shell (ksh)等。
Shell语言的特性包括:
1. 简单易学:Shell语言的语法相对简单,用户可以很快上手,并且可以通过编写简单的脚本来完成复杂的任务。
2. 交互性:Shell语言可以通过命令行交互方式与用户进行实时交互,用户可以输入命令并立即看到结果。
这种交互性使得Shell语言成为一种非常方便的系统管理工具。
3. 脚本化:Shell语言可以编写脚本文件,把一系列的命令按照特定的顺序组织起来,从而实现自动化任务的执行。
4. 管道操作:Shell语言支持管道操作符\。
linux shell详解Linux Shell 是一种运行在 Linux 操作系统上的命令行解释器,它提供了一种与系统进行交互的方式。
本文将详细介绍Linux Shell 的相关知识,包括 Shell 的基本概念、常用命令以及一些实用技巧。
## 一、Shell 的基本概念Shell 是用户与操作系统内核之间的接口,它接收用户输入的命令,并将其转发给内核执行。
在Linux 中,常见的Shell 有Bash (Bourne Again Shell)、Csh(C Shell)等。
Bash 是最常用的Shell,也是默认的 Shell。
Shell 的主要功能包括命令解析与执行、环境控制、脚本编程等。
用户可以通过Shell 提供的命令来执行文件操作、进程管理、权限控制等操作。
## 二、常用 Shell 命令1. 目录操作命令:- `ls`:列出当前目录下的文件和子目录。
- `cd`:切换当前工作目录。
- `pwd`:显示当前工作目录的路径。
2. 文件操作命令:- `cp`:复制文件或目录。
- `mv`:移动文件或目录。
- `rm`:删除文件或目录。
- `cat`:查看文件内容。
3. 进程管理命令:- `ps`:显示当前正在运行的进程。
- `top`:实时显示进程状态。
- `kill`:终止指定进程。
4. 网络命令:- `ping`:测试与指定主机的连通性。
- `ifconfig`:查看和配置网络接口信息。
- `ssh`:远程登录到其他主机。
5. 权限管理命令:- `chmod`:修改文件或目录的权限。
- `chown`:修改文件或目录的所有者。
- `chgrp`:修改文件或目录的所属组。
## 三、Shell 脚本编程Shell 脚本是一种可以用来编写一系列命令的脚本文件,它可以实现自动化任务的目的。
Shell 脚本通常以 `.sh` 作为文件后缀名。
以下是一个简单的Shell 脚本示例,用于统计指定目录下文件的数量:```shell#!/bin/bashdir_path="/path/to/directory"file_count=0# 遍历目录下的文件for file in $(ls $dir_path)doif [ -f $dir_path/$file ]; then((file_count++))fidoneecho "文件数量:$file_count"```以上脚本中,使用了 `for` 循环遍历目录下的文件,并通过判断是否是普通文件来统计文件数量。
Linux主要shell命令详解shell是用户和Linux操作系统之间的接口。
Linux中有多种shell,其中缺省使用的是Bash。
本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。
什么是shellLinux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。
它是命令语言、命令解释程序及程序设计语言的统称。
shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。
当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。
shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。
用户在提示符下输入的命令都由shell先解释然后传给Linux核心。
有一些命令,比如改变工作目录命令cd,是包含在shell内部的。
还有一些命令,例如拷贝命令cp和移动命令rm,是存在于文件系统中某个目录下的单独的程序。
对用户而言,不必关心一个命令是建立在shell内部还是一个单独的程序。
shell首先检查命令是否是内部命令,若不是再检查是否是一个应用程序(这里的应用程序可以是Linux本身的实用程序,如ls和rm,也可以是购买的商业程序,如xv,或者是自由软件,如emacs)。
然后shell在搜索路径里寻找这些应用程序(搜索路径就是一个能找到可执行程序的目录列表)。
如果键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。
如果能够成功找到命令,该内部命令或应用程序将被分解为系统调用并传给Linux内核。
shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。
shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。
当普通用户成功登录,系统将执行一个称为shell的程序。
正是shell进程提供了命令行提示符。
作为默认值(TurboLinux系统默认的shell是BASH),对普通用户用“$”作提示符,对超级用户(root)用“#”作提示符。
一旦出现了shell提示符,就可以键入命令名称及命令所需要的参数。
shell将执行这些命令。
如果一条命令花费了很长的时间来运行,或者在屏幕上产生了大量的输出,可以从键盘上按ctrl+c发出中断信号来中断它(在正常结束之前,中止它的执行)。
当用户准备结束登录对话进程时,可以键入logout命令、exit命令或文件结束符(EOF)(按ctrl+d实现),结束登录。
我们来实习一下shell是如何工作的。
$ make workmake:***No rule to make target ‘work’. Stop.$注释:make是系统中一个命令的名字,后面跟着命令参数。
在接收到这个命令后,shell便执行它。
本例中,由于输入的命令参数不正确,系统返回信息后停止该命令的执行。
在例子中,shell会寻找名为make的程序,并以work为参数执行它。
make是一个经常被用来编译大程序的程序,它以参数作为目标来进行编译。
在“make work”中,make 编译的目标是work。
因为make找不到以work为名字的目标,它便给出错误信息表示运行失败,用户又回到系统提示符下。
另外,用户键入有关命令行后,如果shell找不到以其中的命令名为名字的程序,就会给出错误信息。
例如,如果用户键入:$ myprogbash:myprog:command not found$可以看到,用户得到了一个没有找到该命令的错误信息。
用户敲错命令后,系统一般会给出这样的错误信息。
shell的种类Linux中的shell有多种类型,其中最常用的几种是Bourne shell(sh)、C shell (csh)和Korn shell(ksh)。
三种shell各有优缺点。
Bourne shell是UNIX最初使用的shell,并且在每种UNIX上都可以使用。
Bourne shell在shell编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。
Linux操作系统缺省的shell是Bourne Again shell,它是Bourne shell的扩展,简称Bash,与Bourne shell完全向后兼容,并且在Bourne shell的基础上增加、增强了很多特性。
Bash放在/bin/bash中,它有许多特色,可以提供如命令补全、命令编辑和命令历史表等功能,它还包含了很多C shell和Korn shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。
C shell是一种比Bourne shell更适于编程的shell,它的语法与C语言很相似。
Linux为喜欢使用C shell的人提供了Tcsh。
Tcsh是C shell的一个扩展版本。
Tcsh包括命令行编辑、可编程单词补全、拼写校正、历史命令替换、作业控制和类似C语言的语法,它不仅和Bash shell是提示符兼容,而且还提供比Bash shell更多的提示符参数。
Korn shell集合了C shell和Bourne shell的优点并且和Bourne shell完全兼容。
Linux系统提供了pdksh(ksh的扩展),它支持任务控制,可以在命令行上挂起、后台执行、唤醒或终止程序。
Linux并没有冷落其他shell用户,还包括了一些流行的shell如ash、zsh等。
每个shell都有它的用途,有些shell是有专利的,有些能从Internet网上或其他来源获得。
要决定使用哪个shell,只需读一下各种shell的联机帮助,并试用一下。
用户在登录到Linux时由/etc/passwd文件来决定要使用哪个shell。
例如:# fgrep lisa /etc/passwdlisa:x:500:500:TurboLinux User:/home/lisa:/bin/bashshell被列每行的末尾(/bin/bash)。
由于Bash是Linux上缺省的shell,本章主要介绍Bash及其相关知识。
shell命令命令行c用户登录到Linux系统时,可以看到一个shell提示符,标识了命令行的开始。
用户可以在提示符后面输入任何命令及参数。
例如:$ date二 11 23 01:34:58 CST 1999$用户登录时,实际进入了shell,它遵循一定的语法将输入的命令加以解释并传给系统。
命令行中输入的第一个字必须是一个命令的名字,第二个字是命令的选项或参数,命令行中的每个字必须由空格或TAB隔开,格式如下:$ Command Option Arguments1. 选项和参数选项是包括一个或多个字母的代码,它前面有一个减号(减号是必要的,Linux 用它来区别选项和参数),选项可用于改变命令执行的动作的类型。
例如:$ lsmotd passwd$这是没有选项的ls命令,可列出当前目录中所有文件,只列出各个文件的名字,而不显示其他更多的信息。
$ ls -ltotal 2-rw-r--r-- 2 wzh book 22 Apr 20 20:37 motd-rw-r--r-- 2 wzh book 796 Apr 20 20:37 passwd$加入-l选项,将会为每个文件列出一行信息,诸如数据大小和数据最后被修改的时间。
大多数命令都被设计为可以接纳参数。
参数是在命令行中的选项之后键入的一个或多个单词,例如:$ ls -l text-rw-r--r-- 2 wzh book 22 Apr 20 20:37 motd-rw-r--r-- 2 wzh book 796 Apr 20 20:37 passwd$将显示text目录下的所有文件及其信息。
有些命令,如ls可以带参数,而有一些命令可能需要一些最小数目的参数。
例如,cp命令至少需要两个参数,如果参数的数目与命令要求不符,shell将会给出出错信息。
例如:$ cp -i mydata newdata注意:命令行中选项先于参数输入。
2. 命令行特征命令行实际上是可以编辑的一个文本缓冲区,在按回车之前,可以对输入的文本进行编辑。
比如利用BACKSPACE键可以删除刚键入的字符,可以进行整行删除,还可以插入字符,使得用户在输入命令,尤其是复杂命令时,若出现键入错误,无须重新输入整个命令,只要利用编辑操作,即可改正错误。
利用上箭头可以重新显示刚执行的命令,利用这一功能可以重复执行以前执行过的命令,而无须重新键入该命令。
bash保存着以前键入过的命令的列表,这一列表被称为命令历史表。
按动上箭头,便可以在命令行上逐次显示各条命令。
同样,按动下箭头可以在命令列表中向下移动,这样可以将以前的各条命令显示在命令行上,用户可以修改并执行这些命令。
这一特征将在10.4节中进行详细的论述。
在一个命令行中还可以置入多个命令,用分号将各个命令隔开。
例如:$ ls -F;cp -i mydata newdata也可以在几个命令行中输入一个命令,用反斜杠将一个命令行持续到下一行。
$ cp –imydatanewdata上面的cp命令是在三行中输入的,开始的两行以反斜杠结束,把三行作为一个命令行。
shell中的特殊字符shell中除使用普通字符外,还可以使用一些具有特殊含义和功能的特殊字符。
在使用它们时应注意其特殊的含义和作用范围。
下面分别对这些特殊字符加以介绍。
1. 通配符通配符用于模式匹配,如文件名匹配、路经名搜索、字符串查找等。
常用的通配符有*、?和括在方括号[]中的字符序列。
用户可以在作为命令参数的文件名中包含这些通配符,构成一个所谓的“模式串”,在执行过程中进行模式匹配。
* 代表任何字符串(长度可以不等),例如:“f*”匹配以f打头的任意字符串。
但应注意,文件名前的圆点(.)和路经名中的斜线(/)必须显式匹配。
例如“*”不能匹配.file,而“.*”才可以匹配.file。
? 代表任何单个字符。
[]代表指定的一个字符范围,只要文件名中[]位置处的字符在[]中指定的范围之内,那么这个文件名就与这个模式串匹配。
方括号中的字符范围可以由直接给出的字符组成,也可以由表示限定范围的起始字符、终止字符及中间的连字符(-)组成。
例如,f [a- d]与f [abcd]的作用相同。
Shell将把与命令行中指定的模式串相匹配的所有文件名都作为命令的参数,形成最终的命令,然后再执行这个命令。
下面我们给出表10-1说明这些通配符的具体含义。
表10-1 通配符含义举例模式串意义*当前目录下所有文件的名称。