重定向

输出重定向

重定向是先执行定向命令,再执行正常命令
比如
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

![](/uploads/linux/images/m_ffe08f5466ba45f97df76208e804d520_r.png)

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

![](/uploads/linux/images/m_9d724f37513ced7e6147c33883f4d37a_r.png)

### 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

小结练习

  1. 使用grep命令在文件”file.txt”中查找包含关键词”hello”的行。

    grep hello file.txt

  2. 使用tr命令将文件”file.txt”中的所有小写字母转换为大写字母。

    cat file.txt | tr ‘[a-z]’ ‘[A-Z]’ > tmp && mv tmp file.txt

  3. 使用find命令在目录”/home/user”下查找所有以”.txt”结尾的文件。

    find /home/user -type f -name “*.txt”

  4. 使用chmod命令将文件”file.txt”的权限设置为只有所有者可读写。

    chmod 600 file.txt

  5. 使用xargs命令将文件”file.txt”中的每一行作为参数传递给命令”echo”并输出到终端。

    cat file.txt | xargs echo

  6. 使用sort命令对文件”file.txt”中的行进行排序,并将结果输出到新文件”sorted.txt”中。

    sort file.txt >sorted.txt

  7. 使用grep命令在文件”file.txt”中查找包含关键词”error”的行,并统计匹配的行数。

    grep -c error file.txt

  8. 使用tr命令将文件”file.txt”中的所有空格替换为制表符。

    tr ‘ ‘ ‘\t’ file.txt > tmp && mv tmp file.txt

  9. 使用find命令在目录”/var/log”下查找所有修改时间在过去24小时内的文件。

    find /var/log -mtime -1

  10. 使用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

  1. 使用xargs命令将文件”file.txt”中的每一行作为参数传递给命令”grep”并在目录”/var/log”下查找匹配的行。

    xargs -a file.txt -I {} grep {} /var/log/*

  2. 使用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:

  1. 使用grep命令在文件”file.txt”中查找包含关键词”success”的行,并统计匹配的行数。

    grep -c success file.txt

  2. 使用tr命令将文件”file.txt”中的所有大写字母转换为小写字母。

    tr [a-z] [A-Z] file.txt

  3. 使用find命令在目录”/home/user”下查找所有大小为0的文件。

    find /home/user -empty

  4. 使用chmod命令将文件”file.txt”的权限设置为只有所有者可执行。

    chmod u+x,go-x file.txt
    实际上权限,
    755 : 目录和执行文件 700
    644 : 普通文件
    600 400

  5. 使用xargs命令将文件”file.txt”中的每一行作为参数传递给命令”rm”并删除相应的文件。

    xargs -a file.txt -I {} rm -f {}

  6. 使用sort命令对文件”file.txt”中的行进行逆序排序,并将结果输出到新文件”reversed.txt”中。

    sort -r file.txt >new.txt

  7. 使用grep命令在文件”file.txt”中查找包含关键词”warning”的行,并统计匹配的行数。

    grep -c warning file.txt

  8. 使用tr命令将文件”file.txt”中的所有数字替换为”X”。

    tr ‘[0-9]’ ‘x’ file.txt

执行

作者:严锋  创建时间:2023-12-18 12:59
最后编辑:严锋  更新时间:2025-05-09 15:48