5-Linux文件和目录管理
(Linux操作系统-2022的前面章节都为铺垫)
常见命令格式
Command Options Arguments
命令 选项 参数
rm -rf /*
-一个字母或字母组合,此选项为短选项,–单词,此选项为长选项
Options选项:命令的行为方式
Arguments参数:命令的对象
f:force强制
规范
- 命令
- 空格
- 大小写
- 顺序
补充:
df:显示磁盘空间使用情况
-h:以容易阅读的方式显示
-T: 输出时显示文件系统类型
补充:
-c :建立一个压缩文件的参数指令(create 的意思)
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
tar -cvf /tmp/fffmo.com.tar fffmo.com ##仅打包,不压缩!
命令选项详细参考资料
https://wangchujiang.com/linux-command
(无需背,用到查)
https://www.linuxcool.com
列出目录内容和属性
命令:ls
全拼:list
格式:ls 选项 文件名
例:
ls -a
ll --block-size=M
补充:
在linux中,“ll”命令指的是“ls -l”命令,它是“ls -l”命令的一个别名,用于以长格式显示目录下的内容列表;输出的信息从左到右依次包括文件名(在最右边),文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等。
-C # 多列输出,纵向排序。
-F(Filetype) # 每个目录名加 “/” 后缀,每个 FIFO**(补充:存储器,是系统的缓冲环节,)** 名加 “|” 后缀, 每个可运行名加“ * ”后缀。
-R(Recursion) # 递归列出遇到的子目录。
-a # 列出所有文件,包括以 “.” 开头的隐含文件。
-d # 将目录名像其它文件一样列出,而不是列出它们的内容。
-i # 输出文件前先输出文件系列号(即 i 节点号: i-node number)。
-q # 将文件名中的非打印字符输出为问号。(对于到终端的输出这是缺省的。)
-t # 按时间信息排序。
-r, --reverse # 逆序排列目录内容。
-s, --size # 在每个文件名左侧输出该文件的大小,以 1024 字节的块为单位。如果设置了 POSIXLY_CORRECT 的环境变量,除非用“ -k ”选项,块大小是 512 字节。
打印工作路径
命令:pwd
全拼:print working directory
格式:pwd
切换工作目录(复习)
命令:cd
全拼:change directory
格式:cd 相对路径或者绝对路劲
符号 | 指代 |
---|---|
绝对路径 | 由根目录 / 开始写起 |
相对路径 | 从当前所在的工作目录开始写起 |
/ | 根目录 |
. | 代表当前目录 |
~ | 代表用户工作目录,vim ~/.bashrc |
…/ | 代表上一级目录 |
…/…/ | 上上一级目录,以此类推,超出范围的时候代表根目录 |
查看文件类型
命令:file**(用的不多,稍微了解)**
格式:file 选项 文件或目录
file -i 文件名(查出来的文件类型会更详细,对空文件使用file查询不出来文件类型)
复制文件或目录
命令:cp
全拼:copy
格式:cp 选项 源文件 目标文件
(大部分情况下我们不带任何选项)
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-f:强行复制文件或目录,不论目标文件是否已存在;
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号链接时,把目标文件或目录也建立为符号链接,并指向与源文件或目录连接的原始文件或目录;
-i(inqure):覆盖既有文件之前先询问用户;
-v(verbose):详细显示命令执行的操作
补充:
-p:保留源文件或目录的属性;
查找文件或者目录-1
find**(一定要掌握,可能面试会问)**
格式:find 目录 选项 名字或模式
-name 名字 (用的最多)
find /etc -name a*
find / -name “aaa” 2>/dev/null
-type 类型参数
f 普通文件,d 目录
find /root -type f
查找文件或者目录-2
-size大小
find /root -type f -size 10M
-exec command
把find找到的内容作为命令的参数去执行
{}就是找到的内容
find . -name “*.txt” -exec rm -rf {} ;(包括子目录)
find . -name aaa -exec mv {} bbb ;
**补充:**mv——改名
其他查找命令(了解,无需记忆)
whereis:查找二进制程序、代码等相关文件路径
which:查找并显示给定命令的绝对路径
locate:updatedb程序每天会跑一次,建立文件索引
补充:
nc:用于设置路由器,是网络工具中的瑞士军刀。
创建目录
命令:mkdir
全拼:make directory
格式:mkdir 选项 目录名
mkdir test
mkdir -p /usr/local/soft/redis
-p或–parents:若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
-m<目标属性>或–mode<目标属性>:建立目录的同时设置目录的权限;
移动或者重命名
命令:mv
全拼:move
格式:mv 选项 原文件 新文件
mv 1.txt 2.txt
mv /a/1.txt /b/1.txt
windows中F2可以对文件进行重命名
–backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;(和cp一样)
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
删除文件
命令:rm
全拼:remove
格式:rm 选项 (多个)文件名
删除空目录:rmdir
-r或-R(recursive) 递归(连同子文件夹一起删除)
-f 强制删除
find . -name “a.json” -exec rm -rf {}
-i:删除已有文件或目录之前先询问用户;
-v:显示指令的详细执行过程。
创建空文件
命令:touch
格式:touch 选项 文件名
touch a.txt
补充:
时间戳会随着重新创建相同文件而更新,但内容不会被清空。
-a:或–time=atime或–time=access或–time=use 只更改存取时间;
touch ex2
touch file{1…5}.txt
挂载mount(学习不会用到,运维管理需要用到)
问题:一个目录怎么使用多个磁盘?
原路径:/dev/sdb1 挂载到:/sdb-u
mkdir /sdb-u
mount /dev/sdb1 /sdb-u
挂载后:
硬链接
命令:ln
全拼:link
格式:ln 源文件 链接文件
创建硬链接:(用户用的不多)
ln 1.php hard.php
vim hard.php
cat 1.php
注意:
- 用户不能给目录创建硬链接(操作系统才能给目录创建硬链接)
- 只有相同的文件系统才可以创建硬链接(tmpfs——linux中最常见的文件系统 NTFS FAT32)
编辑即创建文件。
:wq——write and quit
df命令 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
软链接
查看软链接:
ll /usr/bin/nc
创建硬链接:
ln -s /usr/local/phpstudy/system/phpstudyctl /usr/bin/st
-s, --symbolic # 对源文件建立符号链接,而非硬链接
使用:
st
源文件删除,软链接失效
可以进行改名
yum install -y wget && wget -O install.sh https://notdocker.xp.cn/install.sh && sh install.sh