- 论坛徽章:
- 0
|
前言:此版本修改于徐老师的(Benet2.0_s1_linux课程命令整理v1.0版)遵循GPL协议!转贴请注明出处!3ks!
作者:Antiy7
修改:风雨者
04Shell的使用:
本章目标:
了解shell的发展过程和用途
掌握shell变量的设置和使用
掌握bash的基本操作方式
掌握简单的shell脚本编辑方法
shell的环境:
Shell程序充当了一个命令解释器的角色。
Shell的发展和分类:
Bsh―――20世纪70年代中期―――新泽西的AT&T贝尔实验室
Csh―――20世纪80年代早期―――加利福尼亚――C语言风格
Ksh―――AT&T贝尔实验室―――结合了bsh和csh的功能优势。
Bash――-Bash是Bsh的升级替代产品,在目前大多数linux的发行版本都使用Bash作为默认
的shell,运行shell程序时,系统实际上运行的是Bash程序。
1、RHEL4中提供的Shell
/etc/shells 这个文件夹中记录了当前linux系统中能够使用的所有shell。
Example:
$ cat /etc/shells
$ ls –l `cat /etc/shells ` 详细显示shell文件夹内容。
2、shell程序的切换
3、用户默认shell的设定与shell的修改
$ cat /etc/passwd 使用vi编辑器对用户默认shell的修改。
例:
$ grep teacher /etc/passwd 察看teacher用户在passwd中的信息。
teacher:x:500:500:---------------/bin/bash /bin/bash是启动时的默认shell。
$ chsh 修改shell命令。
passwd: 输入管理员密码。
new shell[etc/bash]:/bin/bsh 输入需要修改的shell。
chsh命令是通过修改passwd文件中的用户登录shell字段来实现用户登录shell更改的。可以通过vi
编辑器来进行快速修改。(vi编辑器的使用详见第3章)
Bash的主要功能:
SHELL变量:
×环境变量
×预定义变量
×位置变量
×用户自定义变量
环境变量:
1、查看环境变量:
环境变量是用户登录时linux为用户预先设定好的一类shell变量。
$ set 察看环境变量。
$ set | head -3 察看前3行内容。
$ set | tail -3 察看后3行内容。
$ set | more 分页察看内容。
2、常用环境变量介绍:
$scho $USER 显示用户名。
$scho $UID 显示用户的uid。
$scho $SHELL 显示当前用户登录的shell。
$scho $HOME 显示当前用户的宿主目录。
$scho $PWD 显示用户当前所在的目录。
$scho $PATH 显示用户的命令搜索路径。
$scho $PS1 显示用户的主提示符。
$scho $PS2 显示用户当前的辅助提示符。
3、全局环境变量配置文件
$ ls –l /etc/bashrc /etc/profile
/etc/profile 文件负责设置全局的环境变量,并应用于所有的用户登陆shell。
/etc/bashrc 文件用于定义全局的函数和别名,文件的内容除了为系统中所有登录用户
提供设置外,也适用于非交互shell和非登陆shell。
4. 用户环境变量配置文件
/用户宿主目录/.bash_profile和.bashrc
用户变量配置文件位于用户的宿主目录中,文件名是:.bash_profile和.bashrc
用户可以通过修改这两个文件来更改自己的环境变量。
/etc/skel 目录中保存了初始的用户配置文件模板,当用户对自己的配置文件进行了
错误的设置后,可以直接将/etc/skel目录中的模板文件复制到用户目录,
从而恢复到正确的初始配置。
位置变量:
预定义变量:
预定义变量是linux系统中已定义好的变量,用户只能使用预定义变量,而不能创建或赋值预定义变量。
所有的预定义变量都是由$和另一个符号组成的,常用的shell预定义变量有:
$#:表示位置参数的数量
$*:表示所有位置参数的内容
$?:表示命令执行后返回的状态
$$:表示当前进程的进程号
$!表示后台运行的最后一个进程号
$0:表示当前执行的进程名
用户自定义变量:
1、自定义变量的设置:
变量名=变量值
$DAY=sunday 左边的DAY是被赐值的变量名,右边sunday是为变量所赐的值。
2、自定义变量的查看与引用:
example:
$DAY=sunday 将sunday值赐予DAY。
$echo $DAY 察看$DAY的赐值。
sunday
$set | grep DAY 使用字符查找功能查找set命令显示中的DAY字符。
DAY=sunday
注:set命令可以显示系统中所有的变量,也包括用户自定义变量。
3、自定义变量的输出:
用户在当前shell中定义了某个变量后,只能在当前的shell中使用,而在当前shell的子shell中是无效的。
example:
$DAY=sunday
$echo $DAY
sunday
$bash
$echo $DAY
(无显示变量值)
为了在用户的子shell或脚本程序中使用自定义变量,需要将用户自定义的变量“输出 ”为全局变量。
Export 命令用于输出变量为全局变量:
export [-nf ] [name=[value]……]
example:
$echo $DAY 察看变量值。
sunday 所显示的变量值。
$export DAY export命令使用变量名作为参数,输出指定名称的变量为全局变量。
$bash 进入子shell。
$echo $DAY 察看变量值。
sunday 所显示的变量值。
$exit 推出。
export命令可以在输出变量的同时对指定名称的变量进行赋值
$export DAY=sunday MONTH=jan 对指定的多个名称的变量赋值(新建)。
$echo $DAY $MONTH 同时察看多个变量值。
sunday jan 所显示的变量值。
4、自定义变量的清除:
unset[-f][-v][name...] unset命令使用变量的名字作为命令参数。
$ echo $DAY 察看变量值。
$ sunday 所显示的变量值。
$ unset DAY 取消变量值(清除)。
$ echo $DAY 察看变量值。
$ 显示的变量值为空。
bash常用功能
1、命令行编辑功能
a、光标的移动 上下左右方向键。
b、退格与删除 Baskspace退格键可以删除光标左边的字符。Delete键可以删除光标处字符。
c、定位命令行首尾 Home键用来定义行首,End键用来定义行尾。
d、行内快速删除命令 Ctrl+U组合键用来删除当前光标处到行首之间字符。
Ctrl+K组合键用来删除当前光标处到行尾之间字符。
2、命令行补全功能
1、命令补全功能 当输入字符时可以只输入字符的开始部分,然后使用Tab键进行命令补全。
2、文件补全功能 当输入文件名或目录名时可以只输入字符的开始部分,然后使用Tab键进行补全。
3、命令历史与命令重复
1、命令历史的使用 使用向上的方向键来追溯使用过的历史命令。
2、历史命令的查看 使用:history 命令来显示历史命令列表。
$ history
$!113 执行制定命令,113为使用history命令后显示的命令列表中的命令序号。
3、用户命令历史文件:
$ set | grep HISTFILE 察看用户命令历史纪录的保存文件。
$history -c 删除用户命令历史纪录的保存文件。
命令别名:
1、命令别名的显示
$ alias 显示用户自己定义的命令别名。
如果定义的命令别名与原命令重名,bash在执行命令时将优先执行别名命令,而用户需要执行原命令时需要输
入该命令的完整路径。
2、命令别名的定义:
$alias name=value
3、命令别名的取消:
$unalias [-a ] name
#用户固定使用的自定义别名命令应保存在用户宿主目录的".bashrc"文件中。否则下次启动时将恢复初始别名配置。
4、系统别名定义文件:
#RHEL4系统中为用户预定义的命令别名保存在“/etc/profile.d”目录的配置文件中
管道与重定向:
1、标准输入输出
a. 标准输入(STDIN)的文件编号是0,默认的设备是键盘,命令在执行时需要的输入数据从标准输入文件中读取。
b. 标准输出(STDOUT)的文件编号是1,默认的设备显示器,命令执行后的输出结果发送到标准的输出文件。
c. 标准错误(STDERR)的文件编号是2,默认的设备是显示器,命令执行时的错误信息发送到标准错误文件。
2、重定向
1、输入重定向:将命令中接收输入的途径由默认的键盘更改(重定向)为制定的文件。输入重定向需要使用“”和“>>”重定向操作符。
例:
$ ls /etc > 123.txt 含义是将/etc文件加的内容不显示在屏幕上,而是通过输出从定向保存到123.txt文件中。
注:使用“>”输出重定向的文件如果不存在,命令执行时将建立该文件,若文件存在则清空文件内容并保存命令执行
结果。使用“>>”重定向操作符可以将命令执行的结果重定向并追加到指定文件的末尾保存,因此制定的文件中的
内容会越来越多。
3、错误重定向:将命令执行错误信息重定向到指定的文件,而不显示在屏幕上。错误重定向使用“2>”操作符,其中
2是错误文件的编号,“>”符号用于重定向文件。
4、输出重定向和错误重定向的组合使用:将标准输出和错误输出重定向到同一个文件,使用“&>”重定向操作符。
管道:
cmd1 | cmd2 | cmd3....| cmdN
“|” 符用于连接左右两个命令,将“|”左边的命令结果(输出)作为“|”右边命令的输入。
例:ls /etc/ | head -2 显示/etc文件夹的内容,并只显示前2行内容。
shell脚本
1、Shell脚本的概念
a. shell脚本程序类似于DOS中的批处理文件,是shell命令语句的集合,用于实现特定的功能。
b. shell脚本程序保存在文本文件中,可以使用文本处理程序进行阅读和编辑。
c. shell脚本程序是由shell环境解释执行的,不需要在执行前编译。
d. 执行shell程序时,shell脚本文件需要具有可执行(x)的属性。
Linux系统中的shell脚本
linux系统中存在大量的shell脚本,例如,“/etc/init.d/”目录中存在着大量的系统服务启动程序,这些程序都是
shell脚本文件。
基本脚本编程:
1、 建立shell脚本文件
2、 脚本中应该包括的内容
a) 脚本运行环境设置
b) 注释行的使用
c) 脚本语句
注:这里重要的是脚本语句,至于脚本运行环境和注释只不过是一种习惯。
3、 设置脚本文件为可执行
脚本运行:
1、使用shell命令
#程序执行脚本:不需要脚本文件具有可执行的属性
2、使用“.” 命令执行脚本:不需要有可执行权限
3、设置执行属性执行脚本:需要有可执行权限,使用绝对路径
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/32340/showart_390419.html |
|