重定向
输出重定向
重定向是先执行定向命令,再执行正常命令
比如
tail /etc/services >/etc/services
最后的文件大小为0
清空重定向 >
追加重定向 >>
合并输出流
2>&1
>&2
find /etc 2>&1 >/dev/null
find /etc 2>/dev/null >&2
练习
- 统计/etc/下以conf结尾的文件,大小是小与10k,统计总共多少行,不允许出现错误信息。
- 统计出上述文件中总共有多少a
输入重定向
重要的概念EOF
文件的尾部,表示缓存区没有字符可读,CTRL+D
CTRL+ C 表示中止。
文件输入重定向
< 表示重定向,把文件的内容作为键盘缓冲区
比如:`
cat <number.txt
cat <num1.txt >num2.txt

#### 注意点
* 重定向的功能一般结合系统调度进行使用
* 涉及操作系统鉴权的操作,credential,不支持重定向,比如ssh,scp
* 如果交互式操作当中,重定向还不够,比如鉴权,可以使用 expect 命令,支持密码。

### ssh支持重定向,mysql命令,sqlplus都支持输入重定向。
### 键盘输入重定向
主要用在创建新文件当中或者输入比较复杂的输入当中。有2个小于支持
一般以EOT/EOF 结尾
EOT: End of Terminal
EOF: End of File
```shell
cat <<EOF >newfile
this is a test
EOF
tee <<EOF >newfile
this is a test
EOF
tee和类似,但是tee输出的时候,输出屏幕的同时,还是输出文件。
直接输入重定向
<<<
cat <<<”bcwd”
sshpass -p 123456 ssh root@192.168.10.10 <<<”date”
文本处理命令
sort,tr,uniq ,sed,awk,rev,paste
shell
网络
netstat
ip a
进程
ps
top
free
vmstat
iostat
iftop
小结练习
使用grep命令在文件”file.txt”中查找包含关键词”hello”的行。
grep hello file.txt
使用tr命令将文件”file.txt”中的所有小写字母转换为大写字母。
cat file.txt | tr ‘[a-z]’ ‘[A-Z]’ > tmp && mv tmp file.txt
使用find命令在目录”/home/user”下查找所有以”.txt”结尾的文件。
find /home/user -type f -name “*.txt”
使用chmod命令将文件”file.txt”的权限设置为只有所有者可读写。
chmod 600 file.txt
使用xargs命令将文件”file.txt”中的每一行作为参数传递给命令”echo”并输出到终端。
cat file.txt | xargs echo
使用sort命令对文件”file.txt”中的行进行排序,并将结果输出到新文件”sorted.txt”中。
sort file.txt >sorted.txt
使用grep命令在文件”file.txt”中查找包含关键词”error”的行,并统计匹配的行数。
grep -c error file.txt
使用tr命令将文件”file.txt”中的所有空格替换为制表符。
tr ‘ ‘ ‘\t’ file.txt > tmp && mv tmp file.txt
使用find命令在目录”/var/log”下查找所有修改时间在过去24小时内的文件。
find /var/log -mtime -1
使用chmod命令将目录”/home/user”及其所有子目录的权限设置为只有所有者可读写。
find /home/user -type d -exec chmod u=rw,go-rwx {} ;
find /home/user -type d | xargs chmod -600
chmod +x a.exe
chmod u-x,g+x,o=rwx * ,chmod ugo=rwx *
chmod [users] +-= rwx
user: u,o,g,a
使用xargs命令将文件”file.txt”中的每一行作为参数传递给命令”grep”并在目录”/var/log”下查找匹配的行。
xargs -a file.txt -I {} grep {} /var/log/*
使用sort命令对文件”file.txt”中的数字进行升序排序,并将结果输出到终端。
file.txt :
this is a 123456 that m 1234590 amd 999
this is a 6166 that m 33 amd 9944429
grep -Eo ‘[0-9]+’ num.txt | sort -n
grep -e = egrep
PERL -P ,Extended -E ,Normal:
使用grep命令在文件”file.txt”中查找包含关键词”success”的行,并统计匹配的行数。
grep -c success file.txt
使用tr命令将文件”file.txt”中的所有大写字母转换为小写字母。
tr [a-z] [A-Z] file.txt
使用find命令在目录”/home/user”下查找所有大小为0的文件。
find /home/user -empty
使用chmod命令将文件”file.txt”的权限设置为只有所有者可执行。
chmod u+x,go-x file.txt
实际上权限,
755 : 目录和执行文件 700
644 : 普通文件
600 400使用xargs命令将文件”file.txt”中的每一行作为参数传递给命令”rm”并删除相应的文件。
xargs -a file.txt -I {} rm -f {}
使用sort命令对文件”file.txt”中的行进行逆序排序,并将结果输出到新文件”reversed.txt”中。
sort -r file.txt >new.txt
使用grep命令在文件”file.txt”中查找包含关键词”warning”的行,并统计匹配的行数。
grep -c warning file.txt
使用tr命令将文件”file.txt”中的所有数字替换为”X”。
tr ‘[0-9]’ ‘x’ file.txt
执行
最后编辑:严锋 更新时间:2025-05-09 15:48