文件基本属性
➜ ALog git:(master) ls -l
total 112
drwxr-xr-x 11 Blankj staff 374 Dec 6 23:39 alog
-rw-r--r-- 1 Blankj staff 11336 Dec 4 17:08 LICENSE
-rw-r--r-- 1 Blankj staff 6932 Dec 6 23:44 README.md
ls -l
命令显示的前 10 位 如下所示。

第 0 位表示文件类型,如下所示:
- 当为
d
则是目录; - 当为
-
则是文件; - 若是
l
则表示为链接文档(link file); - 若是
b
则表示为装置文件里面的可供储存的接口设备(可随机存取装置); - 若是
c
则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的,以三个为一组,且均为rwx
的三个参数的组合。其中,r
代表可读(read)、w
代表可写(write)、x
代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 -
而已。其中,1-3 位确定 owner 对该文件的权限;4-6 位确定 group 对该文件的权限;7-9 位确定 other 对该文件的权限。
更改文件 owner
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
更改文件 group
chgrp [-R] 属组名 文件名
更改文件权限
更改文件权限有两种方法,一种是数字法,一种是符号法。
数字法
chmod [-R] xyz 文件或目录
文件的基本权限就有九个,owner/group/others 每个都有各自的 rwx
权限,我们使用数字来代表各个权限,如下所示:
r: 4
w: 2
x: 1
每种身份(owner/group/others)各自的 rwx
是需要累加的,当文件权限为 rwxrwx---
,则用数字表示为:
owner = rwx = 4 + 2 + 1 = 7
group = rwx = 4 + 2 + 1 = 7
others = --- = 0 + 0 + 0 = 0
例如要开启 alog
目录及目录下所有文件的所有权限,可以使用 chmod -R 777 alog
命令。
符号法
u +(加入) r
chmod g -(除去) w 文件或目录
o =(设定) x
a
我们就可以用 u
,g
,o
,a
来代表 owner,group,others,all。
如果我们要将文件权限设置为 rwxr-xr--
,可以使用 chmod u=rwx,g=rx,o=r 文件名
命令。
文件与目录管理
处理目录的常用命令
ls
:列出目录
- -a 显示所有文件及目录(ls内定将文件名或目录名称开头为
.
的视为隐藏档,不会列出); - -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出;
- -r 将文件以相反次序显示(原定依英文字母次序);
- -t 将文件依建立时间之先后次序列出;
- -A 同 -a ,但不列出
.
(目前目录)及..
(父目录); - -F 在列出的文件名称后加一符号;例如可执行档则加
*
,目录则加/
; - -R 若目录下有文件,则以下之文件亦皆依序列出。
cd
:切换目录(change directory)
pwd
:显示目前的目录(print working directory)
- -P:显示出确实的路径,而非使用链接(link)路径。
mkdir
:创建一个新的目录(make directory)
- -m:配置文件的权限,比如
mkdir -m 777 dir
; - -p:递归创建父目录。
rmdir
:删除一个空的目录
- -p:连同上一级空的目录也一起删除。
cp
:复制文件或目录
- -a:相当于
-pdr
的意思,至于pdr
请参考下列说明(常用); - -d:若来源档为链接档的属性(link file),则复制连结档属性而非文件本身;
- -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
- -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用);
- -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
- -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
- -r:递归持续复制,用于目录的复制行为(常用);
- -s:复制成为符号连结档(symbolic link),即“捷径”文件;
- -u:若 destination 比 source 旧才升级 destination。
rm
:移除文件或目录
- -f:就是 force 的意思,忽略不存在的文件,不会出现警告信息;
- -i:互动模式,在删除前会询问使用者是否动作;
- -r:递归删除啊,最常用在目录的删除了。
mv
:移动文件与目录,或修改名称
- -f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i:若目标文件(destination)已经存在时,就会询问是否覆盖;
- -u:若目标文件已经存在,且 source 比较新,才会升级(update)。
文件内容查看
cat
:由第一行开始显示文件内容
- -A:相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
- -b:列出行号,仅针对非空白行做行号显示,空白行不标行号;
- -E:将结尾的断行字节 $ 显示出来;
- -n:列印出行号,连同空白行也会有行号,与 -b 的选项不同;
- -T:将 [tab] 按键以 ^I 显示出来;
- -v:列出一些看不出来的特殊字符。
tac
:从最后一行开始显示
可以看出 tac
是 cat
倒着写。
nl
:显示的时候顺道输出行号
- -b:指定行号指定的方式,主要有两种:
- -b a:表示不论是否为空行,也同样列出行号(类似 cat -n);
- -b t:如果有空行,空的那一行不要列出行号(默认值)。
- -n:列出行号表示的方法,主要有三种:
- -n ln:行号在荧幕的最左方显示;
- -n rn:行号在自己栏位的最右方显示,且不加 0;
- -n rz:行号在自己栏位的最右方显示,且加 0。
- -w:行号栏位的占用的位数。
more
:
- space:代表向下翻一页;
- Enter:代表向下翻『一行』;
- /字串:向下搜寻『字串』的功能;
- ?字串:向上搜寻『字串』的功能;
- :f:立刻显示出档名以及目前显示的行数;
- q:代表立刻离开 more ,不再显示该文件内容;
- b 或 ctrl + b:代表往回翻页,不过这动作只对文件有用,对管线无用。
less
:一页一页的显示文件内容
与 more
类似,但是比 more
更好的是,他可以往前翻页
- 空白键:向下翻动一页;
- pagedown:向下翻动一页;
- pageup:向上翻动一页;
- /字串:向下搜寻『字串』的功能;
- ?字串:向上搜寻『字串』的功能;
- n:重复前一个搜寻(与 / 或 ? 有关);
- N:反向的重复前一个搜寻(与 / 或 ? 有关);
- q:离开 less 这个程序;
head
:取出文件前面几行
- -n:后面接数字,代表显示几行的意思。
tail
:取出文件后面几行
- -n:后面接数字,代表显示几行的意思;
- -f:表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测。