设为首页 加入收藏

TOP

2.1.4 Linux编程常用命令及工具(1)
2013-10-12 06:47:22 来源: 作者: 【 】 浏览:87
Tags:2.1.4 Linux 编程 常用 命令 工具

2.1.4 Linux编程常用命令及工具(1)

1.expand

expand将输入制表符转换为空格。unexpand将输入空格转换为制表符。使用-t选项来指定制表符停止位,示例如下:

[root@localhost ~]# cat -A hello.c     //使用cat -A显示文档所有字符信息
#include <stdio.h>$
int main(int argc,char* argv[])$
{$
^Iprintf("hello.world1!\n");^I^I^I//test1$   //TAB制表符显示为^I
^Iprintf("hello.world2!\n");^I^I^I//test2$
}$
[root@localhost ~]# cat hello.c     //cat查看,其中制表符为8个字符
#include <stdio.h>
int main(int argc,char* argv[])
{
printf("hello.world1!\n");               
//打印信息hello.world1!,用于测试
printf("hello.world2!\n");                //test2
}
[root@localhost ~]# expand -t 4 hello.c   //设置制表符为4个字符
#include <stdio.h>
int main(int argc,char* argv[])
{
printf("hello.world1!\n");   
printf("hello.world2!\n");   
}

2.grep搜索字符串

grep用来在指定文件中搜索关键字符串,这在查找头文件函数声明时使用较多。其命令格式如下:

grep [选项] [查找内容] [查找范围]

- b:在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量。
- c:只显示匹配行的数量。
- i:比较时不区分大小写。
- h:在查找多个文件时,指示grep不要将文件名加入到输出之前。
- l:显示首次匹配串所在的文件名并用换行符将其隔开。当在某文件中多次出现匹配串时,不重复显示此文件名。
- n:在输出前加上匹配串所在行的行号(文件首行行号为1)。
- v:只显示不包含匹配串的行。
- x:整行显示严格匹配的行。

例如在Linux头文件目录中查找fread函数声明位置,可以使用以下命令:

[root@localhost ~]# grep -b fread /
usr/include/*.h   //-b用来显示匹配位置
/usr/include/stdio_ext.h:1845:extern int
__freading (FILE *__fp) __THROW;
/usr/include/stdio_ext.h:2175:extern int
__freadable (FILE *__fp) __THROW;
/usr/include/stdio.h:20167:extern size_t
fread
(void *__restrict __ptr, size_t __size,
/usr/include/stdio.h:21301:extern size_t fread_unlocked
(void *__restrict __ptr, size_t __size,

3.find查找文件

find命令使用多种方式来查找某一文件的位置。其命令格式如下:

find 查找路径 [参数] [字符串对象]

(1)以名称和文件属性为条件查找。

其主要参数如下。

-name字符串:查找文件名匹配所给字符串的所有文件,字符串内可用通配符*、 及[ ]。
-lname 字符串:查找文件名匹配所给字符串的所有符号连接文件,字符串内可用通配符*、 及[ ]。
-gid n:查找ID号为n的用户组的所有文件。
-uid n:查找ID号为n的用户的所有文件。
-group 字符串:查找用户组名为所给字符串的所有文件。
-user 字符串:查找用户名为所给字符串的所有文件。
-empty:查找大小为0的目录或文件。
-path 字符串:查找路径名匹配所给字符串的所有文件,字符串内可用通配符*、 及[ ]。
-perm 权限:查找具有指定权限的文件和目录,权限的表示如711、644。
-size n[bckw]:查找指定文件大小的文件,n后面的字符表示单位,缺省为b,代表512字节的块。
-type x:找类型为x的文件,x为b(块设备文件)、c(字符设备文件)、d(目录文件)、p(命名管道(FIFO))、f(普通文件)、l(符号连接文件)或s(socket文件)。

例如,在/usr/include文件夹下查找文件名为stdio.h的文件,其命令如下:

[root@localhost ~]# find /usr/include/ -name 
stdio.h //在目录/usr/include中查找文件stdio.h
/usr/include/stdio.h
/usr/include/bits/stdio.h

(2)以时间为条件查找。其主要参数如下:

- amin n:查找n分钟以前被访问过的所有文件。
- atime n:查找n天以前被访问过的所有文件。
- cmin n:查找n分钟以前文件状态被修改过的所有文件。
- ctime n:查找n天以前文件状态被修改过的所有文件。
- mmin n:查找n分钟以前文件内容被修改过的所有文件。
- mtime n:查找n天以前文件内容被修改过的所有文件。

(3)可执行的操作。

- exec 命令名称{ }:对符合条件的文件执行所给的Linux命令,而不询问用户是否需要执行该命令。{}表示命令的参数即为所找到的文件;命令的末尾必须以"\\;"结束。
-ok 命令名称{ }:对符合条件的文件执行所给的Linux命令,与exec不同的是,它会询问用户是否需要执行该命令。

4.AWK工具

AWK是一种用于处理文本的编程语言工具。AWK在很多方面类似于shell编程语言,尽管AWK具有完全属于其本身的语法。最初创造AWK时,目的是用于处理文本,并且这种语言的基础是,只要在输入数据中有模式匹配,就执行一系列指令。该实用工具依次扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式。如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行。其命令语法结构如下:

awk '{pattern + action}' {filenames} 

其中pattern表示AWK在文件中查找的内容,而action是在找到匹配内容时所执行的一系列命令。

AWK将每个输入行信息分为记录和字段。

记录是单行的输入,记录的分隔符是换行,每条记录包含若干字段。

默认的字段分隔符是空格或制表符。

当AWK读取输入内容时,整条记录被分配给变量$0。各字段以字段分隔符分开,被分配给变量$1、$2、$3,序号依次增加。

例如以下命令:

[root@localhost ~]# cat hello.c    //hello.c文件内容
#include <stdio.h>       //<stdio.h>前有空格
int main(int argc,char* argv[])    //main前面有空格
{
printf("hello.world1!\n");             //注释前面有制表位
printf("hello.world2!\n");             //注释前面有制表位
}
[root@localhost ~]# awk '{print $1}' hello.c //打印所有行的第一个字段
#include
int
{
printf("hello.world1!\n");
printf("hello.world2!\n");
}
AWK主要用于表格信息处理,关于AWK更多操作请参阅AWK手册。
【责任编辑:云霞 TEL:(010)68476606】

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇12.6.2 表格控件 下一篇2.1.4 Linux编程常用命令及工具..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: