本文主要介绍处理目录的常用命令,并且对每个命令及参数一一举例说明。
处理目录的常见命令有:
·ls list,列出指定目录下的内容
·cd Change Directory,更改目录
·pwd Print Working Directory,查看当前工作目录的完整的绝对路径
·mkdir Make Directory,创建空目录
·rmdir Remove Directory,移除空目录
·cp Copy,复制;遵从一个文件到另一个文件,多个文件到一个目录的原则
·rm Remove,移除文件和目录
·ls命令:
在Linux系统中,ls是很常用的命令,也是最基本的命令。缺省情况下ls打印出指定目录下的文件和目录的清单。而 且还可以显示文件和目录的权限,用户、组、日期、时间等信息。
例如:
命令格式:
# ls [-aAdfFhilnrRSt] 目录名称
# ls [--color={never,auto,always}] 目录名称
# ls [--full-time] 目录名称
常用参数:
-a:显示所有文件和目录,包括隐藏文件、目录、.和..(常用)
例如:
-A:显示除.和..这两个目录的所有文件和目录
例如:
-d:仅列出目录本身,不列出此目录内的文件和目录等数据(常用)
例如:
-f:直接列出目录内所有数据,不进行排序(ls预设以文件名排序)
-F:根据文件和目录等信息,给予附加数据结构;其中,*:代表可执行文件;/:代表目录;=:代表socket文件;|:代表FIFO文件
例如:
-h:将文件和目录的容量以易读的方式(例如:GB,MB,KB等)列出,通常与 -l 配合使用
例如:
-i:列出inode号码
-l:长数据串列出,包括权限,用户、组、日期、时间等信息
例如:
-n:列出UID和GID,非用户名和组名
例如:
-r:将排序结果反向输出
例如:
-R:列出连同子目录内容所有内容,即该目录下的所有文件全部列出
例如:
-S:以文件容量大小排序,而不是以文件名排序
例如:
-t:以时间排序,而不是以文件名排序
例如:
--color=never:不根据文件特性给予颜色显示
--color=always:显示颜色
--color=auto:让系统自行根据设定来判断是否给予颜色显示
--full-time:以完整时间模式输出(年、月、日、时、分)
--time={atime,ctime}:输出access时间或改变权限属性时间(ctime),而非内容变更时间(modification time)
·cd命令:
cd命令在linux中是最基本、最常见、也是必须要掌握的命令,因为其他命令语句的操作以及目录替换都是建立在cd命令的基础上,所以掌握好cd命令的使用技巧对于一名运维人员里说是非常重要的。
例如:
功能特性:
切换当前目录至指定目录
命令格式:
# cd [/PATH/TO/SOMEDIR]
常用范例:
# cd,cd ~:切换至当前用户的家目录
例如:
# cd /:切换至根目录
例如:
# cd ..:切换至当前目录的上一级目录
例如:
# cd ~USERNAME:切换指定用户的家目录
例如:
# cd -:在上一次目录与当前目录之前来回切换的命令
例如:
# cd !$:将上一个cd命令的参数作为本次cd命令的参数使用
例如:
·pwd命令:
pwd命令用来查看当前工作目录的完整的绝对路径。如果不清楚当前终端所处的工作目录时,可使用此命令来了解详细的路径位置。
功能特性:
查看当前目录的完整路径
命令格式:
# pwd [OPTION]...
常用参数:
一般情况下不带任何参数,除非查看链接文件的实际路径时,加选项 -P
常用范例:
范例一:查看当前目录的完整路径
范例二:显示实际工作目录,而非链接文件本身的目录名
我们列出/etc/ec0.d看看是什么文件类型,见下图。它是一个链接文件,原始路径为/etc/rc.d/rc0.d
所以,加上-P选项就会显示链接文件目录的原始路径,而并非链接本身的路径
范例三:当我们使用命令 /bin/pwd 时,链接文件显示的反而是原始路径,跟范例二是相反的;如果是
加上-P ,同样显示原始路径;加上-L,则显示链接文件的路径
·mkdir命令:
mkdir命令用来创建指定名称单个或多个空目录,并且用户对此目录具有写权限。
例1:创建一个空目录
例2:在/tmp/test目录下创建多个子目录
功能特性:
创建空目录
命令格式:
# mkdir [-mpv] 目录名称
常用参数:
-m:配置文件的权限,直接设定,无视预设权限umask
例如:在/tmp 目录下创建一个test1目录和指定一个777权限的test2的目录
说明:如果不加-m参数,创建的test1目录默认的权限为755(rwxr-xr-x),而加了-m 777参数后,权限为
777(rwxrwxrwx)
-p:创建的目录如果不存在,则会直接将所需要的目录逐一递归创建。这个选项不建议常用,避免错字多无用目录。
例如:
-v:显示详细的创建目录时的信息
例如:在/tmp 目录下创建 /test4/test5/test6/test7
如果我们需要批量创建目录,且路径不尽相同,那么该如何创建呢?一个一个命令的去敲当然可以,但是这样就显得非常繁琐且效率不高,那么我们应该采用什么方式能够用一条命令就创建呢?
这里就需要用掉命令行的展开 {}。
{}:可以承载一个以逗号分隔的路径列表,并能够将其展开为多个路径
例1:在/tmp 目录下创建一个名为 x 的目录,x目录下创建y1、y2目录,y1目录下创建a、b目录
命令:# mkdir -pv /tmp/x/{y1/{a,b},y2}
例2:在/tmp 目录下创建a_c,a_d,b_c,b_d目录
命令:# mkdir -v /tmp/{a,b}_{c,d}
例3:在/tmp 目录下创建一个目录mytest,在mytest目录下创建
/bin
/sbin
/etc
/etc/sysconfg
/etc/sysconfg/network-scripts
/usr
/usr/bin
/usr/sbin
/usr/local
/usr/local/bin
/usr/local/sbin
/usr/local/etc
/usr/local/lib
/usr/lib
/usr/lib64
/var
/var/cache
/var/log
/var/run
命令:mkdir -pv /tmp/mysysroot/{bin,sbin,etc/sysconfg/network-scripts,usr/{bin,sbin,local/{bin,sbin,etc,lib},lib,lib64},var/{cache,log,run}}
·rmdir命令:
rmdir命令也是linux中最基本的命令。该命令的主要用来删除空目录,删除之前用户必须具有父目录的写权限
功能特性:
从一个目录中删除单个或多个子空目录项
命令格式:
# rmdir [-p] 目录名称
常用参数:
-p:递归删除空目录。当子目录删除后其父目录如果为空则一并删除
-v:显示命令的执行过程
例如:
注意:rmdir命令仅能删除空目录,如果目录里存在文件,则无法用rmdir命令删除之
·cp命令:
cp,copy,复制,此命令是linux系统中需要熟练掌握的命令。遵从一个文件到另一个文件,多个文件到一个目录的原则
功能特性:
将源文件复制至目标文件,或将多个源文件复制至目标目录
命令格式:
# cp [-adfilprsu] 源文件(source) 目标文件(destination)
# cp [option] source1 source2 source3 ... 目录
例如:
常用参数:
-a:相当于-pdr的意思,至于pdr请参考以下参数说明(常用)
例如:
-f:force,为强制的意思,若目标文件已经存在且无法开启,则移除后再尝试一次
-i:若目标文件(destination)已经存在时,在覆盖时会提醒用户是否需要覆盖(常用)
例1:以root用户,将家目录下的.bashrc复制到/tmp下,并更名为bashrc,操作两次,第二次加-i选项
注意:加上-i之后,询问用户是否覆盖,y为覆盖,n为不覆盖
例2:复制/var/log/wtmp至/tmp目录下,并对比wtmp文件的属性
注意:在不加任何选项的情况下,文件的部分属性、时间、权限会改变;这个特性很重要。如果要将源文件
的所有属性一起复制过来就加 -a 选项,如:
-p:连同档案的属性一起复制过去,而非使用默认属性(备份常用)
例如:
-r:递归持续复制,用于目录的复制行为(常用)
例如:将/etc/ 目录下的所有内容复制到/tmp下
注意:-r可以递归复制文件和目录,但是文件和目录的权限等属性会改变,所以,也可以利用 -a 选项
-l:进行硬式链接文件的建立,而非复制文件本身。
-s:复制成为符号链接文件,相当于windows中的快捷方式
例如:
-d:若来源文件为链接文件,则复制链接文件的属性而非文件本身;若未加此选项,则复制的是源文件
例如:
-u:若目标文件(destination)比源文件(source)旧才更新目标文件(备份常用)
例如:若~/.bashrc 比 /tmp/bashrc新才复制过来,即源文件和目标文件有差异时才复制
注意1:若源文件有两个以上,则最后一个目的文件一定要是目录才可以
注意2:cp命令如果未带任何参数,则只能复制文件,而不能复制目录
·rm命令:
rm命令是linux中常用命令。此命令可以删除指定目录下的单个或多个文件、目录。对于链接文件,只删除链接文件本身,而不会删除链接文件的源文件。
功能特性:
删除指定目录下的单个或多个文件和目录,如果未加-r,则可删文件而不能删除目录。
命令格式:
# rm [-firv] 文件或目录
常用参数:
-f:force;忽略不存在的文件,不会出现警告信息提醒用户
例如:
-i:交互式删除,在删除前会询问用户是否删除
例如:
-r:递归删除,将目录和子目录包括文件等全部删除,这是非常危险的操作。
例如:删除/tmp目录下的sysconfig目录
mkdir命令无法删除dirname目录,因为此目录非空
root用户下预设了"rm -i"的别名为rm,所有需要一直按y删除,这是一种保护动作。
如果不想按y,则可以加一个\,但是则个是危险操作,要慎重使用
注意:如果将加上-f选项,同样不会提示是否删除,这也是一个非常危险的操作。
如 # rm -rm /* ,如果使用这个命令删除,那么你的系统基本上就报销了,所以此命令使用时一定要慎重
扩展使用rm命令
1、如果要批量删除某个字段开头的文件,可使用通配符 * ,* 代表任意字符
例如:删除/tmp 目录下a打头的文件
2、删除相同后缀名文件,可与通配符 [] 来配合
例如:删除/tmp 目录下的 1.log, 2.log, 3.log 这三个文件
3、如果是特殊字符如 - 开头的文件,要用特殊方式来进行删除操作
例如:删除/tmp 目录下 以 -f 打头的文件
注意:用命令 # touch --ff- 无法创建,因为系统认为 --ff-是一个参数。所以需要加上 "./ " ," . "
代表的是当前目录。同理,删除--ff-文件时,也需要在前面加上"./ "