Linux重定位和管道

Linux重定向和管道

 实验目的

通过重定向和管道操作:

1) 熟悉输入/输出 (I/O) 重定向;

2) 把标准输出重定向创建一个文件;

3) 防止使用重定向的时候覆盖文件;

4) 把输出追加到一个现有的文件中;

5) 把一个命令的输出导入到另一个命令中。

实验内容与步骤

 

 

在本实验中将会用到下列命令:

pwd: 显示当前的工作路径。

cd: 改变目录路径。

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

more: 分页显示文件的内容。这是用于显示文本文件的首选方法。

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

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

cal: 有关日历的命令。

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

echo: 显示变量的值。

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

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

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

 

提示如果对命令的格式不清楚,可以用man命令请求帮助,即:

man  more

 

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

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

步骤2:访问命令行。

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

    1. 使用重定向标准输出符号

步骤3:重定向标准输出,创建一个文件。

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

重定向标准输出命令的格式是:

      command > file

1) 为核实当前所在目录位置,使用什么命令?

    ___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                                     

    截获了200812个月份的日历                                 

8) 截获cal 2010命令的输出,把它存到名为calendar的文件中。查看文件的内容。其中有什么内容?

_ cal -y 2010 > calendar |more calendar                                 

  201012月份的日历                                           

日历有什么变化?

    ____不是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 >> file

1) 输入命令,显示“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的选项可以用来设定防止在重定向的过程中覆盖文件。可以在命令行中使用$set -o noclobber命令来完成。o代表选项。

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

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

4) 把输出追加到一个现有的文件中;

   如果想向一个现有的文件追加 (添加到末尾) 文本而不是覆盖它,可以使用双右尖括号 (>>) 。这个选项当文件不存在的时候,会创建一个新文件,或者追加到已有文件。

5) 把一个命令的输出导入到另一个命令中。

6)了解到CtrlF1F2同时按,即可以在图形界面下转换到黑色shell界面,再按Ctrl F返回图形界面。

你可能感兴趣的:(Linux相关)