linux系统管理-输入输出

重定向

将原本要输出到屏幕上的数据信息,重新定向到指定的文件中

运行程序,或者输入一个命令:默认打开4个文件描述符

标准输入与输出

名称 文件描述符 作用
标准输入(stdin) 0 通常键盘,也可以是其他文件或者命令的输出的内容可以作为标准输入
标准输出(stdout) 1 默认输出到屏幕
错误输出(stderr) 2 默认输出到屏幕
文件名称(filename) 3+
  1. /dev/stderr(错误输出) -> /proc/self/fd/2 2 -> /dev/pts/0
  2. /dev/stdin(标准输入) -> /proc/self/fd/0 0 -> /dev/pts/0
  3. /dev/stdout(标准输出) -> /proc/self/fd/1 1 -> /dev/pts/0
输出重定向分类
  • 重定向的特性:覆盖文件

1>:标准输出重定向,将命令执行的正确结果输出到指定的文件或者设备中

2>:错误输出重定向

  • 追加重定向:不会覆盖文件

1>>:标准输出追加重定向,将命令执行的正确结果追加输出到文件末尾

2>>:错输出追加重定向,将命令执行的错误结果追加输出到文件末尾

<< :标准输入重定向,将键盘敲的内容,输入到命令或者文件中

输出重定向的使用
  1. #将正确的内容追加到文件中,错误会输出到屏幕(不会覆盖源文件)
  2. echo "This is network conf" >> abc
  3. #将错误的内容输出到文件中,正确的会输出到屏幕(会覆盖源文件)
  4. find /etc -name "*.conf" 2>b
  5. find /etc -name "*.conf" 1>a 2>b
  6. #合并输出,错误的正确的内容都会输出到一个文件(会覆盖源文件)
  7. find /etc -name "*.conf" >c 2>&1
  8. find /etc -name "*.conf" >c 2>c
  9. find /etc -name "*.conf" &>c
  10. #将错误输出重定向到 ‘黑洞’,正确内容输出到屏幕/dev/pts/x
  11. ls /root/ /err 2>/dev/null
  12. #将错误输出重定向到 ‘黑洞’,正确内容输出到1.txt文件中
  13. ls /root/ /err >1.txt 2>/dev/null

输入的重定向使用

< :0<

<<:0<<

  1. 案例1
  2. cat >> zls.txt <<eof
  3. zls
  4. qiudao
  5. eof
  6. 案例2
  7. [root@zls ~]# mail zls < /etc/passwd
  8. 案例3
  9. [root@oldboyedu ~]# grep 'root'
  10. rppr
  11. qwe
  12. rootasdasdadzxczxc
  13. rootasdasdadzxczxc
  14. ^C
  15. 案例4
  16. [root@oldboyedu ~]# dd if=/dev/zero of=/file1.txt bs=1M count=20
  17. 20+0 records in
  18. 20+0 records out
  19. 20971520 bytes (21 MB) copied, 0.0260574 s, 805 MB/s
  20. [root@oldboyedu ~]# dd </dev/zero >/file2.txt bs=1M count=20
  21. 20+0 records in
  22. 20+0 records out
  23. 20971520 bytes (21 MB) copied, 0.011896 s, 1.8 GB/s
  24. 案例5
  25. 恢复mysql数据
  26. [root@zls ~]# mysql -uroot -p123 < bbs.sql
  27. 案例6:利用重定向建立多行文件
  28. [root@oldboyedu ~]# cat >file1
  29. 案例7
  30. #!/bin/sh
  31. menu(){
  32. cat <<EOF
  33. +------------+
  34. | 1 | apple |
  35. +---+--------+
  36. | 2 | pear |
  37. +---+--------+
  38. | 3 | banana |
  39. +---+--------+
  40. | 4 | cherry |
  41. +---+--------+
  42. EOF
  43. read -p "please input a num: " fruit
  44. }
  45. usage(){
  46. echo "USAGE:请输入水果编号"
  47. exit 1
  48. }
  49. color(){
  50. case "$fruit" in
  51. 1)
  52. echo -e "\E[1;31mapple \E[0m"
  53. ;;
  54. 2)
  55. echo -e "\E[1;20mpear \E[0m"
  56. ;;
  57. 3)
  58. echo -e "\E[1;33mbanana \E[0m"
  59. ;;
  60. 4)
  61. echo -e "\E[1;35mcherry \E[0m"
  62. ;;
  63. *)
  64. usage
  65. esac
  66. }
  67. menu
  68. color
  69. 案例8:多条命令重定向
  70. [root@oldboyedu ~]# (ls;date) > a.txt
  71. 案例9:后台进程重定向
  72. (while :; do date; sleep 2; done) &>/dev/null &

管道技术 |

连接多个命令,将管道符左侧的标准输出,交给管道符右侧的命令标准输入

  1. 案例1
  2. 将/etc/passwd 中的UID取出并按大小排序
  3. [root@oldboyedu ~]# awk -F : '{print $3}' /etc/passwd|sort -n
  4. 案例2
  5. 统计当前/etc/passwd 中用户使用的 shell 类型
  6. [root@oldboyedu ~]# awk -F : '{print $NF}' /etc/passwd|sort |uniq|wc -l
  7. 5
  8. 案例4:统计网站访问量top20
  9. [root@driver-zeng nginx]# awk '{print $1}' driverzeng.com_access.log|sort |uniq -c|sort -nr|head -20
  10. 案例5:取出cpu已使用的百分比,只显示数字
  11. [root@oldboyedu ~]# df -h |awk -F '[ %]+' 'NR==2 {print $5}'
  12. 4

tee:相当于管道符

  1. [root@zls ~]# date > date.txt
  2. [root@zls ~]# date |tee date.txt

参数传递xargs

将参数列表转换成小块分段传递给其他命令

读入stdin的数据转换为参数添加至命令后面

让一些不支持管道的命令可以使用管道。

注意:

1.在管道后面的命令,都不应该在写文件名

2.在管道中只有标准输出才可以传递下一个命令, 标准错误输出会直接输出终端显示, 建议在使用管道前将标准错误输出重定向。

例如: find /etc -name "*.conf" 2>/dev/null | grep rc

3.有些命令不支持管道技术, 但是可以通过xargs来实现管道传递。

例如: which cat|xargs ls-l

例如: ls |xargs rm -rvf

例如: ls |xargs cp -rvft /tmp/ -> ls | xargs -I {} cp -rvf {} /tmp

例如: ls |xargs mv -t /tmp/ -> ls | xargs -I {} mv {} /tmp

linux系统管理-输入输出的更多相关文章

  1. Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载五)Linux系统的对话方式

    本篇是Linux小白最佳实践第5篇,目的就是让白菜们了解Linux进程之间是如何对话的.之前连载的几篇,在微信上引起了很多的反响,有人也反映图多文字少,感觉没有干货.本篇选了大部分是实战讲解的&quo ...

  2. Linux系统管理10——进程和计划任务管理

    Linux系统管理10——进程和计划任务管理 一.程序和进程的关系 1.程序 ·保存在硬盘.光盘等介质中的可执行代码和数据 ·静态保存的代码 2.进程 ·在CPU及内存中运行的程序代码 ·动态执行的代 ...

  3. Linux基础学习(13)--Linux系统管理

    第十三章——Linux系统管理 一.进程管理 1.进程查看: (1)进程简介:进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源. (2)进程管理的 ...

  4. Linux系统管理和维护常用命令

    Linux系统管理和维护常用命令 ls 命令 功能说明 ls 命令显示指定工作目录下的内容,列出工作目录所包含的文件及子目录. 语法结构: ls [选项] [路径或文件] ls 选项及说明 -a 显示 ...

  5. Linux系统管理--part(1)

    Linux系统管理--part(1) Linux系统安装完毕,需要对Linux系统进行管理和维护,让Linux服务器能够真正英语于企业中 Linux运维的三个步骤安装.调试.启动 通过本篇文章,将学习 ...

  6. Linux系统管理远程登录工具PUTTY

    PuTTY 简介        PuTTY是一个Telnet.SSH.rlogin.纯TCP以及串行接口连线软件.较早的版本仅支持Windows平台,在最近的版本中开始支持各类Unix平台,并打算移植 ...

  7. 【转载】茶叶蛋干货!《超容易的Linux系统管理入门书》(连载十)进行动态主机配置DHCP

    使用动态主机配置协议DHCP(Dynamic Host Configuration Protocol)则可以避免网络参数变化后一些繁琐的配置,客户端可以从DHCP服务端检索相关信息并完成相关网络配置, ...

  8. 【转载】绝对干货!Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载九)如何通过源代码安装软件

    除了使用Linux的包管理机制进行软件的安装.更新和卸载,从源代码进行软件的安装也是非常常见的,开源软件提供了源代码包,开发者可以方便的通过源代码进行安装.从源码安装软件一般经过软件配置.编译软件.执 ...

  9. 【转载】干货再次来袭!Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载八)用命令实现批量添加用户

    Windows添加用户需要至少5个界面,而Linux一条命令就搞定了,这是不是高效人士办公第一法则呢.本文不给你一堆参数和选项,不让你见识教条主义,只给你最实用的代码. 想每天能听到小妞的语音播报,想 ...

随机推荐

  1. socket之线程来提高吞吐量

    线程demo: 线程: package com.company.s5; import java.io.InputStream; import java.io.InputStreamReader; im ...

  2. 升鲜宝V2.0_杭州生鲜配送行业,再论B端生鲜配送企业管理软件的开发与实施的难点与行业痛点_15382353715_余东升

    升鲜宝V2.0_杭州生鲜配送行业,再论B端生鲜配送企业管理软件的开发与实施的难点与行业痛点_15382353715_余东升 笔者简介:升鲜宝供应链管理软件平台创始人,14年软件从业经历,10多年深究生 ...

  3. 个人项目开源之c++基于epoll实现高并发游戏盒子(服务端+客户端)源代码

    正在陆续开源自己的一些项目 此为c++实现高并发的游戏盒子,平台问题需要迁移重构,所以有一些遗留问题,客户端异常断开没有处理,会导致服务器崩溃,还有基于快写代码编程平台实现的小程序切换,线程读写缓存没 ...

  4. JupyterLab安装与配置虚拟环境

    JupyterLab安装: 推荐使用miniconda,相比于anaconda更加简洁,下载连接:https://mirrors.tuna.tsinghua.edu.cn/anaconda/minic ...

  5. linux学习(六)计划任务命令

    目录 at命令 @(计划任务命令) at命令 at命令用于指定在未来某一时间执行一个任务,该任务只能被执行一次 at [选项] [时间] f:指定包含具体指令的任务文件 q:指定新任务队列名称 l:显 ...

  6. 'Specifying a namespace in include() without providing an app_name '

    'Specifying a namespace in include() without providing an app_name ’ 从include()函数可以看出来,这个函数有两个参数,一个a ...

  7. Django—使用后台管理Models

    后台的配置 1.创建后台管理员 [root@localhost study_django]# python manage.py createsuperuser [root@localhost stud ...

  8. MATLAB实例:为匹配真实标签,对训练得到的标签进行调整

    MATLAB实例:为匹配真实标签,对训练得到的标签进行调整 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. MATLAB程序 munkres.m ...

  9. 实操《kubernetes网络权威指南》之tun设备

    跟着网上作一次,OK的. tun.c #include <net/if.h> #include <sys/ioctl.h> #include <sys/stat.h> ...

  10. leetcode 双周赛9 找出所有行中最小公共元素

    给你一个矩阵 mat,其中每一行的元素都已经按 递增 顺序排好了.请你帮忙找出在所有这些行中 最小的公共元素. 如果矩阵中没有这样的公共元素,就请返回 -1. 示例: 输入:mat = [[,,,,] ...