1.file命令
通过查看文件的头部信息来获取文件类型和编码格式
可执行文件格式:
- Windows: PE
- Linux: ELF(Executable and Linkable Format)
2.文件系统:
rootfs: 根文件系统
FHS(Filesystem Hierarchy Standard): 多数Linux版本采用这种文件组织形式
- /boot: 系统启动相关的文件,如内核、initrd、以及grub(bootloader)
- /dev: 设备文件
块设备: 随机访问,数据块,每次与系统传输1个字符的设备,例如虚拟终端
字符设备:线性访问,按字符为设备 如硬盘、CD-ROM和内存区域 - /etc: 配置文件
- /home/USERNAME: 用户家目录
- /root: 管理员的家目录
- /lib: 库文件
静态库: .a
动态库: .dll, .so(shared object)
/lib/modules: 内核模块文件 - /lost+found: 存放修复或损坏的文件的
- /media: 挂载点目录,移动设备
- /mnt: Mount point for a temporarily mounted filesystem
额外的临时文件系统 - /opt: 可选 发行版附加的一些软件包(如ubuntu kyli的wps)安装目录
- /proc: 伪文件系统,内核映射文件
- /sys: 伪文件系统 跟硬件设备相关的属性硬件文件
- /tmp: 临时文件(用户只能删除和创建自己的文件)/var/tmp
- /var: 可变化的文件
- /bin: binary 可执行文件,用户名了
- /sbin: root用户管理命令
- /usr: Unix System Resource
- /usr/local: 第三方软件安装目录
文件名规则:
- 不能超过255个字符
- 不能使用/当文件名
- 严格区分大小写
3.mkdir 创建空目录
选项
-p
:
x,y目录不存在时 不使用-p选项无法连续创建目录
[root@localhost ~]# mkdir x/y/z
mkdir: cannot create directory `x/y/z': No such file or directory
加上-p选项 三个目录同时创建
[root@localhost ~]# mkdir -p x/y/z
[root@localhost ~]#
[root@localhost ~]# tree x
x
└── y
└── z
2 directories, 0 files
-v
: 显示创建过程
[root@localhost ~]# mkdir -pv m/n/q
mkdir: created directory `m'
mkdir: created directory `m/n'
mkdir: created directory `m/n/q'
例子
1.创建目录/mnt/test/x/n,/mnt/test/y:
使用花括号展开
[root@localhost ~]# mkdir -pv /mnt/test/{x/n,y}
mkdir: created directory `/mnt/test'
mkdir: created directory `/mnt/test/x'
mkdir: created directory `/mnt/test/x/n'
mkdir: created directory `/mnt/test/y'
2.创建目录a_b,a_c,d_b,d_c:
[root@localhost ~]# mkdir -v {a,d}_{b,c}
mkdir: created directory `a_b'
mkdir: created directory `a_c'
mkdir: created directory `d_b'
mkdir: created directory `d_c'
4.tree 查看目录树
[root@localhost bin]# tree /home/qkong/
/home/qkong/
├── Desktop
├── Documents
├── Downloads
├── Music
├── Pictures
├── Public
├── Templates
└── Videos
5.rm 删除文件
选项
-i
: interactive 删除文件时询问是否删除 y/n-f
: force 强制删除 不询问-r
: recursive 递归删除目录下所有文件
例子
创建测试文件夹
[root@localhost ~]# mkdir demo
[root@localhost ~]# mkdir -p demo/{a1,a2}/{b1,b2}
[root@localhost ~]# touch demo/demoFile
[root@localhost ~]# tree demo
demo
├── a1
│ ├── b1
│ └── b2
├── a2
│ ├── b1
│ └── b2
└── demoFile
6 directories, 1 file
删除文件demoFile
[root@localhost ~]# rm -i demo/demoFile
rm: remove regular empty file `demo/demoFile'? n
[root@localhost ~]# tree demo
demo
├── a1
│ ├── b1
│ └── b2
├── a2
│ ├── b1
│ └── b2
└── demoFile
6 directories, 1 file
[root@localhost ~]# rm -i demo/demoFile
rm: remove regular empty file `demo/demoFile'? y
[root@localhost ~]# tree demo
demo
├── a1
│ ├── b1
│ └── b2
└── a2
├── b1
└── b2
6 directories, 0 files
强制删除文件:
[root@localhost ~]# touch demo/demoFile
[root@localhost ~]# tree demo
demo
├── a1
│ ├── b1
│ └── b2
├── a2
│ ├── b1
│ └── b2
└── demoFile
6 directories, 1 file
[root@localhost ~]# rm -f demo/demoFile
[root@localhost ~]# tree demo
demo
├── a1
│ ├── b1
│ └── b2
└── a2
├── b1
└── b2
6 directories, 0 files
递归删除文件夹:
[root@localhost ~]# rm -rf demo/a1
[root@localhost ~]# tree demo
demo
└── a2
├── b1
└── b2
3 directories, 0 files
6.rmdir 删除目录
删除空目录
选项
-p
: 当子目录被删除后使它也成为空目录的话,则顺便一并删除
例子
创建目录a/b1/c1,a/b1/c2,a/b2/c1,a/b2/c2:
[root@localhost ~]# mkdir -p a/{b1,b2}/{c1,c2}
[root@localhost ~]# tree a
a
├── b1
│ ├── c1
│ └── c2
└── b2
├── c1
└── c2
删除目录a/b1/c1:
[root@localhost ~]# rmdir a/b1/c1
[root@localhost ~]# tree a
a
├── b1
│ └── c2
└── b2
├── c1
└── c2
5 directories, 0 files
加-p选项删除目录c2, 删除c2后b1也是空目录, b1自动删除,而a目录下还有b2目录,提示删除目录a失败因为a目录不为空
[root@localhost a]# rmdir -p a/b1/c2
rmdir: failed to remove directory `a': Directory not empty
[root@localhost a]# tree a
a
└── b2
├── c1
└── c2
3 directories, 0 files
7.touch 修改文件时间戳
选项
-a
: 修改访问时间(access time)-m
: 修改修改时间(modification time)-t
: 指定时间(而不是当前时间) 格式为:[[CC]YY]MMDDhhmm[.ss]-c
: –no-create 不创建文件
例子
创建demo文件:
[root@localhost Desktop]# ls
[root@localhost Desktop]# touch demo
[root@localhost Desktop]# ls
demo
[root@localhost Desktop]#
修改访问时间,同时change time也随之修改:
[root@localhost Desktop]# stat demo
File: `demo'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 396476 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-02-14 11:04:18.276667822 +0800
Modify: 2017-02-14 11:04:18.276667822 +0800
Change: 2017-02-14 11:04:18.276667822 +0800
[root@localhost Desktop]# touch -a demo
[root@localhost Desktop]# stat demo
File: `demo'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 396476 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-02-14 11:04:31.932276861 +0800
Modify: 2017-02-14 11:04:18.276667822 +0800
Change: 2017-02-14 11:04:31.932276861 +0800
修改修改时间,同时change time也随之修改:
[root@localhost Desktop]# touch -m demo
[root@localhost Desktop]# stat demo
File: `demo'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 396476 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-02-14 11:04:31.932276861 +0800
Modify: 2017-02-14 11:06:27.727052949 +0800
Change: 2017-02-14 11:06:27.727052949 +0800
指定修改时间:
[root@localhost Desktop]# touch -t 201702141130.30 demo
[root@localhost Desktop]# stat demo
File: `demo'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 396476 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-02-14 11:30:30.000000000 +0800
Modify: 2017-02-14 11:30:30.000000000 +0800
Change: 2017-02-14 11:27:48.751283813 +0800
指定修改时间和修改的哪个时间
[root@localhost Desktop]# touch -a -t 201702140300.00 demo
[root@localhost Desktop]# stat demo
File: `demo'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 396476 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-02-14 03:00:00.000000000 +0800
Modify: 2017-02-14 02:00:00.000000000 +0800
Change: 2017-02-14 11:32:47.267926266 +0800
[root@localhost Desktop]# touch -m -t 201702140400.00 demo
[root@localhost Desktop]# stat demo
File: `demo'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 396476 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-02-14 03:00:00.000000000 +0800
Modify: 2017-02-14 04:00:00.000000000 +0800
Change: 2017-02-14 11:32:56.385676132 +0800
不过这次access time和modify time的修改没有触发change time的修改,具体不是很清楚
8.stat
显示文件时间戳等信息 三个时间:
- Access time
- Modify time
- Change time
[root@localhost mnt]# stat test
File: `test'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd00h/64768d Inode: 396468 Links: 4
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-02-14 06:49:21.209003207 +0800
Modify: 2017-02-14 06:49:21.210003106 +0800
Change: 2017-02-14 06:49:21.210003106 +0800