7.Linux文件与目录管理

Linux文件与目录管理

. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表目前用户身份所在的主文件夹

常见的处理目录的命令:
cd - 切换目录
pwd - 显示当前目录
mkdir - 新建一个新的目录
rmdir - 删除一个空的目录

关于执行文件路径的变量:$PATH

echo $PATH

c@c-virtual-machine:~$ echo $PATH
/home/c/bin:/home/c/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin

echo命令由显示、打印出的意思,而在变量前加一个$,会显示出路径。打印出环境变量PATH的路径。

当我们在执行一个命令时,例如ls,系统会依照PATH的设置去每个PATH定义的目录下查询文件名为ls的可执行文件,如果在PATH定义的目录中含有多个文件名为ls的可执行文件,那么先查询到的同名命令先被执行。

PATH这个变量的内容是由一对目录所组成的,每个目录中间用冒号:来隔开,每个目录是有“顺序”之分的。

  • 不同身份用户默认的不同,默认能够随意执行的命令也不同;
  • PATH是可以修改的,所以一般用户还是可以通过修改PATH来执行某些位于/sbin下的命令来查询;
  • 使用绝对路径或相对路径直接指定某个命令的文件名来执行,会比查询PATH来得正确;
  • 命令应该要放置到正确的目录下,执行才会比较方便;
  • 本目录(.)最好不要放到PATH中。

文件与目录管理

ls - 查看文件与目录
cp - 复制文件与目录
rm - 删除文件与目录
mv - 移动文件与目录

basename 路径 取得最后的文件名
dirname 路径 取得目录名

绝对路径

c@c-virtual-machine:/$ dirname /etc/sysctl.d/README 
/etc/sysctl.d
c@c-virtual-machine:/$ basename /etc/sysctl.d/README 
README

相对路径

c@c-virtual-machine:/etc$ basename ../sysctl.d/README 
README
c@c-virtual-machine:/etc$ dirname ../sysctl.d/README 
../sysctl.d

文件内容查阅

cat : 由第一行开始显示文件内容。
tac : 从最后一行开始显示,可以看出tac是cat的倒写形式。
nl : 显示的时候顺便输出行号。
more : 一页一页地显示文件内容。
less: 与more类似,但是比more更好的是,它可以往前翻页。
head : 只看头几行。
tail : 只看结尾几行。
od : 以二进制的方式读取文件内容。
touch : 创建一个空的文件/将某个文件日期修改为当前日期

文件与目录的默认权限与隐藏权限

文件默认权限

umask : 目前用户在新建文件或目录时候的权限默认值。
umask分数指的是该默认值需要减掉的权限。要修改权限只要在umask后加数字即可,例如 umask 002

c@c-virtual-machine:/etc$ umask
0002
c@c-virtual-machine:/etc$ umask -S
u=rwx,g=rwx,o=rx

默认情况下:
1)若用户创建文件,则默认没有可执行(x)权限,即只有r、w这两个选项,也就是最大666,默认权限如下
-rw-rw-rw-
2)若用户新建目录,则由于x与是否可以进入此目录有关,因此默认为所有权限开放,即为777,默认权限如下
drwxrwxrwx

为了安全考虑,root的umask默认为022,普通用户的umask默认002.

文件隐藏属性chattr,lsattr

chattr:设置文件隐藏属性,该命令只在Ext2/Ext3文件系统上生效。
lsattr:显示文件隐藏属性

chattr [+-=][ASacdistu] 文件或目录名称
lsattr [-adR] 文件或目录

文件特殊权限:SUID,SGID,SBIT

后续再介绍。

查看文件类型 file

如果想知道某个文件的基本数据,例如是属于ASCII或者是data文件,或者是binary,且其中有没有使用到动态函数库等等的消息,就可以利用file命令来查看。

文件与文件的查询

which 寻找执行文件
which [-a] command
which是根据用户设置的PATH变量内的目录去查询可执行文件,所以root可以查找到which ifconfig但是普通用户找不到which ifconfig。

找不到which cd是因为cd是bash内置命令,但是which默认查找PATH内的目录。但是可以通过type来查找cd。

文件名的查找

whereis [-bmsu] 文件或目录名 :寻找特定文件
locate [-ir] keyword
find [PATH] [option] [action]

whereis和locate是利用Linux系统中的数据库来查找的,所以查找速度很快,但是无法找到最新创建的文件。find是查找硬盘上的文件。

权限与命令间的关系

1)让用户能进入某目录成为“可工作目录”的基本权限:
用户对这个目录至少需要有 x 权限。
若要用ls查看目录内文件名,需要有r权限。
2)用户在某个目录内读取一个文件的基本权限是:
目录所需权限:x
文件所需权限:r
3)用户修改一个文件所需权限:
目录所需权限:x
文件所需权限:w、r。
4)用户创建一个文件所需权限:
目录:w、x
5)用户进入某目录并执行该目录下的某个命令:
目录:x
文件:x

总结:

与目录有关的命令:mkdir、rmdir、cd、pwd。
文件的复制、删除、移动可以用cp、rm、mv。
读取文件内容可用命令:less、more、cat、tac、tail、head、nl、od。
查找命令的完整文件名可用which、type。
查找文件的完整文件名可用whereis、locate。
利用find可用加入许多参数来直接查询文件系统。

猜你喜欢

转载自blog.csdn.net/qq_34364995/article/details/81706378