文件管理
文件管理
Linux 目录结构
目录结构
Linux 下一切皆文件.
Linux 将硬件也映射为文件来管理了, 给电脑分配 8 个 CPU 就能在 主文件夹/其他位置/计算机/dev/cpu/
目录下看到 8 个文件夹.
详情
目录 | 含义 |
---|---|
/bin | Binary 的缩写,用来存二进制可执行文件,并且比较特殊的是/bin 存放的是所有一般用户都能使用的可执行文件,如:cat、chmod、mv、mkdir、cd 等常用指令 |
/sbin | Super User 的意思,存放一些只有 root 用户才有权限执行的可执行文件,如 init,ip,mount 等命令 |
/boot | 主要存放开机时用到的引导文件,如 linux 内核文件和开机菜单与开机所有需要的配置文件 |
/dev | device,任何设备都以文件的形式存放再这个目录中。例如硬盘、键盘、鼠标、光驱等各种设备文件。只要通过访问该目录的某个文件就相当于访问了对应的设备 |
/etc | 配置文件、启动脚本等(etc)包含所有程序所需的配置文件以及系统的配置文件,如用户的账号密码文件,各个服务的起始文件等。也包含了用于启动/停止单个程序的启动和关闭 shell 脚本。一般来说,该目录下的文件属性是可以让用户查阅,但只有 root 管理员有权利修改 |
/home | 系统默认的用户的家目录,每当新建一个用户系统都会在这个目录下创建以该用户名为名称的目录作为该用户的主目录。 |
/lib | library,存放着系统开机时所需的函数库以及/bin 和/sbin 目录下的命令会调用的函数库 |
/lib64 | 存放相对于/lib 中支持 64 位格式的函数库 |
/media | 存放可移除的媒体设备、如光盘,DVD 等 |
/mnt | mount,临时挂载的设备文件,临时安装目录,系统管理员可以挂载文件系统。时系统管理员临时安装文件的系统安装点。 |
/opt | optional,可选的软件包,即第三方文件软件。我们可以将除了系统自带软件之外的其他软件安装到这个目录。 |
/proc | 特殊的动态目录,用以 维护系统的信息和状态,包括当前运行中进程(processes)信息。包含系统进程的相关信息,是一个虚拟的文件系统,包含有关正在运行的进程的信息,系统资源以文本信息形式存在。 |
/root | 系统管理员 root 的主目录 |
/run | 最近一次开机后所产生的各项信息,如当前的用户和正在运行中的守护进程等。 |
/srv | service,存放一些服务启动后所需的数据 |
/sys | system,与/proc 类似也是虚拟文件系统,存放系统核心与硬件相关信息管理设备文件。不占用硬件容量。 |
/tmp | temporary, 存放系统运行过程中使用的一些临时文件,可以被所有就用户访问,系统重启时会清空该目录。 |
/usr | 包含绝大部分所有用户(users)都能访问的应用程序和文件包含二进制文件,库文件。文档和二级程序的源代码。 |
/var | 经常变化的(variable)文件,诸如日志或数据库等代表变量文件。在这个目录下可以找到内容可能增长的文件 |
/lost+found | 一般是空的, 当系统非法关机后, 这里就会存放一些文件; 默认隐藏. |
VI/VIM
VI 是 Unix 操作系统和类 Unix 操作系统中最通用的文本编辑器。
VIM 编辑器是从 V1 从发展出来的一个性能更强大的文本编辑器。可以主动的以文字颜色辨别语法的正确性,方便程序设计。VIM 与 VI 编辑器完全兼容。
三种模式
正常模式(默认)
在正常模式中可以进行删除、复制、粘贴等动作,但无法增加或修改文件内容.
插入模式
可以编辑内容并保存.
命令行模式
可以执行相关部分命令.
正常模式
可以进行删除、复制、粘贴等动作,但无法增加或修改文件内容.
基本语法
语法 | 功能描述 |
---|---|
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 中,按下这些按键时,在画面的左下方会出现 INSERT
或 REPLACE
的字样,此时才可以进行编辑.
而如果要回到正常模式时, 则按下 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 比较常用 |
键盘图
文件传输
rzsz
使用 在线安装 rzsz
yum -y install lrzsz
文件上传:
rz
输入命令 rz
,回车,会弹出选择文件的窗口,双击要上传的文件,添加到上传列表,可以一次上传多个文件,点击 OK 开始上传
文件下载:
sz 文件名
输入命令 sz
文件... 回车即可
XFTP
使用 xftp
和 xhell
是互通的
单独安装和 xhell
一样配置一下也行
如果文件出现乱码可手动设置编码格式
帮助命令
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.txt
到 bbb
子目录下
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
压缩和解压
gzip
和 gunzip
指令
基本语法
压缩文件, 只能压缩成 *.gz 文件
gzip 文件
解压文件
gunzip 文件.gz
压缩 hello.txt
gzip hello.txt
解压
gunzip hello.txt.gz
zip
和 unzip
指令
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