Linux文件管理重定向和管道

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux文件管理重定向和管道相关的知识,希望对你有一定的参考价值。

文件的通配符:

* 匹配零个或多个字符

?匹配任何单个字符 是1个字符

~ 当前用户的家目录

~username 用户家目录

~+ 前一个工作目录

[0-9] 匹配这个范围数字

[a-z]

[A-Z]

[wxc] 匹配列表中的任何一个字符

[^wxc] 匹配列表中的所有字符以外的字符

可以man 7  帮助 glob

更精确:

[[:digit:]] 任意数字,相当于0-9

[[:lower:]] 任意小写字母

[[:upper:]] 任意大写字母

[[:alpha:]] 任意大小写字母

[[:alnum:]] 任意数字或字母

[[:space:]] 空格

[[:punct:]] 标点符号

\n:回车换行




查看文件的状态:

stat   查看文件的元数据

文件:metadata ,data

三个时间戳

访问时间:atime 读取文件的内容

修改时间:mtime 改变文件内容  数据

改变时间:cteme 元数据发送改变



别名命令:

alias

可定义别名name

# alias cp = ‘cp -i’


可以使用/etc/bashrc 对所有用户有效 只能是root生效

普通用户 .bashrc 文件里自己生效

# alias cp=‘cp -i’

改完之后source .bashrc    生效命令 也可以    .     .

临时取消别名: unalias  后面跟 添加的别名命令


1、创建/testdir/rootdir目录,在复制/root下的文件到该目录内 ,并要求保存原来权限

# cp -rp /root/* /testdir/rootdir/

# cp -rp /root/.[^.]* /testdir/rootdir/




索引节点:

inode(inodex node)表中包含文件系统所有文件列表

一个节点 (索引节点)是在一个表项,包含有关文件的信息(元数据),包括:

文件类型,权限,UID、GID

链接数(指向这个文件名路径名称个数)

该文件的大小和不同的时间戳

指向磁盘上文件的数据块指针

有关文件的其他数据

文件引用一个inode号

人是通过文件名来引用一个文件

一个目录是目录下的文件名和文件inode号之间的映射



shred:添加随机数

# shred  f1

hexdump  -C  f1 :可查看 f1文件内的东西




硬链接:

创建硬链接会增加额外的记录项以引用文件

对应于同一个文件系统上一个物理文件

每个目录引用相同的inode号

创建时链接数递增

删除文件时:

rm命令递减计数链接

不能跨越驱动器或分区


三种I/O设备:

读入的数据:Input:

输出的数据:Output:


标准输入(STDIN):——0  默认接受键盘的输入

标准输出(STDOUT):——1  默认输出到终端窗口

标准错误(STDERR):——2  默认错误到终端窗口显示的

I/O重定向:是改变默认的位置


事例:

ls >  /dev/pts/0   :把显示的结果显示到/dev/pts/0 终端


支持的操作符号包括:

注意:当重定向一个文件时就会创建

> 把标准输入的东西重定向到文件

2> 把标准错误重定向到文件

# lss 2> da

$> 把所有输出重定向到文件   会把正确和错误的都放在一起


示列:

ls /ett  /boot &> all.out

/err 不存在  把报错的内容在一起了

直接两个一块用: 正确的放f1  错误的放f2

# ls  /err   /boot  > f1   2>  f2


注意: > 文件的内容会被覆盖

# set  -C  :禁止将已有的文件覆盖

强制覆盖: >|

# set +C :允许覆盖

>> :在原来的内容基础上  追加内容

2>> 追加重定向错误输出数据流


&>   覆盖重定向

&>> 追加重定向


():合并多个程序的标准输出

(cal 2007 ; cal 2008) > all.out

示列:ls 、pwd    要用括号中间加上; 号

(ls;pwd)  > all    同时显示



从文件中导入的标准输入

使用< 来重定向标准输入

某些命令能够接受重文件中导入的标准输入

示列:把f1中的小写字字母转换为大写

tr  ‘a-z’  ‘A-Z’   <   f1



tr:转换和删除字符

-c:取字符集的补集

-d:删除所有属于第一字符集的字符

-s:把连续重复的字符以单独一个字符表示

-t:先删除第一字符集较第二字符集多出的字符



cat  > f1    也可以单行重定向     不过原来的内容会被覆盖的


[[email protected] ~]# cat > f1 << EOF (EOF  结束语)    同样会覆盖 不建议使用

> ccc

> bbb

> ddd

> EOF


管道:

(使用符号“|”表示)用来连接命令

命令1  |  命令2  |  命令3  |  . . . .

命令1的标注输出发送给命令2的标准输入,命令2的标准输出发送到命令3的标准输入

标准错误不能通过管道转发

最后一个命令会在当前shell进程的子shell进程中执行用来

组合多种工具的功能

ls | tr ‘a-z‘ ‘A-Z‘

示列:正确的转换为大写了 错误的没有转换

ls    /boot    /ttx    | tr ‘a-z’ ‘A-Z’


如果把错误的也转换为大写的话:   直接全部转换

ls /boot    /ttx  2>&1    |   tr   ‘a-z‘   ‘A-Z‘


tee:用于读取标准输入的数据,并将其内容输出成文件

-a:既文件的后面,不覆盖他

-i:忽略中断信号

who  | tee  ls.out



1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中

cat /etc/issue | tr ‘a-z‘ ‘A-Z‘  > /tmp/issue.out


2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中

# cat /etc/passwd | tr ‘a-z‘ ‘A-Z‘ > /tmp/who.out


3、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下:

Hello, I am 用户名,the system version is here,pleasehelp me to check it ,thanks!

操作系统版本信息

mail -s  "help" root <<w

> Hello, i am chen ,the system version us here,please help me to check it,thanks!

> `uname -r`

> w


4、将/root/下文件列表,显示成一行,并文件名之间用空格隔开。

# ls -a /root | tr ‘\n‘   ‘ ‘


5、file1文件的内容为:”1 2 3 4 5 6 7 8 9 10” 计算出所有数字的总和

# echo $[`cat file | tr ‘ ‘ ‘+‘`]  或# cat file  | tr ‘ ‘ ‘+‘ | bc


6、删除Windows文本文件中的‘^M‘字符

6、# tr -d ‘\r‘ < hehe.txt > chen

hexdump -c chen


7、处理字符串“xt.,l 1 jr#!$mn2 c*/fe3 uz4”,只保留其中的数字和空格

# echo  "xt., | 1 jr#LinuxTXTmn 2 c*/fe 3 uz 4 " | tr -d -c ‘[0-9] ‘











本文出自 “linux” 博客,请务必保留此出处http://001230.blog.51cto.com/11559496/1883845

以上是关于Linux文件管理重定向和管道的主要内容,如果未能解决你的问题,请参考以下文章

Linux基础管理—— " 标准IO及重定向及管道 "

Linux 重定向与管道符

12.第三章 Linux文件管理和IO重定向

Linux之重定向管道

vim文本编辑器;管道和文件重定向;用户和组管理

第4天文件管理管道用户及组管理用户及权限管理