首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SHELL(bash)脚本编程三:重定向

由于bash中重定向只在当前命令中有效,命令执行完毕,重定向被撤销。可以使用内置命令exec使重定向整个脚本有效。 脚本举例: #!.../bin/bash #打开输入文件描述符3,并关联文件file exec 3<file #先将文件描述符复制给标准输入,cat命令从标准输入读取文件file内容 cat <&3 #关闭文件描述符3.../stderr #转移标准输出到3号描述符,关闭原来1号文件描述符。 exec 1>&3- #转移标准错误到4号描述符,关闭原来2号文件描述符。 exec 2>&4- #命令标准输出将写入文件....IP日志文件access.log出现次数 grep -c $IP access.log >>result.txt echo #命令运行结束写入一个空行至文件描述符...当然,这里for循环中执行复合命令可以替换为任意需要并发执行任务。

1.6K30

while read line -

这里有一个原则,这个原则掌握好了,这个问题就很简单了: 对循环重定向输入可适用于环中所有需要从标准输入读取数据命令; 对循环重定向输出可适用于环中所有需要向标准输出写入数据命令;...上面的while结构中,read命令是需要从标准输入中读取数据。我们来详细了解一下read命令用法吧,这个命令是shell脚本中使用频率最高命令之一。...read一个最大特性是可以脚本中产生交互,因为它从标准输入读取数据。read之所以很常用,一是因为我们经常需要赋值,二是因为它可以交互,三是read能够一次给多个变量赋值。...是的,read命令也有退出状态,当它从文件file中读到内容时,退出状态为0,循环继续惊醒;当read从文件中读完最后一行,下次便没有内容可读了,此时read退出状态为非0,所以循环才会退出。...command命令输出作为read循环输入,这种结构长用于处理超过一行输出,当然awk也很擅长做这种事

1.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

Linux常用实用运维脚本命令

" \) -print # -exec command {} \;是连用,所有符合都会放置{}中,去执行command  #将文件分割成多个大小为10kb文件 split -b 10k data.file...关闭进程号12进程 kill 12 ##等同于在前台运行PID为123进程时按下Ctrl+C键 kill -2 123 ##如果任无法终止该程序可用“-KILL” 参数,其发送信号为SIGKILL...#该命令可以在你退出帐户/关闭终端之后继续运行相应进程。...文件十行是否增加了一个用户aaa ##计划任务设定没有执行之前我们可以用atq命令来查看系统没有执行工作任务。...(3) 只有root用户才能提高进程优先权 renice -5 -p 5200  #PID为5200进程nice设为-5  ##pmap命令用于显示一个或多个进程内存状态。

4K40

sed用法详解

-f:使用sed脚本 -e:可以指定多个处理动作 -r:启用扩展正则表达式,当与其他选项使用时应作为首个选项 -{}:可组合多个命令,以分号分割 定址符:用来指定处理起止行,省略定址符时默认逐行处理全部文本.../' a.txt 将文件中每行第一个第二个字符互换 sed -r 's/^(.)(.)(.*)/\2\1\3/' a.txt 将文件中每行第一个第二个单词互换 sed -r 's/([a-Z]+...第二行之前插入文本行‘YY’ 4,7iYY 第4-7行每一行前添加文本 a 行插入文本:2aYY 第2行之后添加文本 /^XX/aYY 以XX开头行之后添加文本 c 替换当前行:2cYY...r:读取文件 3r b.txt 第3行下方插入文本b.txt 4,7r b.txt 第4-7行每一行插入文件b.txt w:保存到文件 3w c.txt 将第3行另存为文件c.txt 4,7w...UID小于或等于500用户个数,统计UID大于500用户个数 awk -F: 'BEGINelse}END' /etc/passwd 坏结构:while坏 while(条件) do while循环

4.2K31

三十分钟学会AWK

Read AWK从输入流(文件,管道或者标准输入)中读取一行,然后存储到内存中。 Execute 所有的AWK命令都依次输入上执行。...第三个语句close(cmd, "to")用于执行完成关闭to进程 第四个语句cmd |& getline out使用getline函数存储输出到out变量 接下来打印变量out内容,然后关闭cmd...一个大型程序可以被划分为多个函数,每个函数之间可以独立开发测试,提供可重用代码。...> "/tmp/message.txt" }' 与shell中一样,>用于将输出写入到指定文件中,如果文件中有内容则覆盖,而>>则为追加模式写入。...第三行用于在上面的语句close(cmd, "to"),执行完成关闭其to进程 第四行 cmd |& getline out使用getline函数存储输出到变量out中 最后一行使用close函数关闭命令

1.4K10

30 分钟包你学会 AWK

Read AWK从输入流(文件,管道或者标准输入)中读取一行,然后存储到内存中。 Execute 所有的AWK命令都依次输入上执行。...上述代码执行,输出以下内容 ? 程序开始,AWKBEGIN语句中打印出标题。然后再BODY语句中,它会读取文件每一行然后执行AWKprint命令将每一行内容打印到标准输出。...AWK命令行 我们可以使用单引号命令行中指定AWK命令 ? AWK程序文件 我们可以使用脚本文件提供AWK命令 ?...上例看起来有些复杂,我们逐行分析一下 首先,第一行 cmd = “tr [a-z] [A-Z]” 是AWK中要建立双向连接命令 第二行print命令用于为tr命令提供输入,而 |& 用于指出要建立双向连接...第三行用于在上面的语句close(cmd, “to”),执行完成关闭其to进程 第四行 cmd |& getline out使用getline函数存储输出到变量out中 最后一行使用close函数关闭命令

1.1K30

30 分钟包你学会 AWK

Read AWK从输入流(文件,管道或者标准输入)中读取一行,然后存储到内存中。 Execute 所有的AWK命令都依次输入上执行。...然后再BODY语句中,它会读取文件每一行然后执行AWKprint命令将每一行内容打印到标准输出。这个过程会一直重复直到文件结尾。...一个大型程序可以被划分为多个函数,每个函数之间可以独立开发测试,提供可重用代码。...上例看起来有些复杂,我们逐行分析一下 首先,第一行 cmd = “tr [a-z] [A-Z]” 是AWK中要建立双向连接命令 第二行print命令用于为tr命令提供输入,而 |& 用于指出要建立双向连接...第三行用于在上面的语句close(cmd, “to”),执行完成关闭其to进程 第四行 cmd |& getline out使用getline函数存储输出到变量out中 最后一行使用close函数关闭命令

1.1K70

Shell笔记5:sed用法详解

-f:使用sed脚本 -e:可以指定多个处理动作 -r:启用扩展正则表达式,当与其他选项使用时应作为首个选项 -{}:可组合多个命令,以分号分割 定址符:用来指定处理起止行,省略定址符时默认逐行处理全部文本.../' a.txt 将文件中每行第一个第二个字符互换 sed -r 's/^(.)(.)(.*)/\2\1\3/' a.txt 将文件中每行第一个第二个单词互换 sed -r 's/([a-Z]+...第二行之前插入文本行‘YY’ 4,7iYY 第4-7行每一行前添加文本 a 行插入文本:2aYY 第2行之后添加文本 /^XX/aYY 以XX开头行之后添加文本 c 替换当前行:2cYY...r:读取文件 3r b.txt 第3行下方插入文本b.txt 4,7r b.txt 第4-7行每一行插入文件b.txt w:保存到文件 3w c.txt  将第3行另存为文件c.txt 4,7w.../passwd提出密码串 day06 1.awk基本用法 命令格式解析: 格式1:前置命令 | awk 选项 ‘条件{编辑指令}’ 格式2:awk 选项 ‘条件{编辑指令} 文件awk -F “:”

1.2K10

Linux 实用运维脚本分享

pdf" \) -print # -exec command {} \;是连用,所有符合都会放置{}中,去执行command #将文件分割成多个大小为10kb文件 split -b k data.file...关闭进程号12进程 kill 12 ##等同于在前台运行PID为123进程时按下Ctrl+C键 kill -2 123 ##如果任无法终止该程序可用“-KILL” 参数,其发送信号为SIGKILL...12:00执行一项操作 #at>useradd aaa //at命令里设定添加用户aaa #ctrl+d //退出at命令 #tail -f /etc/passwd //查看/etc/passwd文件十行是否增加了一个用户...aaa ##计划任务设定没有执行之前我们可以用atq命令来查看系统没有执行工作任务。...(3) 只有root用户才能提高进程优先权 renice -5 -p 5200 #PID为5200进程nice设为-5 ##pmap命令用于显示一个或多个进程内存状态。

6.7K20

三大文本处理工具grep、sed及awk

1、  搜索包含特定模式文本行: 2、  从stdin中读取: 3、  单个grep命令可以对多个文件进行搜索: 4、  --color选项输出行中着重标记出匹配到单词: 5、  grep...,-c(单行出现多个匹配,只匹配一次): 9、  打印出包含匹配字符串行号,-n: 10、  搜索多个文件并找出匹配文本位于哪一个文件,-l(-L与之作用相反): 11、  递归搜素文件,-r...stdin中读取输入,不影响原本内容 2、默认情况下sed命令打印替换文本,如果想连原文本一起修改加-i命令,-i: 3、  之前sed都是替换第一个匹配到内容,想要全部替换就要在末尾加g:...它对列行进行操作。awk有很多内建功能,比如数组、函数等,C有很多相同之处。awk最大优势是灵活性。...这就像一个用来读取while循环,环中提供了相应语句。

63130

《拉钩课程 - 重学操作系统 - Linux 指令入门》

2、Linux 管道(Pipeline)作用是命令命令之间,传递数据。比如说一个命令结果,就可以作为另一个命令输入。这里说命令就是进程。更准确地说,管道进程间传递数据。...标准输出流(用 1 表示)中写入结果会被打印到屏幕上。 如果进程执行过程中发生异常,那么异常信息会被记录到标准错误流(用 2 表示)中。...* # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格紧跟grep行。 --color=auto # 标记匹配颜色。 8、wc -l 用来统计行数。...到这里你可能会有一个疑问:如果一个文件设置为不可读,但是可以执行,那么结果会怎样?答案当然是不可以执行,无法读取文件内容自然不可以执行。...19、ifconfig 命令用于配置显示 Linux 内核中网络接口网络参数。

82520

Linux常用操作命令大全「建议收藏」

echo 命令中如果使用了”-n”选项,则表示输出内容结束,不会换行,直接显示新行提示符。...命令:tar/unzip/zip 1.命令:tar -zcvf 打包压缩文件名 要打包文件可以多个 linux中打包文件格式:.tar linux中压缩文件格式:.gz...而一般情况下打包压缩是一起进行,打包并压缩文件后缀名一般.tar.gz。...六、系统操作命令 1关机重启命令 命令:shutdown(关闭计算机) shutdown是最常用也是最安全关机重启命令,它会在关机之前调用fsck检查磁盘,其中-h-r是最常用参数: -h:停止系统服务并关机...命令 chmod 将修改 who 指定用户类型对文件访问权限,用户类型由一个或者多个字母 who 位置来说明,如 who 符号模式表所示: 示例1:将文件 test.txt 设为所有人皆可读取

3.1K30

使用Logrotate解决Tomcat日志文件catalina.out过大问题

对于第六个归档,时间最久归档将被删除。 compress 任务完成,已轮归档将使用gzip进行压缩。...这在你或任何软件仍然需要读取最新归档时很有用。 missingok 日志轮期间,任何错误将被忽略,例如“文件无法找到”之类错误。 notifempty 如果日志文件为空,轮不会进行。...dateext 切换日志文件会附加上一个短横线YYYYMMDD格式日期,没有这个配置项会附加一个小数点加一个数字序号 sharedscripts 在所有其它指令完成,postrotateendscript...postrotate/endscript 在所有其它指令完成,postrotateendscript里面指定命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。...没有执行kill -USR1 `cat ${pid_path}`之前,即便已经对文件执行了mv命令而改变了文件名称,tomcat还是会向新命名文件" xxx.out_ 20180619"照常写入日志数据

2.3K50

为什么你命令行程序没有输出

交互式控制台会话中执行tail -f命令是实时,但是当命令行程序通过管道连接其它程序时候,命令行程序可能就无法识别最终输出是否需要(接近)实时了。...幸运是,UNIX下有一些技术可以用于控制I/O缓冲行为。 理解缓冲原理,最重要是要明确知道,是写入方(writer)使用缓冲区,而不是读取方(reader)。...在这种模式 下,shell不与你进行交互,而是读取存放在文件命令,并且执行它们。当它读到文件结尾EOF,shell也就终止了。...参考bash 深入理解:交互式shell非交互式shell、登录shell非登录shell区别 解决方案 排除不需要命令 回到上面的问题,我们有一个命令行管道程序tail -f logfile...下面的命令中去掉了grep命令,使用AWK去实现了筛选操作 tail -f logfile | awk '/foo bar/ ...' 但是这样做依然是不够,比如我们无法实现对结果进行排序。

1.8K30

awk 手册

这包括程序中途调用 Shell 命令来处理程序中部分数据; 或在调用 Shell 命令将其产生结果交回 awk 程序(不需将结果暂存于某个文件)....Shell语法中, 可用 $1 代表第一个参数, $2 代表第二个参数. 当不确定命令行上参数个数时, 可使用 $* 表之. awk命令行上可同时指定多个数据文件....如何读取命令行上参数 大部分应用程序都允许使用者命令之后增加一些选择性参数.执行awk时这些参数大部分用于指定数据文件文件名, 有时希望程序中能从命令行上得到一些其它用途数据....不断地从文件 datafile 中读取资料, 当$1等于0时,就停止该执行循环. l continue 指令 循环中 statement 进行到一半时, 执行 continue 指令来略过循环中尚未执行...因为 sort 完资料也将写到data.rpt,而该文件正为awk所打开使用(write)中, 故awk程式中应先关闭data.rpt.

2.1K30

redis知识点

dispatch(分发)将读事件分发给对应hanlder,handler读取命令,执行完,生成一个 包含数据写事件扔给Reacotr,让其再次分发给写事件handler; 然后此hanler将数据写入...socket中命令,然后执行; 写事件: redis服务端将命令执行结果 写入socket文件返回给客户端; 当与同一个客户端socket 读事件 写事件同时发生时,先执行读事件; 时间事件 指定时间点运行事件...对不合理数据库大小进行调整; 2种事件事件循环中处理顺序 2种事件必须有先后顺序,无法抢占CPU资源,中断某个事件 当2种事件类型都有需要执行事件时,先执行 文件事件(客户端命令) 等执行完...,再执行时间事件; 事件循环中 文件时间等待时间(epoll函数等待有就绪socket时间) 由 距离到达时间最短时间事件决定; 如 最近时间事件2s执行,则 文件时间等待时间最多为2s;...; 此机制会在fork,子进程访问内存时将内存空间指向父进程,也就是 子进程共享父进程内存数据; 只有 父或子进程对 内存数据进行写入时,才会触发将 父进程内存空间中对应写内存页数据复制一份给子进程

38010

linux基础命令大全及使用方法

RAID 5具有RAID0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据速度比对单个磁盘进行写入操作稍慢。...day18 三剑客awk 1.awk使用方法及其参数 1.什么是awk? awk 是一种编程语言,用于`linux/unix`下对文本和数据进行处理。...awk 数据可以来自标准输入、一个或多个文件,或其它命令输出。 awk 通常是配合脚本进行使用, 是一个强大文本处理工具。 2.awk怎么处理数据?...chattr +a ***.txt 只能写入 追加 不可删除 不可修改 chattr -a ***.txt 取消隐藏属性 chattr -i ***.txt 无法修改 无法删除 无敌存在 给重要文件增加...fdisk 适用于小于2TB磁盘 fdisk只支持mbr分区表 parted 一般用于大于2TB磁盘 gpt支持更大磁盘且支持更多分区 不写入内存直接生效 3.使用parted命令实战

4.5K10

运维面试题(每日一题)

/etc/rc.local具有开机执行权限,该方法缺陷是/etc/init.d/network服务重启添加路由会消失 方法2:增加文件,并写入如下需要添加路由信息:vim /etc/sysconfig...,当前行所拥有的列数 NR,表示awk开始执行程序后读取数据行数 FNR,awk当前读取记录数,其变量值小于等于NR(比如当读取第二个文件时,FNR是从0开始重新计数,而NR不会)。...NR==FNR:用于读取两个或两个以上文件时,判断是不是在读取第一个文件。..."*.log" -print0 | xargs -0 ls -l find命令参数 -print0(注意这是数字0),表示find找到文件文件结尾加上一个标记,不用默认空格分隔文件。...使用这个方法还可以进一步判断登录用户权限是否足够,以实现带“权限”下载。 这种方法另外一个缺点是访客无法匿名下载,所以这个方法一般只用于论坛社区网站。

5K22

Linux指令入门-文本处理

底线命令模式 命令模式下按:键就进入了底线命令模式,底线命令模式中可以输入单个或多个字符命令。...vim文本文件写入一首唐诗。...参数说明: 参数 说明 -F fs 指定以fs作为输入行分隔符,awk 命令默认分隔符为空格或制表符 -f file 读取awk脚本 -v val=val 执行处理过程之前,设置一个变量var,并给其设置初始值为...默认情况下,awk会从输入中读取一行文本,然后针对该行数据执行程序脚本,但有时可能需要在处理数据前运行一些脚本命令,这就需要使用BEGIN关键字,BEGIN会在awsk读取数据前强制执行该关键字后指定脚本命令...BEGIN关键字相对应,END关键字允许我们指定一些脚本命令awk会在读完数据执行它们。 命令使用示例: 查看本机IP地址。

3.5K20
领券