菜鸟学Linux 第012篇笔记 Linux I/O重定向、管道

简介:

菜鸟学Linux 第012篇笔记 Linux I/O重定向


计算机五大部件

运算器、控制器:cpu

存储器:RAM

输入/输出设备


程序=指令+数据


控制器:读取指令

运算器:做数据运算

存储器:做数据存储


相互运作原理(仅做理解)

控制器读取指令,并在指令控制下告诉运算器去哪里取数据并做运算,运算结果再由控制器

保存到存储器


地址总线:用于做内存寻址

数据总线:传输数据

控制总线:控制指令

物理上总线可以利用,一根总线可以实现以上三种功能


寄存器:Cpu内部的一个暂时存储器

I/O

input 设备

output设备

系统设定

默认输出设备:标准输出STDOUT 文件描述符:1

默认输入设备:标准输入STDIN 文件描述符:0

标准错误输出:STDERR 文件描述符:2

标准输入:键盘keyboard

标准输出和错误输出:显示器screen


I/O 重定向(输入输出重定向)

linux重定向符号

覆盖输出>

追加输出>>

输入<

结束标记<<EOF END

错误输出2>  和 2>>

标准和错误输出 &> 不支持覆盖输出

e.g.

ls /etc > /tmp/etc.out 将本应该显示在屏幕上的信息

重定向定入到/tmp/etc.out

ls /etc &> /tmp/etc.out

ls /etc > /tmp/etc.out 2> /tmp/etc

cat >> /tme/home.out <<EOF  将输入的字符输出到home.out文件


set -C 禁止对已经存在文件使用覆盖重定向

强制覆盖输出,由使用>|

set +C 关闭上述功能




管道:前一个命令的输出做为后一个命令的输入

命令1|命令2|命令3

e.g. cut -d: -f1 /etc/passwd | sort | tr 'a-z' 'A-Z'

tee (read from standard input and write to standard output and files)

同时输出到标准输出,同时也输出到文件

e.g. echo "hello, world." | tee /tmp/hello.out

wc (print the number of newlines, words, and bytes in files)

e.g. wc -l /etc/shadow | cut -d' ' -f1 显示一个文件的行数

小练习 

1、统计/usr/bin目录下的文件个数;

2、取出当前系统上所有用户的shell,要求每种shell只显示一次,并且按顺序显示;

3、思考:如何显示/var/log目录下每个文件的内容类型?

4、取出/etc/inittab文件的第6行;

5、取出/etc/passwd文件中倒数第9个用户的用户名和shell,显示到屏幕上并保存至/tmp/users文件中;

6、显示/etc目录下所有以pa开头的文件,并统计其个数;

7、不使用文件编辑器,将alias cls=clear 一行内容添加至当前用户的./bashrc文件中;




KEY

1、ls /usr/bin | wc -l

2、cut -d: -f7 | sort -u

3、file `ls /var/log` 需要先切换到/var/log目录下

4、cat /etc/inittab | head -6 |tail -1

5、cat /etc/passwd | tail -9 | head -1 | cut -d: -f1,7 | tee /tmp/users

6、ls -d /etc/pa* | wc -l

7、echo "alias cls=clear" >> /user1/.bashrc

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1860628如需转载请自行联系原作者

Winthcloud
相关文章
|
1月前
|
Linux Shell
【Linux 进程间通讯 管道】使用Linux管道进行linux进程间通信
【Linux 进程间通讯 管道】使用Linux管道进行linux进程间通信
31 1
|
Unix Linux Windows
【Linux】—— 命名管道详解
【Linux】—— 命名管道详解
|
1月前
|
缓存 Unix Linux
进程间通信之匿名管道和命名管道的理解和实现【Linux】
进程间通信之匿名管道和命名管道的理解和实现【Linux】
|
1月前
|
算法 Linux
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
|
1月前
|
缓存 Ubuntu 网络协议
Linux系统编程之文件I/O函数的使用:介绍文件I/O函数的基本概念、用法和实现方式
Linux系统编程之文件I/O函数的使用:介绍文件I/O函数的基本概念、用法和实现方式
20 1
|
1天前
|
Linux Android开发
Linux(6)CH9434 SPI调试笔记
Linux(6)CH9434 SPI调试笔记
5 0
|
1天前
|
Linux
Linux(5)WIFI/BT调试笔记
Linux(5)WIFI/BT调试笔记
7 0
|
2天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
19 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
18天前
|
Linux API C语言
FFmpeg开发笔记(一)搭建Linux系统的开发环境
本文指导初学者如何在Linux上搭建FFmpeg开发环境。首先,由于FFmpeg依赖第三方库,可以免去编译源码的复杂过程,直接安装预编译的FFmpeg动态库。推荐网站<https://github.com/BtbN/FFmpeg-Builds/releases>提供适用于不同系统的FFmpeg包。但在安装前,需确保系统有不低于2.22版本的glibc库。详细步骤包括下载glibc-2.23源码,配置、编译和安装。接着,下载Linux版FFmpeg安装包,解压至/usr/local/ffmpeg,并设置环境变量。最后编写和编译简单的C或C++测试程序验证FFmpeg环境是否正确配置。
35 8
FFmpeg开发笔记(一)搭建Linux系统的开发环境
|
27天前
|
监控 网络协议 Linux
Linux I/O多路复用深入解析:从select到epoll的演进之路
Linux I/O多路复用深入解析:从select到epoll的演进之路
67 0