linux替换bash,bash脚本_输入输出和管道、替换
以cat为例,功能是从文件读数据,送到stdout。
# cat tmp
back-loop.sh
cgiselect
要是没有文件作为命令的参数,那么就要从stdin输入,实际上就是将界面输入的字符串都打印出来。
# cat
hello
hello
world
world
用户每输入一行都会打印出来,Ctrl+d表示终止输入。
再感受一个例子。
# sort
a
c
b
输入结束:Ctrl+d
a
b
c
2、输入重定向
command-line [n]
将然有,命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入。执行这个命令,将标准输入0,与文件或设备绑定。将由它进行输入。
详细出处参考:http://www.jb51.net/LINUXjishu/32566.html
[chengmo@centos5 shell]# cat > catfile
testing
cat file test
#这里按下 [ctrl]+d 离开
#从标准输入【键盘】获得数据,然后输出给catfile文件
[chengmo@centos5 shell]$ cat>catfile
#cat 从test.sh 获得输入数据,然后输出给文件catfile
[chengmo@centos5 shell]$ cat>catfile
<
test a file
test!
eof
#<<
这个连续两个小符号,他代表的是『结束的输入字符』的意思。这样当空行输入eof字符,输入自动结束,不用ctrl+D
再看一例:
$ wc /etc/passwd
20 23 726 /etc/passwd
$ wc < /etc/passwd
20 23 726
3、输出重定向
command-line1 [1-n] > file或文件操作符或设备
上面命令意思是:将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的)重定向其它输出设备(文件,打开文件操作符,或打印机等等)1,2分别是标准输出,错误输出。
[chengmo@centos5 shell]$ ls test.sh test1.sh #不重定向,结果直接输出到屏幕
ls: test1.sh: 没有这个文件和目录
test.sh
[chengmo@centos5 shell]$ ls test.sh test1.sh
1>suc.txt #将stdout写入suc.txt,1可以省略,直接>suc.txt,默认是1.
ls: test1.sh: 没有这个文件和目录
[chengmo@centos5 shell]$ cat suc.txt
test.sh
[chengmo@centos5 shell]$ ls test.sh test1.sh
1>suc.txt 2>err.txt
#将stdout写入suc.txt,stderr写入err.txt
[chengmo@centos5 shell]$ cat suc.txt err.txt
test.sh
ls: test1.sh: 没有这个文件和目录
[chengmo@centos5 shell]$ ls test.sh test1.sh
1>>suc.txt
2>>err.txt #>>是追加,不是从开头写入
[chengmo@centos5 shell]$ ls test.sh test1.sh
2>&- #关闭stderr
test.sh
[chengmo@centos5 shell]$ ls test.sh test1.sh
2>/dev/null #写入空设备,相当于关闭
test.sh
#&[n] 代表是已经存在的文件描述符,&1 代表输出
&2代表错误输出 &-代表关闭与它绑定的描述符
#/dev/null 这个设备,是linux 中黑洞设备,什么信息只要输出给这个设备,都会给吃掉。你也可以cat /dev/null
>tmp表示清空tmp文件。
[chengmo@centos5 shell]$ ls test.sh test1.sh
>/dev/null 2>&1
#将错误输出2
绑定给正确输出 1,然后将 正确输出 发送给 /dev/null设备 这种常用
[chengmo@centos5 shell]$ ls test.sh test1.sh
&>/dev/null #&
代表标准输出,错误输出将所有标准输出与错误输出 输入到/dev/null文件
注意:
1、shell遇到”>”操作符,会判断右边文件是否存在,如果存在就先删除,并且创建新文件。不存在直接创建。无论左边命令执行是否成功。右边文件都会变为空。
2、“>>”操作符,判断右边文件,如果不存在,先创建。以添加方式打开文件,会分配一个文件描述符[不特别指定,默认为1,2]然后,与左边的标准输出(1)或错误输出(2)绑定。
3、当命令:执行完,绑定文件的描述符也自动失效。0,1,2又会空闲。
4、一条命令启动,命令的输入,正确输出,错误输出,默认分别绑定0,1,2文件描述符。
5、一条命令在执行前,先会检查输出是否正确,如果输出设备错误,将不会进行命令执行
4、管道
管道用于将一个程序的输出作为另一个程序的输入。管道特别适用将多个命令连接起来。
比如:
# ls . | wc -w ------------------统计本地文件夹的文件个数
9
# cat tmp | grep sh | wc -l -------------------打开文件tmp,查找单词sh,统计文件中有"sh"的行的数量
3
5、替换
命令替换是将一个命令行的输出作为另一个命令的参数。
command1 `command2`
其中,command2的输出将作为command1的参数。需要注意的是这里的`符号,被它括起来的内容将作为命令执行,执行后的结果作为command1的参数。
$ cd `pwd`
该命令将pwd命令列出的目录作为cd命令的参数,结果仍然是停留在当前目录下,等同于pwd |
cd。但是如果一个命令不止一个参数,那么用替换有时就比较方便了。
6、减号 -
当一些指令需要使用文件名称操作时(比如tar),可以用减号-来表示stdin或者stdout。注意不要与cd -混淆了,cd
-表示回到上一个目录。
比如: tar cvf - /source/directory | (cd
/dest/directory && tar xvf - )
-------------------------可以实现快速的拷贝文件目录
7、xargs
xargs是个很好用的工具,可以将stdin分割为参数,赋给要调用的指令。注意,xargs是以空格或者断行字符来分割stdin的,所以如果你的输入中有空格,可能会有问题,需要做一些处理。
xargs有两个非常大的用处:
(1)对于那些不支持管道的命令(比如ls,echo),但又需要配合管道操作时,只能用xargs来调用;
(2)xargs可以对入参进行处理,很方便的传给命令。
举例说明:
# find /sbin -perm /7000 |ls -l #只显示本地目录,因为ls不支持管道
# find /sbin -perm /7000 |xargs ls -l #可以实现目的,查看/sbin中特殊权限文档的详细信息
# cut -d':' -f1 /etc/passwd |head -n 3 #取出文件中第一栏,并且只取前三行
root
bin
daemon
# cut -d':' -f1 /etc/passwd |head -n 3 | finger #只显示当前用户的信息
# cut -d':' -f1 /etc/passwd |head -n 3 | xargs finger
#显示取出的用户的信息
# cut -d':' -f1 /etc/passwd |head -n 3 | xargs -p finger
#-p参数会询问是否继续操作
finger root bin daemon ?...y
# cut -d':' -f1 /etc/passwd |head -n 3 | xargs -p -n 1 finger
#-n参数限制参数数量,将参数分为多个部分,每次最多输入n个
# cut -d':' -f1 /etc/passwd |head -n 3 | xargs -e'bin' finger
#-e参数,eof,当遇到指定字符串时终止入参输入
# find . -type f -print0 | sed 's/\.rpm//g ; s/\.\///g' |
xargs -0 rpm -e
#man find和xargs可以看到类似这个命令的例子,find
-print0打印文件名并在文件名后加一个空字符(非断行),而xargs -0则以空字符来分割参数。这两个命令是很般配的。
linux替换bash,bash脚本_输入输出和管道、替换相关推荐
- 寒冰linux视频教程笔记5 过滤器、输入输出及管道
过滤器: linux应用工具: 交互工具 过滤器 编辑器 输入.输出.重定向: 输入:标准输入stdin(0):默认键盘 输出:标准输出stdout(1):默认屏幕 标准错误输出stder ...
- python替换excel指定字符串_【python】替换指定内容,excel数据预处理
当我们所需要替换的数据量比较大的时候,使用excel中自带的替换功能会发现非常耗时,这时可以使用python,快准狠! #coding=utf-8 import xlrd import codecs ...
- vhs预设_使用Linux将VHS数字化,创建Bash完成脚本,Ansible,家庭自动化等
vhs预设 上周,我们最受欢迎的文章涵盖了家庭和工作场所技术的一系列有趣且实用的用途. 以下是3月19日至25日的读者最爱列表: 如何创建Bash完成脚本 ,作者Lazarus Lazaridis 作 ...
- linux脚本算术函数,Linux基础之bash脚本编程初级-变量与算术运算
什么是变量? 变量最初来源于数学,指的是非固定的值可变化的数通常用拉丁字母表示.在计算机中变量它依旧指的是可变化的数,只不过表现形式有些变化.它指的是变量名+所指向的内存空间. 以下实验环境均在Cen ...
- sh脚本和bash脚本_我是如何开始使用bash脚本的
sh脚本和bash脚本 前几天我写了一个剧本. 对于某些人来说,这句话听起来没什么大不了的. 对于其他人,我知道您在外面,那句话很重要. 你看,我不是程序员. 我是作家 我需要解决的问题 我的问题很简 ...
- Linux基础之bash脚本编程初级-变量与算术运算
什么是变量? 变量最初来源于数学,指的是非固定的值可变化的数通常用拉丁字母表示.在计算机中变量它依旧指的是可变化的数,只不过表现形式有些变化.它指的是变量名+所指向的内存空间. 以下实验环境均在Cen ...
- Linux——Bash Shell脚本 for循环
1.创建和执行Bash Shell脚本 (1)借助Bash Shell环境和脚本编写功能,将Linux命令与shell脚本组合在一起,从而轻松的解决重复而困难的实际问题,Bash shell脚本最简单 ...
- linux如何调试脚本文件目录,如何在Linux下调试Bash Shell脚本的方法
新手写了一个 hello world 小脚本,如何能调试运行在 Linux 或者类 UNIX 的系统上的 bash shell 脚本呢? 这是 Linux / Unix 系统管理员或新用户最常问的问题 ...
- Linux VPS服务器根据CPU负载及内存占用自动重启的bash shell脚本
Linux VPS服务器根据CPU负载及内存占用自动重启的bash shell脚本 288月2011 0 主要用于监控 linux 服务器负载及内存占用,如 MySQl.php-fpm,当负载或内存占 ...
最新文章
- 汗!雅虎中国个人空间
- cmfclistctrl怎么设置某列文字颜色_ppt实用技巧:如何轻松设置合意的超链接
- 交换机工作原理及实验浅析
- FFT/NTT卷积神级副本
- 全国教学交流研讨会“教学为本”主题总结
- 个人博客网站 Welcome All
- Halcon学习笔记:xyz_attrib_to_object_model_3d示例
- 百度网盘不限速下载神器献给你
- idea2019打卡没多久就闪退_IDEA 2020.1打开时闪退的问题及解决方法(完美解决方法)...
- 更新一波,微信第三方开发平台授权流程
- 字符串转换成整数 php,php如何将字符串转为整数
- wxpython2.8_wxPython 2.8 Application Development Cookbook英文pdf版
- 联想昭阳K22-80机器关闭或开启触摸板方法
- gmx_MMPBSA--计算蛋白-配体自由能及能量分解
- trimmed ICP运行出现“aux”、“transform“的error
- vc6.0中的dsp,dsw,ncb,opt,clw,plg,aps等文件的简单说明
- 推荐几部好看的漫画,漫迷们不容错过的动漫新番哦
- EAP-TLS/EAP-TTLS/EAP-PEAP
- express : 无法加载文件 C:\Users\HP\AppData\Roaming\npm\express.ps1,因为在此系统上禁止运行脚本.
- 线性代数拾遗(2)—— 何时用初等行变换,何时用初等列变换?