Linux文件和目录管理
一、目录与路径
绝对路径:一定由根目录/写起
相对路径:不是由根目录/写起,转换路径的时候使用
. 代表当前所在的目录
.. 代表上层目录
-代表前一个工作目录
~代表自己的家目录
~user代表userd的个人的家目录
目录的相关操作和路径变量
(1)cd 变换目录
(2)pwd 显示当前所在的目录
(3)mkdir建立一个新目录
mkdir[-mp][目录名称]
参数说明:
-m:设定档案的权限,直接设定,而不是根据umask来设置目录权限
-p:递归建立目录
(4)rmdir删除一个里面是空的空目录
rmdir [-p][目录名称]
参数说明:
-p:递归删除上层的空目录
当删除一个目录下面有目录的目录时,会产生错误。
如果删除绝对路径,只能删除最下端没有目录的目录
加-p参数后会递归删除目录
当目录下不为空,存在文件时,递归删除会失败。rmdir递归操作只能针对空目录
(5)环境变量PATH:当我们在执行一个指令的时候,系统会按照PATH定义的路径搜索文档,先搜到的指令档案先被执行。
二、管理文件和目录
管理文件与目录就是"显示属性"、"复制"、"删除文件"以及"移动文件或目录"
ls 显示档案名称、属性等
- -a全部的档案都列出(连同隐藏档)
- -A全部文件、与隐藏文件,但不包含.和..这两个文件
- -d仅列出目录本身,而不是列出目录内的文件数据
- -f直接列出结果,而不进行排序(ls默认以文件名排序)
- -F根据文件、目录等信息,附加数据结构。如*表示可执行文件;/表示目录;=表示套接字;I表示FIFO文件-n列出UID与GID,而非用户与用户组的名称-r将排序结果反向输出,例如:原文件名由小到大,反向则由大到小
- -h列出文件大小(GB、MB、kB)
- -列出inode的值
- -l列出长数据串,包含文件属性
- -n列出UID与GID,而非用户与用户组的名称
- -R与子目录内容一起列出来
- -S以档案大小排序
- -t按时间顺序排列
- --color==never:不要显示颜色
- --color==always:均显示颜色
- --color==auto:由系统自行判断
ls -l会显示文件夹下所有文件占内存总大小
ls -li 会显示单个文件的节点
ls -lh会以人文阅读方式显示文件大小
ls -lin会列出UID(用户ID)与GID(组ID),而非用户与用户组的名称
ls -R以目录结构的形式显示文件夹下的组织结构
ls -t以时间顺序排序的组织结构
ls -l --color=never表示不显示颜色
ls -l --color=always表示总是显示颜色
当输入ls时,默认显示颜色
ls -l --full-time,长列表显示全部的时间。
cp 拷贝档案
cp[-drsu][源文件][目标文件]
- -a相当于pdr
- -d 若源文件为连接文件的属性,则复制连接文件属性而非文件本身
- -f(force)的意思,若有重复或其他疑问时,不询问用户,而强制复制
- -i若目标文件已经存在,在覆盖时先询问是否真的操作
- -l 建立硬连接的文件,而非复制文件本身
- -p 与文件的属性一起复制,而非使用默认属性
- -r 递归持续复制,用于目录的复制操作
- -s 复制成符号连接文件(symbolic link)即快捷方式
cp ~/.bashrc bashrc 从根目录拷贝bashrc到本目录下
cp -i ~/.bashrc bashrc 如果已经有了原始文件,询问是否覆盖
cp -s bashrc bashrc-s 复制一个链接档
cp -l bashrc bashrc-h 建立一个硬链接档
cp bashrc-s bashrc-s1将链接档复制成为普通文档
cp -d bashrc-s bashrc-s2 复制链接档为链接档
cp -r /home/* test/递归将/home/*下的所有文件和文件夹复制到test目录下
可以看到/home下的所有文件夹全部复制到test文件夹下了,但是test1的文件夹属性不相同。
cp -pr /home/* test 将home下的文件以及文件夹连同文件文件夹属性复制到test目录下
cp /var/log/wtmp wtmp 拷贝复制文件夹,如果不加-pr参数会丢失同组用户下的w权限
cp -a /var/log/wtmp wtmp copy -a可以复制全文件属性
rm 删除档案
rm[-fir][文件名]
- -f:就是force的意思,强制删除
- -i:交互模式,在删除前,询问用户是否操作
- -r:递归删除,常用在目录的删除
rm -i bashrc 删除bashrc,删除前询问是否删除
rm -f bashrc* 强制删除bash开头的文件
删除前
删除后
rm -rf删除test1
mv 移动档案、重命名档案
mv[-fiu][源文件][目的文件]
- -f:force,强制的意思,强制直接移动而不询问
- -i:若目标文件(destination)已经存在,就会询问是否覆盖
- -u 若目标文件已经存在且源文件比较新,才会更新
- basename:提取路径的最后一个文件夹或文件名(编程用)。如basename /usr/local/etc
- dirname:提取最后一个文件名或文件夹前的路径,与basename正好相反
mv test.txt test 剪切test.txt到test目录下
mv -u test.txt test 更新test.txt到test目录下
mv test.txt test2.txt 文件重命名
basename /tmp/test/test 提取路径的最后一个文件名或文件夹名
dirname /tmp/test/test提取路径的最后一个文件名或文件夹名之前的目录
三、查看文件内容
cat 由第一行开始显示档案内容
cat[-nAE]
- -A:相当于-vET的组合参数,可以列出一些特殊字符
- -E:将结尾的换行符$显示出来(^M$为换行符号,linux以$为换行符号,至于^|则是<tab>按键)
- -n:显示行号
- -T:将tab按键以^|显示出来
- -v:列出一些看不出来的特殊字符
cat test1.txt显示文件中的内容
cat -E test1.txt显示文件内容以及换行符
cat -n test1.txt 显示文件内容以及行号
cat T test1.txt显示Tab
会显示两个Tab键
cat -nTE test1.txt 显示行号、换行符以及Tab键
cat -A test1.txt 显示文件内容
tac 从最后一行开始显示,可以看出tac是cat的倒着写,倒序显示文件内容
tac test1.txt,倒序显示文件内容
nl显示的时候,顺道输出行号
nl[-bnw]文件
-
-b:指定行号指定的方式,主要有两种
- -b a:表示不论是否有空行,也同样列出行号
- -b t:如果有空行,空行不要列出行号
-
-n:列出行号表示的方法有三种:
- -n ln:行号在屏幕最左方显示
- -n rn:行号在字段的最右方显示,且不加0
- -n rz:行号在字段的最右方显示,且加0
- -w:行号字段占用的位数
nl -b a test1.txt 不论是否有空行,同样列出行号
nl -b t test1.txt 不显示空行行号
nl -n ln test1.txt 靠左显示行号
nl -n rn test1.txt 靠右显示行号
nl -n rz test1.txt 靠右补0显示行号
nl -b a -n rn -w 3 test1.txt 指定行号显示无论是否有空行,行号不加0显示,占位符为3
nl -b a -n rz -w 3 test1.txt 指定行号显示无论是否有空行,行号加0显示,占位符为3
more 一页一页的显示文档内容
less 与more相似,但是比more更好的是,他可以往前翻页
head只看头几行
tail只看尾巴几行
od 以二进制的方式读取文档内容
touch 修改文档时间和创建新文件
四、文件和目录的默认权限与隐藏权限
五、搜索文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2020-04-17 SpringBoot(十)----SpringMVC自动配置&扩展配置