今天我就来介绍一下linux的目录管理
linux的目录结构:
    在linux中,所有的目录都是由根目录开始的,其他目录和文件都是由根目录衍生出来的,再一个一个分支下来,就形成的倒置的树状结构。所有的目录和文件都是严格区分大小写的。
 
一些目录的表示:
/  根目录
~  用户家目录
.  当前目录
.. 当前目录的上级目录
 
相对路径与绝对路径
相对路径:是以当前所处的位置开始
绝对路径:是从根开始
    
我们在用户家目录下使用ls -a ,会出现一些以"."开头的文件。这些以"."开头的文件表示的是隐藏文件。
 
为了规范文件放置的目录,就出现了所谓的Filesystem Hierarchy Standard(FHS)标准。根据FHS的官方文件指出,其主要目的是希望让用户可以了解到已安装软件通常放置于哪个目录下,所以也希望独立的软件开发商、操作系统的制作者以及想要维护系统的用户,都能够遵循FHS的标准。FHS的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。
 
我们来看一下常见的一级目录:
 
 
  
  1. [root@www ~]# ls / 
  2. bin   dev  home  lost+found  misc  mydata  opt   root  selinux  sys  usr 
  3. boot  etc  lib   media       mnt   net     proc  sbin  srv      tmp  var 
/bin:放置的是二进制命令
/sbin:存放的是管理类命令
/boot:引导目录,放置开机会使用到的文件,包括Linux内核文件以及开机菜单与开机所需要的配置文件。
/dev:设备文件目录,特殊文件目录
/etc:配置文件目录
/home:普通用户家目录,对于root用户其家目录为/root
/lib:库文件(被其他程序/bin,/sbin所调用)
/media,/mnt:额外文件系统的挂载目录,就是用来与根目录关联起来的过程。
/misc:备用目录
/opt:可选目录,第三方软件安装目录
/proc:伪目录,内核映射  (可以和内核打交道)
/srv:服务器使用过程中产生的临时目录
/sys:内核中硬件信息的映射
/tmp:临时文件目录 (每隔30天清理一次)
/usr:第三方软件,而外管理信息,帮助文件
/var:用户的邮件队列,打印队列,临时的缓冲地址。经常发生变化。
--------------------------------------------------------------
命令的使用格式:
#command [options] [arguments]
options:转换命令执行方式
 
-------------------------
 
切换目录的命令:cd (change directory)
cd :切换回当前用户的家目录
cd ~:同上
cd ~用户名:进入该用户的家目录
cd .. :切换到当前目录的上级目录
cd ../.. :切换到当前目录的上级目录的上级目录
cd - :与上一个目录之间进行切换
 
显示当前目录:pwd (printing working directory)
 
例子:
 
 
  
  1. [root@www ~]# pwd 
  2. /root 
  3. [root@www ~]# cd /etc/sysconfig 
  4. [root@www sysconfig]# pwd 
  5. /etc/sysconfig 
  6. [root@www sysconfig]# cd .. 
  7. [root@www etc]# cd - 
  8. /etc/sysconfig 
  9. [root@www sysconfig]# cd ../.. 
  10. [root@www /]# pwd 
  11. [root@www /]# cd  
  12. [root@www ~]# pwd 
  13. /root 
  14. [root@www ~]# cd ~ 
  15. [root@www ~]# pwd 
  16. /root 
  17. [root@www ~]# 
-------------------------------------------------
ls:显示文件的文件名与相关属性
  -l :显示详细信息
  -a :全部信息
  -h :以人们易读的方式显示
  -A :不显示"."和".."
  -d :只显示目录自身的属性,而不是目录中文件和子目录
  -r :逆序显示
  -R :递归显示
 
例如:
 
 
  
  1. [root@www ~]# ls -al / 
  2. total 162 
  3. drwxr-xr-x  24 root root  4096 Sep 27 15:57 . 
  4. drwxr-xr-x  24 root root  4096 Sep 27 15:57 .. 
  5. -rw-r--r--   1 root root     0 Sep 27 12:47 .autofsck 
  6. drwxr-xr-x   2 root root  4096 Sep 27 14:01 bin 
  7. drwxr-xr-x   4 root root  1024 Aug 25 23:55 boot 
  8. drwxr-xr-x  13 root root  4100 Sep 27 19:48 dev 
  9. drwxr-xr-x  92 root root 12288 Sep 27 19:55 etc 
  10. drwxr-xr-x   7 root root  4096 Sep 27 17:39 home 
  11. drwxr-xr-x  13 root root  4096 Sep 27 14:35 lib 
  12. drwx------   2 root root 16384 Aug 26 07:32 lost+found 
  13. drwxr-xr-x   2 root root  4096 Aug  8  2008 media 
  14. drwxr-xr-x   2 root root     0 Sep 27 12:48 misc 
  15. drwxr-xr-x   2 root root  4096 Aug  8  2008 mnt 
  16. drwxr-xr-x   4 root root  4096 Sep 27 16:00 mydata 
  17. drwxr-xr-x   2 root root     0 Sep 27 12:48 net 
  18. drwxr-xr-x   2 root root  4096 Aug  8  2008 opt 
  19. dr-xr-xr-x 238 root root     0 Sep 27 12:46 proc 
  20. drwxr-x---  18 root root  4096 Oct 13 11:38 root 
  21. drwxr-xr-x   2 root root 12288 Sep 27 14:01 sbin 
  22. drwxr-xr-x   4 root root     0 Sep 27 12:46 selinux 
  23. drwxr-xr-x   2 root root  4096 Aug  8  2008 srv 
  24. drwxr-xr-x  11 root root     0 Sep 27 12:46 sys 
  25. drwxrwxrwt   8 root root  4096 Oct 13 10:31 tmp 
  26. drwxr-xr-x  18 root root  4096 Sep 27 17:53 usr 
  27. drwxr-xr-x  22 root root  4096 Sep 27 14:51 var 
------------------------------------------------
创建目录:mkdir
mkdir 目录名
     -p 如果父目录不存在,则先创建父目录
     -v 显示创建过程
例:
 
  
  1. [root@www ~]# mkdir /knight/test 
  2. mkdir: cannot create directory `/knight/test': No such file or directory 
/knight不存在,要想创建/knight/test,你可以先创建/knight,在创建test目录,否则就需要加上选项了。
例如:
 
 
  
  1. [root@www ~]# mkdir -pv /knight/test 
  2. mkdir: created directory `/knight' 
  3. mkdir: created directory `/knight/test' 
也可以同时创建多个目录
例如:
 
 
  
  1. [root@www ~]# mkdir a b c d 
  2. [root@www ~]# ls 
  3. a                c        install.log         nginx 
  4. anaconda-ks.cfg  d        install.log.syslog  test.txt 
  5. b                Desktop  
 
删除目录
rmdir 目录名,只能删除空目录
例:
 
 
  
  1. [root@www ~]# rmdir /knight/test/ 
 
移动目录或文件,重命名
mv 源文件 目标文件
例如:
 
 
  
  1. [root@www ~]# mv a b c d 
  2. [root@www ~]# ls 
  3. anaconda-ks.cfg  install.log         nginx 
  4. d                install.log.syslog  test.txt 
  5. Desktop  
我们可以进入到d目录中看一下
 
 
  
  1. [root@www ~]# cd d 
  2. [root@www d]# ls 
  3. a  b  c 
mv命令也可以重命名
例如:
 
 
  
  1. [root@www ~]# mv d test 
  2. [root@www ~]# ls 
  3. anaconda-ks.cfg  install.log.syslog  test 
  4. Desktop          mbox                test.txt 
  5. install.log      nginx    
我把d目录改名为test了。
 
-------------------------------------------
当你使用ls -l时,你会看到第一位有的是"-",有的是"d",有的是"l"等。那这些究竟表示什么?这些表示的是文件的类型。
文件的类型:
1普通文件 (-)
2目录文件 (d)
3符号链接文件 (l)
4设备文件 
块设备(b),能够随机存取
字符设备(c),线性设备,串行的
5套接字文件(s)
6命令管道文件(p)
每一行第一个空格后面的数字表示的是被硬链接的次数,对于新创建的普通文件而言是1次,对于新创建的目录是2次。
 
普通文件的创建
创建一个空文件:touch 文件名
其实touch的主要作用是修改文件的时间标签
这里要提到元数据,所谓元数据就是描述文件属性的,不属于文件内容的一部分。
 
查看元数据信息:stat
 
 
   
  1. [root@www ~]# touch knight 
  2. [root@www ~]# stat knight 
  3.   File: `knight' 
  4.   Size: 0           Blocks: 8          IO Block: 4096   regular empty file 
  5. Device: fd00h/64768d    Inode: 66926       Links: 1 
  6. Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root) 
  7. Access: 2011-10-13 11:51:35.000000000 +0800 
  8. Modify: 2011-10-13 11:51:35.000000000 +0800 
  9. Change: 2011-10-13 11:51:35.000000000 +0800 
      Access:最近一次被访问的时间
      Modify:修改文件内容的时间
      Change:改变文件属性的时间
 
使用touch命令修改元数据信息
我们来修改一下修改文件内容的时间,时间格式为年月日时分.秒
 
 
  
  1. [root@www ~]# touch -m -t 1110011001.00 knight 
我们再来查看一下knight文件的元数据信息
 
 
  
  1. [root@www ~]# stat knight 
  2.   File: `knight' 
  3.   Size: 0           Blocks: 8          IO Block: 4096   regular empty file 
  4. Device: fd00h/64768d    Inode: 66926       Links: 1 
  5. Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root) 
  6. Access: 2011-10-13 11:51:35.000000000 +0800 
  7. Modify: 2011-10-01 10:01:00.000000000 +0800 
  8. Change: 2011-10-13 11:53:02.000000000 +0800 
------------------------------------------------
删除文件:rm
 rm 文件名
    -i 删除前询问
    -r 删除目录
    -f 强制删除
例如:
 
 
  
  1. [root@www ~]# ls 
  2. anaconda-ks.cfg  install.log.syslog  nginx     wordpress-3.0.4-zh_CN.zip 
  3. Desktop          knight              test 
  4. install.log      mbox                test.txt 
  5. [root@www ~]# rm -rf test 
  6. [root@www ~]# ls 
  7. anaconda-ks.cfg  install.log.syslog  nginx 
  8. Desktop          knight              test.txt 
  9. install.log      mbox                wordpress-3.0.4-zh_CN.zip 
复制文件:cp
cp 源文件 目标文件
例如:
 
 
  
  1. [root@www ~]# cp /etc/inittab ./ 
查看一下
 
 
  
  1. [root@www ~]# ls 
  2. anaconda-ks.cfg  install.log         mbox      wordpress-3.0.4-zh_CN.zip 
  3. Desktop          install.log.syslog  nginx 
  4. inittab          knight              test.txt 
-r 复制目录
-i 询问
-p 保留原有文件的属主,属组
-a=-rp
 
例如:cp a b c d,此时最后一个必须为目录。
 
该你动手实践了。