《Linux程序设计》学习笔记02——Shell程序设计

 

 

管道和重定向

重定向分为输入重定向 ’<’ 、输出重定向 ’>’ 和附加输出重定向 ’>>’

提示 :默认情况下,如果使用 > 操作符把输出重定向到一个文件而该文件已经存在时,它的内容将被覆盖;如果想改变该默认行为,可以使用 set –C 命令设置 noclobber 选项。

提示 :可以使用 UNIX 的通用“回收站” /dev/null 来有效的丢弃输出信息,比如:

$ kill –l 1234 >/dev/null 2>&1

我们可以使用管道操作符 | 来连接进程。 Linux MS-DOS 不同,在 Linux 下通过管道连接的进程可以同时运行,并且随着数据流在它们之间的传递可以自动地进行协调。举个例子: $ grep –l POSIX* | more

它将输出包含 POSIX 字符串的文件名。实际上,上述命令还有另外两种编写方式:

$ more `grep –l POSIX*` 或者 $ more $(grep –l POSIX*)

 

Shell 脚本程序

Shell 脚本非常灵活,在 Linux 的使用中往往经常使用它来完成某些繁琐但又必须的工作。鉴于本笔记主要针对 Linux 下的 C 语言编程,这里并不会用太多的篇幅来介绍 Shell 脚本。

运行脚本程序有两个办法:一种是在命令行上直接输入命令 PATH=$PATH:. 或者编辑 .bash_profile 文件,将刚才的命令添加在文件的末尾,然后退出登录再重新登录进来;另一种就是在保存脚本程序的目录中先键入 ./ 再输入脚本命令,如此做的作用是把脚本程序的完整的相对路径告诉 Shell

建议 :考虑到系统的安全性,最好的办法是在当前目录中的所有命令前都加上一个 ./

推荐 :如果你想深入地学习使用 Shell ,可以去 ChinaUnix Shell 子论坛

 

Find 命令

只要你是在 UNIX 或者类 UNIX 环境下,一个必不可少的命令就是 find 命令。它的功能是查找文件,比如说,我们在编译某个 C 程序时,发现错误提示说它不识别 STDIN ;那么,很明显的,你的 C 程序缺少某个头文件,但是如何才能知道它是在哪个头文件中定义的呢?一个非常有效地办法就是结合 grep 使用 find 命令:

$ find /usr/include –name “*.h” | xargs grep “STDIN”

上面命令先在 /usr/include 目录下搜索所有包含了 .h 的文件,继而使用 grep 命令对这些头文件查找 STDIN 字符串。当然,你可能说我知道 STDIN 定义在 <stdio.h> ,不用这么麻烦!但在实际的研发工作中,我们经常会在某个并不熟悉的环境(比如设备驱动程序的开发)下编写程序,我们会不可避免的查找某个函数或者宏定义的来源。

提示: find 命令是一个非常复杂的命令。它有很多的选项,如果你想深入的了解它,一个有效地途径就是使用 man 文档。很多情况下,比如不熟悉的命令或者函数都可以从 man 文档中得到解答。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值