Chinaunix首页 | 论坛 | 博客
  • 博客访问: 60642
  • 博文数量: 16
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 185
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 20:05
文章分类
文章存档

2008年(16)

我的朋友

分类: LINUX

2008-03-05 16:21:16

在学习shell编程前,先来简单的了解一下shell的基础知识。

什么是shell?
    linux下的shell类似于windows下的cmd,命令提示符,相信很多人在这里面用过ping的命令。shell是一个用户与linux系统内 核之间的接口程序,他本身不会做什么事情,我们输入的各个指令其实都是由内核负责处理的,shell类似于一座桥梁,连接着用户和内核。
现在大家用的linux系统下的默认shell应该都是bash,我们正是以这个为平台进行学习的。


shell相关的一些东东。

输入输出的重定向:
    当我们运行完一个程序的时候,可能会输出N多的东西来,这个时候如果一屏一屏的看就会相当郁闷,这时候完全可以用重定向功能把这些输出保存到文件中去。
比如:ps -aux > ps.txt
这条命令就是把ps产生的输出全部保存到ps.txt文件中,相信大家都注意到>了。
还有个>>,是把输出附加到一个文件的末尾,而不是覆盖这个文件。
一个程序的运行伴随着输出和错误输出,而文件描述符0代表程序的标准输入,1代表标准输出,2代表错误输出。所以ps -aux 2> ps.txt则是把ps产生的错误输出保存到文件中。

管道:
    即'|',用来连接进程。最常用的 ps -aux|less ,就是把ps产生的输出通过管道连接到less进行分页显示。

shell的一些小脚本既可以直接在终端上输入也可以现保存在文件中然后执行。
例如
$read nnmm
yes
$if [ $nnmm = "yes" ]
>then
>echo you enter yes
>else
>echo you enter other
>fi
you enter yes
这是直接在终端输入的一段程序。
当然也可以把这段脚本保存到文件中:
#!/bin/bash
echo "please enter :"
read nnmm
if [ $nnmm = "yes" ];then
echo "you enter yes"
else
echo "you enter other"
fi
exit 0

第一行的#!/bin/bash是一种特殊的注释(一般的注释是#开头),该断文字则告诉系统同一行上紧跟在它后面的那个参数是用来执行本文件的程序。
当用命令file file_name的时候,如果有#!/bin/bash则会输出:
file_name:Bourne-Again shell script text executable
表明这是一个可执行的shell脚本。
如果没有这一行,则输出file_name:ASCII text
表明这仅仅是一个ascii字符的普通文件。

最后的exit 0表示程序执行成功,正常退出,1则表示出错,可以通过echo $?来查看上一个程序的执行状况。
做完这些后需要把脚本文件设置成可执行,用chmod命令,./**来执行这个脚本文件!

未完待续!
阅读(759) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~