文件/目录常用命令

目录与路径

常用命令

  • cd: 进入目录
  • pwd: 显示当前路径
  • mkdir: 创建新目录
  • rmdir 删除一个空目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#cd 相对/绝对 路径
cd /var/spool/mail
cd ../postfix

#pwd [-P] -P:显示真实的路径,而非软连接路径
[root@izj6cd5mlh03qbmrwa801iz etc]# cd /var/mail/
[root@izj6cd5mlh03qbmrwa801iz mail]# ls
www
[root@izj6cd5mlh03qbmrwa801iz mail]# pwd
/var/mail
[root@izj6cd5mlh03qbmrwa801iz mail]# pwd -P
/var/spool/mail

#mkdir [-mp] m:设定权限 -p:递归建立目录
[root@izj6cd5mlh03qbmrwa801iz /]# cd tmp/
[root@izj6cd5mlh03qbmrwa801iz tmp]# mkdir test
[root@izj6cd5mlh03qbmrwa801iz tmp]# mkdir test1/test2/test3
mkdir: 无法创建目录"test1/test2/test3": 没有那个文件或目录
[root@izj6cd5mlh03qbmrwa801iz tmp]# mkdir -p test1/test2/test3
[root@izj6cd5mlh03qbmrwa801iz tmp]# mkdir -m 711 test2
[root@izj6cd5mlh03qbmrwa801iz tmp]# ls -ld test*
drwxr-xr-x 2 root root 4096 1月 7 15:21 test
drwxr-xr-x 3 root root 4096 1月 7 15:22 test1
drwx--x--x 2 root root 4096 1月 7 15:22 test2

#rmdir [-p] -p:递归删除目录
[root@izj6cd5mlh03qbmrwa801iz tmp]# ls -ld test*
drwxr-xr-x 2 root root 4096 1月 7 15:21 test
drwxr-xr-x 3 root root 4096 1月 7 15:22 test1
drwx--x--x 2 root root 4096 1月 7 15:22 test2
[root@izj6cd5mlh03qbmrwa801iz tmp]# rmdir test
[root@izj6cd5mlh03qbmrwa801iz tmp]# rmdir test1
rmdir: 删除 "test1" 失败: 目录非空
[root@izj6cd5mlh03qbmrwa801iz tmp]# rmdir -p test1/test2/test3/
[root@izj6cd5mlh03qbmrwa801iz tmp]# ls -ld test*
drwx--x--x 2 root root 4096 1月 7 15:22 test2

文件与目录管理

查看文档与目录列表: ls

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ls [-aAdfFhilnrRSt] 文件/目录
ls [--color={never,auto,always}] 文件/目录
ls [--full-time] 文件/目录
-a : 列出全部,包括隐藏(以.开头的)
-A : 列出全部,包括隐藏,但不包括 .与..开头的
-d : 仅列出目录本身,不列出目录内的
-f : 直接列出结果,不进行排序(ls预设以文档名排序)
-F : 列出文档相关信息,比如 *:代表可执行文件 /:代表目录 =:代表socket文件 |:代表fifo文件
-h : 以人类已读的方式列出(例如GB,KB)
-i : 列出inode号码
-l : 使用较长格式列出信息,(属性,权限等)
-n : 类似 -l,但列出UID 及GID 号
-r : 逆序排列
-R : 递归列出,包括子目录内内容
-S : 以文件大小排序,而不是文件名排序
-t : 按照时间排序
--color=never : 不根据文档特性显示颜色
--color=always : 显示颜色
--color=auto : 系统自动判定
--full-time : 完整时间模式显示
--time={atime,ctime} : 输出access时间或者改变属性的时间,而非内容改变时间

复制,删除与移动: cp,rm,mv

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
cp [-adfilprsu] 来源(source) 目标(destination)
cp [options] source1 source2 source3 .... directory
参数:
-a :相当于 -dr --preserve=all 的意思
-d :若果来源为链接文件(link file),则复制软连接属性而非本身;
-f :强制(force)的意思,若目标已存在,且无法开启,则移除再试一次
-i :若目标(destination)已經存在時,覆盖式会先询问
-l :进行硬链接(hard link)的链接档的建立,而非复制档案本身;
-p :连同档案的属性(权限、用户、时间)一起复制过去,而非使用预设属性(备份常用);
-r :递归复制目录及其子目录内的所有内容
-s : 只创建符号链接而不复制文件(快捷方式)
-u : 只在源文件比目标文件新,或目标文件不存在时才进行复制
--preserve=all :除了 -p 的權限相關參數外,還加入 SELinux 的屬性, links, xattr 等也複製了。
最后需要注意的,如果来源文档有2个以上,则最后一个目标文档必须是目录才行!

rm [-fir] 檔案或目錄
参数:
-f :就是 force 的意思,忽略不存在的,不会出现警告信息;
-i :删除前会咨询操作
-r :递归操作慎用!!!程序员删库操作!!!

mv [-fiu] source destination
mv [options] source1 source2 source3 .... directory
参数:
-f :force 強制的意思,如果目标文档存在,则直接覆盖
-i :若目标存在,则会先咨询操作!
-u :若目标已存在,且源文档比较新,才会更新 (update)

查看文档内容

  • cat : 由第一行开始
  • tac : 由最后一行开始
  • nl : 显示内容病显示行号
  • more : 一页一页显示
  • less : 与more类似,不过可以向前翻页
  • head : 只看头几行
  • tail : 只看尾几行
  • od : 以二进制方式读取

直接查看内容

直接查看一个文件内容可以使用cat,tac,nl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cat [-AbEnTv]
参数:
-A : 相当于 -vET,可列出一些特殊字符而不是空白
-b : 列出行号,仅针对非空白行显示
-E : 在每行结束处显示[$]
-n : 对输出的所有行编号
-T : 将[tab]按键显示为^I
-v : 列出一些特殊字符

nl [-bnw]
参数:
-b : 指定行号显示方式
-b a : 所有行都显示行号,包括空白行
-b t : 如果为空行,则空的哪一行不显示行号
-n : 列出行号表示方法:
-n ln : 行号在左侧显示
-n rn : 行号在自己栏位右侧显示,且不加0
-n rz : 行号在自己栏位右侧显示,加0
-w : 为行号使用指定的栏数

翻页显示内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
more /etc/man_db.conf
空格 (space):代表向下翻一頁;
Enter :代表向下翻『一行』;
/字串 :代表在这个显示的內容中,向下搜索『字串』这个关键字;
:f :立刻显示出文件名以及目前显示的行数;
q :代表立刻退出 more ,不再显示该文档內容。
b 或 [ctrl]-b :代表往回翻页

less /etc/man_db.conf
空格: 向下翻页
pagedown : 向下翻一页
pageup : 向上翻一页
/子串 : 向下搜索『字串』这个关键字;
?字串 : 向上搜索『字串』这个关键字;
n : 重复前一个搜索
N : 反向的重复前一个搜索
g : 到第一行去
G : 到最后一行去
q : 退出

截取显示

1
2
3
4
5
6
7
head [-n number]
参数:
-n : 后面带上数字,代表显示几行

tail [-n number]
-n : 同head
-f : 文档刷新或有新内容时显示,直到 `ctrl+c`退出

非纯文字(二进制): od

文件搜索

whereis

1
2
3
4
5
6
7
whereis [-bmsu]
参数:
-l : 列出whereis会去查询的几个主要目录
-b : 只找binary文档
-m : 只搜索 man 手册
-s :只搜索source来源文档
-u : 搜索不在上述三个项目当中的其他特殊文档

find

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 find [PATH] [option] [action]
参数:
1. 时间有关
-mtime n : n为数字,表示在n天之前的『一天之內』被更改过内容的
-mtime +n : 列出n天之前(不包含n天本身)被更改过内容
-mtime -n : 列出n天之内(包含n)被更改过内容的
-newer file: file 为一个存在的文档,列出比file还要新的文档名
2. 与使用者或群组名称有关
-uid n : n为数字,表示使用者的账号ID
-gid n : n为数字,表示群组名称的ID
-user name : name使用者的账号名称
-group name : name群组名称
-nouser : 寻找档案拥有者不在`/etc/passwd`中的
-nogroup : 寻找档案群组不在`/etc/passwd`中的
3. 档案权限与名称有关
-name filename : 搜索名称为filename的文件
size [+-]SIZE:搜索比 SIZE大(+)或小(-)的。SIZE 的規格有:
c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB
還要大的檔案,就是『 -size +50k 』
-type TYPE :搜索文档的类型,TYPE主要有:一般文档(f), 设备文档(b,c),目录 (d), 链接文档 (l), socket (s), 及 FIFO (p)。
-perm mode :搜文档权限等于mode的文件,mode为文件权限值,比如755
-perm -mode :搜索文档的权限『必须要全部包括 mode 的权限』的文档
-perm /mode :搜索文档的权限『包含任一 mode的权限』文档
4.额外进行的动作:
-exec command :command 为其他指令,-exec 后面带上额外指令,来处理所搜出来的结果
-print :将搜索结果打印到屏幕上,预设的动作
# find 也可以指定目录去查询,但是find搜索很费硬盘
find /etc -name '*httpd*'