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时,这条命令才能执行成功。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。