在Linux系统中,一切资源都被当成文件对待。普通文件、目录、硬件设备、套接字、网络通信等在Linux中都是文件。对Linux系统的管理实质上是对文件进行管理,因此学习Linux系统从学习它的文件管理开始。

建立文件/目录

首先,建立一个文件的命令有touchmkdir,在Shell中依次输入这两个指令,可以分别建立一个file文件和dir目录:

建立文件建立目录
touch filemkdir dir



也可以通过这两个指令同时建立多个文件/目录:

建立文件建立目录
touch file1 file2 file3mkdir dir1 dir2 dir3



touch命令除了新建文件,还可以修改文件的时间戳,touch file时,若file不存在,则新建一个文件,若file已存在,则更新文件的时间戳。

比如:我们已经建立的file文件,先使用ls命令查询file的创建时间,然后使用touch命令更新该文件,会发现文件的时间更改。

删除文件/目录

删除文件/目录的指令是rm

删除文件删除目录
rm (-f) filerm -fr dir

删除文件时可以不加**-f**,但删除目录时必须加**-fr**,否则会报错:

可以同时建立多个文件/目录,自然也可以同时删除多个文件/目录:

删除文件删除目录
rm (-f) file1 file2 file3rm -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即可。

字符管理

复制剪贴删除操作单位
ylcldl一个字符
ywcwdw一个word
yyccdd一行

注意:执行剪贴操作后会自动进入插入模式

粘贴操作命令:p
撤销命令: u

光标移动

命令模式下的光标移动命令有:

gg将光标移动到文件的首行
G将光标移动到文件的末尾
:数字将光标移动到指定数字行

vim的插入模式

以下命令均可以使文件进入插入模式:

i表示在光标所在的位置进入插入模式
I表示在光标所在行的行首进入插入模式
o表示在光标所在行的下一行进入插入模式
O表示在光标所在行的上一行进入插入模式
a表示在光标所在位置的下一个字符进入插入模式
A表示在光标所在行的行尾进入插入模式
s表示将光标所在位置的字符删除并在此处进入插入模式
S表示将光标所在行删除并在此行进入插入模式

Esc按键可使文件由插入模式退出到命令模式。

vim的退出模式

:q不保存退出,用于文件未改变的退出
:wq保存退出,用于文件改变后的退出
:q!强制不保存退出,用于文件改变后不想保存
:wq!强制保存退出,用于改变了只读文件后的保存

vim的异常退出

若文件未经过退出模式就被强制退出,则会生成与文件同名的swp文件(此文件默认为隐藏文件),再次编辑该文件时系统会进行询问,这些询问的快捷键如下:

OERDQA
OpenEditorRecoverDeleteQuitAbort
只读打开继续编辑恢复数据删除.swp文件退出恢复后退出

生成.swp文件后,除非将其删除,否则下次对文件进行编辑时都会进行询问。

vim的可视化模式

在vim的命令模式下按Ctrl+v即可进入可视化模式(VISUAL BLOCK),该模式下再按一次Ctrl+v退回vim命令模式。

在可视化模式下可批量添加字符,操作为:

  1. 在可视化模式下选择待插入字符所在的列和行;
  2. 按大写I进入插入模式;
  3. 插入字符;
  4. 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基础之文件管理