标签:window 打开 有一个 rap unix txt 改变 不同 root
标准I/O和管道重定向 redirect
程序:指令+数据
读入数据:Input
输出数据:Output
打开的文件都有一个fd:file descriptor(文件描述符)
/dev/std*
/proc/self/fd 终端
标准输入(STDIN) -0 默认接受来自键盘的输入
例如:bc(计算器)
标准输出(STDOUT) -1 默认输出到终端窗口
标准错误(STDERR) -2 默认输出到终端窗口
I/O重定向:改变默认位置
STDOUT和STDERR可以被重定向到文件
命令 操作符号 文件名
> 把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> = > file 2&>1 把所有输出重定向到文件
< 输入重定向
清空大文件:> /boot/bigfile 立即释放空间
>> 追加 >> /data/ls.log 更加安全的创建文件
依赖于当前shell ,更换其他shell将无法创建
(command;command)>file
set -C 禁止重定向覆盖
set +C 允许重定向覆盖
>| file 强制覆盖
tr 转换和删除字符
选项 :
-c -C --complement:取代所有不属于第一字符集的字符
-d --delete:删除所有属于第一字符集的字符
-s --squeeze-repeats:把连续重复的字符以单独一个字符表示
-t --truncate-set1:将第一字符集对应字符转化第二字符对应的字符
[:alnum:]: 字母和数字
[:alpha:]: 字母
[:cntrl:]: 控制(非打印)字符
[:digit:]: 数字
[:graph:]: 图形字符
[:lower:]: 小写字母
[:print:]: 可打印字符
[:punct:]: 标点符号
[:space:]: 空白字符
[:upper:]: 大写字母
[:xdigit:]:十六进制字符
Windows和linux的文本格式不同(不可见字符)
man ascii 查看ascii
在linux ascii中 ‘\n‘表示回车 ‘\r‘表示换行
在Windows中 回车和换行意思基本相同
hexdump -C 命令 可以查看文件16进制
tr -d ‘\r‘ < win.txt
tr -d ‘\r‘ < win.txt > win2.txt (生成新文件)
用这样的方式将Windows格式转化为linux格式
或者 可以使用 dos2unix 命令 将Windows格式转化为unix格式
unix2dos 命令 可以将unix格式 转化为Windows格式
mail -s 标题 hi wang
cat > f1.log <<EOF(终止词)
> 123
>fff
>dsf
>EOF (结束)
cat <f1.txt > f1.txt
cat <f2.txt >>f2.txt
passwd root &> /dev/null 隐藏信息
将标准错误输出
ls /data /err 2<&1 | tr ‘[:lower:]‘ ‘[upper]‘
或 ls /data /err |& tr ‘[:lower:]‘ ‘[upper]‘
重定向到多个目标
tee
-a 追加 (append)
command 1 | tee [-a] file | command 2
把命令1的STDOUT保存在文件中,作为命令2的输入
使用:
保存不同阶段的输出
复杂管道的故障排除
同时查看和记录输出
seq 生成序列
面试题:
计算1+2+...+100的总和
seq -s + 1 2 100 | bc
管道中 - 符号
示例:
将/home里面的文件打包,但打包的数据不是记录到文件呢,而是传送到stdout,
经过管道后,将tar -cvf - /home 传送给后面的tar -xvf -,后面的这个 - 则是取前一个命令的stdout,因此,就不需要使用临时file了
tar -cvf - /home | tar -xvf
标签:window 打开 有一个 rap unix txt 改变 不同 root
原文地址:https://blog.51cto.com/14451057/2424196