在Linux中一切皆文件
文件命名规范:
1.不能 使用‘/’作为文件名,因为‘/’为linux的根目录。
2.文件名称不能超过255个字符
3.名称区分大小写(linux中没有文件扩展名,名称中出现类似扩展名只是方便更好理解)
查看文件:
linux中有很多可以查看文件的方式,以下是几种常用的方式:
ls:显示指定路径下的所有文件信息
以下是ls的常用选项:
-a | 列出指定路径下的全部文件 |
-l | 以列表的形式展示文件(等价于ll命令) |
-d | 只展示目录本身而不展示目录下的内容 |
-h | 以人的阅读习惯进行展示 |
-r | 递归展示 |
以下为常用选项的演示,以根目录‘/’为例:
ls -a /:展示出根目录下所有文件内容
根目录以下的文件与linux的许多功能都息息相关,以下是对该些文件的基本介绍:
bin | 普通用户可以执行的命令所在目录 |
boot | 系统启动时所需要的文件 |
dev | 设备文件所在目录 |
etc | 系统中所有配置文件所在目录 |
home | 普通用户所在的家目录 |
lib | 库文件,在系统运行过程中所需要的一个库文件 |
lib64 | 也是库文件所在的目录 |
media | 媒体,是用户挂载的,一般光盘可以挂载在这下面 |
mnt | 挂载目录 |
opt | 第三方软件安装目录 |
root | 超级用户所在的家目录 |
run | 程序运行时的相关文件所在目录 |
sbin | 超级用户可以执行的命苦所在目录 |
srv | 网络服务数据 |
tmp | 运行程序时产生的临时文件所在目录,会定期进行清理 |
usr | 软件资源所在目录 |
var | 用于存放一些会变化的数据,如日志 |
ls -l /和ll /:以列表的形式进行展示:
可以看出两条命令产生的结果都是一样的。
链接文件:
其中有四条文件出现带箭头标识是链接文件。
链接文件分为硬链接文件和软链接文件。软链接文件也叫符号链接文件,类似于windows中的快捷方式,每个软链接文件的数据是它所在链接文件的路径,但和源文件有着不同node,如果源文件被删除,软链接文件也就不起作用了。硬链接文件相当于源文件的副本,拥有和源文件相同的node,当源文件被删除后硬链接文件依旧可以用。
创建硬链接文件:
ln 源文件 目标文件/链接名称
创建软链接文件:
ln -s 源文件 目标文件/链接名称
例如,复制/etc/passwd的内容到passwd文件中,并为该文件分别创建软链接和硬链接
软链接文件可以对一个不存在文件进行创建,而硬链接文件只能对同一个文件系统中存在的文件进行创建;软链接文件也可以对目录进行链接,而硬链接文件不行。
回到我们的ls命令中。
ls -d /:只能展示目录本身而不会展示目录下的内容
可以看出,根据这条命令我们没办法看出根目录下有哪些文件。
cat:用于查看文件的详细内容,而非展示目录下的子文件
以下是cat常用的选项:
-b | 显示没有空行的行号 |
-n | 显示行号 |
以下是常用选项的演示,以/etc/passwd文件为例:
cat -b /etc/passwd:显示的是该文件中无空行的行,并且为其标上了行号
cat -A /etc/passwd:该命令会在每一行的末尾都标上$符号
head:显示文件内容的前部分,默认前10行
-c | 输出每行的第一个字符 |
-n | 输出指定的行数,默认10 |
head -n -3 /etc/passwd:指定的行数为负数时,会从尾部去掉指定行数再展示
这里看出结果只有36行,而通过cat -n /etc/passwd展示的结果是有39行,因为-3为去掉末尾三行
tail:显示文件内容的尾部分,默认后10行
-c | 显示指定数量字符 |
-n | 显示指定行数内容,默认10 |
-f | 显示追加内容,文件会进入阻塞状态,使用ctrl+c退出 |
将虚拟机打开两个界面,一个界面使用tail -f passwd来观察,另一个对文件进行添加内容
可以看到新加入的内容被显示出来。
more:用于分页显示文件的内容
less:用于分页显示文件的内容,类似与more
按g回到第一页,G回到最后一页,空格向下翻页,q退出。
grep:过滤文件内容,显示想要的内容
-c | 显示找到目标内容的行数 |
-i | 不区分大小写得找 |
-n | 显示行号 |
-v | 反向选择,即不包含目标内容的行 |
-A | 显示找到目标内容的那一行以及以下n行 |
-B | 显示找到目标内容的那一行以及以上n行 |
-C | 显示找到目标内容的那一行以及上下n行 |
grep支持多个选项混合使用。
grep -ci RooT passwd:显示包含不区分大小写得RooT有几行
grep -ni RooT passwd:显示包含不区分大小写得RooT的行并显示行号
grep -cv root passwd:显示不包含root的行数
grep -B 2 root passwd:显示包含root的行的前2行
grep nologin$ passwd:显示以nologin结尾的行。
另外还有一些特殊符号的表示:
grep ^h 文件名 | 以h开头的行 |
grep ^[qf] 文件名 | 以q或者以f开头的行 |
grep ^[^qf] 文件名 | 除了以q或者以f开头以外的行 |
grep h$ 文件名 | 以h结尾的行 |
grep ^h$ 文件名 | 只有h的行 |
wc:统计文件内容中的字符数
-c | 统计文件大小 |
-m | 统计字符个数 |
-w | 统计单词个数 |
-l | 统计行数 |
wc a.txt:结果分别是行数,单词数,文件大小,文件名
cut:切割提取文本内容
-d | 指定分隔符,如果是空格需要用引号引起来 |
-f | 指定第几个字段 |
-c | 指定获取几个字符 |
以/etc/passwd内容为例,为了获取uid和gid的内容,已知他们分别是第三和第四个字段,通过-d来指定分隔符为":",从而分出字段,再选择指定字段。
sort:对文本内容进行排序显示
-b | 忽略缩进与空格 |
-f | 忽略大小写 |
-n | 根据数值排序 |
-r | 反向排序 |
-k | 指定字段范围 |
-t | 指定间隔符 |
-u | 去除重复行 |
sort -t : -k 4 -n passwd:同样指定分隔符和字段,但显示的是全部数据,只是数据的顺序根据指定字段的大小进行排序
uniq:去重显示
根据uniq -c a.txt的结果与原文内容对照可以发现,只能对出现连续的额重复内容进行去重
对比sort -u a.txt的去重结果来说,sort更能识别重复的单词,进行去重后再根据字母顺序进行了排序。
创建文件:
mkdir:创建目录
-p | 递归创建 |
-v | 显示创建的过程 |
可以通过花括号形式进行同时创建多个目录。
touch:创建文件
-a | 指access time,即访问时间 |
-m | 指modify time,即修改时间 |
-c | 指change time,即元数据的时间 |
可以通过stat 文件名来查看文件的状态(包括access time,modify time,change time)。
rm:删除目录和文件
-f | 强制删除,不会有提示信息 |
-r | 递归删除 |
-d | 删除空目录 |
-v | 显示删除过程 |
操作文件:
vim:编辑文件内容,是vi的增强版,支持关键字变色
vim编辑器的三种模式:
命令模式:
光标移动 | 上下左右键可以移动光标 |
gg | 快速移动到文件开头,10gg即移动到前面10行 |
shift+g | 快速移动到文件末尾 |
yy | 复制内容,10yy即复制10行数据 |
dd | 删除内容,10dd即删除10行数据 |
u | 撤销之前操作 |
p | 将复制内容粘贴到光标之后 |
插入模式:
i | 光标之前插入 |
a | 光标之后插入 |
o | 光标所在行的下一行插入 |
末行模式:
:wq | 保存退出 |
:q! | 强制退出不保存 |
:r | 将指定文件写入光标位置 |
:%s/x/y/gi | 替换文本内容,用y来替换x |
/keyword | 查找关键字,n向前搜索,N向后搜索 |
:set nu | 显示行号 |
:set nonu | 取消行号 |
:noh | 取消高亮 |
cp:复制文件
-a | 复制时保留链接、文件属性 |
-d | 复制时保留链接 |
-f | 在覆盖已经存在目标路径时不提示 |
-r | 递归复制 |
通过cp -a passwdlink passwdlink2复制passwdlink的内容到passwdlink2中,并且拥有相同的文件属性,除了硬链接数不同。
mv:移动文件或者目录
通过tree 路径可以查看目录结构,可以看出passwdlink2为dir1的子文件。