linux中的文件管理
在Linux中有一个重要特性: everything is file;
在Linux中对系统管理归根到底就是对文件进行管理:对文件实施增删查改。
1.文件或目录的建立
①新建文件
命令 | 效果 |
---|---|
touch westos | 新建文件 |
touch .westos | 新建隐藏文件 |
touch westos1 westos2 westos3 | 新建多个文件 |
touch -t 202001021122 westos | 更改westos文件的时间 |
ls -l westos | 显示westos文件的属性 |
新建文件时,输入“touch 文件名”命令:
执行后桌面出现file文件:
用touch命令一次建立多个文件:
执行后效果:
用touch -t 建立文件westos及修改westos的时间戳:
命令执行后,用 ls -l 查看文件属性:
时间已被修改为202001021122:
②新建目录
命令 | 效果 |
---|---|
mkdir westosdi | 新建目录 |
mkdir westosdir1 westosdir2 westosdir3 | 新建多个目录 |
mkdir -p westosdir/linux/redhat | 新建层级目录 |
( -p表示建立递归目录时,当上层目录不存在时自动建立)
用mkdir命令新建目录:
命令执行后桌面出现目录:
一次新建多个目录:
执行命令后桌面出现3个目录:
建立递归目录时,当上层目录不存在时会报错,加上-p后会自动建立上层目录:
新建层级目录,注意加 -p:
执行效果如图:
依次打开目录发现符合设定的层级:
2.文件删除
①删除文件
命令 | 效果 |
---|---|
rm file | 删除文件(有提示) |
rm -fr dir1 dir2 dir3 | 批量删除文件(没有提示,-f=force) |
(-f表示强制删除不提示)
用rm命令删除桌面上的file文件:
出现询问,是否删除file?
输入 y,即yes:
可以看到执行后桌面文件已被删除:
输入 rm 命令时使用 -f 参数:
执行命令后发现没有询问,桌面文件直接被删除:
②删除目录
命令 | 效果 |
---|---|
rm -r dir | -r表示递归删除,删除目录本身也会删除目录中的所有内容 |
rm -fr dir1 dir2 dir3 | 批量删除目录 |
用 rm -r 命令删除桌面的westosdir目录以及目录中的所有内容:
出现询问:
输入y:
随后出现多项询问,均输入y,桌面的目录及目录中内容都被删除:
使用rm -rf 命令删除刚刚的层级目录 westosdir:
命令执行后,桌面目录直接被删除,不出现询问:
使用rm -fr命令同时删除多个目录:
效果如下,三个目录均被删除:
3.文件编辑
1.gedit(必须开启图形界面)
gedit file直接编辑文件,与windows中的txt记事本操作类似
命令 | 效果 |
---|---|
gedit file | 编辑file文件(file不存在时会自动新建) |
命令行输入gedit file:
执行后打开gedit页面,直接编辑即可:
2.vim(文件界面下的编辑器)
vim是全球著名的两大文本编辑器之一,另外一个是emacs。
操作 | 效果 |
---|---|
vim file | 打开文件并进入vim命令模式,在命令模式下不能修改文件,当文件不存在时自动新建文件 |
[ i ] | 按 [ i ] 键进入插入模式可以修改文件内容 |
[esc] | 当在插入模式中书写完毕,按 |
:wq | 在命令模式下:wq退出保存文件 |
vim的工作模式:命令模式、插入模式、退出模式。
命令行输入vim file:
进入vim视图的命令模式,此时不能编辑文件内容:
按【 i 】进入插入模式,可以修改文件内容:
插入完成后按【esc】退出插入模式,进入命令模式:
命令模式下输入:wq 退出保存文件:
退出后返回原来的shell界面:
4.文件的查看
命令 | 效果 |
---|---|
history > westos | 将history放入file文件,文件不存在时自动新建文件 |
如图输入命令:
history已被导入file文件:
①cat 浏览文件全部内容
命令 | 效果 |
---|---|
cat westos | 显示文件的全部内容 |
cat -b westos | 显示文件的全部内容并显示行号(空行不显示行号) |
cat -n westos | 显示文件的全部内容并显示行号(空行显示行号) |
倒写为tac | 倒序显示文件全部内容 |
注意:显示的行号不会被保存在文件中
输入cat file命令:
执行后,命令行下方显示文件file的全部内容:
继续使用cat -b file命令:
执行后,字符行前出现行号,继续使用cat -n file命令:
执行后,字符行和空行前都出现了行号:
继续使用tac命令:
命令执行后发现文件内容倒序显示:
②less 分页浏览工具,会开启less环境
当文件内容比较长时使用less分页浏览。
首先使用命令less westos进入less模式
操作 | 效果 |
---|---|
上/下 | 逐行查看 |
pgup/pgdown | 逐页查看 |
/关键字 | 搜索关键字,n向下匹配,N向上匹配 |
v | 从less环境进入vim编辑完成:wq回到less |
q | 退出 |
③head|tail
命令 | 效果 |
---|---|
head westos | 显示文件前10行 |
head -3 westos | 显示文件前3行 |
tail westos | 显示文件后10行 |
tail -3 westos | 显示文件后3行 |
命令行输入head file:
执行后命令行下方显示file的前10行内容:
继续使用head -3 file命令,注意与上一条命令对照:
执行命令后,命令行下方显示了前三行的内容:
使用tail file命令:
执行命令后,命令行下方显示了文件的后十行内容,继续输入tail -3 file命令:
执行后只显示后三行内容:
5.文件复制 cp
cp sourcefile(原文件) destfile(目的地文件) | 复制原文件到目的地文件 |
---|---|
cp westos linux | 复制westos到linux文件,当linux存在会覆盖文件的内容,当文件不存在会建立 |
cp westos1 westos2 westos3 westosdir | 复制多个文件到westosdir目录中,westosdir必须是目录 |
cp -r westosdir1 westosdir2 | 复制目录到指定目录中,需要-r参数 |
注意:复制是按照模板新建的过程
6.文件移动 mv
命令 | 效果 |
---|---|
mv westos linux | 当linux存在覆盖linux内容,当linux不存在重命名 |
mv westosdir1 westosdir2 | 移动westosdir1到westosdir2 |
mv westos linux westosdir2 | 移动westos和linux到westosdir2中,目的地目录必须存在 |
注意:相同分区的移动是重命名的过程,不同分区的移动是复制删除过程
7.查看文件类型 file westos
文件的名称不能代表文件的类型,例如file.mp3不能从文件名称后缀来确定文件类型,file可以查看文件的真实类型是什么。
操作 | 效果 |
---|---|
vim中输入#!/bin/bash | shell script |
vim中输入#include<stdio.h> | C source |
使用vim编辑一个file文件:
在vim插入模式下输入如下字符:
退出保存后回到shell界面:
此时使用file命令查看文件真实类型:
使用vim编辑一个file文件:
在vim插入模式下输入如下字符:
退出保存后回到shell界面,使用file命令查看文件真实类型:
8.文件内容统计 wc
wc 用于统计文件的字数,字符数,行数
命令 | 效果 |
---|---|
wc -l westos | 显示行数 |
wc -w westos | 显示字数 |
wc -m westos | 显示字符数 |
wc -c westos | 显示字节数 |
统计文件file的行数,字数,字符数:
分别统计:
9.Linux系统的层级结构
linux是一个倒树型结构,“ / ”(根目录)是系统的顶级目录;
FHS 是 Filesystem Hierarchy Standard(文件系统层级结构标准)的缩写,FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理和矛盾处理,详见link
/ 下的二级目录:
目录名称 | 存放内容 |
---|---|
/bin | 二进制可执行文件,系统常规命令 |
/boot | 启动目录,存放系统自动启动文件,内核,初始化程序 |
/dev | 系统设备管理文件 |
/etc | 大多数系统配置文件存放路径 |
/home/ | 子目录 普通用户家目录 |
/lib | 函数库 |
/lib64/ | 64位函数库 |
/media | 临时挂载点 系统设备 |
/mnt | 临时挂载点(临时设备u盘) |
/run | 自动临时设备挂载点 |
/opt | 第三方软件安装路径 |
/proc | 系统硬件信息和系统进程信息 |
/root | 超级用户家目录 |
/sbin | 系统管理命令,通常只有root可以执行 |
/srv | 系统数据目录 固定数据 |
/var | 系统数据目录 可变的-日志 |
/sys | 内核相关数据 |
/tmp | 临时文件产生目录 |
/usr/ | unix system resource (系统资源目录) |
10.文件寻址
①文件的地址
相对路径:
• 相对与当前系统所在目录的一个文件名称的简写
• 此名称省略了系统当前所在目录的名称
• 此名称不以“/”开头
• 此名称在命令执行时会自动在操作对象前加入“PWD”所显示的值
绝对路径:
• 绝对路径是文件在系统的真实位置
• 此命令是以“/”开头的
• 此命令在命执行时系统不会考虑现在所在位置的信息
注:
• 当操作对象是 对象1 空格 对象2 时, 这两个对象之间没有任何关系。
②文件寻址相关命令
命令 | 效果 |
---|---|
pwd | 显示路径 |
cd目录名称 | 进入到指定目录中 |
cd - | 当前目录和当前目录值前所在目录之间的切换cdir---->odir |
cd点点 | 进入当前目录的上级目录 |
使用pwd命令显示所在位置:
使用cd命令进入/mnt目录中:
使用pwd显示所在位置:
输入cd - 命令:
执行后返回到之前的Desktop目录中:
输入cd点点命令:
进入了Desktop的上级目录~(即家目录)中:
③文件信息的查看
命令 | 效果 |
---|---|
ls -l file | 列出文件的详细属性 |
ls dir | 目录中包含的内容 |
ls -d dir | 将目录像文件一样显示,而不是显示其下的文件,即显示目录本身 |
ls -a dir | (all) 列出目前下所有文件,包括隐藏文件(.文件和…文件) |
ls -A dir | 同-a但是不列出隐藏文件 |
ls -s file或dir | 查看文件大小 |
ls -S dir | 查看目录并且将其中文件按照大小排序 |
ls -R dir | 列出所有子目录下的文件 |
ls -t file或dir | 查看目录并且将其中文件以时间排序 |
ls -1 dir | 查看目录中文件,并且一行只显示一个文件 |
输入 ls -l file 命令:
执行命令后,命令行下方显示了文件的属性:
输入 ls dir 命令:
命令行下方出现了dir所包含的内容:
使用 ls -d 命令查看,显示了目录本身:
在dir目录下新建一个隐藏文件:
然后输入ls -a 命令:
执行命令后,显示了dir下的所有文件包括隐藏文件:
使用ls -S命令将dir中文件从大到小排序:
使用ls -s查看目录下文件大小:
④“~”应用汇总
命令 | 意义 |
---|---|
~ | 当前用户家目录 |
~username | 指定用户的家目录 |
~+ | 当前目录 |
~- | 进入当前目录之前所在目录(olddir)类似cd - 中的"-" |
注:
效果 | 命令 | 命令 |
---|---|---|
当前所在目录 | ~+(通用) | 点(linux用) |
当前目录之前的目录 | ~-(linux用) | -(cd-中用) |
11.linux系统中文件批处理
①系统中的通用配置符号
配置符号 | 意义 |
---|---|
? | 匹配单个字符 |
[[:alpha:]] | 单个字母 |
[[:lower:]] | 单个小写字母 |
[[:upper:]] | 单个大写字母 |
[[:digit:]] | 单个数字 |
[[:punct:]] | 单个符号 |
[[:space:]] | 单个空格 |
[[:alnum:]] | 单个数字或字母 |
[[:punct:][:upper:]] | 单个个符号或单个大写字母 |
如图,新建一些文件:
输入命令:
执行效果:
新建同样文件名的文件,然后输入如下命令:
效果如图:
依然新建同样文件名的文件,输入命令:
执行效果如下:
再新建,再输入命令:
对不同的命令进行实验,观察效果:
②字符集合
精确匹配:
字符 | 意义 |
---|---|
{} | 用于精确匹配内容 |
{1…3} | 3个,1 2 3 |
{1,4,7} | 3个,1 4 7这三个数 |
输入命令:
效果:
刷入命令:
效果:
模糊匹配:
字符 | 意义 |
---|---|
[ ] | 用于模糊匹配内容 |
[1-9] | 1位,这位是1-9的任意数字 |
[!3-5] | 1位,不是3-5的数字 |
[^3-5] | 1位,不是3-5的数字 |
[a-z] | 1位,a-z的任意字母 |
输入命令:
效果:
输入命令:
效果:
输入命令:
效果:
对精确匹配和模糊匹配进行对比实验,为体现实验效果,去掉-f参数:
通过对比我们发现:精确匹配对每一个执行对象都进行了操作,而模糊匹配只对可操作的对象进行了操作,对不存在的对象并没有报错。
本片博客结束!!!