UNIX Shell编程 学习笔记(一)

来源:互联网 发布:java 商城 小程序 编辑:程序博客网 时间:2024/05/10 02:22

Unix只能识别3种基本的文件类型:普通文件、目录文件和特殊文件。

统计文件中的单词数:wc命令
[root@localhost test]# wc Makefile
 22 84 600 Makefile
第一个数字表示文件Makefile包含的行数;第二个数字表示文件包含的单词数目;第三个数字表示文件包含的字符数。
命令参数:
-l 表示显示行数
-c 表示显示字符数
-w 表示显示单词数

显示工作目录:pwd命令
[root@localhost test]# pwd
/tools/test

链接文件:ln命令
命令格式:ln from to
它类似于Windows平台上的快捷方式。
如:ln abc writeback
ls -l命令后显示:
-rw-r--r-- 2 root root 13 2009-04-13 17:45 abc
-rw-r--r-- 1 root root 6 2009-04-13 17:38 wb
-rw-r--r-- 1 root root 6 2009-04-13 17:34 wbx
-rw-r--r-- 2 root root 13 2009-04-13 17:45 writeback
注:数字2表示链接数为2,这意味着一个文件可以链接多次。
执行:[root@localhost programs]rm  -f  abc

文件writeback的链接数变成1了;文件仍然存在,所以它与Windows平台的快捷方式是有区别的。
ln最通常的用途是链接不同目录中的文件。链接文件的唯一限制是,链接在一起的文件必须共存于同一文件系统。要链接到不同文件系统中的文件,可以给ln命令加-s选项,这样可以建立一个符号化链接。符号化链接与初始链接有一点不同:符号化链接指向初始文件,如初始文件被删除,该符号化链接则不起作用。
[root@localhost programs]# ln -s wb wbb
[root@localhost programs]# ls -l
-rw-r--r-- 1 root root 6 2009-04-13 17:38 wb
lrwxrwxrwx 1 root root 2 2009-04-14 10:26 wbb -> wb
-rw-r--r-- 1 root root 6 2009-04-13 17:34 wbx
-rw-r--r-- 1 root root 13 2009-04-13 17:45 writeback
注意:wbb文件类型显示为1,表示它是一个符号化链接。

字符匹配
星号(*):匹配0个以上的字符;而问号(?)则匹配1个字符。
ls [a-z]*[0-9]表示显示文件名以小写字母开始,且以数字结尾的文件列表。

输出重定向:命令的输出一般是提交到标准输出设备,可以转向到文件内,这叫输出重定向。在有标准输出的命令后,添加>file符号后,命令的输出就会写入文件file。另一种类型的输出重定向,由字符>>表示,它意思是命令的输出从标准输出追加到指定的文件后面。因此,文件以前的内容不会丢失,新的输出添加到最后。
Shell能识别一种特别格式的输出重定向,如果输入:> file

前面没有命令,shell会创建一个空文件(长度为0字符),如该文件以前存在,其内容会丢失。
输入重定向:同输出重定向,命令的输入也可重定向为来自于文件。用大于号>表示输出重定向,用小于号表示输入重定向。

管道:Unix系统可以把两条目录的效果连接起来,这种连接称为管道。管道可以把一条命令的输出直接作为另一条命令的输入。管道效果由字符 | 实现,它必须在两条命令之间。故统计登陆用户数可以这么实现:[root@localhost misc]# who | wc -l
在两条命令间建立管道后,第一条命令的标准输出就直接连接到第二条命令的标准输入。

过滤器:Unix所指的过滤器是指能够从标准输入中接受输入,对输入进行处理后,把结果写入标准输出的任何程序。命令cat和sort是过滤器,而who、date、cd、pwd、echo、rm、mv及cp都不是。

标准错误:除标准输入和标准输出之外,还有一种标准设备,称之为标准错误。标准错误默认也是终端。
[root@localhost misc]# ls n*
ls: cannot access n*: No such file or directory
见上面,“cannot access...”信息实际上是由ls命令写入标准错误,而非标准输出。

一行可以键入多条命令,命令间用分号分隔。
比如既查看当前时间又查看当前工作目录:[root@localhost misc]# date;pwd
Tue Apr 14 11:29:15 CST 2009
/tools/test/misc
有些命令执行时间很长,可以放到后台执行。在键入的命令之后跟一个&符号,该命令就发送到后台执行。
[root@localhost misc]# sort file3 > out & #sort发往后台执行
[2] 30584 # 进程id
此时,终端可立即做其它工作。[2] 30584 解释:第一个称为该命令的工作号,第二个是进程标识号。
可以用ps命令查看:
[root@localhost misc]# ps
  PID TTY TIME CMD
 2303 pts/1 00:00:00 bash
30354 pts/1 00:00:00 sort
30589 pts/1 00:00:00 ps
[2]- Done sort file3 > out
ps可以显示系统中正运行的进程的信息。
PID进程标识号,TTY进程终端号,TIME进程已运行的时间,CMD进程名。
如果加上-f选项,将显示更详细内容。[root@localhost test]# ps -f
UID PID PPID C STIME TTY TIME CMD
root 30665 30657 0 12:30 pts/2 00:00:00 -bash
root 30775 30665 0 13:17 pts/2 00:00:00 ps -f
注:PPID父进程的标识号,STIME进程启动时间,以及命令参数。

原创粉丝点击