linux常用命令 ----2

本文介绍了Linux系统中的多种文件管理命令,包括文件内容统计命令wc、文件内容比较命令comm和diff、文件复制删除移动命令cp、mv和rm、文件链接命令ln、文件创建删除命令mkdir和rmdir以及显示目录内容命令ls等。通过这些命令,用户可以高效地管理和操作文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

三、文件内容统计命令

wc命令

  wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。

  语法:wc [选项] 文件…

  说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。

  该命令各选项含义如下:

  - c 统计字节数。

  - l 统计行数。

  - w 统计字数。

  这些选项可以组合使用。

  输出列的顺序和数目不受选项的顺序和数目的影响。

  总是按下述顺序显示并且每项最多一列。

  行数、字数、字节数、文件名

  如果命令行中没有文件名,则输出中不出现文件名。

  例如:

  $ wc - lcw file1 file2

  4 33 file1

  7 52 file2

  11 11 85 total

  省略任选项-lcw,wc命令的执行结果与上面一样。

四、文件内容比较命令

这组命令可以用来比较两个文件内容的差别。

  Comm命令

  如果想对两个有序的文件进行比较,可以使用comm命令。

  语法:comm [- 123 ] file1 file2

  说明:该命令是对两个已经排好序的文件进行比较。其中file1和file2是已排序的文件。comm读取这两个文件,然后生成三列输出:仅在file1中出现的行;仅在file2中出现的行;在两个文件中都存在的行。如果文件名用“- ”,则表示从标准输入读取。

  选项1、2或3抑制相应的列显示。例如comm - 12就只显示在两个文件中都存在的行;comm - 23只显示在第一个文件中出现而未在第二个文件中出现的行;comm - 123则什么也不显示。

  例如:假设要对文件myfile1和myfile2进行比较

  $ cat myfile1

  main( )

  {

  float a,b, i, j ,z ;

  a=i=10 ; b=j=5 ;

  z= i + j ;

  printf(“z=%d////n”,z) ;

  }

  $ cat myfile2

  #include< stdio.h >

  main( )

  {

  float i, j ,z ;

  i=10 ; j=5 ;

  z= i + j ;

  printf(“z=%f////n”,z) ;

  }

  $ comm - 12 myfile1 myfile2

  main( )

  {

  z= i + j ;

  }

  就只显示文件myfile1和myfile2中共有的行。

  Diff命令

  该命令的功能为逐行比较两个文本文件,列出其不同之处。它比comm命令完成更复杂的检查。它对给出的文件进行系统的检查,并显示出两个文件中所有不同的行,不要求事先对文件进行排序。

  语法:diff [选项] file1 file2

  说明:该命令告诉用户,为了使两个文件file1和file2一致,需要修改它们的哪些行。如果用“- ”表示file1或fiie2,则表示标准输入。如果file1或file2是目录,那么diff将使用该目录中的同名文件进行比较。

  例如: diff /usr/xu mine

  把目录/usr/xu 中名为mine的文件与当前目录中的mine文件进行比较。

  通常输出由下述形式的行组成:

  n1 a n3,n4

  n1,n2 d n3

  n1,n2 c n3,n4 这些行类似ed命令把filel转换成file2。字母(a、d和c)之前的行号(n1,n2)是针对file1的,其后面的行号(n3,n4)是针对file2的。字母a、d和c分别表示附加、删除和修改操作。

  在上述形式的每一行的后面跟随受到影响的若干行,以“<”打头的行属于第一个文件,以“>”打头的行属于第二个文件。

  diff能区别块和字符设备文件以及FIFO(管道文件),不会把它们与普通文件进行比较。

  如果file1和file2都是目录,则diff会产生很多信息。

  如果一个目录中只有一个文件,则产生一条信息,指出该目录路径名和其中的文件名。

  diff各选项的含义如下:

  - b 忽略行尾的空格,而字符串中的一个或多个空格符都视为相等。

  如How are you与How are you被视为相同的字符串。

  - c 采用上下文输出格式(提供三行上下文)。

  - C n 采用上下文输出格式(提供n行上下文)。

  - e 产生一个合法的ed脚本作为输出。

  - r 当file1和file2是目录时,递归作用到各文件和目录上。

  例如,文件ml.c的内容为(左边行号是有意加上的,以便前后对照):

  1 main( )

  {

  printf(“Hello!\n”);

  }

  5 文件m2.c的内容为:

  1 main()

  2 {

  3 int n , m ;

  4 n= 10 ;

  5 printf ( “ % d //// n ” , m = n * 10);

  6 }

  输入命令:

  $ diff m1.c m2.c

  屏幕上显示:

  3,5 c 3,6

  printf(“Hello!\n”);

  }

  <5

  >3

  int n,m;

  >4 n=10 ;

  >5 printf ( “ % d //// n ” , m = n * 10);

  >6 }  

  表示把文件m1.c的3至5行改成m2.c的3至6行后,两个文件相同。

五、文件复制、删除、移动命令

cp命令

  该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,就如同DOS下的copy命令一样,功能非常强大。

  语法: cp [选项] 源文件或目录 目标文件或目录

  说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。

  该命令的各选项含义如下:

  - a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。

  - d 拷贝时保留链接。

  - f 删除已经存在的目标文件而不提示。

  - i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。

  - p 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。

  - r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。

  - l 不作拷贝,只是链接文件。

  需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名是一个已存在的文件名,用cp命令拷贝文件后,这个文件就会被新拷贝的源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用i选项。

  $ cp - i exam1.c /usr/wang/shiyan1.c

  该命令将文件exam1.c拷贝到/usr/wang 这个目录下,并改名为 shiyan1.c。若不希望重新命名,可以使用下面的命令:

  $ cp exam1.c /usr/ wang/

  $ cp - r /usr/xu/ /usr/liu/ 将/usr/xu目录中的所有文件及其子目录拷贝到目录/usr/liu中。

  mv命令

  用户可以使用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中。该命令如同DOS下的ren和move的组合。

  语法:mv [选项] 源文件或目录 目标文件或目录

   说明:视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称 时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件 的链接也将丢失。

  命令中各选项的含义为:

  - I 交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答y或n,这样可以避免误覆盖文件。

  - f 禁止交互操作。在mv操作要覆盖某已有的目标文件时不给任何指示,指定此选项后,i选项将不再起作用。

  如果所给目标文件(不是目录)已存在,此时该文件的内容将被新文件覆盖。为防止用户在不经意的情况下用mv命令破坏另一个文件,建议用户在使用mv命令移动文件时,最好使用i选项。

  需要注意的是,mv与cp的结果不同。mv好象文件“搬家”,文件个数并末增加,而cp对文件进行复制,文件个数增加了。

  例1:将/usr/xu中的所有文件移到当前目录(用“.”表示)中:

  $ mv /usr/xu/ * .

  例2:将文件wch.txt重命名为wjz.doc

  $ mv wch.txt wjz.doc

  rm命令

  在linux中创建文件很容易,系统中随时会有文件变得过时且毫无用处。用户可以用rm命令将其删除。该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。

  rm命令的一般形式为:

  rm [选项] 文件…

  如果没有使用- r选项,则rm不会删除目录。

  该命令的各选项含义如下:

  - f 忽略不存在的文件,从不给出提示。

  - r 指示rm将参数中列出的全部目录和子目录均递归地删除。

  - i 进行交互式删除。

   使用rm命令要格外小心。因为一旦一个文件被删除,它是不能被恢复的。例如,用户在输入cp,mv或其他命令时,不小心误输入了rm命令,当用户按了回 车键并认识到自己的错误时,已经太晚了,文件已经没有了。为了防止此种情况的发生,可以使用rm命令中的 i选项来确认要删除的每个文件。如果用户输入y,文件将被删除。如果输入任何其他东西,文件将被保留。在下一个例子中,用户要删除文件test和 example。然后会被要求对每个文件进行确认。用户最终决定删除example文件,保留test文件。

  $ rm - ii test example Remove test ?n

  Remove example ?y

六、文件链接命令

ln命令

   该命令在文件之间创建链接。这种操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称。对于这个新的文件名,我们可以为之指定不同的访问 权限,以控制对信息的共享和安全性的问题。 如果链接指向目录,用户就可以利用该链接直接进入被链接的目录而不用打一大堆的路径名。而且,即使我们删除这个链接,也不会破坏原来的目录。

  语法:ln [选项] 目标 [链接名]

  ln [选项] 目标 目录

   链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。而对符号链接,则不存在这个问题。默认情况 下,ln产生硬链接。

  在硬链接的情况下,参数中的“目标”被链接至[链接名]。如果 [链接名]是一个目录名,系统将在该目录之下建立一个或多个与“目标”同名的链接文件,链接文件和被链接文件的内容完全相同。如果[链接名]为一个文件, 用户将被告知该文件已存在且不进行链接。如果指定了多个“目标”参数,那么最后一个参数必须为目录。

   如果给ln命令加上- s选项,则建立符号链接。如果[链接名]已经存在但不是目录,将不做链接。[链接名]可以是任何一个文件名(可包含路径),也可以是一个目录,并且允许它 与“目标”不在同一个文件系统中。如果[链接名]是一个已经存在的目录,系统将在该目录下建立一个或多个与“目标”同名的文件,此新建的文件实际上是指向 原“目标”的符号链接文件。

  例:$ ln - s lunch /home/xu

  用户为当前目录下的文件lunch创建了一个符号链接/home/xu。

七、文件创建和删除命令

mkdir命令

  功能:创建一个目录(类似DOS下的md命令)。

  语法:mkdir [选项] dirname

  说明:该命令创建由dirname命名的目录。要求创建目录的用户在当前目录中 (dirname的父目录中)具有写权限,并且dirname不能是当前目录中已有的目录或 文件名称。

  命令中各选项的含义为:

  - m 对新建目录设置存取权限。也可以用chmod命令设置。

  - p 可以是一个路径名称。此时若路径中的某些目录尚不存在, 加上此选项后, 系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。

  例如:在当前目录中建立inin 和inin下的/mail目录,也就是连续建两个目录。

  $ mkdir - p - m 700 ./inin/mail/

  该命令的执行结果是在当前目录中创建嵌套的目录层次inin /mail,权限设置为只 有文件主有读、写和执行权限。

  rmdir 命令

  功能:删除空目录。

  语法:rmdir [选项] dirname

  说明:dirname表示目录名。该命令从一个目录中删除一个或多个子目录项。需要 特别注意的是,一个目录被删除之前必须是空的。(注意,rm - r dir命令可代替 rmdir,但是有很大危险性。)删除某目录时也必须具有对父目录的写权限。

  命令中各选项的含义为:

  - p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应 的信息。

  例如:

  $ rmdir - p /usr/xu/txt 将/usr/xu/txt目录删除。

  改变工作目录、显示目录内容命令

  cd 命令

  功能:改变工作目录。

  语法:cd [directory]

  说明:该命令将当前目录改变至directory所指定的目录。若没有指定directory, 则回到用户的主目录。为了改变到指定目录,用户必须拥有对指定目录的执行和读 权限。

  该命令可以使用通配符(通配符含义请参见第十章)。

  例如:假设用户当前目录是:/home/xu,现需要更换到/home/xu/pro目录中,

  $ cd pro 此时,用户可以执行pwd命令来显示工作目录。

  $ pwd /home/xu/pro

  pwd 命令

  在Linux层次目录结构中,用户可以在被授权的任意目录下利用mkdir命令创建新目录,也可以利用cd命令从一个目录转换到另一个目录。然而,没有提示符来告知用 户目前处于哪一个目录中。要想知道当前所处的目录,可以使用pwd命令,该命令显示整个路径名。

  语法:pwd

  说明:此命令显示出当前工作目录的绝对路径。

  例:

  $ pwd /home/xu 显示的路径名为/home/xu,每个目录名都用“/”隔开,根目录以开头的“/”表 示。

  ls 命令

  ls是英文单词list的简写,其功能为列出目录的内容。这是用户最常用的一个命令之一,因为用户需要不时地查看某个目录的内容。该命令类似于DOS下的dir命令。

  语法:ls [选项] [目录或是文件]

  对于每个目录,该命令将列出其中的所有子目录与文件。对于每个文件,ls将输出 其文件名以及所要求的其他信息。默认情况下,输出条目按字母顺序排序。当未给出目录名或是文件名时,就显示当前目录的信息。

  命令中各选项的含义如下:

  - a 显示指定目录下所有子目录与文件,包括隐藏文件。

  - A 显示指定目录下所有子目录与文件,包括隐藏文件。但不列出“.”和 “..”。

  - b 对文件名中的不可显示字符用八进制逃逸字符显示。

  - c 按文件的修改时间排序。

  - C 分成多列显示各项。

  - d 如果参数是目录,只显示其名称而不显示其下的各文件。往往与l选项一起使 用,以得到目录的详细信息。

  - f 不排序。该选项将使lts选项失效,并使aU选项有效。

  - F 在目录名后面标记“/”,可执行文件后面标记“*”,符号链接后面标记 “@”,管道(或FIFO)后面标记“|”,socket文件后面标记“=”。

  - i 在输出的第一列显示文件的i节点号。

  - l 以长格式来显示文件的详细信息。这个选项最常用。

  每行列出的信息依次是: 文件类型与权限 链接数 文件属主 文件属组 文件大小 建立或最近修改的时间 名字

  对于符号链接文件,显示的文件名之后有“—〉”和引用文件路径名。

  对于设备文件,其“文件大小”字段显示主、次设备号,而不是文件大小。

  目录中的总块数显示在长格式列表的开头,其中包含间接块。

  - L 若指定的名称为一个符号链接文件,则显示链接所指向的文件。

  - m 输出按字符流格式,文件跨页显示,以逗号分开。

  - n 输出格式与l选项相同,只不过在输出中文件属主和属组是用相应的UID号和 GID号来表示,而不是实际的名称。

  - o 与l选项相同,只是不显示拥有者信息。

  - p 在目录后面加一个“/”。

  - q 将文件名中的不可显示字符用“?”代替。

  - r 按字母逆序或最早优先的顺序显示输出结果。

  - R 递归式地显示指定目录的各个子目录中的文件。

  - s 给出每个目录项所用的块数,包括间接块。

  - t 显示时按修改时间(最近优先)而不是按名字排序。若文件修改时间相同,则 按字典顺序。修改时间取决于是否使用了c或u选顶。缺省的时间标记是最后一次修 改时间。

  - u 显示时按文件上次存取的时间(最近优先)而不是按名字排序。即将-t的时间 标记修改为最后一次访问的时间。

  - x 按行显示出各排序项的信息。

  用ls - l命令显示的信息中,开头是由10个字符构成的字符串,其中第一个字符表示文件类型,它可以是下述类型之一:

  - 普通文件

  d 目录

  l 符号链接

  b 块设备文件

  c 字符设备文件

  后面的9个字符表示文件的访问权限,分为3组,每组3位。

  第一组表示文件属主的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字 符分别表示对文件的读、写和执行权限。

  各权限如下所示:

  r 读

  w 写

  x 执行。对于目录,表示进入权限。

  s 当文件被执行时,把该文件的UID或GID赋予执行进程的UID(用户ID)或GID(组 ID)。

  t 设置标志位(留在内存,不被换出)。如果该文件是目录,在该目录中的文件只能被超级用户、目录拥有者或文件属主删除。如果它是可执行文件,在该文件执行 后,指向其正文段的指针仍留在内存。这样再次执行它时,系统就能更快地装入该文件。

  - 没有设置权限。

  例1:列出当前目录的内容。

  $ ls

  -F bin/ lib/ var/

  etc/ tmp/ index. html

  例2:列出某个目录的内容。

  $ ls –F /home/xu Mai1/

  map1e/ mm/ ptr/ telnetd*

  fd/ mbox mount sobsrc. tgz tmp/

  例3:列出某个目录下所有的文件(包括隐藏文件)。

  $ 1s -aF /home/xu

  ./ . .e1m/ .netscape/ map1e ptr/

  ../ .fvwin2rc95 .term/ mbox sobsrc. tgz

  .Xauthority .kermrc Mai1/ mm/ te1netd*

  .bash-history .ncftp/ fd/ mount tmp/

  例4:用长格式列出某个目录下所有的文件(包括隐藏文件)。

  $ 1s -laF /home/xu

  total 584

  drwxr-xr-x l2 root root 1024 Nov 02 22:07 ./

  drwxr-xr-x 15 bbs bbs 1024 Jul 29 07:08 ../

  -rw-r--r-- 1 yu users 4343 Ju1 29 22:20 .bash-history

  drwx------ 2 yu users 1024 May 17 06:36 .e1m/

  --rw------ 1 root root 4628 Jun 2 1l:34 mbox

  lrwxrwxrwx 1 root root l4 Ju1 29 03:08 mount->/mnt

  drwxrwxr-x 4 root root 1024 Ju1 23 03:43 ptr/

  -rw--r--r- 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz

  -rwxr-xr-x l root users 60177 Jun 8 01:29 telnetd*

  drwxr-xr-x 2 root root 1024 Mar 6 22:32 tmp/  

  例5:用长格式列出某个目录下所有的文件包括隐藏文件和它们的i节点号。并把文 件属主和属组以UID号和GID号的形式显示。

  $ 1s -1ainF /home/xu tota1 584 399672

  drwxr-xr-x l2 0 0 l024 Nov 30 22:07 ./ 333907

  drwxr-xr-x 15 9999 99 l024  Ju1 29 07:08 ../ 39980l

  -rw------- l 0 0 0 Jun 2 2:09 .Xauthority 399679

  -rw-r--r-- 1 505 l00 4343 Jul 29 22:20 .bash-hist0ry 30l763

  drwxr----- 2 505 100 l024  May 17 06:36 .e1m/ ……


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值