免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 846 | 回复: 0
打印 上一主题 下一主题

shell [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-10 15:50 |只看该作者 |倒序浏览
Bash Shell   
shell是用户与操作系统核心沟通的工具,学习Shell对今后系统管理有非常大的用处.
1.1系统的shell与/etc/shells功能
    shell的简单历史:第一个流行的shell是由Steven Bourne开发的,为了纪念他,就称之为Bourne Shell,简称sh。后来另一个广为流传的shell是由柏克莱大学的Bill Joy设计依附于BSD版的UNIX系统中的shell,这个shell的语法有点类似C语言,所以得名叫C Shell,简称csh。(Bill Joy是SUN公司的创始人,BSD最早就是Bill Joy开发的。)在Linux使用的是"Bourne Again Shell",简称bash,是sh的的增强版本,基于GNU。
    在当前linux系统中,可以用less /etc/shells命令查看系统可用的shells:
/bin/sh
/bin/bash
/bin/csh
/bin/tcsh
/bin/ksh
/bin/zsh
    各种shell的功能差不多,只是语法不同。/etc/shells文件存在的原因是因为系统某些服务在运行过程中,会检查用户能够使用的shell,而这些shell主是通过这个文件来查询。
    每个用户登陆系统都会被分到一个shell,使用shell来工作,而这个登陆取得的shell就记录在/etc/passwd文件中。Bash Shell是linux默认使用的shell,每个用户登陆后都会取得这个默认的shell。
1.2Bash shell的内置命令
linux中的命令分为:内置命令和外部命令。
内置命令内置在bash里,为了方便shell操作,bash已经内置了很多命令,例如:cd和umask。
外部命令,可以看作是一个可执行的程序,一般放在/bin目录下。
可以通过type命令来查看每个命令是不是bash内置命令:type cd;type -a ls;详情问查看man type;
1.3执行命令
command [-options] parameter1 parameter2 ……
注意点:命令太长时可用\符号来转义
Shell的变量功能
变量就是以一组文字或符号,来替换一些设置或者是一串保留的数据。
环境变量,用户在登陆后,进入shell之前,由于系统需要读入一些变量来提供数据访问或者是设置一些环境参数值,例如是否要显示彩色等。这些环境变量如PATH、HOME、MAIL、SHELL等,都是很重要的,一般用大写。
1.1变量的获取与设置
echo $变量 如echo $PATH
myname=xiaocai
echo $myname
xiaocai
当一个变量名称还没有设置时,默认的内容是空的。另外变量设置时还要注意:
1.变量内容有空格符,要用“"”号或“'”将内容括起来。双引号内的特殊字符可以保持变量特性,单引号内的内容都看成是字符。如myname='cai jian bin' name="$myname"  echo myname与echo name输出都是caijianbin。
2.可用转义符\转义特别的符号(\、空格、$等)
3.在一串命令中,还需要通过其它命令提供信息,可以使用`command`的方法哪cd /lib/modules/`uname -r`/kernel
4.扩展变量,如PATH="$PATH":/home。
5.export可使变量变成环境变量。
6.unset 变量名,用于取消变量。
2.1环境变量的功能
可以使用env与export两个命令来查看环境变量
一些环境变量的说明:env
env是environment的简写,如果使用export也会是一样的效果。只不过export不有其它的附加功能。
HOME代表用户家的目录是什么,cd ~会到家目录就是用了这个变量
SHELL代表当前使用的shell如SHELL=/bin/bash
HISTSIZE代表记录历史命令的数目
ENV这个是用户所用的个性化环境设置文件的读取文件,/root/.bashrc。
MAIL邮箱
LANG语系文件
RANDOM 0~32767的随机数。declare -i number=$random*10/32767 成生0~9
其他所有的变量说明:set
在bash环境下,除了环境变量之外,还有一些很重要的变量,这些变量是在shell环境下有效。用set命令可列出。
PS1命令提示符
$当前SHELL的进程号,echo $$
?上一个执行命令的回传码,成功为0,不成功为非0值
export的用法
export 变量,将自定义变量转成环境变量;只用export,显示环境变量
3.1语系文件的变量
当我们使用man command的方式去查询帮助文件时,帮助文件的内容可能会因为我们使用的语系,而产生乱码.这就是语系的问题.
查询LINUX支持多少语系,可以用locale -a命令,语系文件一般在/usr/lib/locale/目录下,当前的shell环境所支持的语系,要根据SUPPORTED这个变量来确定,可在/etc/sysconfig/i18n文件中修改。
4.1变量键盘读取、数组、与声明
read
read -p "please key in your name:" -t 30 named 提示用户30秒内输入自己的名字,将输入字符串做成named变量。
declare/typeset
declare用于声明变量的属性。declare [-aixr] variable
参数:
-a 将后面的variable定义为数组
-i 将后面的variable定义为整数数字 declare -i sum=1+2+2   echo $sum    5
-r readonly
数组
var[index] index从1开始,读取可用echo "${var[1]},${var[2]}"
与文件系统和程序的限制关系:ulimit 请用man ulimit查询
命令别名与历史命令
alias lm='ls -l|more' alias rm='rm -i'  alias显示所有的别名 unalias取消别名
history显示历史命令,正常情况下bash登陆后,系统会主动由家目录中的~/.bash_history读取以前用过的命令。历史命令会在用户注销时写入.bash_history文件中。!number
bash shell使用环境
这节也讲的是shell使用环境的设置,我们在登陆主机的时候,屏幕上会有一些说明文字,告知LINUX版本之类的信息,此外,我们习惯的环境变量、命令别名等,可以在登录时就主动设置好。这些设置值分为系统整体设置值与个人喜好设置值,区别在于文件放置的地点不同
1.1绝对路径与相对路径
使用ls –al时会出现两个一定存在的目录,分别是‘.’与‘..’,分别代表‘这个路径’与‘上一层路径’。如../../bin/more .bashrc ,执行所在目录下的程序应用./command,不要直接用command,因为.没有在环境变量中设置,这是出于安全的考虑没有将.放到PATH中
2.1登录消息显示数据
在登录时,会有几行提示的字符串,这些字符串可以在/etc/issue中设置,如果用telnet登陆的话,可在etc/issue.net上设置,
登陆后要出现信息,可以在/etc/motd上入写信息.
3.1环境设置文件
包括系统设置文件和个人设置文件,在bash环境变量,系统与个人设置,一般来说,建议用户直接修改个人设置即可,不需要改系统.要注意的是,在命令行输入的变量,命令别名,都只是针对本次登陆的设置.
3.1.1系统设置文件
/etc/sysconfig/i18n语系设置
/etc/profile这个文件设置了几个重要的变量,同时也确定了/etc/inputrc这个针对键盘热键设置的文件的数据内容,同时,这个文件也规划出了/etc/profile.d和/etc/inputrc这两个目录与文件
/etc/bashrc这个文件确定了umask功能与确定了提示符内容  即PS1.
/etc/man.config 确定使用man时,到哪里找man page的路径.实现上就是MANPATH变量设置
3.1.2个人设置文件
一般都是隐藏放在个人家目录下,


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/85021/showart_1404301.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP