`

Linux 文件和目录管理常用命令(2)

 
阅读更多

6.11.11  chown命令:改变文件或目录的拥有者

chown命令用于改变文件或目录的拥有者,chown命令格式为:

  1. chown [选项] 用户名 文件或目录 

其中可用选项意义如下。

-R:可以一次修改某个目录下所有文件的所有者。

其中用户名为新拥有者的用户标识符。例如将文件data的属主改为teacher:

  1. # chown  teacher  data  

如将/root/file1.doc文件复制到用户teacher1的主目录/home/teacher1中,复制之后可以发现此文件的拥有者仍然是root,命令行为:

  1. # ls  -l  file1.doc  
  2. -rw-rw-r-- 1 root root 18 07-27 16:21 file1.doc  
  3. # cp  file1.doc  /home/teacher1  
  4. # ls  -l  /home/teacher1/file1.doc   
  5. -rw-rw-r-- 1 root root 18 07-27 16:22 /home/teacher1/file1.doc 

为此,使用chown将file1.doc文件的所有权赋予teacher1,命令行为:

  1. # chown  teacher1  /home/teacher1/file1.doc  
  2. # ls  -l  /home/teacher1/file1.doc   
  3. -rw-rw-r-- 1 teacher1 root 18 07-27 16:22 /home/teacher1/file1.doc 

可以看到file1.doc文件的所有者已改为teacher1,但用户组仍为root。也可以使用chown命令修改文件所属的用户组,命令格式为:

  1. chown  用户名:用户组 文件或目录 

要在上例中一并更改file1.doc文件的属主和用户组为teacher1,命令行为:

  1. # chown  teacher1:teacher1   /home/teacher1/file1.doc  
  2. # ls  -l  /home/teacher1/file1.doc   
  3. -rw-rw-r-- 1 teacher1 teacher1 18 07-27 16:22 /home/teacher1/file1.doc  

 

6.11.12  chgrp命令:修改文件或目录所属的用户组

chgrp允许用户修改文件或目录所属的用户组,但该用户必须是根用户或同时属于被设置的新的用户组,否则无法修改成功。chgrp命令格式为:

  1. chgrp [选项] 用户组名  文件或目录 

可用选项意义如下。

-R:可以一次修改某个目录下所有文件所属的用户组。

其中用户组名可以是用户组名称或用户组的GID。

例如将文件data的组别改为staff。

  1. # chgrp  staff  data 

 

6.11.13  cat 命令:把一个文件发送到标准输出设备

cat是Concatenate的缩写,用于把一个文件发送到标准输出设备,与DOS或Windows下的type命令相似。cat命令可以对任意一个文件使用,屏幕将一次显示文件的所有内容,中间不停顿,不分屏。除了显示文件内容外,cat还具有由键盘读取数据和将多个文件合并的功能。其命令格式为:

  1. cat [选项] [文件]… 

各选项及其说明如表6.22所示。

表6.22  cat选项及其说明

    

    

-A,--show-all

等价于-vET

-b,--number-nonblank

对非空行输出行编号

-e

等价于-vE

-E,--show-ends

在每行结束处显示$

-n,--number

对输出的所有行编号

-S,--squeeze-blank

不输出多行空行

-t

-vT等价

-T,--show-tabs

将跳格字符TAB显示为^I

-v,--show-nonprinting

使用^M-符号显示非打印字符,

LFDTAB除外

--help

显示帮助信息并离开


例如显示hello.c文件内容的命令如下所示:

  1. # cat  hello.c  
  2. hello world! 

该命令可配合重定向符">"建立小型文本。例如将键盘输入的内容输出并重定向到文件example1中,按Ctrl+d(或Ctrl+c)组合键存盘退出,命令行为:

  1. # cat  > example1  
  2. aa bb cc dd  
  3. bb cc dd ee  
  4. cc dd ee ff  
  5. # cat  example1  
  6. aa bb cc dd  
  7. bb cc dd ee  
  8. cc dd ee ff 

cat命令可以联合输出多个文件的内容,例如:

  1. # cat  example1  
  2. aa bb cc dd  
  3. bb cc dd ee  
  4. cc dd ee ff  
  5. # cat  example2  
  6. dd ee ff gg  
  7. ee ff gg hh  
  8. ff gg hh ii  
  9. # cat  example1  example2  
  10. aa bb cc dd  
  11. bb cc dd ee  
  12. cc dd ee ff  
  13. dd ee ff gg  
  14. ee ff gg hh  
  15. ff gg hh ii 

如果要将上例中的example1和example2合并后放入新文件example3中,命令行为:

  1. # cat  example1  example2  >  example3    //合并后输出到example3文件  
  2. # cat  example3  
  3. aa bb cc dd  
  4. bb cc dd ee  
  5. cc dd ee ff  
  6. dd ee ff gg  
  7. ee ff gg hh  
  8. ff gg hh ii 

如果要在显示输出的每一行前自动添加行号(空白行除外),可使用选项"-b",命令行为:

  1. # cat  -b  example3  
  2.      1  aa bb cc dd  
  3.      2  bb cc dd ee  
  4.      3  cc dd ee ff  
  5.      4  dd ee ff gg  
  6.      5  ee ff gg hh  
  7.      6  ff gg hh ii 

注意:使用选项"-n"会给所有行加上行号,即使空行也不例外。

 

6.11.14  more 命令:一次显示一屏信息

more命令一次显示一屏信息,若信息未显示完屏幕底部将出现"-More-(xx%) "。此时按Space键,可显示下一屏内容;按Enter键,显示下一行内容;按B键,显示上一屏;按Q键可退出more命令。more命令格式为:

  1. more [选项] 文件名 

常用的more选项如表6.23所示。

表6.23  常用的more选项

    

    

+n

从笫n行开始显示

-n

定义屏幕大小为n


续表

    

    

+/pattern

pattern前两行开始显示

-c

从顶部清屏,然后显示

-d

提示“Press space to continue’q’ to quit

(按空格键继续,按q键退出)”,禁用响铃功能

-l

忽略Ctrl+l(换页)字符

-p

通过清除窗口而不是滚屏来对文件进

行换页,与-c选项相似

-s

把连续的多个空行显示为一行

u

把文件内容中的下画线去掉

在查看一个内容较多,无法在一屏内显示的文件时,经常要用到more操作命令。常用的more操作命令及其说明见表6.24。

表6.24  常用的more操作命令及其说明

操作命令

    

Enter

向下n行,需要定义。默认为1

Ctrl+F

向下滚动一屏

空格键

向下滚动一屏

Ctrl+B

返回上一屏

=

输出当前行的行号

f

输出文件名和当前行的行号

V

调用vi编辑器

!命令

调用Shell,并执行命令

q

退出more


例如要显示文件test中从第3行起的内容,命令行为:

  1. #more  +3  test 

再如使用"+/pattern"选项,从文件test中查找第一个出现"teacher"字符串的行,并从该处前两行开始显示输出,命令行为:

  1. #more  +/teacher  test 

若每屏显示8行,命令行为:

  1. #more  -8  test 

又如从终端顶部开始显示文件内容,并给出提示信息,命令行为:

  1. #more  -dc  test 

 

6.11.15  less 命令:显示文件时允许用户既可以向前又可以向后翻阅文件

less 命令和more命令功能相似,显示文件时允许用户既可以向前又可以向后翻阅文件。可以按pageup键向前翻,按pagedown键向后翻,要退出则按q键。less命令格式为:

  1. less [选项] 文件名 

less命令的常用选项及其说明见表6.25。

表6.25  less命令选项及其说明

    

    

-c

从顶部(从上到下)刷新屏幕,并显示文

件内容,而不是通过底部滚动完成刷新

-f

强制打开文件,如果是二进制文件也不提出警告

-i

搜索时忽略大小写,但搜索串中包含大写字母除外

-I

搜索时忽略大小写,但搜索串中包含小写字母除外

-m

显示读取文件的百分比

-M

显示读取文件的百分比、行号及总行数

-N

在每行前输出行号

-p pattern

例如在/etc/ftpuser中搜索单词student,可

以使用“less  -p  student  /etc/ftpuser

-S

把连续多个空白行作为一个空白行显示

-Q

在终端下不响铃


在用less命令查看文件时,使用一些常用的操作指令可以加快查找和定位的速度。常用的操作指令及其说明见表6.26。

表6.26  less常用的操作指令及其说明

操作命令

    

回车键

向下移动一行

 y

向上移动一行

空格键

向下滚动一屏

 b

向上滚动一屏

 d

向下滚动半屏

 h

less的帮助

 u

向上滚动半屏

 w

从指定行数的下一行显示,例如指

定的值是9,则从第10行开始显示

 g

跳到第一行

 G

跳到最后一行

p n

跳到n%。例如50%,表示从整个

文档的50%处开始显示

 /pattern

搜索pattern,例如/ftpuser,表示从文

件中搜索单词ftpuser

 v

调用vi编辑器

 q

退出less

 !command

调用Shell命令,例如使用“!ls”,表

示列出当前目录下的所有文件


例如,查看当前目录下test文件的内容,命令行为:

  1. #less  test 

如果在显示文件example3内容的同时,加上行号,命令行为:

  1. #less  -N  example3  
  2. 1  aa bb cc dd  
  3. 2  bb cc dd ee  
  4. 3  cc dd ee ff  
  5. 4  dd ee ff gg  
  6. 5  ee ff gg hh  
  7. 6  ff gg hh ii 

 

6.11.16  head 命令:查看文件前面的部分内容

cat命令会一次输出文件的全部内容,而head命令则用于查看文件前面的部分内容。head命令格式为:

  1. head  [-n]  文件名 

其中-n用于指定显示文件的前n行,如果未指定行数n,则使用默认值10。

例如,显示example文件的前5行,命令行为:

  1. # head  -5  example 

tail 命令与head命令类似,用于显示文件后面的部分内容,默认显示末尾10行。命令格式为:

  1. tail  [+/-n]  文件名 

其中 "+ n"表示从文件的第n行开始显示。"- n"表示从距文件末尾n行处开始显示。例如显示文件test最后10行的内容,可以使用命令:

  1. #tail  -10  test 

再如从文件test的第10行开始显示文件的内容,可以使用命令:

  1. #tail  +10  test 

 

6.11.17  touch命令:改变文件的时间戳

touch命令用来改变文件的时间戳,如果file文件不存在,则创建该文件。例如,使用touch命令创建example文件:

  1.  # ls -a  
  2. .  ..  
  3. # touch  example  
  4. # ls  -a  
  5. .  ..  example 

然后可以使用touch命令更新其时间戳,命令如下:

  1. # ls  -al  
  2. drwxrwxr-x 2 root root 4096 07-27 00:47 .  
  3. drwxr-xr-x 6 root root 4096 07-27 00:47 ..  
  4. -rw-rw-r-- 1 root root    0 07-27 00:47 example  
    //创建时间为07-27 00:47  
  5. # touch  example  
  6. # ls  -l  example  
  7. -rw-rw-r-- 1 root root 0 07-27 00:48 example    
    //修改时间戳为07-27 00:48 

 

sort 命令:对文件中的所有行进行排序

sort命令用于对文件中的所有行进行排序,并将结果显示在屏幕上。sort命令的格式如下:

  1. sort  [选项]  文件列表 

各选项的意义如下。

-m:把已经排过序的文件列表合并成一个文件,并送往标准输出。

-c:检查给定的文件是否排过序。

-d:按字典顺序排序,可比较的字符仅包含字母、数字、空格和制表符。

-f:忽略大小写。

-r:按降序排序,默认是升序。

例如对文件student按字典顺序进行排序,命令行为:

  1. # cat  student  
  2. Tom     A  B  C  D  
  3. Mike    B  C  D  E  
  4. Mary    C  D  E  F  
  5. Jean    D  E  F  G  
  6. # sort  student  
  7. Jean    D  E  F  G  
  8. Mary    C  D  E  F  
  9. Mike    B  C  D  E  
  10. Tom     A  B  C  D 

sort命令常和管道(|)联合使用,例如对当前目录的文件按字典顺序进行排列并显示:

  1. # ls  
  2. anaconda-ks.cfg  Desktop    install.log         man_chage  
  3. chage_li         file1.doc  install.log.syslog  
  4. # ls  |  -d  sort           //按字典顺序排列  
  5. anaconda-ks.cfg  
  6. chage_li  
  7. Desktop  
  8. file1.doc  
  9. install.log  
  10. install.log.syslog  
  11. man_chage  
  12. # ls  |  sort  -r           //按降序排列文件  
  13. man_chage  
  14. install.log.syslog  
  15. install.log  
  16. file1.doc  
  17. Desktop  
  18. chage_li  
  19. anaconda-ks.cfg 

 

comm命令:对两个已排序文件逐行进行比较

comm 命令对两个已排序文件逐行进行比较,输出结果由三列组成,其中第一列表示仅在第一个文件出现的行,第二列表示仅在第二个文件出现的行,第三列表示在两个文件中都存在的行。comm命令格式为:

  1. comm  [-[1][2][3]]  file1  file2  

-[1][2][3]:分别表示不进行显示输出的列。

例如对文件student1和student2进行比较,显示其中的异同,命令行如下:

  1. # cat  student1  
  2. Tom is a tall man  
  3. Mike is Tom's brother  
  4. Mary is a beautiful girl  
  5. Jean is Mary's sister  
  6. # cat  student2  
  7. Tom is Mary's brother  
  8. Mike is Tom's brother  
  9. Mary is a beautiful girl  
  10. Jean is Tom's sister  
  11. # sort student1 > student1_1         //对student1排序                     
  12. # sort student2 > student2_2         //对student2排序  
  13. # cat student1_1  student2_2  
  14. Jean is Mary's sister  
  15. Mary is a beautiful girl  
  16. Mike is Tom's brother  
  17. Tom is a tall man  
  18. Jean is Tom's sister  
  19. Mary is a beautiful girl  
  20. Mike is Tom's brother  
  21. Tom is Mary's brother  
  22. # comm  student1_1 student2_2  
  23. Jean is Mary's sister  
  24.         Jean is Tom's sister  
  25.                 Mary is a beautiful girl  
  26.                 Mike is Tom's brother  
  27. Tom is a tall man  
  28.         Tom is Mary's brother  

 

diff 命令:比较两个文本文件,并显示它们的不同

diff 命令比较两个文本文件,并显示它们的不同,命令格式为:

  1. diff  文件1  文件2 

diff文件的输出结果及其说明见表6.27。

表6.27  diff文件的输出结果及其说明

输出结果形式

    

n1 a n2

表示第一个文件的 n1行添加输出内容后

成为第二个文件的n2

n1,n2 c n3,n4

表示将第一个文件的n1n2行(在<号之

后的内容)改变成第二个文件的n3n4

行(在 >号之后的内容)

n1,n2 d n3

表示第一个文件中n1n2行删除成

为文件2中的n3


注意:a表示添加,c 表示改变,d 表示删除。

例如对文件student1、student2进行比较,并输出文件的不同之处,命令行为:

  1. # cat  student1                     //student1文件内容  
  2. Tom is a tall man  
  3. Mike is Tom's brother  
  4. Mary is a beautiful girl  
  5. Jean is Mary's sister  
  6. # cat  student2                     //student2文件内容  
  7. Tom is Mary's brother  
  8. Mike is Tom's brother  
  9. Mary is a beautiful girl  
  10. Jean is Tom's sister  
  11. # diff  student1  student2      //比较结果  
  12. 1c1  
  13. < Tom is a tall man  
  14. ---  
  15. > Tom is Mary's brother  
  16. 4c4  
  17. < Jean is Mary's sister  
  18. ---  
  19. > Jean is Tom's sister 

 

6.11.21  cut命令:移出文件中的部分内容

cut命令用来移出文件中的部分内容。命令格式为:

  1. cut  [选项]  file 

其可用选项意义如下。

-c:显示每行中指定的字符。

例如显示student1文件中每行的第1到第10个字符,命令行为:

  1. # cut  -c1-10  student1  
  2. Tom is a t  
  3. Mike is To  
  4. Mary is a   
  5. Jean is Ma 

cut命令并没有改变源文件的内容,只是改变了显示方式,从下面的命令可以看到:

  1. # cat  student1  
  2. Tom is a tall man  
  3. Mike is Tom's brother  
  4. Mary is a beautiful girl  
  5. Jean is Mary's sister 

 

6.11.22  locate命令:查找所有名称中包含指定字符串的文件

locate命令用于查找所有名称中包含指定字符串的文件。locate命令通过已建立的数据库/var/lib/slocate来进行搜索,而不直接在硬盘中逐一寻找。因此使用locate比使用find命令更快、更简便。但因为locate是经由数据库来搜寻的,而数据库的更新一般是每天一次(多数在夜间进行),所以在数据库更新之前搜寻用户新建立的文件,locate命令是无法查到的。locate命令格式为:

  1. locate 字符串 

例如查找所有包含"shadow"字符串的文件名,命令行为:

  1. # locate  shadow  
  2. /etc/shadow  
  3. /usr/bin/pgmdeshadow  
  4. /usr/share/icons/gnome/16x16/stock/image/stock_shadow.png  
  5. /usr/share/icons/gnome/16x16/stock/text/stock_fontwork-2dshadow.png  
  6. …  … 

 

6.11.23  split命令:将一个文件拆分成几个文件

利用cat命令可以将多个文件的内容合并到一个文件中。与之相反,split命令用于将一个较大的文件拆分成大小相同的几个小文件。split命令的格式如下:

  1. split  [选项]  输入文件  输出文件前缀 

各选项意义如下。

-l n:将输入文件每n行拆分为一个文件,默认值为1 000。

-b n[bkm]:以字节为单位进行拆分,并设定每个拆分后的文件的大小。b代表512KB,k代表1KB,m代表1MB。

-:从标准输入读取数据。

例如对文件file进行拆分,每两行存为一个新文件,新文件名以"files"为前缀:

  1. # ls  
  2. file  
  3. # cat file  
  4. aaaaaaaaaaaaaa  
  5. bbbbbbbbbbbbbb  
  6. cccccccccccccc  
  7. dddddddddddddd  
  8. eeeeeeeeeeeeee  
  9. ffffffffffffff  
  10. # split  -l 2  file  files 

可以看到文件file被拆分成了filesaa、filesab和filesac三个文件,如下所示:

  1. # ls  
  2. file  filesaa  filesab  filesac 

查看文件filesaa、filesab和filesac,可以看到每个文件包含两行,如下所示:

  1. # more filesa?  
  2. ::::::::::::::  
  3. filesaa  
  4. ::::::::::::::  
  5. aaaaaaaaaaaaaa  
  6. bbbbbbbbbbbbbb  
  7. ::::::::::::::  
  8. filesab  
  9. ::::::::::::::  
  10. cccccccccccccc  
  11. dddddddddddddd  
  12. ::::::::::::::  
  13. filesac  
  14. ::::::::::::::  
  15. eeeeeeeeeeeeee  
  16. ffffffffffffff 

使用选项"-b"可以按大小对文件进行拆分。例如文件file为90字节,按每30字节一个文件进行拆分,新拆分后的文件以"filebysize"为前缀,命令行如下所示:

  1. # ls  -l  file  
  2. -rw-r--r-- 1 root root 90 08-09 00:22 file  
  3. # split  -b 30  file  filebysize 

可以看到文件file被拆分成了filebysizeaa、filebysizeab和filebysizeac三个文件,如下所示:

  1. # ls  
  2. file  filebysizeaa  filebysizeab  filebysizeac  

每个文件各为30字节,如下所示:

  1. # ls  -l  
  2. -rw-r--r-- 1 root root 90 08-09 00:22 file  
  3. -rw-r--r-- 1 root root 30 08-09 00:26 filebysizeaa  
  4. -rw-r--r-- 1 root root 30 08-09 00:26 filebysizeab  
  5. -rw-r--r-- 1 root root 30 08-09 00:26 filebysizeac 

使用选项"-"可以从标准输入设备读入数据,并按设定值进行拆分。例如从标准键盘读入数据,每两行拆分成一个新文件,且新文件的前缀为"standinput",命令如下所示:

  1. # split  -l  2  -  standinput  
  2. aaaaaaaaaaaaaaaaaaaaaaaaaaa  
  3. aaaaaaaaaaaaaaaaaaaaaaaaaaa  
  4. bbbbbbbbbbbbbbbbbbbbbbbbbbb  
  5. bbbbbbbbbbbbbbbbbbbbbbbbbbb  
  6. ccccccccccccccccccccccccccc   
  7. ccccccccccccccccccccccccccc 

按Ctrl+d或Ctrl+c组合键结束文件的输入,然后使用命令ls查看读入的数据是否被拆分,如下所示:

  1. # ls  
  2. standinputaa      standinputab    standinputac 

查看文件standinputaa、standinputab和standinputac,可以看到每个文件包含两行,如下所示:

  1. # more standinputa?  
  2. ::::::::::::::  
  3. standinputaa  
  4. ::::::::::::::  
  5. aaaaaaaaaaaaaaaaaaaaaaaaaaa  
  6. aaaaaaaaaaaaaaaaaaaaaaaaaaa  
  7. ::::::::::::::  
  8. standinputab  
  9. ::::::::::::::  
  10. bbbbbbbbbbbbbbbbbbbbbbbbbbb  
  11. bbbbbbbbbbbbbbbbbbbbbbbbbbb  
  12. ::::::::::::::  
  13. standinputac  
  14. ::::::::::::::  
  15. ccccccccccccccccccccccccccc  
  16. ccccccccccccccccccccccccccc 

可以使用命名管道对标准输入进行重新指定,例如:

  1. # ls  -al  /etc  |  split  -l 50  -  etcfile  
  2. # ls  
  3. etcfileaa  etcfilead  etcfileab  etcfileae  etcfileac  etcfileaf 

该命令以ls长格式列出/etc目录下的所有文件,并把命令ls的输出结果通过命名管道输入split命令。由split命令按照每50行另存为一个新文件的方式,对输入的文件列表进行拆分。新拆分的文件以"etcfile"为前缀,一共生成了etcfileaa、etcfilead、etcfileab、etcfileae、etcfileac和etcfileaf总共6个文件。

 

6.11.24  IO重定向及管道操作

在Linux系统中,数据流可分为三类:数据输入、数据输出和错误输出。相应地,每一个进程也都有三个特殊的文件描述指针:标准输入(standard input,文件描述指针为0)、标准输出(standard output,文件描述指针为1)和标准错误输出(standard error,文件描述指针为2)。这三个特殊的文件描述指针使进程能在通常情况下接受标准输入设备的输入,并让标准输出设备显示输出。

标准输入通常指传给一个命令的键盘输入。例如运行命令"ls -al",其中"-al"是传给ls命令的标准输入。标准输出是一个命令的执行结果,例如运行"cat /file1.doc"命令后所看到的文件内容就是标准输出。标准输出通常被定向到显示器。如果在执行命令的过程中发生错误,可能会生成一条错误消息,这是标准错误数据流,通常也被定向到显示器。如在上例中,如果file1.doc文件不存在,则系统会提示"cat:/file1.doc:没有此文件或目录",并从显示器输出。

有两种基本的方法可以用来重定向标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。可以利用管道把这些数据流之一输送给另外一条命令;也可以利用I/O重定向把这些数据流之一重定向到一个文件。管道及I/O重新定向是Linux系统中特有的概念。所谓管道是指将某个命令的输出结果传送到另一个命令,当成另外一个命令的输入,其代表符号是"|"。所谓I/O重定向是指将命令执行的结果重新导出到其他的设备或文件(以">"或">>"来表示),或者重新导入到其他的设备或文件(以"<"或"<<"来表示)。常用输入输出重定向命令格式与说明如表6.28所示。

表6.28  常用输入输出重定向命令格式与说明

  

    

命令1  >  文件1

将命令1的输出结果重定向到文件1

命令1  >  文件1

将命令1的输出结果和标准

错误输出一起重定向到文件1

命令1  >>  文件1

将命令1的输出结果追加到文件1

命令1  2>  文件1

将命令1的标准错误输出的

结果重定向到文件1

命令1  <  文件1

将文件1作为命令1的标准输入

命令1  <<  字符串1

允许连续输入数据,直到接收到字符串1


1.输出重定向(>)

在Linux下执行任何命令或程序时,默认情况下都将把结果输出到屏幕,但是有时用户希望将标准输出保存到一个文件中,此时就可以使用输出重定向的功能。例如为/etc目录下的所有文件建立一个清单,并保存到/etc_list文件中,命令行为:

  1. # ls  /etc  >  /etc_list  
  2. # cat  /etc_list       //查看建立的列表文件  
  3. a2ps.cfg  
  4. a2ps-site.cfg  
  5. acpi  
  6. adjtime  
  7. ...  ... 

在执行上例中的"ls"命令时,由于原来的输出对象的输出内容都已重新定向到/etc_list文件中,因此屏幕不会再显示任何输出结果。重定向的文件,如本例中的/etc_list,不需预先创建,系统在执行此命令时若发现重新定向的文件不存在,则会自动生成命令中指定的文件。若文件已经存在,则会进行写覆盖。可以使用附加输出重定向(>>)把新添加的数据追加到已存在文件的尾部,以避免写覆盖的发生。

利用前面介绍过的"cat"命令,配合输出重定向操作,可以将数据直接从键盘录入到文件中,例如创建file1.doc文件并录入"Hello world !!!", 按Ctrl+c或Ctrl+d组合键可以结束文件的编辑。相应命令行为:

  1. # cat  >  file1.doc  
  2. Hello World!!!        //按Enter键  
  3. <Ctrl+c><Ctrl+d>组合键  

在输入完毕后先按Enter键(否则最后一行不会存储),再按Ctrl+c或Ctrl+d组合键就可结束文件的编辑,系统会将此内容以file1.doc文件名进行存储。   

2.附加输出重定向(>>)

如果重新定向的文件原来已经存在,那么在使用输出重定向(>)给文件输入新的数据后,新数据将覆盖所有旧的数据。在硬盘空间足够的条件下,为了避免覆盖旧数据,可以采用Linux提供的"附加输出重定向"(>>)技术。附加输出重定向操作可以将新输入的数据附加(Append)在原有旧数据之后,表示符号为">>"。从下例中可以看出输出重定向与附加输出重定向的区别:

  1. # cat file1.doc  
  2. Hello World!!!          //源文件内容  
  3. # cat > file1.doc  
  4. This is a new world!  
  5. # cat file1.doc  
  6. This is a new world!   //源文件内容被覆盖  
  7. # cat >> file1.doc  
  8. I like this world.  
  9. # cat file1.doc         //附加在源文件后  
  10. This is a new world!  
  11. I like this world. 

3.输入重定向(<)

输出重定向与输入重定向相反,前者是将命令或程序的执行结果通过屏幕或文件来输出,后者是将输入设备(如键盘或文件)提供给命令来执行。例如下面的程序对/etc目录进行备份,其中使用了输入重定向来读入file文件的内容:

  1. #!/bin/sh  
  2. i=0;  
  3. find / -name etc > file;  
  4. while read LINE  
  5. do   
  6.   DIRS=$LINE  
  7.   BACKUP="/tmp/backup${i}.tar.gz" 
  8.   tar -zcvf  $BACKUP  $DIRS  
  9.   i=$(($i+1))  
  10. done < file 

4.附加输入重定向(<<字符串)

附加输入重定向经常用于电子邮件系统中,可以让用户自行定义一个字符串,例如exit,系统在收到此字符串前,会持续地将数据输入文件。下面是一个编写电子邮件的范例,定义的结束字符串是"exit",用户可以连续输入邮件内容,直到输入"exit":

  1. # mail yang_mh@bit.edu.cn << exit 
  2. > This mail is a test.  
  3. > exit 

5.错误输出重定向(2>)

输出重定向(>)操作在命令执行发生错误时,将把错误信息直接显示在屏幕上,并且不记录到文件中。而错误输出重定向(2>)会在命令执行发生错误时,将错误信息直接输入到文件中,不会再将信息结果显示在屏幕上。例如:

  1. # ls  
  2. cal_txt    finger2_txt  groups_txt  last_txt 
    newgrp_txt  suple_txt  who.txt  
  3. file1.doc  finger3_txt  groups_txt2  ll      
    suple3_txt   suple_txt~  w.txt  
  4. file2.doc  finger_txt   id_txt       ln      
    suple3_txt~  w  
  5. # ls  exec  
  6. ls: exec: 没有那个文件或目录  
  7. # ls exec  2> example  
  8. # cat example  
  9. ls: exec: 没有那个文件或目录 

6.标准输出与错误输出重定向(&>)

标准输出与错误输出重定向(&>)可以将标准输出和错误输出信息一并重定向到文件,屏幕上不会显示任何信息,例如:

  1. # ls  
  2. cal_txt    file2.doc    finger_txt   id_txt   
    ln          suple3_txt~  w  
  3. example    finger2_txt  groups_txt   last_txt  
    newgrp_txt  suple_txt who.txt  
  4. file1.doc  finger3_txt  groups_txt2  ll       
    suple3_txt  suple_txt~   w.txt  
  5. # ls id_txt file  
  6. ls: file: 没有那个文件或目录  
  7. id_txt  
  8. # ls  id_txt file  2>  doc           //将错误输出重定向到文件doc  
  9. id_txt  
  10. # cat  doc  
  11. ls: file: 没有那个文件或目录  
  12. # ls  id_txt file &> doc          //将标准输出与错误输出一并重定向到文件doc  
  13. # cat  doc  
  14. ls: file: 没有那个文件或目录  
  15. id_txt 

7.管道(Pipe)

在Linux系统中,管道的主要功能是将其他程序的输出结果直接导出到另一个程序来做输入数据,即将前一个程序的输出作为后一个程序的输入,符号表示为"|"。管道的语法格式为:

  1. 命令1  |  命令2  [ |  命令3 … ] 

可以将标准错误输出一起送入管道,命令格式为:

  1. 命令1  |&  命令2  [ |&  命令3 … ] 

例如将ps命令的输出结果作为more命令的输入,以实现分页查看进程信息,命令行为:

  1. #ps  -aux  |  more 

再如以长格式查看/etc目录下的所有文件。由于/etc目录下的文件很多,因此直接使用"1s  -al"命令显示的内容会很快卷过屏幕,无法仔细查看。可以利用管道将"1s  -al"命令的执行结果输入more或less命令,实现分页显示,命令行为:

  1. #ls  -al  |  less 

 

分享到:
评论

相关推荐

    Linux常用命令教学视频

    04.1.2 Linux常用命令-文件处理命令-目录处理命令.mp4 04.1.3 Linux常用命令-文件处理命令-文件处理命令.mp4 04.1.4 Linux常用命令-文件处理命令-链接命令.mp4 04.2.1 Linux常用命令-权限管理命令-权限管理命令...

    linux文件系统详解及常用命令

    Linux 文件系统详解及常用命令 Linux 文件系统是 Linux 操作系统的核心组件之一,它提供了文件存储和管理的机制。Linux 文件系统的结构是一个树状结构,以根目录(root)为中心,其他目录都是从根目录下派生出来的...

    Linux常用文件命令

    Linux提供了find命令用于查找文件和目录。find命令可以根据文件名、文件类型、文件大小、修改时间等条件进行查找。使用find命令可以查找文件的位置,包括文件所在的目录和子目录。 六、文件安全 Linux提供了多种...

    Linux常用命令 LINUX常用命令和系统管理

    本篇主要介绍Linux中的常用命令和系统管理,帮助用户更好地理解和掌握这一强大的操作系统。 1. **文件目录基本操作** - `cd`: 改变当前工作目录,例如`cd /home/user`进入用户主目录。 - `ls`: 列出目录内容,如`...

    Linux常用配置文件及常用命令

    Linux常用配置文件及常用命令 Linux是一个功能强大且灵活的操作系统,它提供了许多配置文件和命令来帮助用户管理和维护系统。在本节中,我们将介绍一些常用的Linux配置文件和命令,帮助用户更好地理解和掌握Linux...

    Linux系统的基本操作及常用命令实验报告.doc

    "Linux系统的基本操作及常用命令实验报告" Linux 系统的基本操作及...Linux 系统的基本操作及常用命令实验报告涵盖了 Linux 操作系统的基础知识和基本命令,旨在帮助用户熟悉 Linux 操作系统的基本操作和常用命令。

    linux常用命令大全.md

    linux常用命令大全 1. **ls**:列出目录内容 2. **cd**:改变当前目录 3. **pwd**:显示当前工作目录 4. **mkdir**:创建目录 5. **rmdir**:删除空目录 6. **cp**:复制文件或目录 7. **mv**:移动或重命名文件或...

    linux常用命令大全.pdf

    ### Linux常用命令详解 #### 一、文件管理 1. **ls**:此命令用于列出当前目录中的文件和子目录。通过使用不同的选项,可以改变其输出格式。 - `-l`:使用长格式列表输出,包括文件权限、拥有者、组、大小等详细...

    linux操作系统实验文件和目录操作报告.pdf

    Linux 操作系统文件和目录操作报告 Linux 操作系统中的文件类型可以分为普通文件、目录文件、链接文件、设备文件、套接字文件和管道文件。普通文件是存储数据的...这些命令可以帮助用户高效地管理和操作文件和目录。

    最全Linux常用命令大全-linux常用命令全集

    本文档对 Linux 中最常用的命令进行了详细的总结和说明,涵盖了文件和目录管理、磁盘空间管理等方面的命令。 文件和目录管理命令 1. `pwd` 命令:显示当前目录 `pwd` 命令的英文解释为 print working directory...

    Linux系统管理-Linux常用命令.pdf

    Linux系统是一种开源的类Unix操作系统,它以其高效、稳定、强大的网络功能和...Linux系统管理员需要熟练运用这些命令来完成文件管理、目录管理、系统状态查看等日常工作,以此来确保系统的稳定运行和服务的正常提供。

    Linux常用命令.pdf

    在Linux操作系统中,掌握一些基本的命令是必不可少的,这些命令可以帮助用户进行文件管理、系统交互以及各种操作。以下是对PDF文件中提到的一些常用Linux命令的详细解释。 **ls命令**: 1. **命令格式**:`ls [选项...

    Linux常用命令、Linux常用命令

    在Linux操作系统中,掌握一些常用命令对于日常的系统管理和开发工作至关重要。以下是一些关键的Linux命令及其用途的详细说明: 1. **find命令**: `find` 是Linux中最常用的搜索文件和目录的工具。它允许你在指定...

    Linux常用命令之权限管理命令

    Linux 权限管理命令详解 权限管理是 Linux 中一个...权限管理命令是 Linux 中一个非常重要的概念,它控制着用户对文件和目录的访问权限。了解和掌握权限管理命令的使用方法可以帮助用户更好地管理自己的文件和目录。

    SSH远程管理Linux常用命令文件上传下载.docx

    SSH 远程管理 Linux 常用命令文件上传下载 一、SSH 基础知识 SSH(Secure Shell)是一种安全的远程登录协议,使用加密技术来保护数据的传输。 SSH 客户端软件可以连接到 SSH 服务器,实现远程管理和文件传输。 ...

    云计算-Linux系统管理-Linux常用命令.pdf

    Linux系统管理不仅仅局限于这些基础命令,还包括文件系统管理、用户管理、进程管理、网络配置、软件安装与维护等复杂操作,但掌握这些常用命令是进行更深层次管理的前提和基础。学习Linux系统管理,可以帮助我们更...

    Linux必学的60个命令 LINUX常用命令和系统管理

    以下是关于"Linux必学的60个命令"及"Linux常用命令和系统管理"的一些核心知识点: 1. **文件目录基本操作**: - `cd`:改变当前工作目录。 - `ls`:列出目录内容。 - `mkdir`:创建新目录。 - `rm`:删除文件或...

    最全Linux常用命令大全.pdf

    以下是一些关于Linux常用命令的详细说明: 1. **pwd**:`pwd`(Print Working Directory)命令用于显示当前工作目录,即用户当前所在的目录路径。 2. **cd**:`cd`命令用于切换目录。例如,`cd /`进入根目录,`cd ...

    linux常用命令含目录操作目录,文件操作命令等等

    Linux 常用命令汇总 Linux 操作系统提供了丰富的命令行工具,帮助用户高效地管理文件、目录和权限。以下是 Linux 中常用的命令,包括目录操作命令、文件操作命令和权限操作命令。 目录操作命令 1. ls 命令:列出...

    linux简介(Linux的文件目录结构及常用命令和管理)

    1 Linux的简介、特点、当前的应用趋势 2 Linux的文件目录结构 3 Linux常用命令和管理

Global site tag (gtag.js) - Google Analytics