linux之管道重定向
管道与重定向
一、重定向
将原输出结果存储到其他位置的过程
标准输入、标准正确输出、标准错误输出

进程在运行的过程中根据需要会打开多个文件,每打开一个文件会有一个数字标识。这个标识叫文件描述符。 进程使用文件描述符来管理打开的文件(FD----file descriptors). 文件描述符:每打开一个程序都会有文件描述

0,标准输入(键盘)
1,标准输出(默认)
2,标准错误
3+,进程在执行过程中打开的其他文件
&:表示正确错误混合输出
二、输出重定向 (覆盖,追加)
> ----覆盖:直接把内容生成到指定文件,会覆盖源文件中的内容。 >> ----追加:尾部追加,不会覆盖掉文件中原有的内容,相当于append 正确输出: 1> 1>> 等价于 > >> 错误输出: 2> 2>>
2.1. 案例1:输出重定向(覆盖)
[root@linux-server ~]# date 1> date.txt #正确输出--覆盖 # 注意:如果 > 前面什么都不加默认为1,标准正确输出。

2.2.案例2:输出重定向(追加)
[root@linux-server ~]# date >> date.txt #正确输出--追加

2.3. 案例3:错误输出重定向
[root@linux-server ~]# ls /home/ /aaaaaaaaa >list.txt
ls: cannot access /aaaaaaaaa: No such file or directory
[root@linux-server ~]# ls /home/ /aaaaaaaaa >list.txt 2>error.txt #重定向到不同的位置
[root@linux-server ~]# cat error.txt
ls: cannot access /aaaaaaaaa: No such file or directory

2.4.正确和错误都输入到相同位置
[root@linux-server ~]# ls /home/ /aaaaaaaaa &>list.txt #混合输出到相同文件

2.5.重定向到空设备/dev/null
[root@linux-server ~]# ls /home/ /aaaaaaaaa >list.txt 2>/dev/null #空设备,将错误的输出丢掉 [root@linux-server ~]# ls /home/ /aaaaaaaaa &>/dev/null #空设备,将正确与错误的输出丢掉
echo 会将输入的内容送往标准输出(打印) echo 内容 >> 文件名或脚本 (使用重定向的方式创建文件或脚本)
2.6.脚本中使用重定向
实战一(没有使用重定向)
[root@linux-server ~]# vim ping1.sh #!/bin/bash ping -c1 10.18.40.100 if [ $? -eq 0 ];then # $?判断上一条命令的执行返回值,0为真,非0为执行失败echo "10.18.40.100 is up." elseecho "10.18.40.100 is down!" fi [root@linux-server ~]# chmod +x ping1.sh [root@linux-server ~]# ./ping1.sh #执行文件(执行脚本) PING 10.18.40.100 (10.18.40.100) 56(84) bytes of data. --- 10.18.40.100 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms 10.18.40.100 is down!
实战二(使用重定向)
[root@linux-server ~]# vim ping1.sh #!/bin/bash ping -c1 10.18.40.100 &>/dev/null if [ $? -eq 0 ];thenecho "10.18.40.100 is up." >>up.txt elseecho "10.18.40.100 is down!" fi [root@linux-server ~]# ./ping1.sh
实战三
[root@linux-server ~]# vim ping.sh
#!/bin/bash
ip=10.31.160
for i in {10..20} #变量i取值
do
ping -c1 $ip$i &> /dev/null
if [ $? -ne 0];then # -ne不等于echo "network is not ok";
elseecho "$ip.$i" >> /mnt/up.txt
fi
dine
[root@linux-server ~]# bash ping.sh
[root@linux-server ~]# cat /mnt/up.txt
三、输入重定向 <
标准输入: < 等价 0<
通过输入重定向创建文件
(cat > file <<EOF )是用来创建文件或者在脚本中使用,并向文件中输入信息输入的任何东西会被写入文件中,EOF命令结束。
语法:cat > filename <<EOF #可以写到脚本或者文件里面 EOF:开始和结束的标记。命令不是固定的,可以是任意字符,但结尾字符必须与开始字符一致,成对使用; 结尾字符必须顶格写。如果不是在脚本中,可以用Ctrl-D输出EOF的标识; 在脚本输入多行文本内容时,<<-EOF可以去除结尾分界符EOF所在行开头部分的制表符,忽略所有的前导制表符(tab)字符。
实战案例一:
[root@linux-server ~]# cat >file4 <<EOF > 111 > 222 > 333 > 444 > EOF [root@linux-server ~]# cat file4 111 222 333 444
实战案例二
利用重定向建立多行的文件 脚本创建多行文件
[root@linux-server ~]# vim create_file.sh #!/bin/bash cat >file200.txt <<EOF 111 222 333 yyy ccc EOF [root@linux-server ~]# chmod +x create_file.sh [root@linux-server ~]# ./create_file.sh [root@linux-server ~]# cat file200.txt 111 222 333 yyy ccc
四、管道 |
进程间通信的一种方式
用法:command1 | command2 |command3 |...

实战案例一
[root@linux-server ~]# rpm -qa | grep 'httpd'#查询所有安装的软件包,过滤包含httpd包 httpd-tools-2.4.6-90.el7.centos.x86_64 httpd-2.4.6-90.el7.centos.x86_64 [root@linux-server ~]# ps aux | grep 'sshd'
实战案例二
将/etc/passwd中的用户按UID大小排序
[root@linux-server ~]# sort -t":" -k3 -n /etc/passwd #以: 分隔,将第三列按字数升序 [root@linux-server ~]# sort -t":" -k3 -n /etc/passwd -r #以: 分隔,将第三列按字数降序 [root@linux-server ~]# sort -t":" -k3 -n /etc/passwd |head #以: 分隔,将第三列按字数升序看前十行 [root@linux-server ~]# sort -t":" -k3 -n /etc/passwd |tail #以: 分隔,将第三列按字数升序看后十行 参数详解: sort 排序,默认升序 -t 指定分隔符 -k 指定列 -n 按数值 -r 降序 uniq -c 去重 head 默认输出前十行 tail 默认输出后十行
实战案例三
[root@linux-server ~]# netstat -lntp | awk 'NR==3 {print $4}' | awk -F':' '{print $2}'# awk截取 NR指定截取的行 print打印 $指定截取的列, -F指定截取的分隔符
22
五、参数传递:xargs
对:ls cp rm 管道不能执行。所以通过xargs。
语法:
cat a.txt | xargs -i cp {} /目录 {}:前面传过来的内容-i :为了让大括号生效目录 -r解释:前面传过来的东西交给大括号{}cat file.txt |xargs ls -l 前面是目录或者目录的路径。 ls - l 后面可以不加大括号,直接执行。
实战案例一
[root@linux-server ~]# touch /home/file{1..5} [root@linux-server ~]# vim files.txt /home/file1 /home/file2 /home/file3 /home/file4 /home/file5 [root@linux-server ~]# cat files.txt |ls -l #不加xargs传参,看输出结果 [root@linux-server ~]# cat files.txt |rm -rvf #不加xargs传参,看输出结果[root@linux-server ~]# cat files.txt |xargs ls -l -rw-r--rwx. 1 root root 12 Nov 7 21:57 /home/file1 -rw-r--r--. 1 root root 0 Nov 7 21:57 /home/file2 -rw-r--r--. 1 root root 0 Nov 7 21:57 /home/file3 -rw-r--r--. 1 root root 0 Nov 7 21:57 /home/file4 -rw-r--r--. 1 root root 0 Nov 7 21:57 /home/file5[root@linux-server ~]# cat files.txt | xargs rm -rvf removed ‘/home/file1’ removed ‘/home/file2’ removed ‘/home/file3’ removed ‘/home/file4’ removed ‘/home/file5’
实战案例二
[root@linux-server ~]# touch /home/file{1..5}
[root@linux-server ~]# # cat files.txt | xargs -i cp -rvf {} /tmp/
‘/home/file1’ -> ‘/tmp/file1’
‘/home/file2’ -> ‘/tmp/file2’
‘/home/file3’ -> ‘/tmp/file3’
‘/home/file4’ -> ‘/tmp/file4’
‘/home/file5’ -> ‘/tmp/file5’
常用小命令
du:查看文件大小
wc:(word count)计算文件的行数、字数和字节数
[root@linux-server ~]# du -h /etc/ #查看目录及目录中的文件大小 [root@linux-server ~]# du -sh /etc/ #查看目录的总大小 [root@linux-server ~]# ls /etc/ | wc -l #查看目录中有多少个文件(一级目录下的) [root@linux-server ~]# ls -R /etc/ | wc -l #-R递归目录,可查看目录下的所有文件
作业
1.cat /2.txt 将它的结果混合输出到/opt/file.txt cat /2.txt &> /opt/file.txt 2.怎么判断一个账户是否存在?? id user_name 3.将22覆盖到a.txt文件中 echo 22 > a.txt 4.>与>>区别是什么 >(1)直接把内容生成到指定文件,会覆盖源文件中的内容(2)直接生成一个空白文件,相当于touch命令 >>尾部追加,不会覆盖掉文件中原有的内容 5.将cat /home/b.txt中将正确的输出重定向到a.txt中将错误的输出重定向到c.txt cat /home/b.txt >a.txt 2>c.tst 6.请将vsftpd的进程杀掉,他的IPD为11223? kill -9 11223 7.请描述一下kill与pkill的区别 kill 指定pid进程号 pkill 指定进程名,可以删除某个终端,或者某个用户的进程 8.请描述一下什么是nice值 进程优先级,范围是-20到+19,nice值越大意味着更低的优先级,低nice值会获得更多的处理器时间。 nice值并不是优先级,但会影响优先级:PRI = PRI(old) + nice(PRI就是优先级值,越小越先被调度) 9.如何删除当前目录下以.log结尾的文件? rm -rf ./*.log 10.打印当前工作目录的Linux命令是? pwd 11.如何查看在后台运行的程序? jobs 12.如何将后台运行的程序调出之前台运行? fg 工作号 13.2>与&>是什么意思? 标准错误的内容输出覆盖到指定文件 正确和错误混合输出到指定文件 14.请用输入重定向将123456写入a.txt文件中。 echo 123456 > a.txt 15.动态查看进程的命令你知道哪几个?top,htop,uptime
扩展--阅读
什么是CC攻击?
攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS和伪装就叫:CC(ChallengeCollapsar)。 CC主要是用来攻击页面的。大家都有这样的经历,就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢, 访问的人越多,论坛的页面越多,数据库压力就越大,被访问的频率也越高,占用的系统资源也就相当可观。
如何防御CC攻击
1.开启防火墙,过滤掉访问次数多的IP地址 2.拒绝代理服务器访问你服务器 怎么拒绝代理服务器访问呢? 代理服务器有固定的IP地址,将这些IP地址都加到防火墙下,全部drop掉
CC攻击危害是什么?
大量的流量不断冲击你的服务器,会让你的服务器负载及压力越来越大,直到服务器崩溃宕机
6.什么是DOS攻击
DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。
云计算基础 练习试题I
第一题:如何查看你的服务器IP地址?
ip a ifconfig
第二题:你所使用的linux是哪个版本?请描述一下你所知道的其他发行版?
Centos7 Debian, RHEL, Ubuntu, openSUSE
第三题:请简述一下什么是绝对路径什么是相对路径?
绝对路径以/开头的路径,相对路径是从非/开始的路径,从当前目录开始
第四题:请给jack用户设置密码,密码为123456
useradd jack && passwd jack 123456
第五题:请创建用户tom,登录shell为/sbin/nologin,并指定uid为1200
useradd -u 1200 -s /sbin/nologin tom
第六题:请描述下面目录的作用
/root:root用户的家目录 /home:普通用户的家目录 /usr/local:安装软件的目录 /etc:存放配置文件 /bin:普通用户使用的命令文件 /sbin:管理员使用的命令文件
第七题:如何查看系统中alice用户是否存在?
id alice
第八题:在权限设置中请说明下面内容
r是什么? 对应数字是几?读取 4 w是什么? 对应数字是几?写入 2 x是什么? 对应数字是几?执行 1
第九题:请回答下面的问题
root:x:0:0:root:/root:/bin/bash 分隔符是什么?冒号 第一列是什么?用户 第二列是什么?密码 第四列是什么?gid 第六列是什么?家目录 第七列是什么?登录的shell
第十题: 请简述vim编辑器中的如下命令
i ----- 光标所在处进入编辑模式 o ----- 在光标下一行进入编辑模式 yy -----复制光标所在行 dd -----删除光标所在行 u -----撤销 G ------到页尾 shift+v -----进入可视行模式 x ------删除光标处的字符 gg ------到页首 r ------修改光标所在字符 p ------在光标下一行粘贴
第十一题:请简述一下rwx对文件和对目录的影响和对应的命令
对文件: r: 读--cat、less w: 写--vi、vim x: 执行--bash ./file_name
对目录: r: 读--ls w: 写--touch、mv、rm x: 执行--cd
第十二题:创建用户jack和it组,并将jack添加到it组里面,同时it组对文件a.txt有读写权限
groupadd it useradd jack -G it chmod g+w a.txt chown .it a.txt
第十三题:如何查看/opt/目录下面的所有文件包括隐藏文件
ls -a /opt
第十四题:请将/opt/test/目录以及目录中的所有文件设置为读和执行权限
chomd -r g=rx o=rx /opt/test/
第十五题:请简述一下在公司里面为什么不能使用root用户
root用户为管理员用户,权限太高,使用root用户容易造成误操作,带来安全隐患,因此使用普通用户
相关文章:
linux之管道重定向
管道与重定向 一、重定向 将原输出结果存储到其他位置的过程 标准输入、标准正确输出、标准错误输出 进程在运行的过程中根据需要会打开多个文件,每打开一个文件会有一个数字标识。这个标识叫文件描述符。 进程使用文件描述符来管理打开的文件(FD--…...
to_json 出现乱码的解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
Java接口和类
package chapter04;public class Java22_Object_接口 {public static void main(String[] args) {// TODO 面向对象 - 接口// 所谓的接口,可以简单理解为规则、规范// 基本语法:interface 接口名称 { 规则属性,规则的行为 }// 接口其实是抽象…...
前端文件预览汇总
一、vue中预览word、excel、pdf: vue-office vue-office支持多种文件(docx、excel、pdf)预览的vue组件库,支持vue2/3,也支持非Vue框架的预览。 特点: 一站式:提供word(.docx)、pdf、excel(.xlsx, .xls)多种文档在线…...
银河麒麟V10 安装tigervncserver
银河麒麟V10 安装tigervncserver 银河麒麟V10安装tigervnc-server步骤: 提示,本安装环境:arm飞腾2000,主机开机进入root用户模式。 1、安装server安装包 #rpm -i tigervnc-server-1.10.1-5.p05.ky10.aarch64.rpm 2、控制台输入 …...
SKM Power*Tools 10.0
SKM Power*Tools 10.0是功能强大的电气电力系统分析设计解决方案!综合软件提供强大的功能和领先的技术,在检查、计算、负载分配、流量、瞬态稳定性等多个方面提供领先的支持,可对不同的安全设备、系统进行评估分析和比较,使用 Pow…...
查看视频时间基 time_base
时间基、codec, 分辨率,音频和视频的都一样,才可以直接使用ffmpeg -f concat -i file.txt 方式合并。 On Thu, Dec 03, 2015 at 21:54:53 0200, redneb8888 wrote: I am looking for a way to find the time base of a stream (video or audio), $ ffpr…...
数据结构 —— 最小生成树
数据结构 —— 最小生成树 什么是最小生成树Kruskal算法Prim算法 今天我们来看一下最小生成树: 我们之前学习的遍历算法并没有考虑权值,仅仅就是遍历结点: 今天的最小生成树要满足几个条件: 考虑权值所有结点联通权值之和最小无环…...
初学Spring之 JavaConfig 实现配置
使用 Java 方式配置 Spring 写个实体类: Component 表示这个类被 Spring 接管了,注册到了容器中 package com.demo.pojo;import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component;Component //…...
在Java项目中实现实时日志分析
在Java项目中实现实时日志分析 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 随着互联网应用的发展,实时日志分析成为了保证系统稳定性、性能优化…...
Git基础知识与常用命令指南
这是一个Git基础知识和常用命令的简要指南,涵盖了日常开发中最常用的操作。你可以将这个指南保存下来,作为日常工作的参考。 目录 基础篇1. Git基本概念2. 配置Git3. 创建仓库4. 基本的工作流程5. 分支操作6. 查看历史7. 撤销更改8. 远程仓库操作 Git进阶知识与技巧指南1. 分…...
第8章:Electron 剪贴版和消息通知
在本章中,我们将介绍如何在Electron应用中与操作系统进行集成。这些操作包括剪贴板操作、通知系统、原生对话框等功能。 8.1 剪贴板操作 Electron 提供了 clipboard 模块,允许我们在应用中访问和操作剪贴板内容。以下是一些基本的剪贴板操作示例。 8.…...
Android zygote访谈录
戳蓝字“牛晓伟”关注我哦! 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章,技术文章也可以有温度。 本文摘要 本文以访谈的方式来带大家了解zygote进程,了解zygote进程是啥?它的作用是啥?它是如何一步…...
nuxt、vue树形图d3.js
直接上代码 //安装 npm i d3 --save<template><div class"d3"><div :id"id" class"d3-content"></div></div> </template> <script> import * as d3 from "d3";export default {props: {d…...
香橙派AIpro测评:yolo8+usb鱼眼摄像头的Camera图像获取及识别
一、前言 近期收到了一块受到业界人士关注的开发板"香橙派AIpro",因为这块板子具有极高的性价比,同时还可以兼容ubuntu、安卓等多种操作系统,今天博主便要在一块832g的香橙派AI香橙派AIpro进行YoloV8s算法的部署并使用一个外接的鱼眼USB摄像头…...
大华设备接入GB28181视频汇聚管理平台EasyCVR安防监控系统的具体操作步骤
智慧城市/视频汇聚/安防监控平台EasyCVR兼容性强,支持多协议接入,包括国标GB/T 28181协议、GA/T 1400协议、部标JT808协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SDK等,并能对外分发RTMP、…...
Laravel包开发指南:构建可重用组件的艺术
标题:Laravel包开发指南:构建可重用组件的艺术 Laravel不仅是一个强大的Web应用框架,它的包(Package)系统也为开发者提供了构建和共享可重用组件的能力。通过包开发,开发者可以轻松地扩展Laravel的功能&am…...
JavaDS预备知识
集合框架 Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces和其实现类 classes 。 其主要表现为将多个元素 element 置于一个单元中,对数据进行创建(Create)、读取(Retrieve…...
日常学习--20240705
1、IO流 按照IO操作的数据类型分为字节流和字符流: 字节流:又分为输入流(其他程序传递过来的数据,读取流中的数据)和输出流(往流中写数据,传递给其他程序);可以操作二进制文件&…...
Java中初始化一个List的多种方式
1.最原始的方式:先创建,然后再添加元素 List<String> list new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("cherry");2.使用Arrays.asList 这是一种快速方便的方式,直接…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
链式法则中 复合函数的推导路径 多变量“信息传递路径”
非常好,我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题,统一使用 二重复合函数: z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y)) 来全面说明。我们会展示其全微分形式(偏导…...
Xcode 16 集成 cocoapods 报错
基于 Xcode 16 新建工程项目,集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...
[拓扑优化] 1.概述
常见的拓扑优化方法有:均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有:有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...
