Linux 文件管理
Linux 中
一切皆文件
,所有的操作都是针对文件在
Linux
操作系统中,所有的文件和目录被组织为单根倒置树结构
,从根目录/
开始
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qmp8Jgwl-1569726002228)(http://img.tigeru.cn/FhX0Ispmvl8XYx19pR5TOcUNrild)]
1.文件系统结构
目录 | 内容 |
---|---|
bin | binary (二进制),存储的都是一些二进制文件(可执行文件) |
sbin | super binary ,存储一些可以被执行的二进制文件,但是必须得有super 权限的用户才能执行。 |
boot | 用于存放引导文件,内核文件,引导加载器 |
dev | 主要存放的是外接设备,例如盘、光盘等。其中的外接设备是不能直接被使用的,需要挂载 |
ect | 系统和服务相关配置文件 |
home | 普通用户的家目录 |
root | root用户家目录 |
proc | process ,虚拟的文件系统,存储的是运行中的进程的实时状态 |
tmp | temporary ,存储一些临时文件 |
usr | 存放用户自己安装软件 |
usr/local | 第三方源码包默认安装目录 |
var | 动态文件,例如程序或系统的日志文件 |
mnt | 挂载光驱、USB设备的目录 |
2.目录与路径
相对路径和绝对路径
相对路径:相对于当前工作目录的路径
绝对路径:从根目录开始,
/
开头
- 目录
所有的目录下多会存在两个目录.
和..
.
或./
:当前目录..
或../
:上一级目录/
:根目录-
:上次所在目录~
:当前用户家目录~用户名
:指定用户家目录
3.基本操作
ls
列出当前目录下所有文件/文件夹名称 (list directory contents)
选项 | 全称 | 作用 |
---|---|---|
-l | use a long listing format | 列出文件和目录的详细信息 输出信息内容:权限,硬链接数,所有者名,组名,大小(byte),最后修改时间,名称 |
-a | all | 列出显示所有文件和目录(包括隐藏的) |
-t | time | 按照时间排序,新到旧 |
-r | reverse | 倒序排序 |
-S | sort by file size | 文件大小排序,大到小 |
-R | recursion | 递归显示目录 |
-d | directory | 列出目录信息,而不是目录内文件信息 eg: # ls -dl /home |
linux 使用不同的颜色表示文件的类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wVo51xfV-1569726002229)(http://img.tigeru.cn/FilTegGvWbyIINRdpLtV9vvxKV4m)]
file
查看文件类型
文件类型
文件类型 | 全称 | |
---|---|---|
-/f | file | 常规文件 |
d | directory | 目录文件 |
b | block device | 块设备,存储设备,如,磁盘、U盘、光驱… |
c | character device | 字符设备,所有的输入输出设备,如键盘,鼠标,显示器… |
l | symbolic link | 软链接文件 |
p | pipe | 管道文件 |
s | socket | 套接字文件,用于两个进程间通信 |
stat
查看文件状态信息
pwd
打印出当前工作目录名 (print working directory)
cd
切换当前工作目录 (change directory)
mkdir
创建目录(make directory)
- 创建单个目录:
# mkdir 路径
- 创建多层目录:
# mkdir -p 路径
- 创建多个目录:
# mkdir 路径 路径 路径
rmdir
移除空目录
touch
创建文件,修改文件时间
- 创建单个文件:
# touch 文件名
- 创建多个文件:
# touch 文件名 文件名
创建多个文件 # touch 文件名{a..z} touch 文件名{1..100}
命令 | 全称 | 作用 |
---|---|---|
-a | assess | 修改文件访问时间 |
-m | modify | 修改文件修改时间 eg: # touch -m file1 -t '202210010101' |
-d | date | 同时修改文件的访问和修改时间 eg: # touch -d '202210010101' file1 |
cp
复制 (copy)
- 复制文件:
# cp 原路径 目标路径
,目标路径文件名可以修改
- 复制目录:
# cp -r 原路径 目标路径
,-r
表示recursion
递归
选项 | 全称 | 作用 |
---|---|---|
-r | archive | 拷贝目录 |
-p | preserve | 文件属性信息一起拷贝 |
-a | archive | 拷贝目录,包含文件属性信息 |
-v | verbose | 显示拷贝过程 |
mv
移动(mov e),重命名
- 移动:
# mv 原路径 目标路径
- 重命名:
# mv 原名 新名
rm
删除(remove)
- 删除单个文件:
# rm 文件
- 删除多个文件:
# rm 文件 文件
- 删除目录:
# rm -r 目录
du
查看目录的真实大小, 常用
# du -sh
find
在指定目录下查找文件
使用时注意: 避免高峰期在根目录下搜索
# find 路径 选项目 关键字
选项 | 作用 |
---|---|
-name | 按照文件名查找 |
-iname | 按照文件名查找,但是忽略文件大小写 |
-size | 按照文件大小查找 |
-type | 按照文件类型查找,[d f b c l p s] |
-mtime | 按照文件修改时间查找-n表示n天以内,+n表示的是n天之前,n表示特定某天 |
-atime | 按照文件访问时间查找 |
-ctime | 按照文件创建时间查找 |
-perm | 按照文件权限查找文件 |
-user | 按照用户来查找 |
-group | 按照用户组来查找 |
find 扩展
查询出来的结果进行某个动作
动作选项 | 作用 |
---|---|
-exec | 执行shell 脚本 |
-ok | 实行shell 脚本,执行命令前给出提示 |
-delete | 删除 |
-ls | 列出文件 |
打印 |
语法结构:
# find 路径 选项 关键字 -exec (shell command) 最后以空格反斜杠分号结尾( \;)
{} 表示find 命令查找出来的内容
Exmpale1:
找出/etc目录下以.net结尾的文件并拷贝到/tmp/目录下
# find /etc -name '*.net' -exec cp {} /tmp \;
Example2:
找出/tmp/目录下3天前的普通文件并删除
# find /tmp/ -mtime +3 -type f -delete
4.文件内容查看
cat
查看一个文本文件的内容 (concatenate);多个文件内容合并查看
选项 | 全称 | 作用 |
---|---|---|
-n | number | 显示行号 |
- 查看文件:
# cat 文件名
- 多个文件合并查看:
# cat 文件1 文件2 文件n
tac
查看文件全部内容,从最后一行开始显示,与cat相反
head
查看一个文件的前
n
行,如果不指定则默认显示前10行语法:
# head -n
文件路径
tail
查看一个文件的末
n
行,如果不指定则默认显示末10行
选项 | 全称 | 作用 |
---|---|---|
-f | follow | 动态查看一个文件的内容 |
more
分页查看文件内容,只可以往下翻页
less
分页查看文件内容,可以通过
PageUp
和PageDown
翻页
ldd
查看二进制文件
wc
统计文本信息
选项 | 全称 | 作用 |
---|---|---|
-l | lines | 行数 |
-w | words | 单词数 |
其他:
重定向
Bash 的标准输入输出
- 标准输入(stdin),键盘的输入,代码
0
,使用<
或<<
- 标准输出(stdout),正确的输出,代码
1
,使用>
或>>
|1>
或1>>
- 标准错误(stderr),错误的输出,代码
2
,使用2>
或2>>
>
:覆盖输出重定向,会覆盖掉原先的文件内容
>>
:追加输出重定向,会进行追加操作
&>
:标准输出和标准错误重定向
echo
输出指定字符串或者变量,并在最后加上换行符
选项 | 作用 |
---|---|
-e | 激活转义字符 |
history
查看历史命令
执行指定历史记录语法:!序号
选项 | 全称 | 作用 |
---|---|---|
-c | clear | 清空历史指令记录 |