鸟哥的Linux私房菜 基础学习篇(第四版)
Linux的内核版本(p47~p48)
1 | 3.10.0-123.e17.x86-64 |
奇数、偶数版本分类
主、次版本为奇数:开发中版本(development)
主、次版本为偶数:稳定版本(stable)
重点回顾(p146)
1 | 在X Window 的环境下想要强制启动X的组合按键为:[Alt]+[Ctrl]+[Backspace]; |
Linux文件权限概率
切换身份命令:
1 | su - |
文件属性
1 | -rw-r--r--. 1 root root 1864 May 4 18:01 test.txt |
例题(p153)
若有一个文件的类型与权限数据为【-rwxr-xr–】,请说明其意义是什么?
答:将十个字符整理成如下所示:
1 | 【-】【rwx】【r-x】【r--】 |
1:代表文件;
234:拥有者权限,可读、可写、可执行;
567:用户组的用户权限,可读可执行;
890:其他用户权限,可读
例题(p155)
如果我的目录为下面的格式,请问testgroup这个用户组的成员与其他人(others)是否可以进入本目录?
1 | drwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 groups/ |
答:
文件拥有者test1【rwx】可以在本目录中进行任何操作;
而testgroup这个用户组【r-x】的账号,例如test2、test3亦可进入本目录进行操作,但是不能在本目录进行写入的操作;
至于other的权限中【r–】虽然有r,但是由于没有x的权限,因此others的用户,并不能进入此目录。
如何修改文件属性与权限(p156)
chgrp:修改文件所属用户组;
chown:修改文件拥有者;
chomd:修改文件的权限,SUID、SGID、SBIT等的特性。
例题:
将test.txt文件的拥有者改为bin这个账号
1 | chown bin test.txt |
将test.txt文件的拥有者与用户组改回为root
1 | chown root:root test.txt |
例题:(p158)
将.bashrc文件权限改回-rw-r--r--
答:-rw-r--r--
的分数是644,所以命令为
1 | chmod 644 .bashrc |
rwx所对应的数字为,每三个为一组
r:4;w:2;x;1;
符号法修改命令
1 | chmod u=rwx,go=rx .bashrc |
例题(p160)
有个目录的权限如下所示:
1 | drwxr--r-- 3 root root 4096 Jun 25 08:35 .ssh |
系统有个账号名称为vbird,这个账号并没有支持root用户组,请问vbird对这个目录有何权限?是否可切换到此目录中?
答:vbird对此目录仅有r的权限,因此vbird可以查询此目录下的文件名列表,因为vbird不具备有x的权限,亦即vbird没有这个抽屉的钥匙,因此并不能切换到此目录内。
假设有个账号名称为dmtsai,它的家目录在/home/dmtsai/,dmtsai对此目录具有【rwx】的权限。若在此目录下有个名为the_root.data的文件,该文件的权限如下:
1 | -rwx------ 1 root root 4365 Sep 19 23:20 the_root.data |
请问dmtsai对此文件的权限是什么?可否删除此文件?
答:如上所示,由于dmtsai对此文件来说是others身份,因此这个文件它无法读、无法编辑也无法执行,也就是说,它无法变动这个文件的内容。
但是由于这个文件是在它的家目录下,它在此目录下具有rwx的完整权限,因此对于the_root.data这个文件名来说,它是能够删除的。结论就是,dmtsai这个用户能够删除the_root.data这个文件。
Linux文件种类与扩展名(p164)
单一文件或目录的最大容许文件名为255字节,以一个ASCII英文占用一个字节来说,则大约可达255个字符长度。若是以每个汉字占2字节来说,最大文件名就是大约在在128个汉字之间。
Linux目录配置(p166~p167)
1 | /etc |
p168
1 | /usr/bin |
CentOS观察(p172)
通过uname检查Linux内核与操作系统的架构版本。
1 | 查看内核版本 |
重点回顾(p173~p178)
1 | Linux的每个文件中,可分别给予用户、用户组与其他人三种身份的rwx权限; |
目录与路径
常见的处理目录的命令:(p177)
cd:切换目录
pwd:显示当前目录
mkdir:建立一个新目录
rmdir:删除一个空目录
mkdir(建立新目录)(p178)
1 | mkdir [-mp] 目录名称 |
PATH的变量说明(p181)
不同身份用户的PATH不同,默认能够执行的命令也不同(如root与dmtsai);
PATH是可以修改的;
使用绝对路径或相对路径直接指定某个命令的文件名来执行,会比查找PATH来的正确;
命令应该要放置到正确的目录下,执行才会比较方便;
本目录(.)最好不要放到PATH当中。
文件与目录的查看(p182)
1 | 范例一:将家目录下的所有文件列出来(含属性与隐藏文件) |
p183
1 | 范例一:用root身份,将家目录下的.bashrc复制到/tmp下,并更名为bashrc。 |
rm(删除文件或目录)(p185)
1 | rm [-fir] 文件或目录 |
数据截取(p190)
head(取出前面几行)
1 | head /etc/man_db.conf |
tail(取出后面几行)
1 | tail /etc/man_db.conf |
例题:(p191)
1 | 假如我想显示/etc/man_db.conf的第11到第20行? |
修改文件事件或创建新文件:touch(p193)
1 | 范例一:新建一个空文件并观察时间。 |
文件与目录的默认权限与隐藏权限
1 | 例题(p196) |
命令与文件的查找
find(p203) 实践操作/填空
1 | 范例一:将过去系统上面24小时内有修改过内容(mtime)的文件列出。 |
重点回顾(p206~p207)
绝对路径:一定由根目录/写起;相对路径:不由/写起,而是由相对当前目录写起;
特殊目录有:.、..、-、~、~account需要注意;
rmdir仅能删除空目录,要删除非空目录需要使用【rm -r】命令;
ls可以查看文件属性,尤其-d、-a、-l等选项特别重要;
cat -n与nl均可显示行号,但默认情况下,空白行会不会编号并不相同;
touch的目的在修改文件的时间参数,但亦可用来建立空文件;
一个文件记录的时间参数有三种,分别是读取时间(access time,atime)、状态时间(status time,ctime)、修改时间(modification time,mtime),ls默认显示的是mtime;
观察文件的类型可以使用file命令来观察;
查找命令的完整文件名可用which或type,这两个命令都是通过PATH变量来查找文件名;
查找文件的完整文件名可以使用whereis找特定目录或locate到数据库去查找,而不实际查找文件系统。
文件系统的简单操作
磁盘与目录的容量
1 | 范例一:将系统内所有的文件系全列出来。 |
du(p227)
1 | 范例一:列出目前目录下的所有文件容量。 |
硬链接与符号链接:ln(p230)
1 | 范例一:将/etc/passwd复制到/tmp下面,并且观察inode与区块。 |
磁盘格式化(创建文件系统)(p238)
以XFS文件系统为例
将/dev/vda4格式化为xfs文件系统
mkfs.xfs /dev/vda4
查看文件系统
blkid /dev/vda4
文件系统挂载与卸载(p244)
挂载xfs/ext4/vfat等文件系统
1 | 范例:找出/dev/vda4的UUID后,用该UUID来挂载文件系统到/data/xfs内。 |
挂载CD或DVD光盘
1 | 范例:将你用来安装Linux的CentOS安装光盘拿出来挂载到/data/cdrom。 |
umount(将设备文件卸载)(p246)
查看已挂载的文件系统
mount
以/dev/vda4卸载为例
umount /dev/vda4
第四章重点回顾
1 | 在Xwindow的环境下想要强制重新启动X的组合键为:【Alt】+【Ctrl】+【backspace】; |
第五章重点回顾
1 | Linux的每个文件中,可分别给予使用者、群组与其他人三种身份个别的 rwx 权限; |
第六章重点回顾
1 | 绝对路径:『一定由根目录 / 写起』;相对路径:『不由 / 写起,而是由相对当前目录写起』 |
第七章重点回顾
1 | 一个可以被挂载的数据通常称为“文件系统, filesystem”而不是分区 (partition) 喔! |
第八章重点回顾
1 | 压缩指令为通过一些运算方法去将原本的文件进行压缩,以减少文件所占用的磁盘容量。 压缩前与压缩后的文件所占用的磁盘容量比值, 就可以被称为是“压缩比” |
第九章重点回顾
1 | Linux 下面的配置文件多为文本文件,故使用 vim 即可进行设置编辑; |
第十章重点回顾
1 | 由于核心在内存中是受保护的区块,因此我们必须要通过“ Shell ”将我们输入的指令与 Kernel 沟通,好让 Kernel 可以控制硬件来正确无误的工作 |
第十一章重点回顾
1 | 正则表达式就是处理字串的方法,他是以行为单位来进行字串的处理行为; |
第十二章重点回顾
1 | shell script 是利用 shell 的功能所写的一个“程序 (program)”,这个程序是使用纯文本文件,将一些 shell 的语法与指令(含外部指令)写在里面, 搭配正则表达式、管线命令与数据流重导向等功能,以达到我们所想要的处理目的 |
第十三章重点回顾
1 | Linux 操作系统上面,关于帐号与群组,其实记录的是 UID/GID 的数字而已; |
第十四章重点回顾
1 | Quota 可公平的分配系统上面的磁盘容量给使用者;分配的资源可以是磁盘容量(block)或可创建文件数量(inode); |
第十五章重点回顾
1 | 系统可以通过 at 这个指令来调度单一工作的任务!“at TIME”为指令下达的方法,当 at 进入调度后, 系统执行该调度工作时,会到下达时的目录进行任务; |
第十六章重点回顾
1 | 程序 (program):通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等),为实体文件的型态存在; |
第十七章重点回顾
1 | 早期的服务管理使用 systemV 的机制,通过 /etc/init.d/*, service, chkconfig, setup 等指令来管理服务的启动/关闭/默认启动; |
第二十一章重点回顾
1 | 源代码其实大多是纯文本文件,需要通过编译器的编译动作后,才能够制作出 Linux 系统能够认识的可执行的 binary file ; |
第二十二章重点回顾
1 | 为了避免使用者自行编译的困扰,开发商自行在特定的硬件与操作系统平台上面预先编译好软件, 并将软件以特殊格式封包成文件,提供终端用户直接安装到固定的操作系统上,并提供简单的查询/安装/移除等流程。 此称为软件管理员。常见的软件管理员有 RPM 与 DPKG 两大主流。 |