Linux重定向和管道(精)

合集下载

linux管道和重定向使用实验报告

linux管道和重定向使用实验报告

附件5:西南民族大学学生实验报告2018 ------2019 学年第1学期课程名称:Unix/Linux环境编程任课教师:学院:专业:年级:班级:学号:姓名:同组人:西南民族大学学生实验报告学院:实验室名称:实验时间:姓名:专业:班级:学号:实验项目名称:管道和重定向使用、账户验证文件内容实验成绩:教师签名:实验项目报告内容(1、实验背景(目的、意义及原理等);2、材料与方法;3、实验主要过程与结果;4、分析讨论;5、教师评阅,页数不够可加页)。

1、实验背景(目的、意义及原理等)实验内容:管道和重定向使用、账户验证文件内容。

实验目的:练习shell命令中的管道和输入输出重定向,以掌握linux集合小程序完成大功能的思想理念。

了解四个账户验证文件的文件名、位置、内容,以深刻理解linux的账户信息、口令时效、组成员。

实验重点:掌握linux编程中管道和输入输出重定向的使用。

2、材料与方法实验设备:安装有Windows操作系统的电脑、Linux系统iso文件、VMware虚拟机软件。

1)实验主要过程与结果①输入输出重定向举例截图②重定向举例③输出重定向与空设备④利用ctrl+z挂起的tail进程,查看带有重定向功能的进程fd指向⑤管道的引入⑥T型管道⑦命令替换⑧账户信息验证口令文件/etc/passwd组账号文件/etc/group分析讨论这次使用linux系统进行指令操作的实验,通过这次实验基本掌握了linux 系统的工作环境和操作流程,根据老师提供的操作指导一步一步对各项指令进行了验证,在得出结果显示的同时进行了数据分析。

Linux基本操作实验中的指令很多,需要自己通过实验理解记忆,在理解的同时深化各指令的应用,最终通过实验来实现对linux基本指令操作的目的。

在实验过程中,经常会因为命令的格式敲得不对,导致命令出错,比如漏掉空格,多一个空格,所以做实验的过程中一定要认真敲命令。

管道和输入输出重定向中体现的集合小程序完成大功能思想一般情况,我们的标准输入是键盘,标准输出是终端显示器;但是在很多情况,我们需要从文件中读取数据作为输入,然后将输出数据保存在文件中。

linux的标准输入重定向例子

linux的标准输入重定向例子

linux的标准输入重定向例子
标准输入重定向是将命令的输入从键盘转向其他来源,例如文件或其他命令的输出。

以下是Linux中的标准输入重定向的几个例子:
1. 从文件中读取输入:
```shell
$ command < file.txt
```
这个命令将会将`file.txt`的内容作为`command`命令的输入。

2. 通过管道将命令的输出作为输入:
```shell
$ command1 | command2
```
这个命令将会将`command1`的输出作为`command2`的输入。

3. 结合使用管道和重定向:
```shell
$ command1 | command2 < file.txt
```
这个命令将会将`command1`的输出作为`command2`的输入,而且`command2`的输入还会从
`file.txt`中读取。

4. 使用here文档:
```shell
$ command <<EOF
> input text
> input text
> more input text
> EOF
```
这个命令将会将`input text`作为输入传递给`command`命令。

`<<EOF`表示输入将从当前行延续到文件结尾的`EOF`行。

这些例子展示了如何使用标准输入重定向来改变命令的输入来源。

请注意,标准输入重定向使用`<`符号来指定重定向来源。

linux中管道命令的作用和用法

linux中管道命令的作用和用法

在Linux中,管道命令的作用是将一个命令的输出作为另一个命令的输入,实现两个或多个命令之间的数据传递和处理。

通过使用管道命令,我们可以实现数据传递、数据处理以及提高效率等功能。

管道命令的符号是“|”,它将一个命令的输出直接连接到另一个命令的输入。

第一个命令的输出作为第二个命令的输入,第二个命令的输出又可以作为第三个命令的输入,依此类推。

下面是一些例子来说明管道命令的用法:
1. 数据传递:使用管道命令可以将一个命令的输出传递给另一个命令进行处理。

例如,我们可以使用`ls -l | grep "filename"`命令来查找包含特定文件名的文件列表。

2. 数据处理:通过将多个命令组合起来,可以实现复杂的数据处理逻辑。

例如,我们可以使用`cat file1.txt | grep "pattern" | sort | uniq`命令来从一个文本文件中提取出包含特定模式的行,并对结果进行排序和去重。

3. 提高效率:使用管道命令可以避免中间文件的产生,减少磁盘IO的开销,提高命令行操作的效率。

例如,我们可以使用`grep "pattern" file1.txt | cat > newfile.txt`命令来将包含特定模式的行输出到一个新文件中,而不需要创建中间文件。

总之,管道命令是Linux中非常有用的功能,可以帮助我们实现更高效和灵活的命令行操作。

Linux命令高级技巧使用tee和重定向进行输出管道和文件保存

Linux命令高级技巧使用tee和重定向进行输出管道和文件保存

Linux命令高级技巧使用tee和重定向进行输出管道和文件保存Linux命令高级技巧:使用tee和重定向进行输出管道和文件保存在Linux系统中,命令行是我们日常工作的重要工具。

熟练掌握Linux命令的使用,能够提高我们的效率和操作的灵活性。

在此,我们将介绍两个高级技巧,即使用tee命令和重定向来进行输出的管道处理和文件保存。

一、使用tee命令进行输出管道处理在Linux中,我们经常需要将命令的输出结果通过管道传递给其他命令进行进一步处理,tee命令就可以派上用场。

tee命令能够将标准输入的内容同时输出到标准输出和指定的文件中。

其基本用法如下:``` shellcommand | tee file```其中,command表示前一个命令的输出内容,|表示管道符,tee表示将输出内容写入文件的命令,file表示指定的输出文件。

例如,我们可以通过以下命令将ls命令的输出结果保存到txt文件中并在终端显示:``` shellls | tee result.txt```通过这个命令,ls命令的输出结果将会同时显示在终端上并保存到result.txt文件中,方便我们查看和分析。

二、使用重定向进行输出文件保存除了使用tee命令进行管道处理外,我们还可以使用重定向来将命令的输出结果保存到文件中。

重定向有两种方式:一种是将输出结果覆盖写入文件,另一种是将输出结果追加写入文件。

1. 将输出结果覆盖写入文件可以使用以下方式将命令的输出结果覆盖写入文件:``` shellcommand > file```其中,command为要执行的命令,>为重定向符号,file为要保存输出结果的文件名。

例如,我们可以将date命令的输出结果保存到datetime.txt文件中:``` shelldate > datetime.txt```通过这个命令,date命令的输出结果将会覆盖写入datetime.txt文件中。

Linux之重定向

Linux之重定向

Linux之重定向1,Linux中的重定向到底是个什么呢?Linux中的重定向就是将原本要输出到屏幕中的数据信息,重新指向某个特定的⽂件中,或者定向到⿊洞(/dev/null)中。

1.2重定向有什么⽤呢?1,当程序执⾏输出的信息⽐较多时,需要保存下来在进⾏分页查看。

2,后台执⾏的程序⼀般都会有输出,不希望它输出⼲扰到终端。

3,执⾏定时的备份任务,希望备份的结果保留下来时。

4,当重复创建⽤户,会提⽰⼀些错误信息,可以直接将信息丢弃。

5,希望将错误⽇志与正确⽇志,分别输出保存到不同⽂件时。

1.3 标准输⼊与输出当进程操作⼀个⽂件时:1,⾸先进程是⽆法直接访问硬件的,需要借助内核来访问⽂件2,⽽内核kernel需要利⽤⽂件描述符(file descriptor)来访问⽂件。

总结:进程---通过--->⽂件描述符(⾮负整数)--访问---》⽂件名称;进程使⽤⽂件描述符来管理打开的⽂件对应关系。

第⼀步:运⾏ tail -f /etc/passwd第⼆部:通过⽂件描述符3--->/etc/passwd-->inode-->block第三步:正确输出--->默认情况下通过⽂件描述符1--->当前终端 1>(改变输出的位置,⽂件,⿊洞)第四步:错误输出--->默认情况下通过⽂件描述符2---》当前终端 2>(错误输出)通常程序访问⼀个⽂件⾄少会打开三个标准⽂件,分别是标准输⼊,标准输出,错误输出。

进程将从标准输⼊中得到数据,将正常输出打印⾄屏幕终端,将错误的输出信息也打印⾄屏幕终端。

名称⽂件描述符作⽤标准输⼊(STDIN)0默认是键盘,也可以是⽂件或其他命令的输出标准输出(STDOUT)1默认输出到屏幕。

错误输出(STDERR)2默认输出到屏幕⽂件名称(filename)3+2,输出重定向案例输出重定向,改变输出内容的位置。

输出重定向有如下⼏种⽅式,如表格所⽰:类型操作符⽤途标准覆盖输出重定向1>将程序输出的正确结果输出到指定到⽂件中,会覆盖⽂件原有的内容标准追加输出重定向1>>将程序输出的正确结果以追加的⽅式输出到指定⽂件错误覆盖输出重定向2>将程序的错误结果输出到执⾏的⽂件中,会覆盖⽂件原有的内容错误追加输出重定向2>>将程序输出的错误结果以追加的⽅式输出到执⾏的⽂件2.1,案例1,-标准输出重定向标准输出重定向⽰例1,如果⽂件不存在则创建2,如果⽂件存在则清空内容[root@: ~]#> text.txt[root@: ~]#ifconfig echo > edu.txt2.2案例-标准追加输出重定向标准追加输出重定向⽰例1,如果⽂件不存在则创建2,如果⽂件存在则在⽂件尾部添加内容[root@: ~]#echo "hello linux" >>if2.3案例3-错误输出重定向错误输出重定向1,正确输出及错误输出⾄相同⽂件2,正确输出及错误输出⾄不同的⽂件[root@: ~]#find /etc -name "*.conf" 1>ok 2>ok[root@: ~]#find /etc -name "*.conf" 1>ok 2>error2.4案例4-混合和输出重定向混合输出重定向1,将正确输出和错误输出混合⾄同⼀⽂件2,将两个⽂件内容组合为⼀个⽂件[root@: ~]#find /etc/ -name "*.conf" &>ab[root@: ~]#cat ab >c*正确和错误都输⼊到相同位置[root@: ~]#ls /root/ /error >ab 2>&12.5,案例5-将内容输出⾄⿊洞[root@: ~]#ls /root/ /error >ab 2>/dev/null[root@: ~]#ls /root/ /error >ab &>/dev/null3,输⼊重定向案例输⼊重定向:指的是"重新指定设备"来"代替键盘"作为新的输⼊设备;3.1输⼊重定向⽰例1,通过输⼊重定向读取⽂件内容;[root@: ~]#cat < /etc/hosts2,通过输⼊重定向读⼊多⾏内容;[root@: ~]# cat <<EOF[root@: ~]#cat <<EOF> 1> 2> 3> 4> 5> EOF #只要不出现EOF则可以⼀直输⼊3,通过输⼊重定向数据导⼊⾄数据库中;[root@: ~]#mysql -uroot -p < /opt/wordpress.sql3.2脚本输⼊重定向使⽤输⼊重定向打印安装服务的菜单导航栏;[root@: ~]# cat install.sh#!/usr/bin/bashcat <<-EOF-----------主菜单---------| 1)安装nginx || 2)安装php || 3)退出 |-----------------------EOFread -p "请选择你要安装的软件编号[1|2|3]:"3.3输⼊重定向场景1,恢复数据时2,脚本打印菜单3,cat写⼊⽂件时;vim输出重定向正确输出:1>:覆盖(先清空,后写⼊)1>>:直接写⼊⽂件的尾部(末尾)错误输出2>:覆盖(先清空,后写⼊)2>>:直接写⼊⽂件的尾部(末尾)混合输出&>/dev/null&>>/dev/null1>/dev/null 2>&14,进程管道技术4.1 什么是管道管道操作符合"|",主要⽤来链接左右两个命令,将左侧命令的【标准输出】,交给右侧命令的【标准输⼊】⽆法传递错误的标准输出给后者命令管道命令符可以让⼤家进⼀步掌握命令之间的搭配使⽤⽅法,进⼀步提⾼命令输出值的处理效率4.2管道流程⽰意图格式:cmd1 | cmd2 [...|cndn]4.3管道使⽤案例案例1:将/etc/passwd中的⽤户按UID⼤⼩排序[root@: ~]#sort -t ":" -k3 -n /etc/passwd[root@: ~]#sort -t ":" -k3 -n /etc/passwd -r[root@: ~]#sort -t ":" -k3 -n /etc/passwd |head案例2:统计当前/etc/passwd中⽤户使⽤的shell类型#取出第七列(shell)|排序(相同的归类)|去重[root@: ~]#awk -F:`{pint $7}` /etc/passwd |sort |uniq -c案例3:打印并输出当前所有主机⽹卡的IP地址[root@: ~]#ip addr |grep 'inet' |awk '{print $2}' |awk -F "/" '{print $1}'4.4.1,tee与xargs[root@: ~]#ip addr |grep 'inet' |tee ip.txt |awk -F "/" '{print $1}' |awk '{print $2}'[root@: ~]#cat ip.txt4.4.2,管道中使⽤xargsxargs参数传递,主要让⼀些不⽀持管道的命令可以使⽤管道技术[root@: ~]#which cat |xargs ls -l-rwxr-xr-x. 1 root root 54080 Apr 11 2018 /usr/bin/cat[root@: ~]# xargs rm -fv。

linux中管道的作用

linux中管道的作用

linux中管道的作用
管道是Linux中一个重要的概念,它可以将一个命令的输出作为另一个命令的输入。

这个过程可以被看作是一种数据流的传输,其中第一个命令的输出被传输到第二个命令的输入,然后第二个命令会将处理后的数据输出到屏幕或者文件中。

管道的作用在于可以将多个命令的功能组合起来,从而实现复杂的操作。

例如,我们可以使用管道将一个文本文件中的所有单词提取出来,并按照字母顺序排序:
cat file.txt | tr -cs A-Za-z '
' | tr A-Z a-z | sort | uniq
上述命令中,首先使用cat命令将文件内容输出到屏幕上,然后使用tr命令将所有非字母字符替换成换行符,接着使用tr命令将所有大写字母转换成小写字母,使用sort命令按照字母顺序排序,最后使用uniq命令去除重复单词。

除了用于组合命令的功能外,管道还有一个重要的作用就是可以节约系统资源。

在Linux中,每次执行一个命令都会启动一个新的进程,而进程的启动和关闭都需要消耗一定的时间和系统资源。

使用管道可以将多个命令组合到一个进程中执行,从而节约了系统资源。

总的来说,管道在Linux中具有非常重要的作用,它可以方便地组合多个命令,实现复杂的操作,并且可以节约系统资源。

学习和掌握管道的使用方法对于Linux系统的使用和管理非常重要。

- 1 -。

linux输入输出重定向及案例

linux输入输出重定向及案例

linux输⼊输出重定向及案例重定向什么是重定向?将原本要输出在屏幕中的内容,重新定向输出到指定的⽂件或设备中。

** 为什么要使⽤重定向?**1.备份时,我们需要知道备份的结果2.屏幕上输出信息,⽐较重要的时候,我们想要保存下来3.定时任务,我们需要知道结果4.执⾏命令时,明知道会报错,我们会使⽤重定向,将结果放⼊ /dev/null5.执⾏命令时,正确结果和错误结果会同时输出,将正确结果输出到常规⽇志,将错误结果输出到错误⽇志重定向的分类标准输⼊标准输出名称⽂件描述符作⽤标准输⼊(stdin)0通常键盘(其他输⼊命令的终端设备)标准输出(stdout)1默认输出到屏幕错误输出(stderr)2默认输出到屏幕⽂件名(filename)3+-[root@localhost ~]# ll /dev/std*lrwxrwxrwx 1 root root 15 3⽉ 25 10:36 /dev/stderr -> /proc/self/fd/2lrwxrwxrwx 1 root root 15 3⽉ 25 10:36 /dev/stdin -> /proc/self/fd/0lrwxrwxrwx 1 root root 15 3⽉ 25 10:36 /dev/stdout -> /proc/self/fd/1[root@localhost ~]# ll /proc/121169/fd/总⽤量 0lrwx------ 1 root root 64 4⽉ 7 11:28 0 -> /dev/pts/3lrwx------ 1 root root 64 4⽉ 7 11:28 1 -> /dev/pts/3lrwx------ 1 root root 64 4⽉ 7 11:27 2 -> /dev/pts/3lr-x------ 1 root root 64 4⽉ 7 11:28 3 -> /var/log/messages输出重定向/dev/null/dev/pts/0/dev/pts/1/tmp/zls.txt/root/1.txt类型符号⽤途备注标准覆盖输出重定向1>将命令执⾏的正确结果默认输出的位置,修改为指定的⽂件或者终端(覆盖原有内容)通常'>'即可,1可以不写,默认就是1标准追加输出重定向>>将命令执⾏的正确结果,输出到指定⽂件的末尾(不覆盖原有内容)-错误覆盖输出重定向2>将命令执⾏的错误结果默认输出的位置,修改为指定的⽂件或者终端(覆盖原有内容)-错误追加输出重定向2>>将命令执⾏的错误结果,输出到指定⽂件的末尾(不覆盖原有内容)-标准输⼊重定向0<将命令中接收输⼊内容由默认的键盘,改为命令或者⽂件通常'<'即可0可以写也可以不写,默认0标准输⼊追加重定向0<<将命令中接收输⼊内容由默认的键盘,改为命令或者⽂件-# 标准覆盖输出重定向[root@localhost ~]# echo wxx>/tmp/1.txt[root@localhost ~]# cat /tmp/1.txtwxx[root@localhost ~]# echo 321>/tmp/2.txt[root@localhost ~]# cat /tmp/2.txt[root@localhost ~]# echo wxx1>/tmp/3.txt[root@localhost ~]# cat /tmp/3.txtwxx1**标准追加输出重定向**标准追加输出重定向[root@localhost ~]# echo 456 >> /var/log/messages[root@localhost ~]# echo 123 >> /var/log/messages**错误输出重定向**错误输出重定向[cdx@localhost ~]$ find /etc/ -type d**将标准输出和错误输出都输出到相同的⽂件中**将标准输出和错误输出都输出到相同的⽂件中[cdx@localhost ~]$ find /etc/ -type d > /tmp/100.txt 2>&1[cdx@localhost ~]$ find /etc/ -type d &> /tmp/101.txt**将错误输出,重定向到⿊洞**将错误输出,重定向到⿊洞[root@localhost ~]# ls / /ooo 2>/dev/null**脚本中使⽤重定向**脚本中使⽤重定向!/bin/bash. /etc/init.d/functionsread -p "请输⼊要检测的IP:" IPping -c1 -W1 $IP &>/dev/nullif [ ? -eq 0 ];then action "IP" /bin/true >> /tmp/IP_OK.txtelseaction "$IP" /bin/false >> /tmp/IP_FAILD.txtfi输⼊重定向[root@localhost ~]# mail -s "$(date +%F-%T)_test" 11111@ < /etc/passwd[root@localhost opt]# echo -e "111\n222\n333" > file1.txt[root@localhost opt]# cat file1.txt111222333[root@localhost opt]# echo '1111222233334444' > file2.txt[root@localhost opt]# cat >> 1.txt <<EOF> aaa> bbb> ccc> ddd> EOF[root@localhost opt]# cat >> 2.txt111222333444Ctrl + d 结束cat <<EOF+--------------------------+| vmware manager |+--------------------------+| by wxx |+--------------------------+| 1. Install KVM || 2. Install or Reset C6.5 || 3. Install or Reset C7.4 || 5. Instqll or Reset W7 || 6. Remove all || q. quit |+--------------------------+EOF[root@localhost opt]# cat <<EOF> 1.install mysql> 2.install nginx> 3.intsall php> 4.install tomcat> 5.install redis> EOF1.install mysql2.install nginx3.intsall php4.install tomcat5.install redis# 两条命令同时重定向[root@localhost opt]# (ls ; date) > 1.txt(while :; do date; sleep 2; done) &>date.txt &#如果不希望某些命令的执⾏对当前 shell 环境产⽣影响,请在subshell中执⾏[root@localhost ~]# (cd /boot; ls)管道技术管道操作符号:|,叫做管道符作⽤:将管道符左边命令的标准输出,交给管道符右边命令的标准输⼊来处理⽤法:cmd1|cmd2|cmd3| cmd4...# 取出passwd⽂件中,uid最⼤的前五个[root@localhost ~]# sort -nr -k 3 -t ':' /etc/passwd|head -5# 统计出passwd⽂件中,所有⽤户的shell种类[root@localhost ~]# awk -F: '{print $7}' /etc/passwd|sort |uniq|wc -l6[root@localhost ~]# hostname -I10.0.0.200[root@localhost ~]# ifconfig |awk 'NR==2{print $2}'10.0.0.200sedawkgrep组合:sed awkgrep awk10种⽅法,取IP# 取出磁盘已使⽤百分⽐[root@localhost ~]# df -h|awk '{print $5}'|awk -F '%' '{print $1}'已⽤912451# tee 和重定向的区别tee会将输出结果显⽰在屏幕上[root@zls ~]# date > date.txt[root@zls ~]# date |tee date.txt#xargs:将管道前⾯的结果当成管道后⾯命令的参数[root@localhost opt]# find /etc/ -name '*.conf'|xargs cp -t /tmp/⼗种⽅式取ip⼗种⽅法取ip[root@wzh ~]# ifconfig|awk 'NR==2 {print $2}'10.0.0.200[root@wzh ~]# ifconfig|sed -nr '2s#.*et (.*) ne.*#\1#gp'10.0.0.200[root@wzh ~]# ifconfig|grep -w 'broadcast'|cut -d ' ' -f1010.0.0.200[root@wzh ~]# ifconfig|sed -n '2p'|awk '{print $2}'10.0.0.200[root@wzh ~]# ifconfig|grep -w 'broadcast'|sed -r 's#.*et (.*) ne.*#\1#g'10.0.0.200[root@wzh ~]# ifconfig |head -2|tail -1|cut -d ' ' -f1010.0.0.200[root@wzh ~]# ifconfig|grep -w 'broadcast'|cut -c 14-2410.0.0.200[root@wzh ~]# ifconfig|awk 'NR==2'|cut -d 't' -f2|cut -d 'n' -f110.0.0.200[root@wzh ~]# ifconfig|sed -n '2p'|grep -o '[0.-9]*'|head -110.0.0.200[root@wzh ~]# ifconfig|sed -n '2p'|cut -d ' ' -f1010.0.0.200练习题01.复制/etc/passwd⽂件到当前⽬录下,把⽂件中的:替换成#,不能使⽤sed和vim命令。

linux使用技巧大全

linux使用技巧大全

linux使用技巧大全1、使用Tab补全命令:在命令行输入命令的前几个字符,然后按下Tab键,系统会自动补全命令,减少输入错误。

2、使用命令行参数:很多命令支持参数,可以通过参数来完成特定功能,例如ls -l可以显示更详细的文件列表。

3、使用通配符:在命令中使用通配符可以快速匹配一系列文件或目录,例如*.txt匹配所有以.txt结尾的文件。

4、使用管道(|):命令行可以使用管道将一个命令的输出作为另一个命令的输入,实现多个命令的组合。

5、使用重定向符号:可以使用重定向符号将命令的输出重定向到文件中,例如ls > files.txt将ls命令的输出保存到files.txt 文件中。

6、使用快捷键:在命令行中使用一些快捷键可以提高操作效率,例如Ctrl+C可以中断正在运行的命令,Ctrl+D可以退出当前终端。

7、使用历史命令:使用上箭头或者Ctrl+R可以查看之前执行的命令,快速定位并执行。

8、使用别名:可以使用alias命令设置命令的别名,简化命令的输入,例如alias ll='ls -l'。

9、使用远程登录:可以使用SSH命令远程登录到其他Linux 系统进行操作。

10、使用任务管理:使用ps命令可以查看正在运行的进程,使用kill命令可以终止指定进程。

11、文件搜索:可以使用find命令在文件系统中搜索指定文件,使用grep命令在文件中搜索指定内容。

12、使用Screen命令:Screen是一个终端复用工具,可以在一个终端窗口中创建多个窗口,实现远程会话的断线重连。

13、使用sshfs挂载远程文件系统:可以使用sshfs命令将远程系统的文件系统挂载到本地,方便文件的访问与操作。

14、使用rsync命令进行文件备份:rsync可以实现文件的增量备份,只复制已修改的部分,节省带宽和存储空间。

15、使用sudo命令提升权限:使用sudo命令可以在普通用户下临时获取管理员权限执行特定命令,避免使用root用户登录。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6.3 Linux重定向和管道实验目的通过重定向和管道操作:1) 熟悉输入/输出(I/O) 重定向;2) 把标准输出重定向创建一个文件;3) 防止使用重定向的时候覆盖文件;4) 把输出追加到一个现有的文件中;5) 把一个命令的输出导入到另一个命令中。

实验内容与步骤在本实验中将会用到下列命令:pwd:显示当前的工作路径。

cd:改变目录路径。

ls:显示指定目录的内容。

more:分页显示文件的内容。

这是用于显示文本文件的首选方法。

head:截取显示文件的开头部分(默认为开头10行) 。

tail:截取显示文件的结尾部分(默认为最后10行) 。

cal:有关日历的命令。

set:当前shell下定义的一系列变量及其值。

echo:显示变量的值。

ps:显示当前进程的信息。

data:显示或设置系统日期和时间。

grep:查找文件中指定的关键字的行并输出。

步骤1:开机,登录进入GNOME。

在GNOME登录框中填写指导老师分配的用户名和口令并登录。

步骤2:访问命令行。

单击红帽子,在“GNOME帮助”菜单中单击“系统工具”-“终端”命令,打开终端窗口。

1. 使用重定向标准输出符号步骤3:重定向标准输出,创建一个文件。

右尖括号或称大于符号(>) 把命令的输出发送到一个文件中:使用单个右尖括号,当指定文件名不存在的时候,将创建一个新文件;如果文件名存在,它将被覆盖。

(注意:命令、重定向符号和文件名之间的空格是可选的) 。

重定向标准输出命令的格式是:command > file1) 为核实当前所在目录位置,使用什么命令?___pwd________________________________________________________ 如果当前位置不在主目录中,使用什么命令可以改变到主目录中?___cd /__________________________________________________________2) 如果希望把文件和目录列表截获,存储为主目录中的一个文件,这样可以追踪主目录中有什么文件。

使用什么命令,把长文件列表的输出重定向,创建一个叫做homedir.list的文件。

____ls >homedir.list________________________________________________3) 新文件homedir.list被放在哪里?__根目录_________________________________________________________ 使用ls命令核实新文件存在。

4) 使用什么命令,以一次一屏的方式,来查看刚才创建的文件内容?__ls –l|more homedir.list____________________________________________5) 使用head命令截获homedir.list文件的前10行,通过重定向,创建一个叫做dhomedir.list-top-10的新文件。

应该使用什么命令?___head –10 homedir.list >dhomedir.list-tail-10_________________________ 使用more命令查看文件的内容。

6) 使用tail命令,截获homedir.list文件的最后10行,通过重定向,创建一个叫做dhomedir.list-top-10的新文件。

使用什么命令?___tail –10 homedir.list >dhomedir.list-top-10___________________________ 使用more命令查看文件的内容。

7) 截获cal -y命令的输出,把它存到名为calendar的文件中。

查看文件的内容。

截获了什么?___cal –y>calendar |more calendar截获了2008年12个月份的日历8) 截获cal 2010命令的输出,把它存到名为calendar的文件中。

查看文件的内容。

其中有什么内容?_ cal -y 2010 > calendar |more calendar2010年12月份的日历日历有什么变化?____不是2008年,变成2010年了_____________________________________ 步骤4:防止使用重定向的时候覆盖文件。

在bash shell中,一个叫做noclobber的选项可以用来设定防止在重定向的过程中覆盖文件。

可以在命令行中使用$set -o noclobber命令来完成。

o代表选项。

为了重新激活clobber特性,使用$set -o noclobber;撤消则用set +o noclobber。

如果你使用的是csh shell,为了激活/撤消C shell中的clobber特性,使用set noclobber和unset noclobber。

1) 输入命令,打开shell中的noclobber选项。

输入什么命令?___set –o noclobber__________________________________________ _____2) 输入命令ls -l > homedir.list,结果是什么?___bash:homedir.list:cannot overwrite existing file.因为clobber选项防止了重定向过程覆盖文件___________________________________ _ _3) 输入命令ls -l > homedir.list2,结果是什么?___不能重定向成功_______________________________________________ 步骤5:向现有的文件追加输出。

如果想向一个现有的文件追加(添加到末尾) 文本而不是覆盖它,可以使用双右尖括号(>>) 。

这个选项当文件不存在的时候,会创建一个新文件,或者追加到已有文件。

追加命令的格式是:command >> file1) 输入命令,显示“Happy Bday”一行字,使用重定向符号截获输出,把它存到叫做bday4me的文件中。

使用什么命令?____echo “Happy Bday” >>bday4me___________________________________2) 输入命令,显示“YOURNAME!”一行字,使用双重定向符号,把输出追加到bday4me文件中。

查看bday4me文件的内容。

其中有什么?__echo “YOURNAME” >>bday4me________________________ __ __3) 输入命令,显示您出生年月的日历(如果在1985年的6月出生,输入cal 6 1985) ,使用双重定向符号,把输出追加到bday4me文件中。

使用什么命令?___cal 06 1989 >>bday4me___________________________ ___________4) 查看bday4me文件的内容。

注意这3个命令的输出在bday4me文件中已经被组合起来了。

您是在一周中的哪一天出生的?____周一_________________________________________________________ 2. 使用管道符号步骤6:把命令的输出导入到另一个命令中。

1) 使用管道元字符,发送ls -l命令的输出,作为more命令的输入(注意:如果在当前目录中没有太多的文件,使用/etc目录获取长列表) 。

把输出作为more命令的输入的时候,得到什么结果?输入命令ls –l |more 结果以一屏一次的方式显示在屏幕上2) 查看使用ls –l | more命令列出来的文件,注意创建或修改的日期。

为了查看在同一个月被创建或修改的文件或目录的列表,可以使用grep命令对那个月进行搜索。

当月份显示在列表中的时候,指定它(例如:Oct) 。

输入命令ls -1 | grep Oct (或者想查找的月份) 。

结果是什么?____只显示10月的目录___________________________________________3) 目录总是4096字节大小。

输入命令ls -1 | grep 4096。

产生的列表是什么?__4096字节大小的目录显示_______________________________________4) 可以使用多个管道连接多个命令。

输入取得长文件列表输出的命令,把它输入给tail命令,然后到sort命令。

输入的命令是:___ls –l|tail|sort____________________________________________________5) ps (进程状态) 命令用于查看Linux系统中运行什么进程。

把ps -e命令的输出输入给more命令。

-e选项将给出每一个在系统中运行的进程。

把输出输入到more命令中的结果是什么?__输入命令_ps –e|more____显示所有系统中运行的程序_________步骤7:删除在本实验中创建的文件和目录。

步骤8:关闭终端窗口,注销。

可选练习1. 使用set -o命令不指定任何选项,可以查看noclobber特性是否已经打开。

1) 输入set -o。

noclobber特性打开还是关闭的?如果它是关闭的,打开它。

使用什么命令?____关闭set –o noclobber___________________________________________2) 永久的关闭noclobber特性。

使用什么命令?___set +o noclobber________________________________________________2. 可以把管道和重定向组合起来使用,达到特殊的效果。

输入命令创建一个名为top5.list的文件,内容为主目录中的头5行记录,使用什么命令?_____ls –l|head –5 >top5.list__________________________________________实验总结通过前面的实验目的,我学会了1) 熟悉输入/输出(I/O) 重定向;2) 把标准输出重定向创建一个文件;尖括号或称大于符号(>) 把命令的输出发送到一个文件中:使用单个右尖括号,当指定文件名不存在的时候,将创建一个新文件;如果文件名存在,它将被覆盖。

(注意:命令、重定向符号和文件名之间的空格是可选的) 。

3) 防止使用重定向的时候覆盖文件;在bash shell中,一个叫做noclobber的选项可以用来设定防止在重定向的过程中覆盖文件。

相关文档
最新文档