`

我使用过的Linux命令之yes - 重复输出字符串

阅读更多

我使用过的Linux命令之yes - 重复输出字符串

本文链接:http://codingstandards.iteye.com/blog/826940   (转载请注明出处)

用途说明

yes命令用于重复输出字符串(output a string repeatedly until killed)。这个命令可以帮你自动回答命令行提示,例如,进入一个含有多个文件的目录,执行 "yes | rm -i *",所有的 rm: remove regular empty file `xxx'? 提示都会被自动回答 y。这在编写脚本程序的时候会很用处。yes命令还有另外一个用途,可以用来生成大的文本文件。

 

常用参数

yes命令不指定参数时,不断的输出y;指定字符串参数时,就不断的输出该字符串。要终止输出,必须杀掉该进程,比如按Ctrl+C,或killall yes。(Repeatedly output a line with all specified STRING(s), or ‘y’.)比如:要不断输出n时,输入yes n。

 

使用示例

示例一 删除文件时自动回答y

[root@web ~]# ls -l *.txt
-rw-r--r-- 1 root root     7 11-28 11:54 1.txt
-rw-r--r-- 1 root root 10217 07-06 13:10 data.txt
[root@web ~]# yes | rm -i *.txt
rm:是否删除 一般文件  "1.txt" | rm -i.txt”? rm:是否删除 一般文件 “data.txt”? [root@web ~]# yes | rm -i *.txt      
rm: lstat “*.txt” 失败: 没有那个文件或目录
[root@web ~]# ls -l *.txt     
ls: *.txt: 没有那个文件或目录
[root@web ~]#

 

示例二 生成大的文本文件

下面的脚本把yes命令输出的内容保存到文件中,然后1秒钟之后停止输出。在这台测试机器上,生成了一个93M的文件。

 

#!/bin/sh

yes hello >hello.txt &
PID=$!

sleep 1
kill $PID

ls -l hello.txt
 

[root@web ~]# cat yes.sh
#!/bin/sh

yes hello >hello.txt &
PID=$!

sleep 1
kill $PID

ls -l hello.txt

[root@web ~]# ./yes.sh
-rw-r--r-- 1 root root 93003776 11-28 14:02 hello.txt
./yes.sh: line 9:  5771 已终止                  yes hello > hello.txt
[root@web ~]# ./yes.sh
-rw-r--r-- 1 root root 95346688 11-28 14:09 hello.txt
./yes.sh: line 9:  7072 已终止                  yes hello > hello.txt
[root@web ~]# ./yes.sh
-rw-r--r-- 1 root root 0 11-28 14:09 hello.txt
[root@web ~]# ./yes.sh
-rw-r--r-- 1 root root 0 11-28 14:09 hello.txt
[root@web ~]# ./yes.sh
-rw-r--r-- 1 root root 0 11-28 14:09 hello.txt
[root@web ~]# ./yes.sh
-rw-r--r-- 1 root root 94040064 11-28 14:10 hello.txt
[root@web ~]# ./yes.sh
-rw-r--r-- 1 root root 0 11-28 14:10 hello.txt
[root@web ~]# ./yes.sh
-rw-r--r-- 1 root root 0 11-28 14:10 hello.txt

[root@web ~]#

问题出现了:如果频繁的执行这个脚本,就会发现竟然生成0字节的文件,为何?

 

问题思考

1. 请分析解释上面的yes.sh脚本频繁执行时的奇怪现象。

 

相关资料

【1】lx138 yes :循环输出

【2】hscripts yes Linux 命令

【3】LinuxSir 关于yes命令。。。

 

返回 我使用过的Linux命令系列总目录

 

0
0
分享到:
评论

相关推荐

    有趣的linux命令

    yes命令用于输出一行或多行指定的字符串。例如,运行yes "我很NB"将会连续不断地输出“我很NB”。这个命令通常用于测试或产生连续输出。 9. cal命令 cal命令用于打印日历。例如,cal 9 1752会显示1752年9月的日历。...

    linux命令之目录监控 字符串拆分 监控命令运行结果 统计行数 去除文本头尾空格 获取网卡名浮点数运算等命令使用技巧

    ### Linux命令使用技巧详解 #### 一、监控目录——新创建的文件名追加到日志中 在Linux系统管理中,监控特定目录的变化是非常重要的功能之一,这可以帮助管理员及时发现安全问题或文件变动情况。这里介绍了一种...

    ubuntu个性化设置及有趣命令

    - 使用方法:输入yes后跟要重复输出的内容,例如yes "yes"。 - 结束程序使用Ctrl+C。 9. cal命令:显示日历,cal有特殊的日期显示功能,如显示1582年10月的特殊历法变更。 - 使用方法:cal后跟年份和月份,例如...

    常用的Linux指令

    - **yes**: 无限循环地重复输出字符串。 - **uname**: 显示系统信息。 Linux命令非常丰富,以上只是冰山一角。每条命令都有许多参数和选项,可以通过手册页(man)查看每个命令的详细使用方法。熟练掌握这些命令...

    是:是-以各种语言实现简单且危险的yes命令。 :+1:

    :repeat_button:描述yes命令以恒定流输出相同的字符串STRING。 如果未指定STRING,则重复的单词为y 。 :repeat_button: yes Unix命令包含“ force”(- f )选项之前的时间,对于许多命令,该选项与对所有提示回答...

    Linux必学的60个命令

    56. **yes**:无限重复输出指定内容,常用于测试和填充。 57. **clear**:清屏,使终端界面更加整洁。 58. **printf**:格式化打印,用于输出精确的文本。 59. **expr**:表达式计算工具,进行简单的数学运算。 ...

    常用的60个Linux常用命令.zip

    59. **yes**:无限输出指定字符串,常用于测试和填充数据。 60. **exit**:退出当前Shell会话,结束用户与系统的交互。 以上这些命令构成了Linux命令行操作的基础,通过熟练掌握这些命令,用户可以高效地管理文件、...

    一些实用但不为人知的Unix命令

    浮现在脑海的很多 Linux命令,其中一些不为人知,另一些则很常见,如下:  xargs or parallel: 并行运行一些程序,命令有很多的...  yes: 重复输出字符串 详见 http://codingstandards.iteye.com/blog/826940  c

    常用的60个Linux常用命令

    以下是一些常用的Linux命令,它们涵盖了日常使用中的大多数需求: 1. **ls**:列出目录内容。例如,`ls -l`会以详细模式显示目录下的所有文件和子目录。 2. **cd**:改变工作目录。如`cd /home/user`可切换到用户...

    redhat linux教材20课程学习文档

    6.4.5 使用倒引号字符串 6.4.6 使用语句 6.4.7 使用文件 6.4.8 特殊变量 6.4.9 对象 6.4.10 使用模块 6.4.11 perl 脚本举例 第三部分 系统管理 第七章 Linux管理介绍 7.1 系统管理员职责 7.1.1 一般的职责 7.1.2 ...

    linux考试题.docx

    - 在命令模式下,`:s/old/new/g`命令用于全局替换当前行中的`old`字符串为`new`。 - `g`标志表示全局替换,即替换一行中的所有匹配项。 - `%s/old/new`表示在整个文件中查找并替换,但没有使用`g`标志,因此只...

    linux 基本指令一览表

    - **Fgrep**: 在文件中搜索固定字符串模式。 **示例:** ``` fgrep "search_string" filename.txt ``` #### 32. Find - **Find**: 在文件系统中查找文件。 **示例:** ``` find /path/to/search -name "filename....

    新版Android开发教程.rar

    � 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...

    Linux command summary

    7. **`echo str`**:在当前目录下搜索包含特定字符串的文件。 - 示例:`echo "hello"` 8. **`alias command='str'`**:为命令设置别名。 - 示例:`alias ll='ls -al'` 9. **`more`/`less`**:分页查看文件内容。...

    linux学习文档

    14. **grep**:在文件中搜索特定字符串或模式。 15. **chmod**:更改文件或目录的权限,如读、写、执行权限。 16. **chown** 和 **chgrp**:更改文件或目录的所有者和组。 17. **vi/vim**:强大的文本编辑器,常...

    Linux expect 介绍和用法

    3. `send` 命令:当 `expect` 匹配成功后,`send` 用于发送预先定义的字符串到目标进程。例如,`send "$password\r"` 会发送存储在变量`$password`中的值作为密码,并添加回车符以模拟用户按下Enter键。 4. `exp_...

    使用Linux正则表达式灵活搜索文件中的文本

    在Linux系统中,正则表达式(Regular Expression)是一种强大的文本搜索工具,它能通过匹配字符串模式来查找、替换或分析文本。Linux中常见的用于处理正则表达式的工具是`grep`,它允许用户根据预定义的规则在文件中...

Global site tag (gtag.js) - Google Analytics