目录相关操作:
. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表『目前使用者身份』所在的家目录
~account 代表 account 这个使用者的家目录(account是个帐号名称)
- cd:变换目录Change Directory的缩写)
- pwd:显示目前的目录Print Working Directory的缩写)
- mkdir:创建一个新的目录
- rmdir:删除一个空的目录
pwd [-P]
-P : 显示出确实的路径,而非使用连结(line)的路径
mkdir [-mp]
-m : 配置文件的权限哦,直接配置,不需要看默认权限(umask)的脸色
-p : 帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
rmdir [-p]
-p : 连同上一级(空的) 目录也一起删除
$PATH : 可运行档路径变量,许多可运行的程序,都是指向PATH的,注意 ROOT 的PATH和一般账户是不同的,故有些程序只有ROOT才能运行
赋值、删除与移动: cp rm mv
cp [-adfilprsu] 来源(source1)... 目标(destination)
-a : 相当于-pdr的意思。(常用)
-d : 若来源档为连结档的属性(link file), 则复制连结档而非文件本身;
-i : 若目标档已经存在时,在覆盖时会先询问动作的进行;(常用)
-p : 连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-r : 递归持续复制,用于目录的复制行为;(常用)
- 是否需要完整的保留来源文件的资讯?
- 来源文件是否为连结档 (symbolic link file)?
- 来源档是否为特殊的文件,例如 FIFO, socket 等?
- 来源档是否为目录
rm [-fir] 文件或目录
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递回删除啊!最常用在目录的删除了!这是非常危险的选项!!!
mv [-fiu] source destination
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖; -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖! -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
直接检视文件内容
cat/tac/nl
cat [-n] (Concatenate (连续)的简写)
-n : 列出行号
tac [-n] 方向列出,与cat 相反
可翻页检视
more/less
more 没有办法向前翻 /字符串 向下搜索
less 可以向前翻页 /字符串 :向下搜索 ?字符串: 向上搜索
数据撷取
head\tail n 取出n个行数
修改文件时间或建置新档: touch
- modification time (mtime): 当该文件的『内容数据』变更时,就会升级这个时间!内容数据指的是文件的内容,而不是文件的属性或权限喔!
- status time (ctime): 当该文件的『状态 (status)』改变时,就会升级这个时间,举例来说,像是权限与属性被更改了,都会升级这个时间啊。
- access time (atime): 当『该文件的内容被取用』时,就会升级这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man.config , 就会升级该文件的 atime 了。
touch [-acdmt] 文件
-a :仅修订 access time; -c :仅修改文件的时间,若该文件不存在则不创建新文件; -d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间" -m :仅修改 mtime ; -t :后面可以接欲修订的时间而不用目前的时间,格式为[YYMMDDhhmm]
无论如何, touch 这个命令最常被使用的情况是:
- 创建一个空的文件;
- 将某个文件日期修订为目前 (mtime 与 atime)
umask
0022
umask -S
u=rwx,g=rx,o=rx
- 若使用者创建为『文件』则默认『没有可运行( x )权限』,亦即只有 rw 这两个项目,也就是最大为 666 分,默认权限如下: -rw-rw-rw-
- 若使用者创建为『目录』,则由於 x 与是否可以进入此目录有关,因此默认为所有权限均开放,亦即为 777 分,默认权限如下: drwxrwxrwx
- 创建文件时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
- 创建目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
chattr (配置文件隐藏属性)
chattr [+-=][ASacdistu] 文件或目录名称
a :当配置 a 之后,这个文件将只能添加数据,而不能删除也不能修改数据,只有root 才能配置这个属性。
i :这个 i 可就很厉害了!他可以让一个文件『不能被删除、改名、配置连结也无法写入或新增数据!』对於系统安全性有相当大的助益!只有 root 能配置此属性
lsattr (显示文件隐藏属性)lsattr [-adR] 文件或目录
-a :将隐藏档的属性也秀出来; -d :如果接的是目录,仅列出目录本身的属性而非目录内的档名; -R :连同子目录的数据也一并列出来
文件特殊权限: SUID, SGID, SBIT
- 4 为 SUID
- 2 为 SGID
- 1 为 SBIT
配置 chmod 4755 filename
观察文件类型:file
结果是ASCII data ..
命令档名的搜寻:
which [-a] command
-a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称
文件档名的搜寻:
whereis [-bmsu] 文件或目录名
-b :只找 binary 格式的文件 -m :只找在说明档 manual 路径下的文件 -s :只找 source 来源文件 -u :搜寻不在上述三个项目当中的其他特殊文件
locate [-ir] keyword updatedb 更新数据库,使得可以从数据库里搜出较新的数据
-i :忽略大小写的差异; -r :后面可接正规表示法的显示方式
find [PATH] [option] [action]
1. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明 -mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件; -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名; -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。 -newer file :file 为一个存在的文件,列出比 file 还要新的文件档名
我们现在知道 atime, ctime 与 mtime 的意义,如果你想要找出一天内被更动过的文件名称, 可以使用上述范例一的作法。但如果我想要找出『4天内被更动 过的 文件档名』呢?那可以使用『 find /var -mtime -4』。那如果是『4天前的那一天』就用『 find /var -mtime 4 』。有没有加上『+, -』 差别 很大喔 !我 们可以用简单的图示来说明一下:
图5.2.1、find 相关的时间参数意义
图中最右边为目前的时间,越往左边则代表越早之前的时间轴啦。由图5.2.1我们可以清楚的知道:
- +4代表大於等於5天前的档名:ex> find /var -mtime +4
- -4代表小於等於4天内的文件档名:ex> find /var -mtime -4
- 4则是代表4-5那一天的文件档名:ex> find /var -mtime 4
2. 与使用者或群组名称有关的参数:
-uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在/etc/passwd 里面与帐号名称对应的数字。这方面我们会在 第四篇介绍。
-gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在/etc/group,相关的介绍我们会第四篇说明~
-user name :name 为使用者帐号名称喔!例如 dmtsai
-group name:name 为群组名称喔,例如 users ;
-nouser :寻找文件的拥有者不存在 /etc/passwd 的人!
-nogroup :寻找文件的拥有群组不存在於 /etc/group 的文件!当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,这是可能的! 在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。
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 为类似 chmod的属性值,举例来说, -rwsr-xr-x 的属性为 4755 ! -perm -mode :搜寻文件权限『必须要全部囊括 mode 的权限』的文件,举例来说, 我们要搜寻 -rwxr--r-- ,亦即 0744 的文件,使用 -perm -0744, 当一个文件 的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。 -perm +mode :搜寻文件权限『包含任一 mode 的权限』的文件,举例来说,我们搜寻 -rwxr-xr-x ,亦即 -perm +755 时,但一个文件属性为 -rw------- 也会被列 出来,因为他有 -rw.... 的属性存在!
- 绝对路径:『一定由根目录 / 写起』;相对路径:『不是由 / 写起』
- 特殊目录有:., .., -, ~, ~account需要注意;
- 与目录相关的命令有:cd, mkdir, rmdir, pwd 等重要命令;
- rmdir 仅能删除空目录,要删除非空目录需使用『 rm -r 』命令;
- 使用者能使用的命令是依据 PATH 变量所规定的目录去搜寻的;
- 不同的身份(root 与一般用户)系统默认的 PATH 并不相同。差异较大的地方在於 /sbin, /usr/sbin ;
- ls 可以检视文件的属性,尤其 -d, -a, -l 等选项特别重要!
- 文件的复制、删除、移动可以分别使用:cp, rm , mv等命令来操作;
- 检查文件的内容(读档)可使用的命令包括有:cat, tac, nl, more, less, head, tail, od 等
- cat -n 与 nl 均可显示行号,但默认的情况下,空白行会不会编号并不相同;
- touch 的目的在修改文件的时间参数,但亦可用来创建空文件;
- 一个文件记录的时间参数有三种,分别是 access time(atime), status time (ctime), modification time(mtime),ls 默认显示的是 mtime。
- 除了传统的rwx权限之外,在Ext2/Ext3文件系统中,还可以使用chattr与lsattr配置及观察隐藏属性。 常见的包括只能新增数据的 +a 与完全不能更动文件的 +i 属性。
- 新建文件/目录时,新文件的默认权限使用 umask 来规范。默认目录完全权限为drwxrwxrwx, 文件则为-rw-rw-rw-。
- 文件具有SUID的特殊权限时,代表当使用者运行此一binary程序时,在运行过程中使用者会暂时具有程序拥有者的权限
- 目录具有SGID的特殊权限时,代表使用者在这个目录底下新建的文件之群组都会与该目录的群组名称相同。
- 目录具有SBIT的特殊权限时,代表在该目录下使用者创建的文件只有自己与root能够删除!
- 观察文件的类型可以使用 file 命令来观察;
- 搜寻命令的完整档名可用 which 或 type ,这两个命令都是透过 PATH 变量来搜寻档名;
- 搜寻文件的完整档名可以使用 whereis 或 locate 到数据库文件去搜寻,而不实际搜寻文件系统;
- 利用 find 可以加入许多选项来直接查询文件系统,以获得自己想要知道的档名。
未完待续...