第四章 在文件系统中移动
Linux 文件系统存储了计算机上所有的信息
目录 | 描述 |
---|---|
/bin | 包含常见的 Linux 用户命令,比如 ls、sort、date 和 chmod |
/boot | 包含可启动的 Linux 内核、最初的 RAM 盘和启动加载程序的配置文件 (GRUB) |
/dev | 包含用来表示系统中设备访问点的文件。这些设备包括终端设备 (tty) 、硬盘驱动器 (hd 或 sd) 、RAM (ram) 以及 CD-ROM (cd*) 。用户可以直接通过这些设备文件访问相应的设备;然而,应用程序通常会对最终用户隐藏实际的设备名称 |
/etc | 包含管理配置文件。其中大多数文件都是纯文本文件,只要用户拥有适当的权限,就可以使用任何文本编辑器编辑这些配置文件 |
/home | 包含分配给每个带有登录账号的普通用户的目录 (root 用户是一个例外,使用 /root 作为主目录) |
/media | 为自动挂载设备 (特别是可移动介质) 提供了一个标准位置。如果介质有一个卷名,那么一般来说使用该卷名作为挂载点 |
/lib | 包含 /bin 和 /sbin 目录中的应用程序启动系统所需的共享库 |
/mnt | 在该目录被标准的 /media 目录取代之前,/mnt 目录是许多设备常见的挂载点。一些可启动的 Linux 系统仍使用该目录来挂载硬盘分区和远程文件系统。此外很多人也在使用该目录临时挂载那些不需要永久挂载的本地或远程文件系统 |
/misc | 该目录有时用来根据请求自动挂载文件系统 |
/opt | 用来存储附加应用程序软件的目录结构 |
/proc | 包含关于系统资源的信息 |
/root | 表示 root 用户的主目录。因安全原因,没有位于 /home |
/sbin | 包含管理命令和守护进程 |
/sys | 包含用于调优块存储和管理 cgroups 的参数 |
/tmp | 包含应用程序使用的临时文件 |
/usr | 包含用户文档、游戏、图形文件 (X11) 、库 (lib) 以及其他不需要在启动过程中使用的命令和文件。/usr 目录中的文件在安装完毕就不可更改。理论上来讲,/usr 可以采用只读方式挂载 |
/var | 包含不同应用程序所使用的数据目录。尤其可以在该目录中放置作为 FTP 服务器 (/var/ftp) 或 Web 服务器 (/var/www) 共享的文件。还包含所有的系统日至文件 (/var/log) 以及假脱机文件 (/var/spool,如 mail、cups 和 news) 。/var 目录所包含的目录和文件经常被修改。在服务器计算机上,通常会创建一个 /var 目录作为一个单独的文本系统,使用一个易于拓展的文件系统 |
4.1 使用基本的文件系统命令
cd
、pwd
、mkdir
、rmdir
、ls
、touch
4.2 使用元字符和运算符
某些特殊字符被称为元字符或运算符
4.2.1 使用文件匹配元字符
元字符 | 描述 |
---|---|
* | 匹配任何数量的字符 |
? | 匹配任何一个字符 |
[…] | 匹配括号之间的任一字符,可以包括一个连字符分隔的字母或数字范围 |
例如 ls [a-g]*
列举以字母 a 到字母 g 开头的文件或目录
4.2.2 使用文件重定向元字符
元字符 | 描述 |
---|---|
< | 将文件的内容定向到命令。命令的默认行为,可省略,例如使用less bigfile 等同于 less < bigfile |
> | 将命令的标准输出定向到一个文件。如果文件存在将被重写 (覆盖) |
2> | 将标准错误 (错误消息) 定向到文件 |
&> | 将标准输出和标准错误都定向到文件 |
>> | 将命令的输出定向到一个文件,并将该输出添加到现有文件的末尾 |
例如以下命令
man chmod | col -b > /tmp/chmod
设置了手册页的格式 (使用 man 命令) ,删除了额外的退格键 (col -b) 以及将输出发送到文件 /tmp/chmod
(如果文件存在,则删除之前的 /tmp/chmod 文件)
echo "Hello World!" >> ~/hello
将文本 Hello World!
添加到 ~/hello
重定向的另一种类型被称为 here text (或者 here document) ,例如
ed /etc/resolv.conf << resendit
a
nameserver 100.100.100.100
.
w
q
resendit
通过 ed 文本编辑器向 /etc/resolv.conf
文件 (root 用户运行的脚本) 执行俩 resendit 之间的内容 (示例为添加 DNS 服务器的 IP 地址)
4.2.3 使用括号拓展字符
通过使用大括号 {}
可以跨文件名、目录名或者命令中的其他参数扩展一组字符,例如
touch memo{1,2,3,4,5}
将创建 memo1~memo5 共 5 个文件
touch {John,Bill,Sally}-{Breakfast,Lunch,Dinner}
将创建 9 个文件
touch {a..f}{1..5}
将创建 a1~f5 共 30 个文件
4.3 列出文件和目录
一般 ls
命令被设置别名为 ls --color=auto
,可通过下面命令查看别名
alias ls
使用 ls -la
命令可以查看详细信息 (-l) 和所有文件 (-a)
列 | 文件 | 目录 |
---|---|---|
1 | 权限 | 权限 |
2 | 链接到该项目的数量 | 链接到该项目的数量 |
3 | 文件所有者 | 目录所有者 |
4 | 文件所属组 | 目录所属组 |
5 | 文件的字节大小 | 包含该目录信息的文件的大小,非目录包含文件大小 |
6 | 最近一次修改的日期和时间 | 最近一次修改的日期和时间 |
7 | 文件名 | 目录名 |
注:
- 时间和日期列的格式可以更改,根据 LANG 变量
- 有时可执行文件权限为 s (-rwsr-sr-x) ,表示应用可被任何用户访问,但运行进程的所有权为应用程序的用户/组,而不是启动该命令的用户
- 如果目录权限末尾是 t (drwxrwxr-t) ,则表示为该目录设置了一个粘滞位。表明目录的所有者允许其他用户添加文件,但阻止删除其他人添加的文件
- 通过为某一目录分配一个 Set GID,该目录中所创建的任何文件都被分配到与目录组相同的组。如果在一个目录上看到的是一个大写 S 或 T 而不是执行位,则意味着分别设置了 Set GID 或粘滞位,而出于某些原因执行位没有开启
- 如果权限末尾是加号 (-rw-rw-r-+) ,则说明在文件上设置了扩展属性,如 ACL 或 SELinux。末尾的点表示在文件中设置了 SELinux
通过 cd ~yexca
可访问 yexca 的主目录,cd -
以返回之前的工作目录 ($OLDPWD 指向的目录) ,而cd .
指向当前工作目录 (\$PWD)
ls 命令:-t
以最新修改时间顺序显示文件;-F
在目录后添加 /
,可执行文件后添加 *
,符号链接旁显示 @
;--hide=yexca
隐藏显示 yexca 这个文件或目录;-S
按文件大小列出文件;-d
显示该目录的信息而非目录所包含的文件和目录
4.4 了解文件权限和所有权
对于 ls -l
命令第一列
第一位为文件类型
字母 | 类型 |
---|---|
– | 文件 |
d | 目录 |
l | 符号链接 |
b | 块设备 |
c | 字符设备 |
s | 套接字 |
p | 命名的管道 |
后九位为权限,前三位为用户 (u) 的,中三位为所在组 (g) 的,后三位为其他人 (o) 的 (连起来就是 ugo,即尤吉欧)
对于文件和目录,权限位含义略有不同
权限 | 文件 | 目录 |
---|---|---|
Read | 查看文件内容 | 查看目录所包含的文件和子目录 |
Write | 更改文件内容,重命名或删除文件 | 向目录添加文件或子目录。删除目录中的文件或子目录 |
Execute | 将文件作为一个程序运行 | 将目录更改为当前目录,搜索目录或执行该目录中一个程序,访问目录中文件的文件元数据 (文件大小、时间戳等) |
可通过 ls -ld
命令查看任何文件或目录的权限
在 Fedora 和 Red Hat Enterprise Linux 中,当添加了一个新用户时,默认情况下该用户被分配到一个同名的组中,这种分配组的方法被称为用户专用组方案
4.4.1 使用命令 chmod (数字) 更改权限
r = 4;w = 2;x = 1
chmod -R 755 ~/myfile
更改 ~/myfile
下所有文件和目录 (-R) 和该目录的权限为 755 (rwxr-xr-x)
4.4.2 使用 chmod (字母) 更改权限
chmod ug+rx files
chmod -R o-x ~/myfile
4.4.3 使用 umask 设置默认的文件权限
普通用户创建文件默认权限为 rw-rw-r–,目录为 rwxrwxr-x。对于 root 用户分别为 rw-r–r– 和 rwxr-xr-x。这些默认值由 umask 值确定,输入该命令即可查看值,例如 0002
若暂时忽略第一个 0 (前导零) ,那么 umask 值被视为对文件完全开放权限 (666) 或者对目录完全开放权限 (777) 。umask 值 002 生成对目录权限 775,文件为 644。默认情况下普通文件的执行权限被关闭
- 如果临时更改 umask 值,直接
umask [权限]
,将权限值替换 [权限] ,例如umask 000
然后创建的文件和目录权限分别为 -rw-rw-rw- 和 drwxrwxrwx - 如果永久更改需要向主目录
.bashrc
文件结尾处添加一条 umask 命令
4.4.4 更改文件所有权
仅 root 用户可更改文件所有权
chown user:group /etc/file
将 /etc/file 改为 user 所有和 group 组,可使用 -R
递归更改
或者之更改所属用户 chown yexca /etc/file
4.5 移动、复制和删除文件
mv、cp、rm、rmdir
mv
命令通过添加 -i
或设置别名防止移动时重写已有文件,或使用 -b
则若有同名文件会先备份旧文件后移动新文件
cp
命令使用 -a
将保持原来的日期/时间戳
使用 -f
以强制应用更改 (例如 rm -rf /*)