linux系统管理-输入输出
linux系统管理-输入输出
重定向
将原本要输出到屏幕上的数据信息,重新定向到指定的文件中
运行程序,或者输入一个命令:默认打开4个文件描述符
标准输入与输出
| 名称 | 文件描述符 | 作用 |
|---|---|---|
| 标准输入(stdin) | 0 | 通常键盘,也可以是其他文件或者命令的输出的内容可以作为标准输入 |
| 标准输出(stdout) | 1 | 默认输出到屏幕 |
| 错误输出(stderr) | 2 | 默认输出到屏幕 |
| 文件名称(filename) | 3+ |
/dev/stderr(错误输出) -> /proc/self/fd/2 2 -> /dev/pts/0
/dev/stdin(标准输入) -> /proc/self/fd/0 0 -> /dev/pts/0
/dev/stdout(标准输出) -> /proc/self/fd/1 1 -> /dev/pts/0
输出重定向分类
- 重定向的特性:覆盖文件
1>:标准输出重定向,将命令执行的正确结果输出到指定的文件或者设备中
2>:错误输出重定向
- 追加重定向:不会覆盖文件
1>>:标准输出追加重定向,将命令执行的正确结果追加输出到文件末尾
2>>:错输出追加重定向,将命令执行的错误结果追加输出到文件末尾
<< :标准输入重定向,将键盘敲的内容,输入到命令或者文件中
输出重定向的使用
#将正确的内容追加到文件中,错误会输出到屏幕(不会覆盖源文件)
echo "This is network conf" >> abc
#将错误的内容输出到文件中,正确的会输出到屏幕(会覆盖源文件)
find /etc -name "*.conf" 2>b
find /etc -name "*.conf" 1>a 2>b
#合并输出,错误的正确的内容都会输出到一个文件(会覆盖源文件)
find /etc -name "*.conf" >c 2>&1
find /etc -name "*.conf" >c 2>c
find /etc -name "*.conf" &>c
#将错误输出重定向到 ‘黑洞’,正确内容输出到屏幕/dev/pts/x
ls /root/ /err 2>/dev/null
#将错误输出重定向到 ‘黑洞’,正确内容输出到1.txt文件中
ls /root/ /err >1.txt 2>/dev/null
输入的重定向使用
< :0<
<<:0<<
案例1:
cat >> zls.txt <<eof
zls
qiudao
eof
案例2:
[root@zls ~]# mail zls < /etc/passwd
案例3:
[root@oldboyedu ~]# grep 'root'
rppr
qwe
rootasdasdadzxczxc
rootasdasdadzxczxc
^C
案例4:
[root@oldboyedu ~]# dd if=/dev/zero of=/file1.txt bs=1M count=20
20+0 records in
20+0 records out
20971520 bytes (21 MB) copied, 0.0260574 s, 805 MB/s
[root@oldboyedu ~]# dd </dev/zero >/file2.txt bs=1M count=20
20+0 records in
20+0 records out
20971520 bytes (21 MB) copied, 0.011896 s, 1.8 GB/s
案例5:
恢复mysql数据
[root@zls ~]# mysql -uroot -p123 < bbs.sql
案例6:利用重定向建立多行文件
[root@oldboyedu ~]# cat >file1
案例7:
#!/bin/sh
menu(){
cat <<EOF
+------------+
| 1 | apple |
+---+--------+
| 2 | pear |
+---+--------+
| 3 | banana |
+---+--------+
| 4 | cherry |
+---+--------+
EOF
read -p "please input a num: " fruit
}
usage(){
echo "USAGE:请输入水果编号"
exit 1
}
color(){
case "$fruit" in
1)
echo -e "\E[1;31mapple \E[0m"
;;
2)
echo -e "\E[1;20mpear \E[0m"
;;
3)
echo -e "\E[1;33mbanana \E[0m"
;;
4)
echo -e "\E[1;35mcherry \E[0m"
;;
*)
usage
esac
}
menu
color
案例8:多条命令重定向
[root@oldboyedu ~]# (ls;date) > a.txt
案例9:后台进程重定向
(while :; do date; sleep 2; done) &>/dev/null &
管道技术 |
连接多个命令,将管道符左侧的标准输出,交给管道符右侧的命令标准输入
案例1:
将/etc/passwd 中的UID取出并按大小排序
[root@oldboyedu ~]# awk -F : '{print $3}' /etc/passwd|sort -n
案例2:
统计当前/etc/passwd 中用户使用的 shell 类型
[root@oldboyedu ~]# awk -F : '{print $NF}' /etc/passwd|sort |uniq|wc -l
5
案例4:统计网站访问量top20
[root@driver-zeng nginx]# awk '{print $1}' driverzeng.com_access.log|sort |uniq -c|sort -nr|head -20
案例5:取出cpu已使用的百分比,只显示数字
[root@oldboyedu ~]# df -h |awk -F '[ %]+' 'NR==2 {print $5}'
4
tee:相当于管道符
[root@zls ~]# date > date.txt
[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系统管理-输入输出的更多相关文章
- Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载五)Linux系统的对话方式
本篇是Linux小白最佳实践第5篇,目的就是让白菜们了解Linux进程之间是如何对话的.之前连载的几篇,在微信上引起了很多的反响,有人也反映图多文字少,感觉没有干货.本篇选了大部分是实战讲解的&quo ...
- Linux系统管理10——进程和计划任务管理
Linux系统管理10——进程和计划任务管理 一.程序和进程的关系 1.程序 ·保存在硬盘.光盘等介质中的可执行代码和数据 ·静态保存的代码 2.进程 ·在CPU及内存中运行的程序代码 ·动态执行的代 ...
- Linux基础学习(13)--Linux系统管理
第十三章——Linux系统管理 一.进程管理 1.进程查看: (1)进程简介:进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源. (2)进程管理的 ...
- Linux系统管理和维护常用命令
Linux系统管理和维护常用命令 ls 命令 功能说明 ls 命令显示指定工作目录下的内容,列出工作目录所包含的文件及子目录. 语法结构: ls [选项] [路径或文件] ls 选项及说明 -a 显示 ...
- Linux系统管理--part(1)
Linux系统管理--part(1) Linux系统安装完毕,需要对Linux系统进行管理和维护,让Linux服务器能够真正英语于企业中 Linux运维的三个步骤安装.调试.启动 通过本篇文章,将学习 ...
- Linux系统管理远程登录工具PUTTY
PuTTY 简介 PuTTY是一个Telnet.SSH.rlogin.纯TCP以及串行接口连线软件.较早的版本仅支持Windows平台,在最近的版本中开始支持各类Unix平台,并打算移植 ...
- 【转载】茶叶蛋干货!《超容易的Linux系统管理入门书》(连载十)进行动态主机配置DHCP
使用动态主机配置协议DHCP(Dynamic Host Configuration Protocol)则可以避免网络参数变化后一些繁琐的配置,客户端可以从DHCP服务端检索相关信息并完成相关网络配置, ...
- 【转载】绝对干货!Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载九)如何通过源代码安装软件
除了使用Linux的包管理机制进行软件的安装.更新和卸载,从源代码进行软件的安装也是非常常见的,开源软件提供了源代码包,开发者可以方便的通过源代码进行安装.从源码安装软件一般经过软件配置.编译软件.执 ...
- 【转载】干货再次来袭!Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载八)用命令实现批量添加用户
Windows添加用户需要至少5个界面,而Linux一条命令就搞定了,这是不是高效人士办公第一法则呢.本文不给你一堆参数和选项,不让你见识教条主义,只给你最实用的代码. 想每天能听到小妞的语音播报,想 ...
随机推荐
- 转战物联网·基础篇09-选择MQTT协议还是CoAP协议
前面章节介绍过,MQTT协议和CoAP协议都是物联网中比较流行的协议,都对传输量做了很大的精简,传输开销小,以适应物理网的网络环境. XMPP协议也有人说是适合物联网通信的,但它是基于XML, ...
- bayaim_mysql5.6下table_open_cache参数
bayaim_mysql5.6下table_open_cache参数_2017年12月26日10:51:58 原创 作者:bayaim 时间:2017-12-26 10:57:17 1 0删除编辑 ( ...
- JS&Jquery基础之窗口对象的关系总结
1.top 该变更永远指分割窗口最高层次的浏览器窗口.如果计划从分割窗口的最高层次开始执行命令,就可以用top变量.2.opener opener用于在window.open的页面引用执行该wi ...
- Redis 通过 scan 找出不过期的 key
SCAN 命令是一个基于游标的迭代器(cursor based iterator):SCAN 命令每次被调用之后,都会向用户返回一个新的游标,用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游 ...
- [日常] 解决PHP Warning: Module 'mysqli' already loaded in Unknown on line 0
解决PHP Warning: Module 'mysqli' already loaded in Unknown on line 0 原因:是PHP有两种方式添加扩展模块,一种是直接编译进了PHP,另 ...
- Ubuntu下doxygen+graphviz使用概录
关键词:doxygen.Doxyfile.doxywizard.dot.graphviz等等. 使用doxygen从源码注释生成帮助文档或者SDK,输出格式有多种比如htmp.Latex等等. 如果想 ...
- CPU相关概念
整部主机的重点在于中央处理器 (Central Processing Unit, CPU),CPU 为一个具有特定功 能的芯片, 里头含有微指令集,如果你想要让主机进行什么特异的功能,就得要参考这颗 ...
- acwing 471. 棋盘 解题记录
题解地址 https://www.acwing.com/problem/content/description/473/ 有一个m×m的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的. 你现 ...
- javaee和javase的区别
JavaEE是指Java Enterprise Edition,Java企业版,多用于企业级开发,包括web开发等等.也叫J2EE. JavaSE通常是指Java Standard Edition,J ...
- ssh 免密码登录服务器
本机生成 ssh key ssh-keygen -t rsa -C "your_email@example.com" 上传公钥文件(假设用户为 user,服务器 ip 为 1.2. ...