在Linux系统中,一切资源都被当成文件对待。普通文件、目录、硬件设备、套接字、网络通信等在Linux中都是文件。对Linux系统的管理实质上是对文件进行管理,因此学习Linux系统从学习它的文件管理开始。
建立文件/目录
首先,建立一个文件的命令有touch和mkdir,在Shell中依次输入这两个指令,可以分别建立一个file文件和dir目录:
建立文件 | 建立目录 |
---|---|
touch file | mkdir dir |
也可以通过这两个指令同时建立多个文件/目录:
建立文件 | 建立目录 |
---|---|
touch file1 file2 file3 | mkdir dir1 dir2 dir3 |
touch命令除了新建文件,还可以修改文件的时间戳,touch file时,若file不存在,则新建一个文件,若file已存在,则更新文件的时间戳。
比如:我们已经建立的file文件,先使用ls
命令查询file的创建时间,然后使用touch
命令更新该文件,会发现文件的时间更改。
删除文件/目录
删除文件/目录的指令是rm:
删除文件 | 删除目录 |
---|---|
rm (-f) file | rm -fr dir |
删除文件时可以不加**-f**,但删除目录时必须加**-fr**,否则会报错:
可以同时建立多个文件/目录,自然也可以同时删除多个文件/目录:
删除文件 | 删除目录 |
---|---|
rm (-f) file1 file2 file3 | rm -fr dir 1 dir2 dir3 |
删除所有文件 | 删除所有目录 |
---|---|
rm (-f) * | rm -fr * |
Linux中的文件编辑
vim是Linux中常用的文本编辑工具,创建好文件之后就应该编辑文件了。vim共有三种工作模式:插入模式、命令模式和退出模式。
使用命令vim file
进入vim界面,此时是vim编辑器的命令模式。
vim的命令模式
匹配关键字
高亮显示关键字的命令: /关键字
撤销关键字的高亮命令: :noh
vim命令模式下调整参数
临时设置参数::set nu
,该命令可临时使vim显示文件行号。
取消临时设置::set nonu
。
若要使某用户永久显示行号,可执行vim /etc/.vimrc
,在文件中添加set nu
即可。
字符管理
复制 | 剪贴 | 删除 | 操作单位 |
---|---|---|---|
yl | cl | dl | 一个字符 |
yw | cw | dw | 一个word |
yy | cc | dd | 一行 |
注意:执行剪贴操作后会自动进入插入模式。
粘贴操作命令:p
撤销命令: u
光标移动
命令模式下的光标移动命令有:
gg | 将光标移动到文件的首行 |
---|---|
G | 将光标移动到文件的末尾 |
:数字 | 将光标移动到指定数字行 |
vim的插入模式
以下命令均可以使文件进入插入模式:
i | 表示在光标所在的位置进入插入模式 |
---|---|
I | 表示在光标所在行的行首进入插入模式 |
o | 表示在光标所在行的下一行进入插入模式 |
O | 表示在光标所在行的上一行进入插入模式 |
a | 表示在光标所在位置的下一个字符进入插入模式 |
A | 表示在光标所在行的行尾进入插入模式 |
s | 表示将光标所在位置的字符删除并在此处进入插入模式 |
S | 表示将光标所在行删除并在此行进入插入模式 |
Esc
按键可使文件由插入模式退出到命令模式。
vim的退出模式
:q | 不保存退出,用于文件未改变的退出 |
---|---|
:wq | 保存退出,用于文件改变后的退出 |
:q! | 强制不保存退出,用于文件改变后不想保存 |
:wq! | 强制保存退出,用于改变了只读文件后的保存 |
vim的异常退出
若文件未经过退出模式就被强制退出,则会生成与文件同名的swp文件(此文件默认为隐藏文件),再次编辑该文件时系统会进行询问,这些询问的快捷键如下:
O | E | R | D | Q | A |
---|---|---|---|---|---|
Open | Editor | Recover | Delete | Quit | Abort |
只读打开 | 继续编辑 | 恢复数据 | 删除.swp文件 | 退出 | 恢复后退出 |
生成.swp文件后,除非将其删除,否则下次对文件进行编辑时都会进行询问。
vim的可视化模式
在vim的命令模式下按Ctrl+v
即可进入可视化模式(VISUAL BLOCK),该模式下再按一次Ctrl+v
退回vim命令模式。
在可视化模式下可批量添加字符,操作为:
- 在可视化模式下选择待插入字符所在的列和行;
- 按大写
I
进入插入模式; - 插入字符;
- 按
Esc
退出插入模式。
此时,待插字符自动填充至所有选中的行。
vim的字符替换
命令::%s/原字符/新字符/g
含义:在命令模式下,将全文中所有的原字符
均替换为新字符
。
vim的分屏功能
ctrl+w s | 上下分屏 |
---|---|
ctrl+w v | 左右分屏 |
ctrl+w 上/下/左/右 | 光标进入上/下/左/右屏中进行编辑 |
ctrl+w c | 关闭光标所在屏 |
:sp file2 | 同时编辑当前文件和file2,若file2不存在,自动创建一个新文件。 |
通过分屏创建的文件与第一个文件同名,插入模式下自动同步编辑。
查看文件内容
cat命令
查看文件信息的命令是cat,它可以将文件内容显示在Shell上。
cat file | 将文件内容显示在Shell上 |
---|---|
cat -b file | 将文件内容显示在Shell上,不统计空行 |
cat -n file | 将文件内容显示在Shell上,统计空行 |
tac file | 倒行显示文件内容 |
当文件中的内容超过一屏时,cat命令只显示文件最后一屏的内容。这时使用cat命令显示就不太方便了,应使用其它查看文件内容的命令。
less命令
less命令可分页浏览文件内容。
调用方式:less 文件名
进入less模式后的常用命令:
上/下 | 逐行移动文件 |
---|---|
pageUp/pageDown | 逐页移动文件 |
v | 进入vim模式,在vim模式下退出,返回less模式 |
p | 退出less模式 |
more命令
more命令可按百分比浏览文件内容,且只能向后浏览。
调用方式:more 文件名
进入more模式后,按Enter
键浏览下一行内容,按空格
键浏览下一页内容。
head命令
显示文件前多少行
head file | 默认显示文件前10行 |
---|---|
head -n 5 file | 指定显示文件前5行 |
tail命令
显示文件后多少行
tail file | 默认显示文件后10行 |
---|---|
tail -n 5 file | 指定显示文件后5行 |
复制文件
cp file file2 | 将文件file复制至目的地文件,新文件的名称为file2 |
---|---|
cp file1 file2 dir | 将文件file1和file2复制至目的地目录,dir需存在 |
cp -r dir dir2 | 将目录dir复制至目的地,dir2需存在 |
cp -r dir1 dir2 dir3 | 将多个目录复制至最后一个目录中,dir3需存在 |
上表中的文件位置可以是相对路径下,也可以是绝对路径下。
移动文件
mv file file2 | 将文件file移动至file2 (若file2存在,会被覆盖) |
---|---|
mv dir dir2 | 将目录dir移动至dir2 |
注意:相同分区的移动是重命名,因此速度很快;不同分区的移动是复制删除的过程,因此速度比较慢。
统计文件
wc file | 统计文件的字数、字符数、行数 |
---|---|
wc -l file | 统计文件的行数 |
wc -w file | 统计文件的字数 |
wc -m file | 统计文件的字符数 |
wc -c file | 统计文件的字节数 |
Linux文件系统的层级结构
顶层是Linux的根目录,表示为:/;
/bin:存放二进制可执行文件,包括所有用户均可执行的命令程序文件;
/sbin:存放二进制可执行文件,只有root用户可访问,包括系统级的管理命令和程序文件;
/boot:存放系统启动引导过程中加载的文件(丢失后不会对现有运行造成影响,但下次无法成功启动系统);
/dev:存放设备文件;
/etc:存放系统程序的配置文件;
/home:普通用户家目录,是用户主目录的基点;
/root:超级用户家目录;
/lib&/lib64:存放系统运行相关的库文件;
/media:临时设备挂载点,例如usb;
/mnt:系统磁盘的临时挂载点;
/opt:默认第三方软件的安装位置;
/proc:进程与内核相关参数;
/sys:内核相关参数;
/tmp :系统临时文件存放目录,所有用户临时文件存放点;
/var:存放经常变化的数据,包括cache、log等;
/usr:全局共享只读资源;
/run:当前运行进程相关目录;
Linux中的文件寻址
显示路径
pwd
:显示当前路径
绝对路径和相对路径
绝对路径是文件在系统中的真实位置,以/
开头。
相对路径是与绝对路径对应的路径,省略了文件在系统中的真实路径,切换相对路径使用./
。
切换路径
cd 目录名称 | 进入指定的目录 |
---|---|
cd - | 返回当前目录之前的目录(可用于两个目录之间的切换) |
cd . . | 进入当前目录的上级目录 |
查看文件信息
Linux中文件的后缀名并不能决定文件的类型,了解文件类型可通过查看文件的Properties->Type
。
ls | 显示所有文件/目录(不包含隐藏文件)名称 |
---|---|
ls -a | 显示所有文件/目录(包含隐藏文件)名称 |
ls 目录 | 显示目录中包含的文件和目录名称 |
ls -l file | 显示文件file的属性 |
ls -d 目录 | 显示当前目录的路径 |
ls -S 目录 | 查看当前目录中的文件/目录,并按照大小排序 |
ls -s 文件/目录 | 显示文件/目录的大小 |
Linux中的文件批处理
文件批处理的通配符
? | 匹配文件中该位置的单个字符 |
---|---|
* | 匹配文件中该位置任意个数的字符 |
[[:alpha:]] | 匹配单个字母 |
[[:lower:]] | 匹配小写字母 |
[[:upper:]] | 匹配大写字母 |
[[:digit:]] | 匹配单个数字 |
[[:punct:]] | 匹配单个符号 |
[[:space:]] | 匹配单个空格 |
[[:alnum:]] | 匹配单个字母或数字 |
[[:punct:][:upper:]] | 匹配单个符号或大写字母 |
除了这些通配符,还有一些用于批量生成字母和数字文件的符号。
{} | [] |
---|---|
用于精确匹配 | 用于模糊匹配 |
生成文件时可使用 | 删除文件时可使用 |
若批量删除文件时使用通配符{},但目录中又没有满足条件的全部文件,则
批量生成文件
touch {1. .9} | 批量生成9个文件,命名为1至9 |
---|---|
touch {a. .z} | 批量生成26个文件,命名为a至z |
touch {1,3,5} | 批量生成3个文件,命名分别为1、3、5 |
批量删除文件
rm {1. .9} | 批量删除9个命名为1至9的所有文件,若某个文件不存在,系统会指出 |
---|---|
rm [1-9] | 批量删除命名为1至9的任意文件,若某个文件不存在,系统不指出 |
rm ![3-6] | 批量删除文件名非3-6的文件 |
rm ^ [3-6] | 批量删除文件名非3-6的文件 |
上述方法均为删除某一个位置上的字符,若要删除所有满足条件的文件,比如删除当前目录下所有包含数字的文件,可以使用rm *[0..9]*
。
~符号
~ | 表示当前用户的家目录,cd ~即进入当前用户的home文件夹 |
---|---|
~ username | 表示当前目录 |
~ + | 表示指定用户的家目录 |
~ - | 作用与cd . . 相同,重复调用可使用户在当前目录和它之前的目录之间跳转 |
更多推荐
Linux基础之文件管理
发布评论