Linux基础学习:文件与目录管理

简介: Linux基础学习:文件与目录管理

1. 目录与路径


目录的相关操作


几个特殊的目录:


. :表示当前目录


.. :表示上一层目录


- :表示前一个工作目录


~ :表示当前用户所在的主文件夹


~account :表示account用户所在的主文件夹


几个常见的处理目录命令


cd:切换目录


  • cd dir


  • 例如:cd /home 或者 cd ../


pwd:打印当前目录的全路径


  • pwd [-p]


  • -p 参数表示显示正确的路径而不是连接文件的路径。


mkdir:新建一个目录


  • mkdir [-mp]


  • m :配置文件权限,直接设置,不需要看默认权限


-p: 递归创建,包括子目录


  • mkdir -p test1/test2/test3(递归创建)


  • mkdir -m 711 test2(设置文件权限)


rmdir:删除一个空的目录


  • rmdir [-p]


  • -p 参数连同上一层的空目录一起删除,递归删除


rmdir -p test1/test2/test3


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


PATH表示环境变量,内容是由一堆目录构成,每个目录中间用冒号(:)来分隔,并且有顺序之分。处于环境变量中的一些重要执行文件可以在系统任意处执行。


2. 文件与目录管理


查看文件与目录:ls


参数如下:


-a:全部文件。(常用)


-A:全部文件,但不包括.和..


-d:仅列出目录本身。(常用)


-f:直接列出结果,不排序(ls 默认会以文件名排序)


-F:根据文件、目录等信息给予附加信息。


  • * :表示可执行文件;/:表示目录; = :表示socket文件; | :表示FIFO


-h :将文件容量以GB、KB等列出来


-l:列出文件详细信息,包括文件类型、权限、修改信息等


-r:将排序结果反向输出


-S:以文件容量大小排序


-t:以时间排序


–full-time:以完整时间显示


复制、删除与移动:cp、rm、mv


cp :复制


  • cp [-adfilprus] 源文件 目标文件


  • -d:若文件为连接文件属性(link file),则复制连接文件属性而非文件本身


  • -f:为强制复制,若目标文件已经存在且无法开启,则先删除在复制


  • -i:若目标文件已存在,则会先询问是否覆盖,在操作


  • -l:进行硬链接的文件创建,而非文件本身


  • -p:连同文件属性一同复制


  • -r:递归持续复制,用于目录的复制行为


  • -s:复制成为符号连接文件,即”快捷方式“


  • -u:若目标文件比源文件旧才更新


rm:删除


  • rm [-fir] 文件或目录


  • -f:强制删除


  • -i:在删除前提示用户


  • -r:递归删除


mv:移动


  • mv [fiu] 源文件/目录 目标目录


  • mv [options] 源1 源2 源3 … 目标(将多个源移动到目标目录)


  • -f :强制移动


  • -i: 移动前询问,防止覆盖


  • -u:若目标已经存在,且源比较新才更新



取得路径的文件名与目录名称


basename:取得最后一个文件名


  • basename /etc/sysconfig/network


  • 得到文件名:network


dirname:取得目录名


  • dirname /etc/sysconfig/network


  • 得到目录名:/etc/sysconfig


3. 文件内容查找


常用查找命令如下:


cat:由第一行开始显示文件内容


tac:从最后一行开始显示


nl:  显示的时候输出行号


more:一页一页的显示内容


less:与more类似,同时可以翻页


head:只看头几行


tail:只看结尾几行


od:以二进制方式读取文件内容


直接查看文件内容


  • cat


cat [-AbEnTv] 文件名


-A:相当于 -vET 的组合参数,可列出一些特殊字符,而不是空白而已


-b:列出行号,仅针对非空白行做行号显示


-E:将结尾的断行字符 $ 显示出来


-n:打印出行号,连同空白行号也打印出来


-T:将tab键以 ^I 显示出来


-v:列出一些看不出来的特殊字符


  • tac

tac 文件名


  • nl

nl [-bnw] 文件


-b:指定行号显示方式


  • -b a:同cat -n,显示所有行号


  • -b t:不列出空白行行号,默认值


  • -n:列出行号表示方法


  • -ln:最左方显示行号


  • -rn:【自己字段】的最右方显示行号,且不加0


  • -rz:行号在【自己字段】的最右方显示,且加0


  • -w:行号字段占用位数

翻页查看


  • more(一页一页翻动)


more /etc/manpatch.config


image.png


最后一行显示文件的百分比。在more运行过程中,可以通过以下几个按键进行控制:


  • 空格键(space):向下翻一页


  • Enter:向下滚动一行


  • /字符串:查找字符串


  • :f:显示出文件名以及目前显示的行数


  • q:离开more


  • b或者Ctrl + b :往回翻页,不过这操作只对文件有用,对管道无用


less(一页一页翻动)


less /etc/manpatch.config


image.png


less用法比more更加灵活,可以向前向后翻页;向前向后查找:


  • 空格键:向下翻页


  • Pagedown:向下翻页


  • Pageup:向上翻页


  • /字符串:向下查找


  • ?字符串:向上查找


  • n:重复前一个查询


  • N:反向重复前一个查询


  • q:离开less这个程序


数据选取


  • head(文件开头)


head [-n number] 文件 (-n 后接数字,代表显示几行的意思)


默认显示前10行


  • tail(显示后面的几行数据)


tail [-n number]


非纯文本文件读取:od


od [-t TYPE] 文件


-t :后面接文件类型


  • a:默认字符输出


  • c:使用ASCII字符输出


  • d[size]:利用十进制输出,每个整数占size bytes


  • f[size]:利用浮点数输出,每个数占size bytes


  • o[size]:利用八进制输出,每个数占size bytes


  • x[size]:利用十六进制输出,每个数占size bytes



4. 修改文件时间和创建文件:touch


linux下会记录三个主要变动的时间:modification time(mtime)、status time(ctime)、access time(atime)


  • modification time(mtime):当文件内容更改时,更新该时间


  • status time(ctime):当文件状态改变时,更新该时间


  • access time:当文件被取用时,就会更新这个读取时间


文件的时间是很重要的,通过touch命令可以修改文件时间。


touch [-acdmt] 文件


-a :修改访问时间


-c: 仅修改文件的时间,若文件不存在,则不创建新文件


-d: 后面可接修改的日期,而不用目前的日期,也可以使用–data==”日期或时间”


-m:仅修改mtime


-t:  后面可接修改的时间,而不用目前的时间,格式为[YYMMDDhhmm]


5. 文件与目录的默认属性和隐藏属性


文件默认权限:umask


umask就是指定“目前用户在新建文件或目录时候的权限默认值”。


查询umask默认值:


umask:      显示的数值后三位与一般权限有关。其数值刚好与文件属性相反,为1表示屏蔽属性。


umask -S:   显示的是文件属性。


umask 数字:设置默认属性


image.png


文件隐藏属性:chattr,lsattr


  • chattr:设置文件的隐藏属性(只在Ext2/Ext3的文件系统上有效


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


+:增加某一特殊参数


-: 删除某一特殊参数


=:仅有后面接的参数


A:设置A属性后,他的访问时间atime不会被修改


S:一般文件是异步写入磁盘的,加入S属性后,会“同步写入磁盘


a:设置a后,这个文件只能增加数据,不能删除和修改数据,只有root才能设置这个属性


c:设置c后,将会自动将此文件压缩,读取时自动解压。


d:当dump程序执行时,设置d属性可使该文件和目录不会被dump备份


i: 让一个文件“不能被删除,改名,设置连接也无法写入或添加数据”,只有root能设置此属性


s:当设置s后,如果删除一个文件,则该文件会被完全的从这个硬盘空间删除


u:与s相反。删除的文件可以从磁盘恢复


  • lsattr(显示文件的隐藏属性)


lsattr [-adR] 文件或目录


-a :将隐藏的文件属性显示出来


-d: 如果接的是目录,仅列出目录本身属性


-R: 连同子目录数据也一并列出来


查看文件类型:file


file 文件名


6. 命令和文件查询


脚本文件名的查询


  • which(寻找“执行文件”)


which [-a] command


-a :将所有由PATH目录中可以找到的命令均列出,而不只是第一个被找到的命令


文件名的查找


  • whereis(寻找特定文件)


whereis [-bmus] 文件或目录名


-b: 查找二进制


-m:只在manual路径下查找


-s: 只在source源文件查找


-u: 查找不在上述三个选项当中的其他特殊文件


  • locate(找出相关的文件)


locate [-ir] keyword


-i :忽略大小写的差异


-r:后面可接正则表达式


locate passwd :列出所有与passwd相关的文件名


注意:这个locate寻找的数据是经由数据库/var/lib/mlocate/里面的数据查找的,所以不用再去硬盘里访问数据,速度很快。但是数据库的创建,默认每天执行一次,如果新建新的文件后必须手动更新数据库(updatebd),否则会找不到。


updatebd:根据/etc/updatedb.conf的设置去查找系统硬盘内的文件名,并更新var/lib/mlocate内的数据库文件


  • find

find [PATH] [option] [action]


  • 与时间有关的参数:-atime,-mtime,-ctime


  • -mtime +n :列出n天之前的文件


  • -mtime -n : 列出n天之内包含n的文件


  • -newer file: 列出比file还要新的文件


  • 与用户或用户组有关的参数:


  • -uid n: n为数字,是用户账号的ID,即UID


  • -gid n :n为数字,是用户组的ID,GID


  • user name


  • group name


  • 与文件权限及名称有关的参数:


  • -name filename :查找文件名为filename


  • -size [+-]SIZE:查找比SIZE还要大(+)或者小(-)的文件


  • type TYPE :查找文件类型(f:常规文件;b,c设备文件;d:目录;l:连接文件;s:socket;p:FIFO)


  • perm mode :        查找文件权限等于mode的文件


-perm -mode :   必须全部包含mode权限(三个权限)


-perm +mode :     任意一个包含mode权限即可


find -perm +7000:只要包含s或t即可


find -perm -7000: 必须包含—s–s–t所有的三个权限


7. 权限与命令之间关系


用户进入一个目录成为可工作目录的基本权限


  • 可使用的命令:如cd等


  • 目录所需要的权限:用户对这个目录至少需要具有x权限。


  • 额外需求:如果用户想要在某个目录使用ls查询,还需要具备r权限


用户在某个目录读取一个文件的基本权限


  • 可使用的命令:如cat,more,less等


  • 目录所需要的权限:用户对这个目录至少需要具有x权限。


  • 文件所需权限:用户对文件至少要具有r权限


用户在某个目录修改一个文件的基本权限


  • 可使用的命令:如nano,vi等


  • 目录所需要的权限:用户对这个目录至少需要具有x权限。


  • 文件所需权限:用户对文件至少要具有r,w权限


用户在创建一个文件的基本权限

  • 目录所需要的权限:用户对这个目录至少需要具有w,x权限。

 

用户进入目录并执行该目录下的某个命令的基本权限

  • 目录所需要的权限:用户对这个目录至少需要具有x权限。


  • 文件所需权限:用户对文件至少要具有x权限
相关文章
|
9天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
37 3
|
14天前
|
存储 Linux Windows
linux常用目录
/sbin s就是super User的意思,这里存放的是系统管理员使用的系统管理程序。 /home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一版该目录名是以用户的账号命名的。 /root 该目录为系统管理员,也称为超级权限者的用户主目录。 /lib 系统开机所需要最基本的动态连接共享库,其作用类似于windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。 /etc 所有的系统管理所需要的配置文件和子目录。 /usr 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program fies目录。 /bo
31 2
|
18天前
|
存储 安全 Linux
|
12天前
|
Linux 开发工具 Perl
在Linux中,有一个文件,如何删除包含“www“字样的字符?
在Linux中,如果你想删除一个文件中包含特定字样(如“www”)的所有字符或行,你可以使用多种文本处理工具来实现。以下是一些常见的方法:
36 5
|
12天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
31 6
|
12天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
42 6
|
13天前
|
Linux Python
Linux 中某个目录中的文件数如何查看?这篇教程分分钟教会你!
在 Linux 系统中,了解目录下的文件数量是常见的需求。本文介绍了多种方法,包括使用 `ls` 和 `wc` 命令组合、`find` 命令、`tree` 命令以及编程方式(如 Python)。无论你是新手还是有经验的用户,都能找到适合自己的方法。掌握这些技巧将提高你在 Linux 系统中的操作效率。
25 4
|
13天前
|
监控 Linux Perl
Linux 命令小技巧:显示文件指定行的内容
在 Linux 系统中,处理文本文件是一项常见任务。本文介绍了如何使用 head、tail、sed 和 awk 等命令快速显示文件中的指定行内容,帮助你高效处理文本文件。通过实际应用场景和案例分析,展示了这些命令在代码审查、日志分析和文本处理中的具体用途。同时,还提供了注意事项和技巧,帮助你更好地掌握这些命令。
30 4
|
19天前
|
网络协议 Linux
linux系统重要文件目录
本文介绍了Linux系统中的重要目录及其历史背景,包括根目录、/usr、/etc、/var/log和/proc等目录的结构和功能。其中,/etc目录下包含了许多关键配置文件,如网卡配置、DNS解析、主机名设置等。文章还详细解释了各目录和文件的作用,帮助读者更好地理解和管理Linux系统。
42 2
|
18天前
|
缓存 监控 Linux