谈了谈目录与路径之后,再来讨论一下关于文件的一些基本管理吧!文件与目录的管理上,不外乎“显示属性”、 “拷贝”、“删除文件”及“移动文件或目录”等等,由于文件与目录的管理在 Linux 当中是很重要的, 尤其是每个人自己主文件夹的数据也都需要注意管理!所以我们来谈一谈有关文件与目录的一些基础管理部分吧!
6.2.1 文件与目录的检视: ls
[root@study ~]# ls [-aAdfFhilnrRSt] 文件名或目录名称..[root@study ~]# ls [--color={never,auto,always}] 文件名或目录名称..[root@study ~]# ls [--full-time] 文件名或目录名称..选项与参数:-a:全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)-A:全部的文件,连同隐藏文件,但不包括.与..这两个目录-d:仅列出目录本身,而不是列出目录内的文件数据(常用)-f:直接列出结果,而不进行排序(ls默认会以文件名排序!)-F:根据文件、目录等信息,给予附加数据结构,例如:*:代表可可执行文件;/:代表目录;=:代表socket文件;|:代表 FIFO 文件;-h:将文件大小以人类较易读的方式(例如GB,KB等等)列出来;-i:列出inode号码,inode的意义下一章将会介绍;-l:长数据串行出,包含文件的属性与权限等等数据;(常用)-n:列出UID与GID而非使用者与群组的名称(UID与GID会在帐号管理提到!)-r:将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小;-R:连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来;-S:以文件大小大小排序,而不是用文件名排序;-t:依时间排序,而不是用文件名。--color=never:不要依据文件特性给予颜色显示;--color=always:显示颜色--color=auto:让系统自行依据设置来判断是否给予颜色--full-time:以完整时间模式(包含年、月、日、时、分)输出--time={atime,ctime}:输出access时间或改变权限属性时间(ctime)而非内容变更时间(modificationtime)
在Linux系统当中,这个 ls 指令可能是最常被执行的吧!因为我们随时都要知道文件或者是目录的相关信息啊~ 不过,我们Linux的文件所记录的信息实在是太多了,ls 没有需要全部都列出来呢~ 所以,当你只有下达 ls 时,默认显示的只有:非隐藏文件的文件名、 以文件名进行排序及文件名代表的颜色显示如此而已。举例来说, 你下达“ ls /etc ”之后,只有经过排序的文件名以及以蓝色显示目录及白色显示一般文件,如此而已。
那如果我还想要加入其他的显示信息时,可以加入上头提到的那些有用的选项呢~ 举例来说,我们之前一直用到的 -l 这个长串显示数据内容,以及将隐藏文件也一起列示出来的 -a 选项等等。 下面则是一些常用的范例,实际试做看看:
范例一:将主文件夹下的所有文件列出来(含属性与隐藏文件)[root@study ~]# ls -al ~total56dr-xr-x---.5rootroot4096Jun419:49.dr-xr-xr-x.17rootroot4096May417:56..-rw-------.1rootroot1816May417:57anaconda-ks.cfg-rw-------.1rootroot6798Jun419:53.bash_history-rw-r--r--.1rootroot18Dec292013.bash_logout-rw-r--r--.1rootroot176Dec292013.bash_profile-rw-rw-rw-.1rootroot176Dec292013.bashrc-rw-r--r--.1rootroot176Jun300:04.bashrc_testdrwx------.4rootroot29May600:14.cachedrwxr-xr-x.3rootroot17May600:14.config# 这个时候你会看到以 . 为开头的几个文件,以及目录档 (.) (..) .config 等等,# 不过,目录档文件名都是以深蓝色显示,有点不容易看清楚就是了。范例二:承上题,不显示颜色,但在文件名末显示出该文件名代表的类型(type)[root@study ~]# ls -alF --color=never~total56dr-xr-x---.5rootroot4096Jun419:49./dr-xr-xr-x.17rootroot4096May417:56../-rw-------.1rootroot1816May417:57anaconda-ks.cfg-rw-------.1rootroot6798Jun419:53.bash_history-rw-r--r--.1rootroot18Dec292013.bash_logout-rw-r--r--.1rootroot176Dec292013.bash_profile-rw-rw-rw-.1rootroot176Dec292013.bashrc-rw-r--r--.1rootroot176Jun300:04.bashrc_testdrwx------.4rootroot29May600:14.cache/drwxr-xr-x.3rootroot17May600:14.config/# 注意看到显示结果的第一行,嘿嘿~知道为何我们会下达类似 ./command# 之类的指令了吧?因为 ./ 代表的是“目前目录下”的意思啊!至于什么是 FIFO/Socket ?# 请参考前一章节的介绍啊!另外,那个.bashrc 时间仅写2013,能否知道详细时间?范例三:完整的呈现文件的修改时间(modificationtime)[root@study ~]# ls -al --full-time ~total56dr-xr-x---.5rootroot40962015-06-0419:49:54.520684829+0800.dr-xr-xr-x.17rootroot40962015-05-0417:56:38.888000000+0800..-rw-------.1rootroot18162015-05-0417:57:02.326000000+0800anaconda-ks.cfg-rw-------.1rootroot67982015-06-0419:53:41.451684829+0800.bash_history-rw-r--r--.1rootroot182013-12-2910:26:31.000000000+0800.bash_logout-rw-r--r--.1rootroot1762013-12-2910:26:31.000000000+0800.bash_profile-rw-rw-rw-.1rootroot1762013-12-2910:26:31.000000000+0800.bashrc-rw-r--r--.1rootroot1762015-06-0300:04:16.916684829+0800.bashrc_testdrwx------.4rootroot292015-05-0600:14:56.960764950+0800.cachedrwxr-xr-x.3rootroot172015-05-0600:14:56.975764950+0800.config# 请仔细看,上面的“时间”字段变了喔!变成较为完整的格式。# 一般来说, ls -al 仅列出目前短格式的时间,有时不会列出年份,# 借由 --full-time 可以查阅到比较正确的完整时间格式啊!
其实 ls 的用法还有很多,包括查阅文件所在 i-node 号码的 ls -i 选项,以及用来进行文件排序的 -S 选项,还有用来查阅不同时间的动作的 --time=atime 等选项(更多时间说明请参考本章后面[touch]的说明)。而这些选项的存在都是因为 Linux 文件系统记录了很多有用的信息的缘故。那么 Linux 的文件系统中,这些与权限、属性有关的数据放在哪里呢? 放在 i-node 里面。关于这部分,我们会在下一章继续为你作比较深入的介绍啊!
无论如何, ls 最常被使用到的功能还是那个 -l 的选项,为此,很多 distribution 在默认的情况中, 已经将 ll (L 的小写) 设置成为 ls -l 的意思了!其实,那个功能是 [Bash shell] 的 [alias] 功能呢~也就是说,我们直接输入 ll 就等于是输入 ls -l 是一样的~关于这部分,我们会在后续 bash shell 时再次的强调滴~