使用引用修饰符的示例 % set a="[a-z]*" A="[A-Z]*" % echo "$a" "$A" [a-z]* [A-Z]* % echo $a $A at cc m4 Book Doc % echo $a:x $A [a-z]* Book Doc % set d=($a:q $A:q) % echo $d at cc m4 Book Doc % echo $d:q [a-z]* [A-Z]* % echo $d[1] +++ $d[2] at cc m4 +++ Book Doc % echo $d[1]:q [a-z]* 预定义的shell 变量 变量可以按两种方式来设置,第一种方式是分配一个值: set var=value 第二种方式是仅仅打开它: set var 下表展示了变量的赋值是通过一个等号(该等号后是变量接受的值的类型)来完成 的,然后再对值进行描述。(注意,无论如何都不能对argv、cwd 或status 之类的 变量进行显式赋值。)对于那些只能打开或关闭的变量来说,该表也相应介绍了在设 置它们时所做的工作。C shell 会自动设置下面一些变量:argv、cwd、home、path、 promt、shell、status、term 和user。 变量描述 argv=(args) 传递给当前命令的参数列表,默认是() cdpath=(dirs) 当给cd、popd 或pushd 定位参数时,轮流搜索的目录列表 cwd=dir 当前目录的完整路径名 echo 在执行前重新显示每个命令行,和csh -x 命令相同 fignore=(chars) 在完成文件名时要忽略的文件名后缀列表(参见filec) filec 如果设置了它,当按下Escape 键的时候,在命令行上输入的部分文 件名可以扩展成其完整的名称。如果匹配不止一个文件名,则键入 EOF 会列出可能的完全文件名 hardpaths 告诉dirs要显示那些是一个符号链接的目录的实际路径名 histchars=ab 一个两字符的字符串,用来设置用于历史替代和快速替代中的字符 (默认是!^) history=n 要存储到历史列表中的命令的个数 home=dir 用户的主目录,从HOME 中初始化。~ 字符是该值的缩写形式 ignoreeof 忽略来自终端的文件结束标记(EOF),阻止意外退出 mail=(n file) 每5分钟或(如果指定n)每n 秒钟对一个或多个文件进行新邮件检查 nobeep 对不明确的文件完整性操作不振铃 noclobber 不重定向输出到一个已存在的文件,用来防止对文件的意外毁坏 noglob 关闭文件名扩展,用于shell 脚本中 nonomatch 将文件名元字符当作字面上的字符来对待。例如,vi ch* 是创建新 文件ch* 而不是输出“No match” notify 立刻通知已完成作业的用户,而不用等待下一个提示符 path=(dirs) 列出搜索执行命令的路径名。可用PATH 初始化。SVR4 默认为(./ usr/ucb/usr/bin)。在Solaris 上,默认路径为(/usr/bin.)。然后 标准启动脚本再将它修改为(/bin /usr/bin /usr/ucb/ 等等)
发表于 2010-3-12 15:20 |
变量描述 prompt=,str, 提示用于交互式输入的字符串,默认是% savehist=n 退出时存储在~/.history目录中的历史命令的个数,在下一次登录 时可以访问到它 shell=file 当前使用的shell 程序的路径名,默认是/bin/csh status=n 最后命令的退出状态。成功时,内置命令返回0;若失败,则返回1 term=ID 终端类型的名称,和TERM 一样 time=,n%c, 如果命令执行时间超过n 个CPU秒数,则报告用户时间、系统时间、 消耗时间和CPU 占有率。支持可选的%c 标志来显示其他数据 user=name 用户的登录名称,在USER 中初始化 verbose 进行历史替代之后,显示一个命令,和命令csh -v 作用相同 .csbrc 文件示例 # 预定义的变量 set path=(~ ~/bin /usr/ucb /bin /usr/bin . ) set mail=(/var/mail/tom) if ($?prompt) then # 为交互式使用而设置 set echo set filec set noclobber ignoreeof set cdpath=(/usr/lib /var/spool/uucp) # 现在可以键入cd 宏 # 代替cd /usr/lib/macros set fignore=.o # 对filec 忽略目标文件 set history=100 savehist=25 set prompt=,tom \!% , # 包括历史号 set time=3 # MY VARIABLES set man1="/usr/man/man1" # 允许我执行cd $man1、ls $man1 set a="[a-z]*" # 允许我执行vi $a set A="[A-Z]*" # 或grep string $A # ALIASES alias c "clear; dirs" # 使用引号保护;或| alias h "history | more" alias j jobs -l alias ls ls -sFC # 重新定义ls 命令 alias del ,mv \!* ~/tmp_dir, # rm 的安全替代 endif
发表于 2010-3-12 15:20 |
环境变量 C shell 维护了一系列环境变量(environment variable),它们明确地区别于shell 变 量,并且不是C shell 的部分。shell 变量只是在当前shell 内部有意义,而环境变量 则会自动输出,从而使环境变量成为全局变量。例如,C shell 变量只在定义它们的 特定脚本中才是可访问的,而环境变量可以应用到任何shell 脚本、mail 实用程序或 用户调用的编辑器中。 可按下列方式给环境变量赋值: setenv VAR value 按惯例,环境变量名都是大写的。你可以创建自己的环境变量,也可使用下面预定义 的环境变量。 这些环境变量有一些相应的C shell 变量,如下所示: HOME 主目录,和home 作用相同。可以彼此无关地进行修改。 PATH 搜索命令的路径,和path作用相同。改变任意一个路径则会修改存储在另一个 中的值。 TERM 终端类型,和term 作用相同。改变term 可修改TERM,但反之则不行。 USER 用户名,和user 作用相同。改变user可修改USER,但反之则不行。 其他环境变量包括: EXINIT 类似于在.exrc 启动文件中的字符串(例如,set ai),是一个ex 命令的字符 串。由vi 和ex 使用。 LOGNAME USER 变量的另一个名字。 MAIL 拥有邮件的文件。由邮件程序使用。它与C shell 中只用于检查新邮件的mail变 量不一样。 PWD 当前目录,该值从cwd 拷贝而来。 SHELL 默认情况下未定义,一旦初始化到shell,两者是一样的。