linux 文件管道,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 <

> 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] ‘

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值