您的位置:首页 > 运维架构 > Linux

Linux文件管理、重定向和管道

2016-12-18 23:44 232 查看
文件的通配符:
* 匹配零个或多个字符
?匹配任何单个字符 是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 也可以单行重定向 不过原来的内容会被覆盖的

[root@localhost ~]# 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 文件 管理
相关文章推荐