首页 百科知识 文件及目录操作命令

文件及目录操作命令

时间:2022-10-09 百科知识 版权反馈
【摘要】:对于每个目录,该命令将列出其中的所有子目录与文件;对于每个文件,ls将输出其文件名以及所要求的其他信息。当未给出目录名或是文件名时,就显示当前目录的信息。如果目标文件存在则会给出提示,以免覆盖已存在的目标文件。由于这个命令功能强大,所以也十分危险,假如用户是在/目录下使用带-r选项的rm命令,很有可能导致系统文件的误删除,所以应该谨慎使用。

8.2.2 文件及目录操作命令

(1)ls命令

ls命令可以列出指定目录下的文件和子目录的清单,它是用户最常用的命令之一,因为用户需要不时地查看某个目录的内容。对于每个目录,该命令将列出其中的所有子目录与文件;对于每个文件,ls将输出其文件名以及所要求的其他信息。默认情况下,输出按字母顺序排序。当未给出目录名或是文件名时,就显示当前目录的信息。ls命令的语法格式如下:

1s [选项] [文件名或目录名]

ls命令的常用选项有:

-a:列出指定目录下所有子目录与文件,包含隐藏文件。

-l:以长格式来显示文件的详细信息,包括权限、所有者、建立日期、时间、大小等。

-F:在列出的文件或目录项后加一个符号表示文件类型,如“/”表示目录,“*”表示可执行文件,“@”表示连接文件,“l”表示管道文件,没有任何标志则表示普通文件。

-R:递归处理,列出指定目录与子目录下的文件。

-m:输出按字符流格式,以逗号分隔文件名。

例如,假设用户zheng的当前目录为/home/zheng,当前目录下有文件a.txt、子目录d1及backup,使用不带任何选项的ls命令将列出当前目录下的文件或目录的名字,其结果如下所示:

$ls

a.txt  backup  d1

使用-F选项将在每个文件(目录)的后面加上表示文件类型的标记:

$ls –F

a.txt  backup/   d1/

为列出某个目录下所有的文件(包括隐藏文件),使用选项-a:

$ls –a

.   a.txt    .bash_history   .bash_profile   d1   .gtkrc

..   backup   .bash_logout   .bashrc   .emacs

使用-l选项将以长格式列出某个目录下的文件:

$ls -l

-rw-rw-r--  1  zheng zheng    6 Apr 26 14:54 a.txt

drwxrwxr-x  2  zheng zheng  4096 Apr 26 14:55 backup

drwxrwxr-x  2  zheng zheng  4096 Apr 26 15:03 d1

(2)cp命令

cp命令的功能是拷贝文件或子目录,该命令的语法格式如下所示:

cp [选项] 源文件名或目录名 目标文件名或目录名

cp命令的常用选项有:

-i:以交互方式来执行cp命令。如果目标文件存在则会给出提示,以免覆盖已存在的目标文件。cp命令认为覆盖文件是正常操作,所以命令执行时若覆盖了已存在文件将不会给出任何提示,这样不带任何选项的cp命令就有覆盖文件的危险。

-f:强制复制。若目标文件存在,则删除已存在的目标文件而不提示。使用此选项后,-i选项将不再起作用。

-r:在进行目录复制时连带整个子目录进行复制,即若给出的源文件是一个目录文件时,cp将递归复制该目录下所有的子目录和文件。

-b:若目标文件存在则先做目标文件备份,再复制文件。

在cp命令中,文件名部分可以使用通配符,如“?”匹配文件名中的单个字符、“*”匹配文件名中的任意字符串、“[ ]”匹配方括号中的任意一个字符。此外cp还可以将数个文件名各不相同的文件复制至同一个目录下,此时的命令格式为:

cp文件名1 文件名2 文件名3…  目录名

例如把用户zheng主目录下的a.txt文件复制到d1目录下,可使用命令:

$cp a.txt  d1

上面例子中使用了cp命令的最简单形式,复制源文件且不改变文件名。如果命令中的目标文件已经存在,则将覆盖目标文件而不会给出任何提示。

若要将目标文件的文件名改为newdoc,可使用以下命令:

$cp a.txt  d1/newdoc

若要将d1目录及其下的所有文件包括子目录复制到backup目录,可使用以下命令:

$cp -r d1 backup

将a.txt、d1/newdoc两个文件复制到目录/tmp下,可使用以下命令:

$cp a.txt d1/newdoc /tmp

(3)mv命令

mv命令可以完成文件或目录改名功能,也可以将文件或目录由一个位置移到另一个位置,其语法格式如下所示:

mv [选项] 源文件名或目录名 目标文件名或目录名

mv命令的常用选项有:

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

-f:强制进行改名或移动操作。在mv命令执行时,若目标文件已存在,系统将不给任何提示信息并覆盖目标文件。使用此选项后,-i选项将不再起作用。

-b:若目标文件存在则先做目标文件备份,再移动文件或为文件改名。

需要注意的是,mv命令与cp命令的功能是不同的。mv好像文件“搬家”,文件个数并没有增加,而cp命令是对文件进行复制,文件个数增加了。

例如,假设当前目录为/home/zheng/d1,该目录下有文件a.txt,现在希望将其更名为anew.txt,则可以使用以下命令:

$mv a.txt anew.txt

如果希望将文件/home/zheng/d1/anew.txt移动到目录/home/zheng下面,可使用以下命令:

$mv /home/zheng/d1/anew.txt /home/zheng

下面的命令可以将/home/zheng/d1中的所有文件移到当前目录中(当前目录用.表示):

$mv /home/zheng/d1/* .

在把某文件或子目录名字改为其他已存在文件或子目录的名字时,若要对原有文件或子目录进行备份,应使用-b选项。例如,在当前目录/home/zheng/d1下创建三个文件:

$touch flie1 flie2 file3

$ls file*

file1  file2  fite3

$mv -b file1 file2

$ls file*

file2 file2~  file3

上例说明file1已被改名为file2,但由于使用了-b选项,在mv命令完成改名操作之前已经生成了file2的备份,备份文件名由源文件名后带波浪号(~)。上例中的命令touc h可以建立一个长度为0的文件。

mv的-i选项与cp命令的该选项一样,也是起确认作用的,例如:

$mv -i file2 file3

mv:replace ‘file3’? y

在上例中,mv命令询问是否想覆盖文件file3(如果不发生覆盖,就是用了–i选项也不会产生询问)。

(4)rm

rm命令的功能是删除文件或目录,该命令的语法格式如下所示:

rm [选项] 文件名/目录名

其中文件名和目录名中可以使用通配符,这样就可以删除一个或几个文件,该命令的常用选项有:

-i:交互方式操作,它使rm在每次删除时提醒用户确认删除操作。如果使用不带任何选项的rm命令,rm将删除文件而不给出任何提示,这样很容易导致误删除。

-r:使用选项-r可以递归删除整个目录。由于这个命令功能强大,所以也十分危险,假如用户是在/目录下使用带-r选项的rm命令,很有可能导致系统文件的误删除,所以应该谨慎使用。

-f:强制删除文件或目录。使用-f选项可以使-i选项无效,也就是将不产生任何提示而删除文件。除非对要删除的内容十分清楚,否则须慎用-f选项,以免造成误删除。

例如,要删除当前目录下所有文件扩展名为txt的文件,可使用以下命令:

$rm *.txt

为保证安全,应使用rm命令的-i选项,这样在删除文件时会给出确认信息,例如:

$rm -i file*

rm: remove ‘file2’? n

rm: remove ‘file2~’? y

rm: remove ‘file3’? n

还可以使用-f选项强制删除某个文件,例如:

$rm -f new*

如果使用了-f选项但没有文件能够匹配new*格式时,rm命令失效。而当rm命令遇到子目录时,即使子目录是空的,也不进行删除操作,并且还会给出出错信息,甚至在使用了-f参数时也是如此,例如:

$rm –f temp*

rm:temp:is a directory

rm:temp2:is a direclory

当把-f和-r选项一起使用时,就可以删除目录及该目录中的所有文件和子目录(如果用户拥有删除它们的操作权限的话),如:

$rm –fr temp*

需要特别注意的是,以超级用户身份登录系统并使用rm命令可能造成灾难性后果,因为下述rm命令可能毁掉Linux系统,甚至毁掉包括DOS分区、活动硬盘等在内的任何已安装文件系统:

#rm -fr /*

该命令会从根目录开始递归地删除所有的文件和子目录。

(5)mkdir

mkdir命令的功能是创建子目录,它的语法格式是:

mkdir [选项] 目录名

例如,在当前目录下建立子目录temp,可以使用下述命令:

$mkdir temp

该命令有一个选项-p,其后的目录名可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多级目录,例如,假设在/home/zheng下建立三级目录par、ch1级ch2.使用以下命令:

$mkdir -p /home/zheng/par/ch1/ch2

(6)rmdir

rmdir命令的功能是删除目录。该命令只能删除空目录,如果要删除的目录非空,就会出现错误提示信息Directory not empty。rmdir命令的语法格式为:

rmdir [选项] 目录名称

例如,假如用户当前目录下的par/ch1/ch2目录为空,则可以键入如下命令删除此子目录:

$rmdir par/ch1/ch2

与mkdir类似,该命令也有一个-p选项,可以使用这个参数来删除指定的整个目录结构,如下所示:

$rmdir -p par/ch1

当然,只有在目录ch1为空目录,并且par目录中只包含ch1时,这条命令才能执行成功。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈