鸟哥的Linux私房菜学习笔记(二)
档案与目录管理
目录与路径
-
cd,改变目录
$ cd ~ # 返回家目录
-
pwd,查询当前路径
$ pwd [-P] # -P:显示出准确的路径,而非使用链接(link)路径
例子:
-
mkdir,建立目录
$ mkdir [-mp] 目录名称 # -m:设定档案的权限 # -p:顺便建立所需要的上层目录 # 例子 $ mkdir -p test1/test2/test3/test4 # 当没有上层文件夹时需要添加-p $ mkdir -m 711 test2 # 直接设定权限为rwx--x--x
-
rmdir,删除空目录
$ rmdir [-p] 目录名称 # -p 连同上层的空目录一起删掉
-
$PATH,关于执行档路径的变量
$ echo $PATH # 查询当前默认搜索路径 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin $ PATH="${PATH}:/root" #将路径添加到默认搜索路径中
档案与目录管理
-
ls
$ ls [-adl] 档名或者目录名称 # 选项及参数 -a 全部的档案,连同隐藏档一起列出来 -d 仅列出目录本身,而不是列出目录内的档案资料 -l 长资料串列出,包括档案的属性与权限等等资料 # $ ll 相当于 ls -l --color=never 不要依据档案特性基于颜色显示 --color=always 显示颜色 --color=auto 让系统自行判断是否给予颜色 --full=time 以完整的时间模式输出 --time={atime,ctime} 输出access时间或者改变权限属性时间,而非内容变更时间
-
cp
$ cp [-adfilprsu] 来源(source) 目的地(destination) $ cp [options] source1 source2 source3 .... directory # 选项及参数: -a :相当于 -dr --preserve=all (常用) -d :若source为链接档(link file),则复制链接档的属性而非档案本身 -f :为强制(force)的意思,若目标档案已经存在且无法开启,则移除后在尝试一次 -i :若destination已经存在,在覆盖时先询问是否覆盖(常用) -p :连同档案的属性一起复制过去,而非使用预设属性(备份常用); -r :循环复制,用于复制目录 (常用) --preserve=all :除了 -p 的权限相关参数意外,还加入 SELinux 的属性, links, xattr 等也进行复制 # 最后需要注意的,如果source有两个以上,則最后一个destination一定要是『目录』才行!
-
rm
$ rm [-fir] 档案或目录 # 选项与参数 -f force,忽略不存在的啊档案,不会出现警告信息 -i 互动模式,删除前会询问使用者是否动作 -r 循环删除,用于删除目录
-
mv,移动档案或目录,或更名
$ mv [-fiu] source destination $ mv [options] source1 source2 source3 .... directory # 选项与参数: -f :force,如果目标档案已经存在,不会询问而直接覆盖; -i :若destination存在时,会询问是否覆盖 -u :若destination已经存在,只有在source更新时才会覆盖
档案内容查阅
-
cat——从第一行开始显示内容
$ cat [-nb] 文件名 # 选项及参数 -b 列出非空白行的行号 -n 列出行号,包括空白行
-
tac——从最后一行开始显示内容
-
nl——打印的时候顺便添加行号
-
more——一页一页翻动
more会在最后一行显示目前显示出的百分比,有以下快捷键
- 空格:下一页
- Enter:下一行
- /字串:查询该字串
- :f:立即显示出档名及目前显示的行数
- q:退出
- b:往回翻页
-
less——比more更好用
less可以方便的往前往后翻看文件
- 空格、pagedown:向下翻一页
- pageup:向上翻一页
- /字串:向下搜索
- ?字串:向上搜索
- n:重复前一个搜索
- N:反向重复前一个搜索
- g:到资料的第一行
- G:到资料的最后一行
- q:退出
-
head——取出前面几行
$ head [-n number] 档案 -n 取出几行
-
tail——取出后面几行
-
od——查看非纯文字档案
$ od [-t TYPE] 檔案 # 选项或参数: -t :后面可以接各种『类型 (TYPE)』的输出,例如: a :利用预设的字来输出; c :使用 ASCII 字元来输出 d[size] :利用十进制(decimal)来输出 f[size] :利用浮点数(floating)来输出 o[size] :利用八进制(octal)来输出 x[size] :利用十六进制(hexadecimal)来输出
-
touch——修改档案时间或新建档案
$ touch [-acdmt] 档案 # 选项与参数: -a :只改 access time; -c :只改档案的时间,如果不存在文件也不新建 -d :后面可以接想改为的日期而不用目前的日期,也可以使用 --date="日期或时间" -m :只改 mtime ; -t :后面可以接想改为的时间而不用目前的時間,格式为[YYYYMMDDhhmm]
档案与目录的预设权限与隐藏权限
-
umask——目前使用者在建立档案或目录时候的权限预设值。
当查询此时系统的默认值时,可以使用
$ umask 0022 #后三个数字与一般权限有关 $ umask -S # -S可以以符号方式显示权限 u=rwx,g=rx,o=rx
在系统的初始设置上,当创建文档时,默认拥有的权限为666,即都没有执行权限;在创建目录时,默认的权限为777。umask中设置的数值为要从系统默认的数值中减去的权限,例如
$ umask 0022 $ touch test1 $ mkdir test2 $ ll -d test* -rw-r--r--. 1 root root 0 6月 16 01:11 test1 drwxr-xr-x. 2 root root 6 6月 16 01:11 test2
设置umask的值的方法为
$ umask 002
-
chattr——设定档案的隐藏属性
$ chattr [+-=][ASacdistu] 文档或目录名称 + :增加某一个特殊参数 - :移除某一个特殊参数 = :设定参数,最终该档案只具有=后的参数 A :若有存取此文档(或目录)时,他的 atime 將=不会被修改, a :只能增加资料,而不能刪除也不能修改资料,只有root 才能设定这个属性 i :不能被刪除、改名、设定链接也无法写入或新增资料,只有root 才能设定这个属性
-
lsattr——显示文档的隐藏属性
-
file——查看文档类型
指令与档案的搜索
-
which——搜索执行档(可使用的指令)
$ which [-a] command -a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称
-
whereis
whereis 主要是查找 /bin /sbin 底下的执行档,以及 /usr/share/man 底下的 man page 档案
¥ whereis [-bmsu] 档案或目录 -b :只找 binary 格式的 -m :只找 man 下的 -s :只找 source 来源的 -u :搜索不在上述三个之中的特殊项
-
local/updatedb
在已建立的资料库 /var/lib/mlocate/ 中进行搜索,这样会很快,但是当资料库还没有更新时会出现查不到的问题,此时可以使用updatedb来更新资料库
$ locate [-ir] keyword : -i :忽略大小写 -c :不输出文档名,仅计算找到的文档数量 -l :仅输出几行,例如输出五行则是 -l 5 -S :输出 locate 所使用的资料库档案的相关资讯,包括该资料库的档案/目录数量等 -r :后面可接正则表示法的显示方式
-
find(已经放弃改成简体了)
$ 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 還要新的檔案檔名 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.... 的屬性存在! 4. 額外可進行的動作: -exec command :command 為其他指令,-exec 後面可再接額外的指令來處理搜尋到的結果。 -print :將結果列印到螢幕上,這個動作是預設動作!
一个例子是
- {} 代表的是『由 find 找到的內容』,find 的结果会被放置到 {} 位置中
- -exec 一直到 ; 是关键字,代表 find 额外动作的开始 (-exec) 到结束[ \; ]
- 因為『 ; 』在 bash 环境下是有特殊意义的,因此利用反斜线來跳脱