1 目录与路径
1.1 相对路径与绝对路径
绝对路径:路径的写法一定由根目录 / 写起。
相对路径:路径的写法不是由 / 写起。
1.2 目录的相关操作
. :代表此层目录
.. :代表上一层目录
- :代表前一个工作目录
~ :代表目前用户身份所在的家目录
~account :代表account用户的家目录
需注意的是:在所有目录下都存在 ./..,分别代表此层和上层目录。根目录下的 .. 目录与 . 目录是同一个。
常用处理目录的命令:
cd:切换目录
pwd:显示当前目录
mkdir:建立一个新的目录
mkdir dirname 建立名为dirname的目录
mkdir -p dirname1/dirname2/dirname3 依次建立多层目录(必须加 -p 参数)
mkdir -m 711 dirname 建立权限为 rwx--x--x 的目录(-m 强制赋予目录相关权限)
rmdir:删除一个空的目录
1.3 执行文件路径的变量:$PATH
echo $PATH 查看当前PATH
PATH="${PATH}:/root" 将 /root 目录加入到 PATH 变量中
2 文件与目录管理
2.1 文件与目录的检视:ls
ls [-aAdfFhilnrRSt] filename/dirname
ls [--color={never,auo,always}] filename/dirname
ls [--full-time] filename/dirname
选项与参数:
-a:全部文件,连同隐藏档(开头为 . 的文件)一起列出来(常用)
-A:全部文件,连同隐藏档,但不包括 . 与 .. 这两个目录
-d:仅列出目录本身,而不是列出目录内的文件数据(常用)
-f :直接列出结果,而不进行排序(ls 会以档名排序)
-F:根据文件、目录等信息,给予附加数据结构,例如:
*:代表可执行文件 /:代表目录 =:代表 socket 文件 I:代表 FIFO文件
-h:将文件容量以人类较易读的方式列出来
-i :列出 incode 号码
-l :长数据串行出,包含文件的属性与权限等数据(常用)
-n:列出 UID 与 GID 而非使用者与群组的名称
-r :将排序结果反向输出
-R:连同子目录内容一起列出来,等于该目录下的所有文件都会显示
-S:以文件容量大小排序,而不是用档名排序
-t :依时间排序,而不是档名
--color=never:不要依据文件特性给予颜色显示
--color=always:显示颜色
--color=auto:让系统自行依据设定来判断是否给予颜色
--full-time:以完整时间模式(年、月、日、时、分)输出
--time={atime,ctime}:输出 access 时间或改变权限属性时间(ctime),而非内容变更时间(modification time)
2.2 复制、删除与移动:cp/rm/mv
2.2.1 cp(复制文件或目录)
cp [-adfilprsu] 来源文件(source) 目标文件(destination)
cp [options] source1 source2 source3 ... directory
选项与参数:
-a:相当于 -dr --preserve=all 的意思(常用)
-d:若来源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身
-f :为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次
-i :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l :进行硬式连结(hard link)的连结档建立,而非复制文件本身
-p:连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用)
-r :递归持续复制,用于目录的复制行为(常用)
-s :复制成为符号链接文件(symbolic link),异即 快捷方式 文件
-u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制
--preserve=all:除了 -p 的权限相关参数外,还加入 SELinux 的属性,links、xattr 等也复制了
2.2.2 rm(移除文件或目录)
rm [-fir] filename/dirname 移除文件或目录
rmdir dirname 移除空目录
选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告讯息
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除!最常用在目录的删除
2.2.3 mv(移动文件与目录,或更名)
mv [-fiu] source destination
mv [options] source1 source2 source3 ... directory 多个来源文件或目录移动,目标文件一定是目录
选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件(destination)已经存在时,就会询问是否覆盖
-u :若目标文件已经存在,且 source 比较新,才会更新
3 文件内容查阅
cat 由第一行开始显示文件内容
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒写
nl 显示的时候,顺道输出行号
more 一页一页的显示文件内容
less 与 more 类似,但是比 more 更好的是可以往前翻页
head 只看头几行
tail 只看尾几行
od 以二进制的方式读取文件内容
3.1 直接检视文件内容
cat [-AbEnTv] concatenate(连续)的简写
选项与参数:
-A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号
-E :将结尾的断行字符 $ 显示出来
-n :打印出行号,连同空白行也会有行号,与 -b 选项不同
-T :将 [tab] 按键以 ^I 显示出来
-v :列出一些看不出来的特殊字符
tac 反向显示
nl [-bnw] filename 添加行号打印
选项与参数:
-b:指定行号指定的方式,主要有两种:
-b a:表示不论是否为空行,也同样列出行号(类似 cat -n)
-b t :如果有空行,空的那一行不要列出行号(默认值)
-n:列出行号表示的方法,主要有三种:
-n ln:行号在屏幕的最左方显示
-n rn:行号在自己字段的最右方显示,且不加 0
-n rz :行号在自己字段的最右方显示,且加 0
-w:行号字段的占用的字符数
示例:
3.2 可翻页检视
more 一页一页翻动
more 运作过程中,可使用的指令有:
空格键 :向下翻一页
回车键 :向下翻一行
/字符串 :向下搜寻【字符串】功能
:f :立刻显示出文件名以及目前显示的行数
q :立刻离开 more,不再显示该文件内容
b 或 [ctrl]-b :往回翻页,不过这动作只对文件有用,对管线无用
less 一页一页翻动
less 运作过程中,可使用的指令有:
空格键 :向下翻一页
[Page Down] :向下翻动一页
[Page Up] :向上翻动一页
/字符串 :向下搜寻【字符串】功能
?字符串 :向上搜寻【字符串】功能
n :重复前一个搜寻(与 / 或 ? 有关)
N :反向的重复前一个搜寻(与 / 或 ? 有关)
g :前进到这个资料的第一行去
G :前进到这个数据的最后一行去
q :离开 less 程序
3.3 资料撷取
head [-n number] filename 取出前面几行
选项与参数:
-n :后面接数字,代表显示几行的意思(默认显示前十行)
备注:-n 选项后面的参数如果接的是负数,代表前面所有行数,不包括后面的 number 行
tail [-n number] filename 取出后面几行
tail [-f] filename
选项与参数:
-n :后面接数字,代表显示几行的意思(默认显示前十行)
-f :表示持续侦测后面所接的档名,要等到按下 [ctrl]-c 才会结束 taild的侦测
备注:-n 选项后面的参数如果接的是 +number,代表后面所有行数,不包括前面 number 行
范例一:显示 /etc/man_db.conf 的第11到20行
head -n 20 /etc/man_db.conf | tail -n 10
|:前面的指令所输出的讯息,会透过管线【|】交由后续的指令继续使用
范例二:显示 /etc/man_db.conf 的第11到20行,且打印行号
cat -n /etc/man_db.conf | head -n 20 | tail -n 10
od [-t TYPE] filename 非纯文本档
选项与参数:
-t :后面可以接各种类型(TYPE)的输出,例如:
a :利用默认字符来输出
c :利用 ASCIIz字符来输出
d[size] :利用十进制(decimal)来输出数据,每个整数占用 size bytes
f[size] :利用浮点数(floating)来输出数据,每个数占用 size bytes
o[size] :利用八进制(octal)来输出数据,每个整数占用 size bytes
x[size] :利用十六进制(hexadecimal)来输出数据,每个整数占用 size bytes
范例一:请将 /etc/issue 这个文件的内容以8进位列出储存值与 ASCII 的对照表
od -t oCc /etc/issue
范例二:找到 password 这个字符串的 ASCII 对照
echo password | od -t oCc
echo 可以在屏幕上面显示任何信息,而这个信息不由屏幕输出,而是传给 od 去继续处理
touch [-acdmt] filename 修改文件时间或建置新档
选项与参数:
-a :仅修订 access time
-c :仅修改文件的时间,若该文件不存在则不建立新文件
-d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间"
-m :仅修改 mtime
-t :后面可以接欲修订的时间而不用目前的时间,格式为 [YYYYMMDDhhmm]
范例一:将 ~/.bashrc 完全复制为 /tmp/bashrc ,检查其日期
cp -a ~/.bashrc /tmp/bashrc
date;ll /tmp/bashrc;ll --time=atime /tmp/bashrc;ll --time=ctime /tmp/bashrc
Linux文件主要变动时间:
modification time(mtime):当该文件的内容数据变更时,就会更新这个时间!内容数据指的是文件的内容,而不是文件的属性或权限。默认情况下,ls 显示出来的是该文件的 mtime。
status time(ctime):当文件的状态(status)改变时,就会更新这个时间,比如:权限与属性
access time(atime):当文件的内容被取用时,就会更新这个读取时间(access),比如:使用 cat 读取 /etc/man_db.conf,就会更新文件的 atime。
4 文件与目录的默认权限与隐藏权限
4.1 文件预设权限:umask
umask 就是指定目前用户在建立文件或目录时的权限默认值。有以下两种方式查看:
[[email protected] ~]# umask
0022 umask 分数,与一般权限有关的是后面三个数字,第一组数字是特殊权限用的
[[email protected] ~]# umask -S
u=rwx,g=rx,o=rx
注:umask 分数指的是该默认值需要减掉的权限!
建立文件时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r-- 注:使用者建立文件预设是没有可执行(x)权限的
建立目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
umask 002 修改默认权限为 :u=rwx,g=rwx,o=rx
4.2 文件隐藏属性
chattr [+-=][ASacdisu] filename/dirname 配置文件案隐藏属性
选项与参数:
+:增加某一个特殊参数,其他原来存在参数则不动
-:移除某一个特殊参数,其他原来存在参数则不动
=:设定特定的参数
A:当设定了 A 这个属性时,若你有存取此文件(或目录)时,他的访问时间 atime 将不会被修改,可避免 I/O 较慢的机器过度的存取磁盘。(目前建议使用文件系统挂载参数处理这个项目)
S:一般文件是异步写入磁盘的,如果加上 S 这个属性时,当你进行任何文件的修改,该更动会同步写入磁盘中。
a:当设定 a 之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有 root 才能设定这属性。
c:这个属性设定之火,将会自动的将此文件压缩,在读取的时候将会自动解压缩,当时在储存的时候,将会先进行压缩后再储存。
d:当 dump 程序被执行的时候,设定 d 属性将可使该文件(或目录)不会被 dump 备份。
i :可以让一个文件不能被删除、改名、设定连结也无法写入或新增数据!对于系统安全性有相当大的帮助,只有 root 能设定此属性。
s:当文件设定了 s 属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘空间,所以误删后,完全无法补救!
u:与 s 相反,当使用 u 配置文件案时,如果文件被删除,则数据内容其实还存在磁盘中,可以使用来救援该文件。
注:1、属性设定常见的是 a 与 i 的设定值,很多设定值必须要身为 root 才能设定
2、xfs 文件系统仅支援 AadiS
lsattr [-adR] filename/dirname 显示文件隐藏属性
选项与参数:
-a:将隐藏文件的属性显示出来
-d:如果接的是目录,仅列出目录本身的属性而非目录内的文件名
-R:连同子目录的数据也一并列出来
4.3 文件特殊权限
Set UID 简称 SUID
SUID 权限仅对二进制程序(binary program)有效;
执行者对于该程序需要具有 x 的可执行权限;
本权限仅在执行该程序的过程中有效(run-time);
执行者将具有该程序拥有者(owner)的权限。
Set GID 简称 SGID
SGID 对于二进制程序有用;
程序执行者对于该程序来说,需具备 x 的权限;
执行者在执行的过程中将会获得该程序群组的支持!
Sticky Bit 简称 SBIT
SBIT 只针对目录有效;
当用户对于此目录具有 w,x 权限,亦即具有写入的权限;
当用户在该目录下建立文件或目录时,仅有自己与 root 才有权力删除该文件
SUID/SGID/SBIT 权限设定:
4 为 SUID
2 为 SGID
1 为 SBIT
4.4 观察文件类型
file filename
4.5 指令与文件的搜寻
4.5.1 脚本文件名的搜寻
which [-a] command 寻找执行档
选项与参数:
-a:将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称
示例一:搜寻 ifconfig 指令的完整文件名
[[email protected] /]# which ifconfig
/sbin/ifconfig
4.5.2 文件档名的搜寻
whereis [-bmsu] filename/dirname 由一些特定的目录中寻找文件名
选项与参数:
-l :可以列出 whereis 会去查询的几个主要目录而已
-b:只找 binary 格式的文件
-m:只找在说明文件 manual 路径下的文件
-s :只找 source 来源文件
-u :搜寻不在上述三个项目当中的其他特殊文件
locate [-ir] keyword
选项与参数:
-i :忽略大小写的差异
-c:不输出档名,仅计算找到的文件数量
-l :仅输出几行的意思,例如输出五行则是 -l 5
-S:输出 locate 所使用的数据库文件的相关信息,包括该数据库记录的文件/目录数量等
-r :后面可接正规表示法的显示方式
update:根据 /etc/updatedb.conf 的设定去搜寻系统硬盘内的文件名,并更新 /var/lib/mlocate 内的数据库文件;
locate :依据 /var/lib/mlocate 内的数据库记载,找出用户输入的关键词文件名。
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 还要新的文件档名
范例一:寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出
find /etc newer /etc/passwd
2、与使用者或组名有关的参数:
-uid n :n 为数字,这个数字是用户的账号 ID,亦即 UID,这个 UID 是记录在 /etc/passwd 里面与账号名称对应的数字。
-gid n :n 为数字,这个数字是组名的 ID,亦即 GID,这个 GID 记录在 /etc/group。
-user name :name 为使用者账号名称,例如:root。
-group name:name 为组名,例如:users。
-nouser :寻找文件的拥有者不存在 /etc/passwd 的人
-nogroup :寻找文件的拥有群组不存在于 /etc/group 的文件
范例二:搜寻 /home 底下属于 zhouweijie 的文件
find /home -user zhouweijie
范例三:搜寻系统中不属于任何人的文件
find / -nouser
3、与文件权限及名称有关的参数:
-name filename:搜寻文件名为 filename 的文件
-size [+-] SIZE :搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有:
c:代表 byte,k:代表 1024bytes。
-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.... 的属性存在!
范例四:找出文件名包含了 passwd 这个关键词的文件
find / -name "*passwd*"
范例五:找出 /run 目录下,文件类型为 Socket 的档名
find /run -type s
范例六:搜寻文件当中含有 SGID 或 SUID 或 SBIT 的属性
find / -perm /7000
4、额外可进行的动作
-exec command:command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的结果。
-print :将结果打印到屏幕上,这个动作是预设动作!
范例七:找出 /usr/bin,/usr/sbin 这两个目录下,具有 SUID 或 SGID 的文件,并将找到的文件使用 ls -l 列出来
find /usr/bin /usr/sbin -perm /6000 -exec ls -l {} \;
注:{} 代表的是【由 find 找到的内容】,find 的结果会被放置到 {} 位置中;
-exec 一直到 \; 是关键词,代表 find 额外动作的开始(-exec)到结束(\;),在这中间的就是 find 指令内的额外动作。
因为【;】在 bash 环境下是有特殊意义的,因此利用反斜杠来跳脱。
原文地址:https://www.cnblogs.com/zhouweijie/p/11538505.html