Notes of Basic Linux Part-2 Files, Directories, FS
see also jlevy/the-art-of-command-line (multi-language)
Organised 2017 March.
Notes from 2012 April.
多年前(2012)写的“鸟哥的Linux 私房菜”学习笔记。 - Chapters 6~9 -ing
基本的命令应该没什么变化吧。
第6章、Linux文件权限与目录配置 #
user, group #
Linux文件权限概念 #
Linux文件属性 (ls -al) #
*首位类型:
d: Dir
-: 正规文件(regular file )
ASCII/plain text; binary; data(eg: last 才能读 /ar/log/wtmp)
l: Link
b: Block dev, 可供储存的接口设备(可随机存取装置)
c: Character dev, 串行端口设备,例如键盘、鼠标(一次性读取装置)
s: Socket, 常见于 /var/run
p: Pipe, FIFO. see: man fifo. 在解决多程序同时存取一个文件所造成的错误。
*时间: 最后修改时间
Note: 中文时间乱码: 用『LANG=en_US』来修改语系. /etc/sysconfig/i18n
改变属性与权限: chgrp, chown, chmod #
*chgrp [-R] toGrpName file/folderName
*chown [-R] toOwnName:togrpname file/foldername
*chmod [-R] [a]-x ./foldername
Owner; Group; Others; All(default).
目录与文件之权限意义. OBS:目录, 即文件名列表. 文件名与目录有强烈的关连 #
r (read contents in directory)
#OBS: 不可以了解内部属性 vs=> x
w (modify contents of directory)
#异动该目录结构列表的权限
#eg:删除已经存在的文件与目录(不论该文件的权限为何!)
#OBS:即使他人的某dir在自家dir下, 如果不能清空其列表, 那么也就不能删除此目录了.
x (access directory)
#即, 能否cd进入此目录,
#OBS: 含各列表项目属性 vs=> r
eg: 如果知道内部文件名, 即使没有目录的r权限, 也可以了解某文件属性 (查看文件属性 只与 目录属性的x权限有关, 与文件的属性的权限无关)
Linux文件种类与扩展名 #
*基本上,Linux系统上的文件名真的只是让你了解该文件可能的用途而已, 真正的执行与否仍然需要权限的规范才行!
*Ext2/Ext3文件系统时,针对文件的档名长度限制为:
单一文件或目录的最大容许文件名为 255 个字符;
包含完整路径名称及目录 (/) 的完整档名为 4096 个字符。
Linux目录配置 #
很难用纯文本记录, [请看原网站](http://bit.ly/linuxFhs)
Linux目录配置的依据–FHS:/, /usr, /var #
目录树(directory tree) #
绝对路径与相对路径 #
CentOS 的观察: lsb_release #
第七章、Linux 文件与目录管理 #
目录与路径 #
0. 相对路径与绝对路径
0. 目录的相关操作: cd, pwd, mkdir, rmdir
0. 关於运行档路径的变量: $PATH
文件与目录管理 #
0. 文件与目录的检视: ls
0. 复制、删除与移动: cp, rm, mv
0. 取得路径的文件名称与目录名称
文件内容查阅: #
0. 直接检视文件内容: cat, tac, nl
0. 可翻页检视: more, less
0. 数据撷取: head, tail
0. 非纯文字档: od
0. 修改文件时间与建置新档: touch
文件与目录的默认权限与隐藏权限 #
文件默认权限:umask #
文件隐藏属性: chattr, lsattr #
文件特殊权限:SUID, SGID, SBIT, 权限配置 #
*reSetUserID
#reSet执行者的 x 权限 (x时候的UID)
OBS:
仅对 *二进制* 可执行程序有效, 对于普通可执行(例如bash文本文件)无效
x文件者在 x 前必须已经拥有 x 权限, x时候UserID才会被reSet
*reSetGroupID
#文件 的reSetGroupID, reSet执行者的 x 权限
#文件夹的reSetGroupID, reSet进入者的 w 权限
OBS:
常用于专案/项目管理
x*二进制*文件 者在 x 前必须已经拥有对文件 的 x 权限, x时候UserID才会被reSet
w 文件夹列表 者在 w 前必须已经拥有对文件夹的 w 权限. // 文件的 owner和grp是 *文件* 属性, 但由w *文件夹列表* 者的属性决定
*sTicky-bit
#限制 w文件夹列表 者的 w 权限(删除权限)
观察文件类型:file #
命令与文件的搜索 #
命令档名的搜索:which #
文件/文件内容搜索:whereis, locate, find #
文件 file/cmd: #
locate for files/filenames
apt install locate && updatedb
whereis for binary, source, and manual page files for a command (with fixed paths)
which for the pathnames of the files (or links) which would be executed in the current environment by searching the $PATH
find is similar to locate w/o a database, but much slower:
find / -name "config.php"
[ref]
文本文件内容 file content: #
rg (RipGrep) > ag (The Silver Searcher) > ack > grep
e.g.:
apt install ripgrep
rg 'pypi.org/simple' -l
apt install silversearcher-ag
ag "Search query" -l
apt install ack
ack 'text-to-find-here' -l
# hint: postfix " 2>/dev/null " to ignore errors
compressed file content: #
grep, zgrep, bzgrep, xzgrep, zipgrep, deepgrep (for tgz & zip)
zcat archive.gz | fgrep [pattern]
pdfgrep, ssgrep …
[ref]