1. sed
命令格式:
sed -i "s/old/new/g" `grep old -rl path`
例如: 把文件中stv替换为hello
sed -i "s/stv/hello/g" `grep stv -rl ./test/`
只把文件中“stv” 字符串替换为hello 用\b 来限定字符界限
sed -i "s/\bstv\b/hello/g" `grep stv -rl ./test/`
2.perl
只把本地目录下所有的.c 和 .h 文件中的 system 字符串替换为 system_fun
bsp; find -name "*.[hc]" | xargs perl -pi -e 's|\bsystem\b|system_fun|g'
2015年9月8日星期二
SHELL文件替换字符
2015年7月14日星期二
文件描述符
参考:http://www.bottomupcs.com/file_descriptors.html
文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。
每个进程在Linux内核中都有一个task_struct结构体来维护进程相关的 信息,称为进程描述符(Process Descriptor),而在操作系统理论中称为进程控制块 (PCB,Process Control Block)。task_struct中有一个指针(struct files_struct *files; )指向files_struct结构体,称为文件 描述符表,其中每个表项包含一个指向已打开的文件的指针。
文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。
用户程序不能直接访问内核中的文件描述符表,而只能使用文件描述符表的索引 (即0、1、2、3这些数字),这些索引就称为文件描述符(File Descriptor),用int 型变量保存。 当调用open 打开一个文件或创建一个新文件时,内核分配一个文件描述符并返回给用户程序,该文件描述符表项中的指针指向新打开的文件。当读写文件时,用户程序把文件描述符传给read 或write ,内核根据文件描述符找到相应的表项,再通过表项中的指针找到相应的文件。
Java对应的文件描述符类为:FileDescriptor
使用Demo:
// 新建FileInputStream对象
File file = new File(FileName);
FileInputStream in1 = new FileInputStream(file);
// 获取文件“file.txt”对应的“文件描述符”
FileDescriptor fdin = in2.getFD();
// 根据“文件描述符”创建“FileInputStream”对象
FileInputStream in3 = new FileInputStream(fdin);
订阅:
博文 (Atom)