2009-11-0617:00:07
--------------------------------------------------------------------------------
大家要尊重俺的劳动成果,转载请注明出处。本文首发自http://blog.csdn.net/erazy0/archive/2009/11/06/4777230.aspx
俺的百度空间http://hi.baidu.com/erazy0以及俺的ITPUB博客http://space.itpub.net/22666004/spacelist-blog也会同步更新
欢迎共同学习,交流,本人QQ:398467907 邮箱:zhaizhibin@hotmail.com
欢迎交换友情链接~~
===================================华丽的分割线=========================================
一直想系统的学习一下Shell,昨天去图书馆,发现了一本《Linux Shell实例精解》,立马借了回来,正好借此机会学习一下。为方便以后查阅,先记一些笔记在这儿,以后再补充。
Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。
一、什么是shell
当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shell(外壳)的程序。那么,shell是什么呢?确切一点说,shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。
当用户使用Linux时是通过命令来完成所需工作的。一个命令就是用户和shell之间对话的一个基本单位,它是由多个字符组成并以换行结束的字符串。shell解释用户输入的命令,就象DOS里的command.com所做的一样,所不同的是,在DOS中,command.com只有一个,而在Linux下比较流行的shell有好几个,每个shell都各有千秋。一般的Linux系统都将bash作为默认的shell。
以下命令均在提示符下直接输入:
cat /etc/shells 查看当前linux版本可用的shell
echo $SHELL 查看当前使用的shell
shell_name(如ash,csh tcsh bash 等等)
转换到别的shell,这里shell_name是你想要尝试使用的 shell 的名称,如ash等。这个命令为用户又启动了一个shell,这个shell在最初登录的那个 shell之后,称为下级的shell 或子shell。使用命令exit可以退出这个子shell。
exec shell_name(如ash,csh tcsh bash 等等)
我们在 BASH (也就是 RedHat Linux 中默认使用的Shell)中要切换到 C Shell下 ,只要直接输入对方Shell的名字csh就可以了。我们用这种方法启动一个新Shell后 ,使用ps命令查看进程就会发现多出了一个新的Shell进程,而这个新进程的ppid(父进程编号) 就是原来Shell的pid(进程编号)。也就是说,新启动的Shell其实是原来Shell的子Shell。使用exit命令可以退出当前Shell。
如果不希望以启动子 Shell 的方法来进行 Shell 切换的话 , 可以使用如下切换方式: exec shell_name
比如 ,我们在原始 Shell 下要切换到C Shell,就输入 : exec csh
这时我们检查一下进程 ,发现没有多出子 Shell 的进程 ,已经来到了C Shell下 。
ps au 显示用户的linux系统上运行的进程列表
pstree 显示进程树
echo $? OR echo $status
根据不同的shell版本,选择这两个命令之一。显示上次或最后一个可执行命令退出时的状态,0为正常退出,其余为不正常,即程序执行时发生了错误。
chmod
改变目录和文件的访问权限(只有所有者或超级用户才可执行)。例如:
chmod 755 file_name 赋予用户rwx权限,组rx,其他rx
chmod g+w file_name 给组添加w权限
chmod go-rx file_name 给组和其他减去rx权限
chmod a=r file_name 给所有人都赋予r权限
chown
改变文件和目录的所有者和组。例如:
chown root file_name 修改文件所有者为root
chown root:root file_name 修改文件所有者为root,所在 组为root
其他还有
setuid
setgid
umask
等等以后搞明白了再补充。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22666004/viewspace-618310/,如需转载,请注明出处,否则将追究法律责任。