今天我们来学习一下有关目录及其操作的命令
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/x’
mkdir: 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