10.1.3 sed命令与管道
sed [option] 'sed command' inputfile
管道格式: | sed [option] 'sed command'
var1="Yahoo develops"
replace=Google
var2=$(echo $var1 | sed "s/Yahoo/$replace/g")
echo $var2
10.1.4 awk命令与管道
# awk -F ":" '{print $1 | "sort"}' /etc/passwd
# df -k | awk '$4>1000000'
10.2 I/O重定向
当linux系统启动一个进程时,将自动为该进程打开三个文件:stdin、stdout、stderr,分别由文件标识符0、1、2标识。
tee 命令 可以将shell命令的输出从stdout复制一份到某个文件中去
比如
# who | tee output
# who | tee -a output --> 追加到末尾
tee命令主要用于shell脚本的调试,尤其是管道的调试
基本I/O重定向符号及其意义:
符号 | 意义 |
cmd1 | cmd2 | 管道符,cmd1的输出当做cmd2的输入 |
> filename | 标准输出写到filename中,覆盖 |
< filename | 将文件内容读入到标准输入中去 |
>> filename | 标准输出写到filename中,追加 |
>| filename | 即使noclobber已开启,也写到文件中去,覆盖 |
n>| filename | 即使noclobber已开启,也将FD为n的输出写到filename中去,覆盖 |
n> filename | 将FD为n的输出写到文件filename中去 |
n< filename | 将filename内容读入到FD为n中过去 |
n>> filename | 将FD为n的输出写到filename中去,添加 |
<<delimiter | 此处文档Here-document |
另外,介绍下bash的内置set命令选项:
set命令可以用来定制shell环境,使用选项“o”来打开或者关闭选项。例如打开选项:set -o 选项,关闭选项目:set +o 选项
# set -o #查看当前设置情况
noclobber选项设置是否能覆盖文件,如果设置了on就表示不允许覆盖文件,但是 >| 和 >>|是忽略这个选项的。可以自己试验下,不解释。
10.2.3 exec命令的用法:
exec命令可以通过文件标识符打开或关闭文件,也可以将标准输入从键盘输入重定向到文件,以及将标准输出重定向到文件。
先看将标准输入重定向到文件的例子:
#!/bin/bash exec 8<&0 #FD 8是FD 0即标准输入的副本,用于恢复FD 0 exec < hfile read a read b echo "-----------------" echo $a echo $b echo "close FD 8" exec 0<&8 8<&- #将FD 8恢复给FD 0后,关闭FD 8,以便其它进程可以使用FD 8这个文件标识符 echo -n "Pls. enter data: " read c echo $c
< 等价于 0<符号
再看将标准输出重定向到文件的例子:
#!/bin/bash exec 8>&1 exec > logger echo "output ...." date echo "----------" df exec 1>&8 8>&- # 将FD 8复制到FD 1 并关闭FD 8好让其它进程可以使用这个文件标识符 echo "after reset...." date df
> 符号和 1>等价
高级I/O重定向符号及其意义:
符号 | 意义 |
n>&m | 将FD为m的输出复制到FD为n的文件 |
n<&m | 将FD为m的输入复制到FD为n的文件 |
n>&- | 关闭FD为n的输出 |
n<&- | 关闭FD为n的输入 |
&>file | 将stdout和stderr重定向到file |
10.2.4 代码块重定向或者函数重定向
#!/bin/bash ls /etc > logger while [ "$filename" != "rc.d" ] do read filename let "count += 1" done < logger echo "$count times read" echo -n "---------Pls input file" read test echo $test
10.3.2 eval命令
eval命令将其参数作为命令行,让shell重新执行该命令行,eval的参数再次经过shell命令行处理的12个步骤
如果变量中包含任何需要shell直接在命令中看到的字符,就需要使用eval命令。命令结束符(; | &)、IO重定向符(< >)和引号这些对shell具有特殊意义的符号,就必须直接出现在命令行中,否则就要使用eval
#!/bin/bash echo "the number is $#" echo -n "the arg is : $(eval echo \$$#)" echo "----------END---------------"
本人博客已搬家,新地址为:http://yidao620c.github.io/
相关推荐
本项目旨在开发一个用于 Linux 的 Shell 程序,利用 C++ 标准库和 Linux 系统调用来实现。该 Shell 程序提供了基本的命令执行功能,支持 I/O 重定向和管道操作,并实现了一些内置命令
在深入了解Linux下的I/O重定向之前,首先需要掌握一些基础的概念。 - **I/O重定向**:通常与文件描述符(File Descriptor, FD)有关,shell中通常包含10个文件描述符,编号为0至9。 - **常用文件描述符**: - 0 ...
在Linux系统中,I/O重定向和管道是两种重要的进程间通信(IPC)方式,它们允许我们改变程序的标准输入、输出和错误流,或者在不同的进程中传递数据。本实验主要涵盖了这两个主题,通过编写和运行C语言程序来实践。 ...
3. **命令行I/O**:理解标准输入(stdin)、标准输出(stdout)和标准错误(stderr)的概念,以及重定向和管道(|)的用法。 4. **函数**:创建和使用自定义函数来组织和重用代码。 5. **文件和目录操作**:学习如何...
总结,I/O 重定向是 Linux shell 中的重要特性,它提供了灵活的数据流控制,允许用户和程序以非交互方式处理输入和输出。通过管道、重定向操作符以及 tee 命令,我们可以构建复杂的命令链,实现数据处理和自动化任务...
- **I/O重定向**:如标准输入(stdin)、标准输出(stdout)和标准错误(stderr)的概念,以及如何通过文件描述符进行管理。 - **bash扩展**:如数组、关联数组、预定义变量、内建命令等bash特有的特性。 在提供的...
4. I/O 重定向:myshell 支持 I/O 重定向,stdin 和 stdout。 5. 后台程序执行:myshell 支持后台程序执行。 myshell 的源代码 myshell 的源代码主要包括以下部分: 1. 头文件引用:myshell.c 文件中引用了 stdio...
基于linux的操作系统外壳。编写一个C 语言程序作为Linux 内核的shell 命令行解释程序,所执行的结果需和...修改程序,增加I/O 重定向功能。即用户可以使用”<”、”>”和”|”符号改变程序/文件的输入和输出。
虽然两者之间直接的关系不明显,但你可以考虑使用C#编写一个命令行应用程序,实现类似Shell的功能,这将涉及到进程管理和I/O操作等C#编程知识。 总结来说,你创建的这个Linux Shell项目涵盖了命令行工具的核心要素...
Shell提供了丰富的功能,包括命令执行、文件名扩展(通配符)、I/O重定向、管道、环境控制、后台处理、结构化编程以及脚本编写等。 6.1 Shell概述: - Shell的特点包括命令执行能力,它允许用户通过键盘输入命令...
Shell语言,源自C语言,是Unix/Linux操作系统中的命令解释器,它为用户提供了与操作系统进行交互的接口。作为脚本编程语言,Shell不仅用于执行单个命令,还能编写复杂的脚本来自动化日常任务,提高工作效率。在本文...
本实验旨在掌握 Linux/Unix 系统的用户登录与退出、IO 重定向和简单文件操作,熟悉系统的图形界面和字符界面,并了解命令操作方法和I/O 的重定向机制。 一、系统的开启和关闭 1. 系统的开启:通过 Windows 系统...
1. 标准输入(stdin)、标准输出(stdout)和标准错误(stderr)是Shell的基本I/O流。 2. 使用重定向符号(<, >, >>)可以改变程序的输入源或输出目标。 3. 管道(|)允许将一个命令的输出作为另一个命令的输入。 ...
5. I/O重定向和管道:在脚本中可以使用上述I/O重定向和管道功能。 四、Shell特殊字符和引用 1. 特殊字符:比如`$`用于引用变量,`#`用于注释,`&`表示后台运行,`*`和`?`作为通配符。 2. 引用:单引号`' '`和双引号...
1. **I/O重定向**:`>`将输出重定向到文件,`>>`追加到文件,`将文件内容作为输入。 2. **管道**:`|`将一个命令的输出作为另一个命令的输入,实现命令间的串联。 **六、Shell脚本实战应用** 1. **系统监控**:编写...
5. **I/O重定向和管道**: Shell还支持输入/输出重定向(如`>`和`)和管道(`|`),使用户能够灵活地组合命令和数据流。 **基本流程** 1. **读取用户输入**: Shell会持续监听终端输入,当用户键入一行命令并按下...
Shell命令解释系统设计: 问题A: 实现一个能处理前后台运行命令的shell 问题B: 实现一个带有管道功能的shell 问题C: 实现一个能处理I/O重定向的shell 问题D: 实现一个能在一行上处理多条命令的shell
在本文中,我们将深入探讨如何设计一个具备处理前后台运行命令、管道、I/O重定向以及多命令执行功能的Shell。 首先,我们要理解Shell命令解释器的核心职责。它的主要工作是接收用户的命令输入,解析这些命令,并...
4. **文件和目录操作**:熟悉I/O重定向(标准输入、输出、错误)、管道、文件描述符,以及与文件和目录相关的命令,如cd、ls、mkdir、rm、cp、mv等。 5. **正则表达式**:学习使用正则表达式进行模式匹配,这对于...