文件管理

空~2022年10月12日
  • linux
大约 17 分钟

文件管理

Linux 目录结构

目录结构

Linux 下一切皆文件.

image-20220924200453503

Linux 将硬件也映射为文件来管理了, 给电脑分配 8 个 CPU 就能在 主文件夹/其他位置/计算机/dev/cpu/ 目录下看到 8 个文件夹.

image-20220929111022437

详情

目录含义
/binBinary 的缩写,用来存二进制可执行文件,并且比较特殊的是/bin 存放的是所有一般用户都能使用的可执行文件,如:cat、chmod、mv、mkdir、cd 等常用指令
/sbinSuper User 的意思,存放一些只有 root 用户才有权限执行的可执行文件,如 init,ip,mount 等命令
/boot主要存放开机时用到的引导文件,如 linux 内核文件和开机菜单与开机所有需要的配置文件
/devdevice,任何设备都以文件的形式存放再这个目录中。例如硬盘、键盘、鼠标、光驱等各种设备文件。只要通过访问该目录的某个文件就相当于访问了对应的设备
/etc配置文件、启动脚本等(etc)包含所有程序所需的配置文件以及系统的配置文件,如用户的账号密码文件,各个服务的起始文件等。也包含了用于启动/停止单个程序的启动和关闭 shell 脚本。一般来说,该目录下的文件属性是可以让用户查阅,但只有 root 管理员有权利修改
/home系统默认的用户的家目录,每当新建一个用户系统都会在这个目录下创建以该用户名为名称的目录作为该用户的主目录。
/liblibrary,存放着系统开机时所需的函数库以及/bin 和/sbin 目录下的命令会调用的函数库
/lib64存放相对于/lib 中支持 64 位格式的函数库
/media存放可移除的媒体设备、如光盘,DVD 等
/mntmount,临时挂载的设备文件,临时安装目录,系统管理员可以挂载文件系统。时系统管理员临时安装文件的系统安装点。
/optoptional,可选的软件包,即第三方文件软件。我们可以将除了系统自带软件之外的其他软件安装到这个目录。
/proc特殊的动态目录,用以 维护系统的信息和状态,包括当前运行中进程(processes)信息。包含系统进程的相关信息,是一个虚拟的文件系统,包含有关正在运行的进程的信息,系统资源以文本信息形式存在。
/root系统管理员 root 的主目录
/run最近一次开机后所产生的各项信息,如当前的用户和正在运行中的守护进程等。
/srvservice,存放一些服务启动后所需的数据
/syssystem,与/proc 类似也是虚拟文件系统,存放系统核心与硬件相关信息管理设备文件。不占用硬件容量。
/tmptemporary, 存放系统运行过程中使用的一些临时文件,可以被所有就用户访问,系统重启时会清空该目录。
/usr包含绝大部分所有用户(users)都能访问的应用程序和文件包含二进制文件,库文件。文档和二级程序的源代码。
/var经常变化的(variable)文件,诸如日志或数据库等代表变量文件。在这个目录下可以找到内容可能增长的文件
/lost+found一般是空的, 当系统非法关机后, 这里就会存放一些文件; 默认隐藏.

VI/VIM

VI 是 Unix 操作系统和类 Unix 操作系统中最通用的文本编辑器。

VIM 编辑器是从 V1 从发展出来的一个性能更强大的文本编辑器。可以主动的以文字颜色辨别语法的正确性,方便程序设计。VIM 与 VI 编辑器完全兼容。

三种模式

正常模式(默认)

在正常模式中可以进行删除、复制、粘贴等动作,但无法增加或修改文件内容.

插入模式

可以编辑内容并保存.

命令行模式

可以执行相关部分命令.

image-20220512160155965

正常模式

可以进行删除、复制、粘贴等动作,但无法增加或修改文件内容.

基本语法

语法功能描述
yy复制光标当前一行
y 数字 y | 数字 yy复制一段(从第几行到第几行)
y (shift + 4)复制当前光标到结尾的字符串
p粘贴到当前光标行
u撤销上一步
dd删除光标当前行
d 数字 d | 数字 dd删除光标(含)后多少行
x剪切一个字母,相当于 del
X剪切一个字母,相当于 Backspace
w切换到下一个词
e快速到下一个词尾
d跳转到上一个词
yw复制一个词
dw删除一个词
shift+6移动到行头
shift+4移动到行尾
gg移动到页头
G /L移动到页尾
数字+shift+g移动到目标行

插入模式

在正常模式中可以进行删除、复制、粘贴,但是却无法编辑文件内容.

按下 i, I, o, O, a, A 中任何一个字母之后会进入编辑模式.

提示

通常在 Linux 中,按下这些按键时,在画面的左下方会出现 INSERTREPLACE 的字样,此时才可以进行编辑.

而如果要回到正常模式时, 则按下 ESC 键即可退出编辑模式.

基本语法

按钮功能
i当前光标前
a当前光标后
o当前光标行的下一行
I光标所在行最前
A光标所在行租后
O当前光标行的上一行

退出编辑:

ESC 键回到正常模式

命令行模式

在正常模式当中,输入 :, /, ? 3 个中的任何一个就可以将光标移动到最底下的一行

基本语法

命令功能
:w保存
:q退出
:wq保存并退出
:q!不保存强制退出
/要查找的词输入 n 查找下一个,N 往上查找
:noh取消高亮显示
:set nu显示行号
:set nonu关闭显示行号
:s /old/new替换当前行匹配到第一个 old 为 new
:s /lod/new/g替换当前行匹配到所有 old 为 new
:%s/old/new替换文档中每一行匹配到的第一个 old 为 new
:%s/old/new/g替换文档中的所有的 old 为 new 比较常用

键盘图

image-20220512234008290

文件传输

使用 rzsz

在线安装 rzsz

yum -y install lrzsz

文件上传:

rz

输入命令 rz,回车,会弹出选择文件的窗口,双击要上传的文件,添加到上传列表,可以一次上传多个文件,点击 OK 开始上传

文件下载:

sz 文件名

输入命令 sz 文件... 回车即可

使用 XFTP

xftpxhell 是互通的

image-20220929133438056

单独安装和 xhell 一样配置一下也行

image-20220929133652015

如果文件出现乱码可手动设置编码格式

image-20220929134208457

image-20220929134216613

帮助命令

man

基本语法

man [命令或配置文件]

查看 ls 命令帮助信息, 空格或者上下键翻页

man ls

显示说明

信息功能
NAME命令的名称和单行描述
SYNOPSIS怎样使用命令
DESCRIPTION命令功能的深入讨论
EXAMPLES怎样使用命令的例子
SEE ALSO相关主题(通常是手册页)

help

获取 shell 内置命令帮助信息

判断 cd 是否为内置命令

type cd

cd is a shell builtin

基本语法

help 命令

查看 cd 命令的帮助信息

help cd

history

# 查看历史命令
history
# 查看最近 10 条
history 10
# 执行历史编号为 1 的指令
!1
# 清空历史命令
history -c

常用快捷键

常用快捷键功能
ctrl + c停止进程
ctrl + l清屏,等同于 clear;彻底清屏是: reset
tab提示(更重要的是可以防止敲错)
上下键查找执行过的命令

文件目录类

pwd 显示绝对路径

pwd: print working directory 打印工作目录

基本语法

pwd

ls 列出目录的内容

ls: list 列出目录内容

基本语法

ls [选项] [文件或目录]

选项说明

选项功能
-a全部的文件,连同隐藏文档(开头为.的文件) 一起
-l长数据串列出,包含文件的属性与权限等等数据(常用)等价于“ll”
-h与-l 一起,以易于阅读的格式输出文件大小 (例如 1K 234M 2G)
-i查看文件索引

显示说明

每行列出的信息依次是:文件类型与权限 链接户 文件属性 文件大小用 byte 来标识 建立或最近修改的时间 名字

查看隐藏文件(linux 以 . 开头的文件)

ls -a

单列输出

ls -l

参数组合(无顺序要求)

ls -al

查看 root 目录下的所有文件并单列显示

ls -la /root

查看文件索引

ls -i 文件名

cd 切换目录

cd Change Directory 切换目录

参数功能
cd 绝对路径切换路径
cd 相对路径切换路径
cd ~ 或 cd回到自己的家目录
cd -回到上一次所在目录
cd ..回到当前目录的上一级目录
cd -P跳转到实际物理路径,而非快捷方式路径

mkdir 创建一个新的目录

# 创建目录
mkdir a

# 创建多级
mkdir a a/b a/b/c

# 一次创建三个
mkdir -p a/b/c

rmdir 删除一个空的目录

# 删除空目录
rmdir a

# 删除多级空目录
rmdir a/b/c

非空目录需要使用 rm 指令.

touch 创建空文件

基本语法

touch 文件名称

cp 复制文件或目录

基本语法

cp [选项] source dest

复制 ngin.conf 并重命名为 nginx.conf2

cp nginx.conf nginx.conf2

复制当前目录下的 hello.txtbbb 子目录下

cp hello.txt bbb/

递归复制整个文件夹

cp -r logs logs2

强制覆盖

\cp -r logs logs2

alias 查看命令缩写

alias

结果

alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

rm 删除文件或目录

rm [选项] deleteFile

递归删除目录中所有内容

选项功能
-r递归删除目录中所有内容
-f强制执行删除操作,而不提示用于进行确认
-v显示指令的详细执行过程
#删除文件
rm test.txt
# 递归删除
rm -r dir
# 强制删除
rm -f dir

高危命令

rm -rf dir

该命令删除不需要确认! 谨慎使用.

mv 移动文件或目录或重命名

重命名

mv oldNameFile newNameFile

移动文件

mv /tmp/moveFile /targerFolder

移动并改名

mv /tmp/oldNameFile /targerFolder/newNameFile

移动整个目录, 将 /obt/bbb 移动到 /home

mv /obt/bbb /home

cat 查看文件内容

只能看不能修改

cat [选项] 要查看的文件

显示所有行的行号,包括空行

cat -n 文件名

more 文件内容分屏查看器

more 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容,more 指令中内置若干快捷键

操作功能说
空白键(space)代表向下翻一页
Enter代表向下翻一行
q立刻离开 more
ctrl + F向下滚动一屏
ctrl + B返回上一屏
=输出当前行的行号
:f输出文件名和当前行行号

单独使用

more fileName

结合 cat 查看

cat -n /etc/profile | more

less 分屏显示文件内容(查看大文件)

less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。

less 指令在显示文件内容时,不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

基本语法

less 文件名

快捷键

操作功能说明
空白键向下翻动一页
pagedown向下翻动一页
pageup向上翻动一页
/字符串向下搜寻【字符串】的功能:n:向下查找; N:向上查找
?字符串向上搜寻【字符串】的功能:n:向上查找; N:向下查找
q离开 less 这个程序

echo 输出

echo 输出内容到控制台

echo 【选项】【输出内容】

-e: 支持反斜线控制的字符转换

控制字符作业
\输出\本身
\n换行符
\t制表符,也就是 Tab 键

控制台输出 helloworld

echo helloworld

控制台输出 PATH 变量

echo $PATH

控制台输出所有系统环境变量

echo $ + 两次Tab键

head 显示文件头部内容

head 用于显示文件的开头部门内容,默认情况下 head 指令显示文件的前 10 行内容。

基本语法

head 文件名

查看文件头 5 行内容

head -n 5 文件名

tail 显示文件尾部内容

基本语法

tail 文件名

查看文件尾 5 行内容

tail -n 5 文件名

实时追踪该文档的所有更新

tail -f 文件
  • 按 Ctrl + S 可以暂停监听

  • 按 Ctrl + Q 可以继续监听

输出重定向和追加

列表的内容写入文件 a.txt 中(覆盖写), 如果文件不存在会自动创建.

ls -l > a.txt

列表的内容追加到文件 aa.txt 的末尾

ls -al >> aa.txt

将文件 1 的内容覆盖到文件 2

cat 文件 1 > 文件 2

输出到文件

echo “内容” >> 文件

ln 软链接

软链接(link)也称为符号链接,类似于 windows 里的快捷方式,有自己的数据块,主要存放了连接其他文件的路径

基本语法

ln -s [原文件或目录] [软链接名]

创建一个软链接

ln -s web.log web

ll 命令查看

total 7988
-rw-r--r-- 1 root root  115498 May 13 11:04 gateway.log
lrwxrwxrwx 1 root root       7 May 16 00:36 web -> web.log # 软连接的前缀为l
-rw-r--r-- 1 root root 8048944 May 16 00:36 web.log

直接进入软连接对应的地址

cd -P 软连接

删除软连接

 rm -rf 软连接名

而不是 rm -rf 软连接名/

!!! 如果使用 rm -rf 软连接/ 删除,会把软连接对应的真实目录下内容删掉!

find 查找

find 指令将从指定目录向下递归遍历其各个子目录, 将满足条件的文件或目录显示在终端.

基本语法

find [搜索范围] [选项]

选项说明

选项功能
-name <查询方式>按照指定的文件名查找
-user <用户名>查找属于指定用户的文件
-size <文件大小>按照文件大小查找

查找当前文件夹下是否有 Hello.java

find -name Hello.java

通配符查找

find -name H*

查找当前文件夹下是否有 admin 用户的文件

find -user admin

文件过多可以配合 more 命令

find -user admin | more

whereis 查找

whereis命令 用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

更新指令

updatedb

wehereis 基本语法

whereis(选项)(参数)

-b:只查找二进制文件; -B<目录>:只在设置的目录下查找二进制文件; -f:不显示文件名前的路径名称; -m:只查找说明文件; -M<目录>:只在设置的目录下查找说明文件; -s:只查找原始代码文件; -S<目录>只在设置的目录下查找原始代码文件; -u:查找不包含指定类型的文件。

指令名:要查找的二进制程序、源文件和man手册页的指令名。

例如:

将相关的文件都查找出来

[root@localhost ~]# whereis tomcat
tomcat:

[root@localhost ~]# whereis svn
svn: /usr/bin/svn /usr/local/svn /usr/share/man/man1/svn.1.gz

说明:tomcat没安装,找不出来,svn安装找出了很多相关文件

只将二进制文件查找出来

[root@localhost ~]# whereis -b svn
svn: /usr/bin/svn /usr/local/svn

[root@localhost ~]# whereis -m svn
svn: /usr/share/man/man1/svn.1.gz

[root@localhost ~]# whereis -s svn
svn:

说明:whereis -m svn查出说明文档路径,whereis -s svn找source源文件。

locate 查找

locate 指令可以快速定位文件路径, locate 指令利用事先建立的系统中所有文件名称以及路径的 locate 数据库实现快速定位给定的文件.

locate 指令无需遍历整个文件系统, 查询速度较快.为了保证查询结果准确, 管理员需要定期更新 locate 时刻.

基本语法

locate 搜索文件

第一次运行前需要使用 updatedb 指令创建 locate 数据库

updatedb

which 查找

which 指令可以查看某个指令在哪个目录下.

[root@Linux admin]# which ls
alias ls='ls --color=auto'
 /usr/bin/ls
[root@Linux admin]#

查看 which 本身

[root@Linux admin]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
 /usr/bin/alias
 /usr/bin/which
[root@Linux admin]#

grep 查找

grep 通常配合其他查询命令和管道符 | 使用.

基本语法

grep [选项] 查找内容 源文件

常用选项

选项功能
-n显示匹配行及行号
-i忽略字母大小写

假如要查找 hello.txt 文件中的 "yes" 字符串.

cat hello.txt | grep "yes"

显示行号

cat hello.txt | grep -n "yes"

第二种写法:

grep -n "yes" hello.txt

压缩和解压

gzipgunzip 指令

基本语法

压缩文件, 只能压缩成 *.gz 文件

gzip 文件

解压文件

gunzip 文件.gz

压缩 hello.txt

gzip hello.txt

解压

gunzip hello.txt.gz

zipunzip 指令

zip 用于压缩文件, unzip 用于解压

基本语法

压缩

zip [选项] *.zip 需要压缩的内容(文件或目录)

解压

unzip [选项] *.zip

zip 常用选项

-r: 递归压缩, 即压缩目录

unzip 常用选项

-d<目录>: 指定解压后的文件存放的目录

压缩整个 /home

zip -r home.zip /home

home.zip 解压 到 /opt/tmp

unzip -d /opt/tmp home.zip

tar 指令

将文件打包成 *.tar.gz 文件

基本语法

tar [选项] *.tar.gz 打包内容

选项说明

选项功能
-c产生.tar 打包文件
-v显示详细信息
-f指定压缩后的文件名
-z打包同时压缩
-x解压.tar 文件

将多个文件压缩成 tar.gz

tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt

压缩 /home

tar -zcvf myhome.tar.gz /home

解压 pc.tar.gz

tar -zxvf pc.tar.gz

解压 myhome.tar.gz 到 /opt/tmp2

tar -zxvf /home/myhome.tar.gz -C /opt/tmp2