掀开Linux目录管理的面纱

今天我们来学习一下有关目录及其操作的命令


ls :(list)列出目录下文件列表


用法:
# ls
列出当前目录下的文件列表

# ls /path/to/some/directory
列出directory的文件列表

选项:

-l : 显示文件/目录完整信息
-h : 做单位转换(常与-l结合使用)
-a : 显示以 . 开头的隐藏文件
-A : 与-a 的不同点在于不显示 . 和 . .
-R : 递归显示目录/文件名
-d : 显示目录自身属性
-i : 显示文件的索引节点号inode

示例:

[root@localhost /]# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  mybook  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  work

[root@localhost /]# ls -l
total 24
lrwxrwxrwx.   1 root root    7 Aug 26 19:03 bin -> usr/bin
dr-xr-xr-x.   4 root root 4096 Aug 29 04:34 boot
drwxr-xr-x.  19 root root 3260 Sep  4 22:12 dev
drwxr-xr-x. 151 root root 8192 Sep  6 01:34 etc
drwxr-xr-x.   3 root root   21 Aug 26 19:23 home
lrwxrwxrwx.   1 root root    7 Aug 26 19:03 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Aug 26 19:03 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Nov  5  2016 media
drwxr-xr-x.   2 root root    6 Nov  5  2016 mnt
drwxr-xr-x.   6 root root   50 Aug 29 10:49 mybook
drwxr-xr-x.   3 root root   16 Aug 26 19:16 opt
dr-xr-xr-x. 208 root root    0 Sep  4 22:11 proc
dr-xr-x---.   5 root root  268 Sep  4 22:17 root
drwxr-xr-x.  37 root root 1140 Sep  6 17:53 run
lrwxrwxrwx.   1 root root    8 Aug 26 19:03 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Nov  5  2016 srv
dr-xr-xr-x.  13 root root    0 Sep  4 22:11 sys
drwxrwxrwt.  25 root root 4096 Sep  6 17:49 tmp
drwxr-xr-x.  13 root root  155 Aug 26 19:03 usr
drwxr-xr-x.  21 root root 4096 Sep  4 22:11 var
drwxr-xr-x.   4 root root   38 Aug 29 10:51 work

[root@localhost /]# ls -l -h
total 24K
lrwxrwxrwx.   1 root root    7 Aug 26 19:03 bin -> usr/bin
dr-xr-xr-x.   4 root root 4.0K Aug 29 04:34 boot
drwxr-xr-x.  19 root root 3.2K Sep  4 22:12 dev
drwxr-xr-x. 151 root root 8.0K Sep  6 01:34 etc
drwxr-xr-x.   3 root root   21 Aug 26 19:23 home
lrwxrwxrwx.   1 root root    7 Aug 26 19:03 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Aug 26 19:03 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Nov  5  2016 media
drwxr-xr-x.   2 root root    6 Nov  5  2016 mnt
drwxr-xr-x.   6 root root   50 Aug 29 10:49 mybook
drwxr-xr-x.   3 root root   16 Aug 26 19:16 opt
dr-xr-xr-x. 208 root root    0 Sep  4 22:11 proc
dr-xr-x---.   5 root root  268 Sep  4 22:17 root
drwxr-xr-x.  37 root root 1.2K Sep  6 17:53 run
lrwxrwxrwx.   1 root root    8 Aug 26 19:03 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Nov  5  2016 srv
dr-xr-xr-x.  13 root root    0 Sep  4 22:11 sys
drwxrwxrwt.  25 root root 4.0K Sep  6 17:49 tmp
drwxr-xr-x.  13 root root  155 Aug 26 19:03 usr
drwxr-xr-x.  21 root root 4.0K Sep  4 22:11 var
drwxr-xr-x.   4 root root   38 Aug 29 10:51 work


[root@localhost /]# ls -a
.  ..  .bash_history  bin  boot  dev  etc  home  lib  lib64  media  mnt  mybook  .mybook  opt  proc  root  run  sbin  srv  sys  .text  tmp  usr  var  work

[root@localhost /]# ls -A
.bash_history  bin  boot  dev  etc  home  lib  lib64  media  mnt  mybook  .mybook  opt  proc  root  run  sbin  srv  sys  .text  tmp  usr  var  work

ls -l 显示目录/文件详细信息的各字段含义为:

  • 字段1:总共10位,

        第一位:表示文件类型
               -:普通文件
               d : 目录文件(directory)
               b : 块设备文件(block device),支持以“block”为单位进行随机访问
               c : 字符设备文件(character),支持以“character”为单位进行线性访问
               包括:主设备号和次设备号,均为8位二进制表示,范围为0-255
                      主设备号:major number ,用于标识设备类型进而确定要加载的驱动程序
                      次设备号:minor number ,用于标识同一类型中的不同的设备 
               l : 符号链接设备(symbolic link)
               p : 命令管道文件(pipe)
               s : 套接字文件(socket)  
    
        第2-10位:表示文件权限
    
                9位,每3位一组,共3组,
                r : 可读(read)
                w:可写(write)
                x : 可执行(execute)
    其中,第一组为文件属主的权限,第二组为文件属组的权限,第三组为其他用户
    (除属主和属组之外)的权限         
    
    • 字段2:文件硬链接的次数
    • 字段3:文件的属主(owner)
    • 字段4:文件的属组(group)
    • 字段5:文件的大小(size)默认单位是字节
    • 字段6:时间戳(timestamp)

           最后一次访问的时间:atime (access time)
           最后一次修改的时间 : mtime(modify time )
                           改变文件内容
           最后一次改变的时间:ctime (change time)
                           改变了文件的元数据(属性),如文件名
      
    • 字段7:目录/文件名

pwd 显示当前目录


示例:我当前处于根目录下

[root@localhost /]# pwd
/

与此相关的,Linux中有两个环境变量:PWD和OLDPWD

PWD保存的是当前所在目录的值,而OLDPWD保存的是上一次所在的目录的值;

示例:

[root@localhost /]# echo $PWD
/
[root@localhost /]# echo $OLDPWD
/home/jeffrey

cd 切换目录


用法:
# cd 切换到主目录
# cd ~USER 切换USER的主目录
# cd - 切换上一次所在的目录
# cd .. 切换到当前目录的父目录
# cd ~ 切换到主目录

示例:

[root@localhost /]# pwd
/

[root@localhost /]# cd
[root@localhost ~]# pwd
/root

[root@localhost /]# cd ~jeffrey
[root@localhost jeffrey]# pwd
/home/jeffrey

[root@localhost jeffrey]# cd -
/

[root@localhost /]# cd ~

[root@localhost ~]# cd ..
[root@localhost /]# 

mkdir : (make directory) 创建目录


用法:
# mkdir [OPTION]… DIRECTORY…

选项:

-p 自动按需创建目录,若上层目录不存在,先创建上层目录
-v (verbose)显示创建过程中详细的信息
-m MODE :创建目录时,直接设置权限为MODE

示例:创建目录/jeffrey/mybook,若目录jeffrey不存在,则先创建jeffrey,再创建mybook;并设置权限为777(就是rwxrwxrwx)。整个创建过程要显示出来。

[root@localhost /]# mkdir -v -p -m 777 /jeffrey/mybook
mkdir: created directory ‘/jeffrey’
mkdir: created directory ‘/jeffrey/mybook’

[root@localhost /]# cd /jeffrey
[root@localhost jeffrey]# ls -l
total 0
drwxrwxrwx. 2 root root 6 Sep  6 18:47 mybook

rmdir :(remove empty directory) 删除空目录


用法:
# rmdir [OPTION]… DIRECTORY…

选项:

-v : (verbose)显示创建过程中详细的信息
-p : 删除该目录后,若其父目录也为空,则一并删除其父目录,并如此递归下去。

示例:无法直接删除目录jeffrey,因为Jeffrey为非空目录,使用-p选项,则递归删除,即,若删除mybook之后目录Jeffrey为空,则删除jeffrey,如此递归下去。

[root@localhost /]# rmdir jeffrey
rmdir: failed to remove ‘jeffrey’: Directory not empty

[root@localhost /]# rmdir -p -v jeffrey/mybook
rmdir: removing directory, ‘jeffrey/mybook’
rmdir: removing directory, ‘jeffrey’

我们趁热打铁,做几道练习练练手:
1,创建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,/tmp/x/y1/b 并显示创建过程。

[root@localhost /]# mkdir -pv /tmp/x/{y1/{a,b},y2}
mkdir: created directory ‘/tmp/xmkdir: created directory ‘/tmp/x/y1’
mkdir: created directory ‘/tmp/x/y1/a’
mkdir: created directory ‘/tmp/x/y1/b’
mkdir: created directory ‘/tmp/x/y2’

2,创建a_c,a_b,b_c,b_d 并显示其详细过程

[root@localhost ~]# rmdir /{a,b}_{c,d}
[root@localhost ~]# mkdir -pv {a,b}_{c,d}
mkdir: created directory ‘a_c’
mkdir: created directory ‘a_d’
mkdir: created directory ‘b_c’
mkdir: created directory ‘b_d’

tree : 显示完整的目录树


用法:
# tree [OPTIONS] [DIRECTORY]

选项:

-L level : 指定要显示的层级

示例:

[root@localhost /]# tree jeffrey
jeffrey
|-- mybook
|   |-- Chinese
|   |-- Computer
|   |-- English
|   `-- Math
|-- mydocuments
|   |-- lists
|   |-- menu
|   `-- Scores
|-- mymusic
|   |-- as\ long\ as\ you\ love\ me
|   `-- Someone\ like\ you
`-- mypicture
    |-- like
    `-- love

15 directories, 0 files

只显示到一级目录:

[root@localhost /]# tree -L 1 jeffrey
jeffrey
|-- mybook
|-- mydocuments
|-- mymusic
`-- mypicture

4 directories, 0 files

最后,我们给出两个概念:基名路径名

例如:
对于一下路径而言:

/etc/sysconfig/network-scripts

其“基名”就是我们实际想要操作的对象,也就是’network-scripts’.而其“路径名”即为我们想要找到操作对象的路径,也就是基名前面的“路径”,即‘/etc/sysconfig’

而且我们还有专门的命令来获取一个路径的“基名”和“路径名”。

basename : 用于获取基名
dirname : 用于获取路径名

示例:

[root@localhost /]# basename /etc/sysconfig/network-scripts
network-scripts
[root@localhost /]# dirname /etc/sysconfig/network-scripts
/etc/sysconfig
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值