今天我就来介绍一下linux的目录管理
linux的目录结构:
在linux中,所有的目录都是由根目录开始的,其他目录和文件都是由根目录衍生出来的,再一个一个分支下来,就形成的倒置的树状结构。所有的目录和文件都是严格区分大小写的。
一些目录的表示:
/ 根目录
~ 用户家目录
. 当前目录
.. 当前目录的上级目录
相对路径与绝对路径
相对路径:是以当前所处的位置开始
绝对路径:是从根开始
我们在用户家目录下使用ls -a ,会出现一些以"."开头的文件。这些以"."开头的文件表示的是隐藏文件。
为了规范文件放置的目录,就出现了所谓的Filesystem Hierarchy Standard(FHS)标准。根据FHS的官方文件指出,其主要目的是希望让用户可以了解到已安装软件通常放置于哪个目录下,所以也希望独立的软件开发商、操作系统的制作者以及想要维护系统的用户,都能够遵循FHS的标准。FHS的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。
我们来看一下常见的一级目录:
- [root@www ~]# ls /
- bin dev home lost+found misc mydata opt root selinux sys usr
- 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)
例子:
- [root@www ~]# pwd
- /root
- [root@www ~]# cd /etc/sysconfig
- [root@www sysconfig]# pwd
- /etc/sysconfig
- [root@www sysconfig]# cd ..
- [root@www etc]# cd -
- /etc/sysconfig
- [root@www sysconfig]# cd ../..
- [root@www /]# pwd
- /
- [root@www /]# cd
- [root@www ~]# pwd
- /root
- [root@www ~]# cd ~
- [root@www ~]# pwd
- /root
- [root@www ~]#
-------------------------------------------------
ls:显示文件的文件名与相关属性
-l :显示详细信息
-a :全部信息
-h :以人们易读的方式显示
-A :不显示"."和".."
-d :只显示目录自身的属性,而不是目录中文件和子目录
-r :逆序显示
-R :递归显示
例如:
- [root@www ~]# ls -al /
- total 162
- drwxr-xr-x 24 root root 4096 Sep 27 15:57 .
- drwxr-xr-x 24 root root 4096 Sep 27 15:57 ..
- -rw-r--r-- 1 root root 0 Sep 27 12:47 .autofsck
- drwxr-xr-x 2 root root 4096 Sep 27 14:01 bin
- drwxr-xr-x 4 root root 1024 Aug 25 23:55 boot
- drwxr-xr-x 13 root root 4100 Sep 27 19:48 dev
- drwxr-xr-x 92 root root 12288 Sep 27 19:55 etc
- drwxr-xr-x 7 root root 4096 Sep 27 17:39 home
- drwxr-xr-x 13 root root 4096 Sep 27 14:35 lib
- drwx------ 2 root root 16384 Aug 26 07:32 lost+found
- drwxr-xr-x 2 root root 4096 Aug 8 2008 media
- drwxr-xr-x 2 root root 0 Sep 27 12:48 misc
- drwxr-xr-x 2 root root 4096 Aug 8 2008 mnt
- drwxr-xr-x 4 root root 4096 Sep 27 16:00 mydata
- drwxr-xr-x 2 root root 0 Sep 27 12:48 net
- drwxr-xr-x 2 root root 4096 Aug 8 2008 opt
- dr-xr-xr-x 238 root root 0 Sep 27 12:46 proc
- drwxr-x--- 18 root root 4096 Oct 13 11:38 root
- drwxr-xr-x 2 root root 12288 Sep 27 14:01 sbin
- drwxr-xr-x 4 root root 0 Sep 27 12:46 selinux
- drwxr-xr-x 2 root root 4096 Aug 8 2008 srv
- drwxr-xr-x 11 root root 0 Sep 27 12:46 sys
- drwxrwxrwt 8 root root 4096 Oct 13 10:31 tmp
- drwxr-xr-x 18 root root 4096 Sep 27 17:53 usr
- drwxr-xr-x 22 root root 4096 Sep 27 14:51 var
------------------------------------------------
创建目录:mkdir
mkdir 目录名
-p 如果父目录不存在,则先创建父目录
-v 显示创建过程
例:
- [root@www ~]# mkdir /knight/test
- mkdir: cannot create directory `/knight/test': No such file or directory
/knight不存在,要想创建/knight/test,你可以先创建/knight,在创建test目录,否则就需要加上选项了。
例如:
- [root@www ~]# mkdir -pv /knight/test
- mkdir: created directory `/knight'
- mkdir: created directory `/knight/test'
也可以同时创建多个目录
例如:
- [root@www ~]# mkdir a b c d
- [root@www ~]# ls
- a c install.log nginx
- anaconda-ks.cfg d install.log.syslog test.txt
- b Desktop
删除目录
rmdir 目录名,只能删除空目录
例:
- [root@www ~]# rmdir /knight/test/
移动目录或文件,重命名
mv 源文件 目标文件
例如:
- [root@www ~]# mv a b c d
- [root@www ~]# ls
- anaconda-ks.cfg install.log nginx
- d install.log.syslog test.txt
- Desktop
我们可以进入到d目录中看一下
- [root@www ~]# cd d
- [root@www d]# ls
- a b c
mv命令也可以重命名
例如:
- [root@www ~]# mv d test
- [root@www ~]# ls
- anaconda-ks.cfg install.log.syslog test
- Desktop mbox test.txt
- 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
- [root@www ~]# touch knight
- [root@www ~]# stat knight
- File: `knight'
- Size: 0 Blocks: 8 IO Block: 4096 regular empty file
- Device: fd00h/64768d Inode: 66926 Links: 1
- Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
- Access: 2011-10-13 11:51:35.000000000 +0800
- Modify: 2011-10-13 11:51:35.000000000 +0800
- Change: 2011-10-13 11:51:35.000000000 +0800
Access:最近一次被访问的时间
Modify:修改文件内容的时间
Change:改变文件属性的时间
使用touch命令修改元数据信息
我们来修改一下修改文件内容的时间,时间格式为年月日时分.秒
- [root@www ~]# touch -m -t 1110011001.00 knight
我们再来查看一下knight文件的元数据信息
- [root@www ~]# stat knight
- File: `knight'
- Size: 0 Blocks: 8 IO Block: 4096 regular empty file
- Device: fd00h/64768d Inode: 66926 Links: 1
- Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
- Access: 2011-10-13 11:51:35.000000000 +0800
- Modify: 2011-10-01 10:01:00.000000000 +0800
- Change: 2011-10-13 11:53:02.000000000 +0800
------------------------------------------------
删除文件:rm
rm 文件名
-i 删除前询问
-r 删除目录
-f 强制删除
例如:
- [root@www ~]# ls
- anaconda-ks.cfg install.log.syslog nginx wordpress-3.0.4-zh_CN.zip
- Desktop knight test
- install.log mbox test.txt
- [root@www ~]# rm -rf test
- [root@www ~]# ls
- anaconda-ks.cfg install.log.syslog nginx
- Desktop knight test.txt
- install.log mbox wordpress-3.0.4-zh_CN.zip
复制文件:cp
cp 源文件 目标文件
例如:
- [root@www ~]# cp /etc/inittab ./
查看一下
- [root@www ~]# ls
- anaconda-ks.cfg install.log mbox wordpress-3.0.4-zh_CN.zip
- Desktop install.log.syslog nginx
- inittab knight test.txt
-r 复制目录
-i 询问
-p 保留原有文件的属主,属组
-a=-rp
例如:cp a b c d,此时最后一个必须为目录。
该你动手实践了。
转载于:https://blog.51cto.com/nulix/687716