linux命令-dup linux命令界面切换图形界面( 三 )


ipconfig.exeoutput.log 21
使用重定向操作符追加输出
要从命令中将输出添加到文件末尾而不丢失文件中已存在的任何信息 , 请使用两个连续
的大于号(即 ) 。例如 , 下面的命令可以将由 dir 命令生成的目录列表追加到
Dirlist.txt 文件:
dirdirlist.txt
要将 netstat 命令的输出追加到 Tcpinfo.txt 的末尾 , 请键入:
netstattcpinfo.txt
使用管道操作符 (|)
管道操作符 (|) 可以提取一个命令的输出(默认情况下是 STDOUT),然后将其导入另
一个命令的输入中(默认情况下是 STDIN) 。例如 , 下面的命令将对目录分类:
dir | sort
在本例中 , 将同时启动两个命令,但随后 sort 命令会暂停,直到它接收到 dir 命令
的输出为止 。sort 命令使用 dir 命令的输出作为输入,然后将输出发送到
句柄 1(即 STDOUT) 。
合并带重定向操作符的命令
可以通过合并带有其他命令和文件名的筛选器命令创建自定义命令 。例如,可以使用以
下命令存储包含“LOG”字符串的文件名:
dir /b | find "LOG"loglist.txt
dir 命令的输出通过 find 筛选器命令发送 。包含字符串 "LOG" 的文件名作为文件名
列表(例如,NetshConfig.log、Logdat.svd 和 Mylog.bat)存储在文件
Loglist.txt 中 。
要在相同命令中使用多个筛选器,请使用管道 (|) 分隔筛选器 。例如,下面的命令将
搜索 C 盘上的每个目录以查找包含 "LOG" 字符串的文件名,并且在命令提示符窗口中
每次显示一屏:
dir c:\ /s /b | find "LOG" | more
利用管道 (|) 可以将 Cmd.exe 导向为通过 find 筛选器命令发送 dir 命令输出 。
find 命令只选择包含字符串 "LOG" 的文件名 。more 命令可以显示由 find 命令选择
的文件名(在命令提示符窗口中每次显示一屏) 。有关筛选器命令的详细信息,请参阅
使用筛选器 。
Linux dup dup2函数理解在linux中,我们需要复制文件描述符,下面是我对文件描述符的理解
int dup(int fd); // 复制一个已经存在的文件描述符,如果成功 , 返回复制成功后的文件描述符,失败返回-1
int dup(int fd, int fd2); // 复制一个文件描述符 , fd表示已经存在的打开的文件描述符,fd2是指定新的文件描述符,如果fd2等于fd,则直接返回,如果fd2存在并且打开,则先close(fd2)后,重新打开,这样fd2和fd就指向了同一个文件(共享打开的文件),如果fd2不存在或者没有打开,则打开fd2,并且指向fd所指向的文件 。函数的返回值和fd2一致 。该函数可以实现文件的重定位 。
每个进程都有一个文件描述符表,每个描述符占用一个描述符项 , 每个文件描述符可以描述成这样
struct fileDescription {
int index;
void *pointer;
};
除了整形,还有一个指针,指向文件表 , 内核为所有打开文件维持一张文件表,每个文件表项包含:
1)文件状态标志(读、写、添写、同步和非阻塞等)
2)当前文件的偏移量
3)指向该文件v节点表项的指针
v节点表中包含了文件所有者、文件长度、文件所在的设备、指向文件实际数据块在磁盘上所在位置的指针等等
下面给出一个例子:
#include iostream
#include stdio.h
#include fcntl.h
#include sys/stat.h
#include unistd.h
#include string.h
using namespace std;
int main()
{
cout"Hello world!"endl;
int fd = open("a.txt", O_RDWR | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);

推荐阅读