Linux教程(二)文件与目录管理
一、基本概念
在 linux 中,不论是由本级还是远程登录系统,每个系统都必须有一个账号,并且对于不同的系统资源有不同的使用权限。
对文件/目录的权限包括
权限 | 英文 | 缩写 | 数字代号 |
---|---|---|---|
读 | read | r | 4 |
写 | write | w | 2 |
执行 | execute | x | 1 |
无权限 | - | 0 |
1.1 文件的拥有者(owner)
文件的拥有者也就是创建这个文件的用户,其他用户若需要访问需要 owner 授权,也可以转让给其他用户
1.2 文件所属组(group)
文件的拥有者所属的用户组,通过“组”来管理机制,文件可以多人共享。Linux 先把用户按照类别分组,然后给用户组分配相应的访问权限,一个用户可以属于多个组,一个组可以包含多个用户。
1.3 其他人(other)
不是 owner 又不在文件所属的组里面就是其他人。
1.4 超级用户 root
拥有对系统的完全控制权,和 windows 里面的 Administrator 一样。
默认情况下,Linux 的账号信息保存在 /etc/passwd ,密码保存在 /etc/shadow 文件,组名保存在 /etc/group 。
若在执行命令时提示没有权限,如 permission denied,在命令前面增加 sudo 以 root 来执行命令即可。
1.5 sudo
su 是 substitute user 的缩写,表示使用另一个用户的身份
sudo 命令用来以其他身份来执行命令,预设的身份为 root
二、文件的属性
Linux / Unix 很重要的一个设计原则是:一切都是文件。
终端输入 ls -al 可以看到当前目录下所有文件的信息,一共有七列
文件类型和权限,文件链接数/子目录个数,文件所有者,文件所属组,文件大小,最后修改时间,文件名
2.1 文件的类型和权限
文件类型
-
-:普通目录
-
d:目录
-
l:软连接,类似于 windows 里面的快捷方式
-
b:块设备,存取的时候可以使用缓存加速
-
c:字符设备,一次读取一个字符
-
p:管道,进程间通信的时候用到
-
s:套接字文件,网络相关的文件
接下来的 9 个字符中,以三个为一组,且均为 rwx 和 - 组合
-
234 位:文件所有者 owner 对这个文件的权限
-
567 位:文件所属组 group 对这个文件的权限
-
890:不是 owner 也不在文件所属组的用户对这个文件的权限
对于文件来说:
-
r 代表可读 read
-
w 代表可写 write
-
x 代表可执行 execute
对目录来说:
-
r 能不能列出该目录中的内容
-
w 可不可以对该目录中的内容进行增加、删除、修改、重命名
-
x 该目录是不是可进入,也就是 cd
如果没有相应的权限,则相对的位置上字符会变成 -,为了使用方便,linux 表示权限的时候将 rwx 对应成数组,r 对应4,w对应2,x对应1。上面的9个字符按照所有者、所属组、其他人分成三组,每组的权限是三个数字之和。
如:example.desktop 的权限是 -rw-r--r- 对应成数字就是 644。
2.2 文件目录的管理
Linux 下文件和目录基础:
-
linux 根目录是 /,是整个 linux 文件系统的最上层目录,安装系统分区的时候可以定哪个分区挂载在这个目录上,分区通过挂载点 mount point 挂载到目录树中的。
-
linux 系统目录和目录之间的分隔符是 /
-
. 开头的文件或者目录是隐藏的,需要用 ls 的 -a 选项才可查看
-
*?><;&![] | \ ' " ` (){}+- 这些字符在 shell 中有特殊含义,再给文件命名的时候最好避免
-
绝对路径:由根目录 / 开始写起的文件名或目录名称,例如 /home
-
相对路径:相对于当前路径的文件名写法,如:./home、 ../home 等
-
文件名或目录名最大长度为255个字符
-
包含完整路径名的文件名最大长度为 4096 个字符
不同的 linux 发行版中限制是不一样的。
三、常用命令
3.1 查看目录内容
3.1.1 ls
常用选项:
-a:显示所有文件
-A:和 -a 基本一样,但是不包括 . 和 ..
-d:只列出目录本身的信息,而不列出目录中的内容
-f:直接列出结果,而不排序
-F:根据文件目录的信息,增加一些特殊的显示标记,如链接后会增加一个 @
-h:显示文件大小的时候不用字节显示
-i:显示该文件对应的 inode 编号
-l:显示文件目录的更多信息
-n:用 UID 和 GID 取代输出中的用户名和组名
-r:把排序的结果反向输出
-R:递归的列出子目录中的内容
-S:按照文件的大小排序
-t:按照文件的时间排序
--color-never:不用颜色显示文件目录
--color=always:总是用颜色来显示文件和目录
--color=auto:让系统自己判断是不是要把文件目录用颜色显示
--full-time:显示文件的完整时间
--time={atime, ctime}:用来选择显示哪个时间,可选 atime、ctime,默认使用 mtime
ls 通配符的使用
-
*:代表任意一个字符
-
?:代表任意一个或多个字符
-
[]:表示可以匹配字符组中的任意一个,如 [abc] 则表示匹配 a、b、c中的任意一个
-
[a-f]:匹配 a - f 范围内的任意一个
3.2 切换目录
3.2.1 cd
一般来说一个用户登录到 linux 系统后,当前工作目录就是 home 目录。
-
cd :切换到当前用户的主目录(/home/用户目录)
-
cd ~ :切换到当前用户的主目录(/home/用户目录),~ 代表当前用户的主目录
-
cd . :保持当前目录不变,. 代表当前目录
-
cd .. :切换到上级目录,.. 代表上级目录
-
cd -: 在最近两次工作目录之间来回切换,- 代表上次所在的目录
相对路径:在输入路径时,最前面不是 / 或者 ~,表示相对当前目录所在的目录位置
绝对路径:在输入路径时,最前面是 / 或者 ~,则表示从根目录(或者家目录)开始的具体目录位置
3.3 创建和删除操作
3.3.1 touch
创建文件或修改文件,如果文件不存在,则创建一个空白文件,如果文件存在,则会更新文件的末次修改时间
3.3.2 rm
删除文件或目录
-
-f:强制删除,忽略不存在的文件,无需提示
-
-i:删除之前需要用户确认
-
-r:递归删除目录下的内容,删除文件夹时必须加此参数
-
-v:显示删除的过程
注:rm 命令也可以跟通配符,使用时一定要小心,因为文件删除后不能恢复
3.3.3 mkdir
创建一个新的目录
-
-p:递归创建目录,如果上层目录不存在,则一并创建
-
-m:用来设置这个目录的权限
注:新建目录的名称不能与当前目录中已有的目录或文件同名
3.3.4 rmdir
删除空目录rmdir 主要用来删除空目录,如果目录非空,就不可以删除。如果目录下面有空的子目录可以用 -p 选项把空的子目录一起删除。
- -p:递归删除空目录
3.4 拷贝和移动文件
3.4.1 cp
作用:复制文件或目录
格式:cp 源文件 目标文件
选项:
-
-f:若目标文件已经存在则直接覆盖
-
-i:若目标文件已经存在,覆盖文件前询问是否覆盖
-
-r:递归复制,若给出的源文件是目录文件,则递归复制该目录下的所有子目录和文件,目标文件也必须是一个目录名
-
-l:将文件复制为硬链接
-
-s:将文件复制成软链接
-
-p:复制的时候不改变文件的属性
-
-u:更新,如果源文件比目标文件更新才复制,否则不复制
-
-v:显示复制的过程
-
-a:相当于 -pdr
3.4.2 mv
作用:移动、重命名文件或目录
格式:mv 源文件 目标文件
选项:
-
-i:若目标文件已存在,则覆盖文件前给出提示
-
-f:若目标文件已存在,则直接覆盖文件
-
-u:源文件比目标文件更新才进行移动caozuo
注:若源文件和目标文件目录一样,则可以对文件或目录重命名
3.4.3 tree
作用:以树状图列出文件目录结构
格式:tree [目录名]
选项:
- -d:只显示目录
3.5 查看文件内容
3.5.1 cat
作用:查看文件内容、创建文件、文件合并、追加文件内容等功能;一次性显示所有的内容,适合查看内容较少的文本文件
格式:cat 文件名
选项:
-
-b:列出非空行行号
-
-n:列出所有行行号
-
-E:将换行符用 $ 显示出来
-
-T:将制表符用 ^| 显示
-
-v:列出一些看不出来的特殊字符
-
-A:相当于 -vET
linux 中还有一个 nl 的命令和 cat -b 效果相同
3.5.2 more
作用:分屏显示文件内容,每次只显示一页内容,适合查看内容较多的文本文件
格式:more 文件名
操作键:
-
空格键:向下翻一页
-
Enter 键:向下翻一行
-
q:退出
-
/
:查找指定的字符串,如 /word 表示查找 word 字符
3.5.3 grep
作用:强大的文本搜索工具,它允许对文本文件进行模式查找(模式查找又称为正则表达式)
格式:grep 搜索文本 文件名
选项:
-
-n:显示匹配行及行号
-
-v:显示不匹配的行及行号
-
-i:忽略大小写
常用的两种模式查找:
-
^a:搜索以 a 开头的行
-
ke$:搜索以 ke 结尾的行
3.5.4 less
less 的功能比 more 更强大一些,more 不可以向前翻页,less 可以用 pageup 和 pagedown 向前、向后翻页查看文件
操作键
-
空格键 space:向下翻一页
-
pagedown:向下翻一页
-
pageup:向上翻一页
-
/字符串:向下搜索字符串
-
?字符串:向上搜索字符串
-
/
:查找指定的字符串,如 /word 表示查找 word 字符 -
n:重复上一个搜索(与 / 或 ?有关)
-
N:反向重复上一个搜索(与 / 或 ?有关)
q:离开 less
3.6 其他
3.6.1 echo
echo 会在终端中显示参数指定的文字,通常和重定向联合使用
3.6.2 重定向 > 和 >>
Linux 允许将命令执行结果重定向到一个文件,重定向就是将显示在终端上的内容输出 / 追加到指定文件中
-
> :输出到指定文件,会覆盖文件原有的内容
-
>> :将内容追加到已有文件的末尾
3.6.3 管道 |
linux 允许将一个命令的输出通过管道作为另一个命令的输入
常用的管道命令:
-
more:分屏显示内容
-
grep:在命令执行结果的基础上查询指定的文本