1.绝对路径和相对路径
绝对路径比绝对路径更方便,但绝对路径的正确性更好
2.目录的相关操作
. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
[root@zjwLinux ~]# cd /home/zjw/ [root@zjwLinux zjw]# cd - /root [root@zjwLinux ~]# cd - /home/zjw
合理使用 - 可在工作目录间快速切换
~ 代表当前用户身份所在的家庭目录
~用户名 代表 用户名 用户的家目录
根目录 / 的 . 与 .. 是同一个目录
1 root@zjw-Lenovo-Legion-Y7000P-2020H:/# ls -al 2 总用量 84 3 drwxr-xr-x 20 root root 4096 6月 11 01:17 . 4 drwxr-xr-x 20 root root 4096 6月 11 01:17 ..
3.几个常用的处理目录命令
一般情况下 pwd -L 与 pwd 一样
pwd -P 显示真实的物理路径,非连接文件路径
如
root@zjw-Lenovo-Legion-Y7000P-2020H:~# cd /lib root@zjw-Lenovo-Legion-Y7000P-2020H:/lib# pwd /lib root@zjw-Lenovo-Legion-Y7000P-2020H:/lib# ls -ld /lib lrwxrwxrwx 1 root root 7 6月 11 01:16 /lib -> usr/lib root@zjw-Lenovo-Legion-Y7000P-2020H:/lib# pwd -P /usr/lib
test1/test2 在 test1 中创建 test2
在创建 test1 7777
然而,当递归同时设置权限时,只有最内部的目录有设置权限,其他外部目录是默认权限
root@zjw-Lenovo-Legion-Y7000P-2020H:/tmp# mkdir -pm 777 test1/test2 root@zjw-Lenovo-Legion-Y7000P-2020H:/tmp# ls -ld test1 drwxr-xr-x 3 root root 4096 6月 24 20:29 test1 root@zjw-Lenovo-Legion-Y7000P-2020H:/tmp# ls -l ./test1 总用量 4 drwxrwxrwx 2 root root 4096 6月 24 20:29 test2
仅仅只有 test2 有被设置的权限
删除空目录test2与空目录test1(rmdir空目录只能删除)
4.查看文件和目录:ls
显示出的*可执行文件;/目录;=为socket文件;|为FIFO文件
具体查看man手册
5.复制、删除、移动 cp、rm、mv
cp -a 复制所有属性
cp -d 如果源文件是链接文件,则复制链接文件属性而不是文件本身
root@zjw-Lenovo-Legion-Y7000P-2020H:/tmp# ls -l /bin lrwxrwxrwx 1 root root 7 6月 11 01:16 /bin -> usr/bin root@zjw-Lenovo-Legion-Y7000P-2020H:/tmp# ls -ld /usr/bin drwxr-xr-x 2 root root 36864 6月 24 14:32 /usr/bin root@zjw-Lenovo-Legion-Y7000P-2020H:/tmp# cp -r /bin ./zjwbin root@zjw-Lenovo-Legion-Y7000P-2020H:/tmp# ls -ld zjwbin lrwxrwxrwx 1 root root 7 6月 25 20:00 zjwbin -> usr/bin //会发现 zjwbin 文件属性与链接文件 /bin 属性完全一样,而非 /usr/bin;但是若直接 cp 复制,会 /usr/bin 属性复制而不是链接文件 /bin
cp -r 递归复制
cp -p 与文件属性一起复制,而不是使用默认属性
cp -f 如果目标文件且无法打开的,删除后再复制一次
cp -i 如果存在目标文件,则在覆盖时会询问
cp -l 硬连接
cp -s 复制成符号链接文件
cp -u 目标文件比旧源文件更新,或者复制目标文件不存在
默认情况下,目标文件的所有者通常是操作员本身,而不是源文件的所有者
复制时需要知道源文件信息是否需要完整保留;源文件是否为符号链接文件;源文件是否为特殊文件;源文件是否为目录
rm -f 强制,忽略不存在的文件,不会有警告信息
rm -i 删除时会问
rm -r 递归删除
mv -f 如果目标文件已经存在,则不会直接询问和覆盖
mv -i 如果存在目标文件,会询问
mv -u 如果目标文件比源文件旧,则更新
6.获取文件名和目录名
basename 获取文件名
dirname 获取目录名
7.查看文件内容
cat 文件内容从第一行开始显示 -a 相当于 -vET
-b 列出行号,空白行不标记
-E 将换行符 $ 显示
-n 列出行号,空白行也包括
-T 将 tab 键以^I显示出来
-v 列出一些看不见的特殊字符
tac 从最后一行开始显示
nl同时输出行号 -b 指定行号的方式 -b a 类似于 cat -n
-b t (默认)如有空行,空行不列出行号
-n 列出行号的表示方法 -n ln 行号显示在屏幕最左边
-n rn 行号显示在栏的右侧,不添加0
-n rz 行号显示在栏的右侧,加0
-w 行号栏占用字符数,即行号显示的位数
more 文件内容逐页显示
less 与 more 类似地,但可以向前翻页(测试,more 也可以向前翻页,区别在于 less 可以使用 g 或 Home、G或End 到达第一行和最后一行)
head 只看前几行 -n number 显示 number 行,number 除了最后number行不显示,其余行显示
tail 只看后几行 -n number 显示最后number行 number 显示number行后数据 (-number似乎毫无意义)
-f 继续刷新后面文件中的内容
od -t 后面可以连接各种类型的输出 a 默认字符输出(以二进制读取文件内容)
c ASCLL字符输出
d[size] 十进制输出占用每个整数 size字节
f[size] 浮点数输出
o[size] 八进制输出
x[size] 十六进制输出
8.了解文件时间,创建新文件
修改时间(mtime):修改文件内容数据时,更新时间
ls 显示出来的时间默认为 mtime
状态时间(ctime):当文件的状态改变时,如权限与属性,就会更新时间(通过操作可以发现只要更改了文件的任何一个属性如任何一个时间,ctime都会改变)
读取时间(atime):当文件的内容数据被读取时,就会更新时间
touch 创建新文件 -a 仅自定义atime
-c 仅修改文件时间,若文件不存在则不创建新文件
-d 后面可以接欲自定义的日期而不用目前的日期,等于 --date=
-m 仅修改mtime
-t 与 -d类似,日期格式为 YYYYDDMMhhmm
9.文件目录的默认权限与隐藏权限
umask 查看默认权限 默认显示为需要减去的权限,如显示022则g-w o-w
-S 以u= ,g=, o= 显示
[zjw@zjwLinux ~]$ umask -S
u=rwx,g=rx,o=rx
文件的隐藏属性
chattr + 增加某一特殊参数,其他参数不动
- 删除某一特殊参数,其他参数不动
= 直接设置,且仅有设置的参数
A 设置此参数后,存取次文件时,存取时间 atime 不会改变
S 一般文件都是非同步写入磁盘,设置此参数后,修改会同步写入磁盘
a 设置后,文件只能增加数据,不能修改或删除数据
c 设置后,会自动将文件压缩,读取时自动解压缩,存储时先压缩再存储
d 当dump程序被执行时,此文件不会被dump备份
i 此文件不能被删除、改名、设置链接也无法写入或新增数据,即使是root也无法
s 若文件被删除,则会完全被硬盘删除,无法恢复
u 与s相反,可恢复
lasttr -a 显示隐藏文件
-d 若接目录,则列出目录本身
-R 递归显示
10.文件的特殊权限(先记着,了解一下,后面再会来看)
4 SUID Set UID,s出现在文件拥有者的x权限上,仅对二进制程序有效,无法用在目录及shell脚本上;执行者对于该程序具有x的可执行权限;仅在执行该程序中获得该程序拥有者的权限
如
[root@zjwLinux /]# ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 51464 Jan 27 21:47 /usr/bin/passwd
passwd的拥有者为 root ,当用另外一个用户zjw执行此文件时,如用vim进入,如果没有s,则zjw无法修改内容,但是有了s后,zjw有了文件拥有者root的权限,即有了rwx
2 SGID Set GID,s出现在用户组的x权限上,对二进制程序有用;程序执行者须具备x权限且在执行过程中将会获得用户组权限
设置在目录上后,用户对于此目录有r与x权限,即能够进入此目录且拥有用户组权限
1 SBIT Sticky Bit,只对目录有效如 /tmp ,每个文件拥有者只能更改自己的文件,无法删除其他人的文件
SUID仅用在文件上,SBIT仅用在目录上 S与T代表空
利用 file 查看文件类型
11.命令与文件的查找
which 根据 PATH 环境变量所规范的路径查找执行文件的文件名
type 通过PATH变量查找,并且type 会显示出原名而非别名
由于find速度慢,影响硬盘性能,所以先用 whereis或 locate,真找不到采用find
whereis -l 列出whereis 查询的几个主要目录
-b 只查找二进制文件
-m 只搜索手册和信息
-s 之查找源文件
-u 查找不在上述三个项目中的其他文件
locate(linux发行版ubuntu22.04LTS不自带此命令)
-i 忽略大小写
-c 不输出文件名,仅计算找到的文件数量
-l number 仅输出 number 行
-S 输出locate 所使用的数据库文件的相关信息,包括该数据库记录的文件/目录数量等
-r 后面可接正则表达式的显示方式
由于 locate 根据数据库来搜索,所以在数据库更新前无法查找新建立起来的文件,利用
updatedb 来手动更新数据库
find [PATH](mtime为例)
-mtime n n天之前(一天之内)被修改过的文件,如今天是28号,n为5,则查找的是22-23这24小时内变化的文件
-mtime +n 列出在n天之前(不包含本身)被修改过内容的文件, n为5,则查找的是22号及往前变化的文件
-mtime -n 列出在n天之内被修改过的文件, n为5,则查找的是23号直到今天的变化的文件
-newer file 列出比file更新的文件
-uid n 记录在/etc/passwd内的使用者账号UID
-gid n 记录在/etc/group内的用户组的GID
-usr name
-group name
-nouser 查找文件的拥有者不在/etc/passwd中的文件
-nogroup 文件用户组不在/etc/group中的文件
-name filename 利用 * ?‘ “ 等符号查找包含 filename 的文件
-size [+-]Size 查找比Size还要+大 -小 的文件 Size规格为 c:Bytes,k:1024Bytes
-type TYPE 查找文件类型为TYPE(f:正规文件,b,c:设备文件,d:目录文件,l:链接文件,s:socket,p:FIFO文件
-perm mode 查找文件权限为 mode 的文件
-perm -mode 查找文件权限包括mode 的文件
-perm /mode 查找任意包含 mode 子权限(瞎邹的,知道意思就行......)的文件,如查找 -perm /755 ,则 700也会显示出来,因为包含7
-exec command exec再接其他command,不支持别名
如 find /usr/bin -perm /7000 -exec ls -l {} \; -exec 到 \; 为find的开始与结束,\; 为转义 ;
-print 将结果打印到屏幕,默认执行