LINUX 文件基本管理

一、文件类型和根目录结构

1、文件类型

可以通过 ls -l 或者 ll来查看文件类型

可以根据显示,查看第一个字符,就表示文件类型。

  • 字符:普通文件,类似于Windows的记事本。

d 字符:目录文件,类似于Windows的文件夹。

c 字符:字符设备文件,串口端口设备,顺序读写,键盘。

b 字符:块设备文件,可供存储的接口设备,随机读写,硬盘。

p 字符:管道文件,用于进程间的通信。

s 字符:套接字文件,通常用于网络上的通信。可以启动一个程序来监听客户端的要求,客户端可以通过套字来进行数据通信。

l 字符:符号连接,又叫软连接,和云文件不是一个文件,例如Windows的快捷方式,如果原始文件被删除,所有指向它的符号连接也就都被破坏了。软连接有自己的node,是linux中特俗文件的一种,它的数据是它所连接的文件的路径。符号链接可以跨越文件系统,也可以为目录建立。

注:硬链接与软连接相似,但不是特殊文件类型,只能引用同一文件系统中的文件,它引用的文件在文件系统中的物理索引(inode),当移动或删除原始文件时,硬链接不会被破坏,因为他所引用的是文件的物理数据而不是文件在文件结构的位置。

软连接与硬链接的区别

软连接:

1)是存放在另一个文件的路径形式;

2)软连接可以跨文件系统;

3)软连接可以对一个不存在的文件名建立链接;

4)软连接可以对目录进行连接。

5)软连接与源文件inode编号不一样。

硬链接:

1)以文件副本的形式存在,但不占实际空间;

2)硬链接只能在同一个系统文件进行创建;

3)硬链接只能给存在的文件进行创建;

4)不能给目录创建硬链接;

5)硬链接给源文件的inode编号相同。

链接创建格式

软连接:ln -s 源目录/文件 新名

硬链接:ln 源文件 新名

例如

php 复制代码
[root@node1 test_1]# ln -s a.txt b.txt  --创建软链接
[root@node1 test_1]# ln a.txt c.txt     --创建硬链接
[root@node1 test_1]# ls -li
total 0
1321200 -rw-r--r--. 2 root root 0 Sep  9 16:55 a.txt
1321201 lrwxrwxrwx. 1 root root 5 Sep  9 16:55 b.txt -> a.txt
1321200 -rw-r--r--. 2 root root 0 Sep  9 16:55 c.txt

2、目录结构

FHS文件系统层级标准,定义了在LINUX系统中的目录结构和目录内容,即让用户链接到安装软件通常放置于哪个目录下。

目录结构特点

使用树形目录结构来组织和管理文件。

整个系统只有一个根目录,Linux系统中根目录用"/"表示。

其他所有分区意外及外部设备都是以根目录为起点,挂接在目录树的某个目录中的,通过访问挂载点目录,即可以实现对这些分区的访问。

/ :Linux文件系统的最上层根目录,其他所有目录均是该目录的子目录。

/boot:存放系统启动时所需的文件,这些文件若损坏常会导致系统无法启动,一般不要改动。

/root:超级用户的个人目录,普通用户没有权限访问。

/home:存放一般用户的个人目录。

/bin:是库英文缩写,存在系统的各种库文件。

/usr:一般用户程序安装所在的目录,用于安装各种应用程序。

/etc:存放了系统管理时要用到的各种配置文件和子目录。

/var:通常各种系统日志文件放在这里。

/dev:dev是设备(device)的英文缩写。包含所有的设备文件。

/mnt:可以临时将别的文件系统挂在这个目录下,即为其他的文件系统提供安装点。

/tmp:用来存放不同程序执行时产生的临时文件。

/srv:srv是服务(server)的简写,服务启动之后需要访问的数据目录。

/sys:本目录是将内核的一些信息映射文件,以供应用程序所用。

/proc:可以在这个目录下获取系统信息。这些信息是在内容中由系统自己产生的。

3、路径以及工作目录

路径分类

绝对路径:是指以根目录"/"为起点表示系统中某个文件(或目录)的位置的方式。

相对路径:是以当前目录为起点,表示系统中某个文件或目录或在目录结构中的位置的方式。

如:[root@node1 ~]# cd /var/log ---绝对路径

二、命令行管理文件

1、文件命名规则

1)不能使用/来当文件名,/是用来做根的,也是用来做路径分隔符;

2)文件名不能超过255个字符;

3)区分大小写文件;

4)目录也是文件,在同一路径下,两个不同类型文件不能同名。

2、目录操作命令

1)创建目录

基本语法

php 复制代码
mkdir [选项参数] [/路径/]目录名

选项参数

-p :可以快速创建出目录结构中指定的每个目录,对于已存在的目录不会被覆盖。

-v:显示创建目录的详细过程。

2)删除目录

基本语法

php 复制代码
 rm -r [-f] 目录文件名

-f:强制删除,无提示; -r:删除会有提示信息,需要确认。

3)统计目录及文件空间占用情况

基本语法

php 复制代码
 du [选项] [目录名]

选项:

-a:统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录。

-s:只统计每个文件所占用空间总的大小,而不是统计每个子目录、文件的大小。

-h:以K、M、G为单位显示磁盘使用情况,提高信息的可读性。

3、普通文件

1)创建普通文件

基本语法

php 复制代码
touch [OPTION]... FILE...

touch 可以进行多个文件创建。

2)删除普通文件

php 复制代码
 rm [-f] 文件名

3)查看文件详细信息

php 复制代码
stat 文件名/或文件路径

access:表示访问文件的时间。

modify:表示修改文件内容时间。

change:表示修改文件元数据的时间。

birth:表示文件创建时间。

4、数据流和重定向

1)数据流

标准输入(stdin):默认情况下,标准输入指键盘获取的输入,代码为0。

标准输出(stdout):默认情况下,命令执行所回传正确的信息会输出到屏幕上,代码为1。

标准错误输出(stderr):默认情况下,标准错误输出可理解为命令执行失败后,所回传的错误信息会输出到屏幕上,代码为2。

2)重定向操作符

重定向操作符可以将命令输入和输出数据流从默认设备重定向到其他位置。重定向操作符本身不是命令,而是命令中附加的可以改变命令的输入输出对象的特殊符号。

输出重定向操作符:>、>>

输入重定向操作符:<、<<

3)输入重定向

<:从文件中读取数据。

<<:不表示追加,而是表示输入结束符的意思,即作为一个结束符。

例如

php 复制代码
[root@node1 ~]# cat < a.txt 
111
111

[root@node1 ~]# cat < a.txt << end
> kkk
> lll
> aaa
> end
kkk
lll
aaa

4)输出重定向

>:输出重定向(覆盖文件内容)

>>:输出重定向(追加内容,不覆盖文件内容)

例如

php 复制代码
[root@node1 ~]# date "+%H:%M:%S" > b.txt
[root@node1 ~]# cat b.txt 
22:26:27
[root@node1 ~]# date "+%H:%M:%S" > b.txt
[root@node1 ~]# cat b.txt 
22:26:40
[root@node1 ~]# date "+%H:%M:%S" >> b.txt
[root@node1 ~]# cat b.txt 
22:26:40
22:26:51

三、vi/vim编辑器

1、vi/vim编辑器介绍

所有LINUX系统都会内建vi文本编辑器,其他的文本编辑器则不一定存在,vim具有程序编辑的能,可以将文字颜色用不同颜色标识,方便程序设计;当程序简单,使用编辑器速度相当快。

vi/vim编辑器设置了三种模式:命令模式、末行模式、编辑模式,每种模式分别支持多种不同的快捷键,提高了工作效率。

基本语法

php 复制代码
vim 文件路径(文件名)
vi 文件路径(文件名)

当运行编辑器时,默认进入命令模式。

2、命令模式

使用上下左右键,进行光标移动;

w:光标按照单词后跳转;

b:光标按照单词向前跳转;

^:光标跳转至行首;

$:光标跳转至行尾;

gg:文档行首第一个字符;

G:文档最后一行第一个字符;

行号+gg/G:指定跳转至指定行;

yy:复制光标所在行;

行号(n)+yy:复制光标所在行开始n行;

p:粘贴到光标所在下一行;

P:粘贴到光标所在上一行;

u:撤销;

dd:删除光标所在行;

行号(n)+dd:删除从光标开始的n行;

d^:删除光标前至行首字符;

d$:删除光标及之后的所有字符;

3、末行模式

按esc键可以从末行模式切换到命令模式,按 : 或者 / 命令可以切换到末行模式。

查找替换

保存退出

其他操作

4、vi/vim三种模式切换

相关推荐
it技术分享just_free3 分钟前
基于 K8S kubernetes 的常见日志收集方案
linux·运维·docker·云原生·容器·kubernetes·k8s
bmseven14 分钟前
windows远程桌面连接ubuntu
linux·windows·ubuntu
aidroid39 分钟前
git github仓库管理
linux·运维·docker
学习3人组1 小时前
集群服务器主机实现主机名与IP绑定
运维·服务器·tcp/ip
三朝看客1 小时前
k8s自动清理pod脚本分享
linux·docker
it技术分享just_free1 小时前
基于 K8S kubernetes 搭建 安装 EFK日志收集平台
运维·docker·云原生·容器·kubernetes·k8s
2407-2 shw2 小时前
weblogic CVE-2018-2894 靶场攻略
java·运维·服务器·安全·weblogic
xiaobai12 32 小时前
集群聊天服务器项目【C++】(六)MySql数据库
服务器·数据库·c++
奇点 ♡2 小时前
【线程】线程的控制
linux·运维·c语言·开发语言·c++·visual studio code
向往风的男子2 小时前
【devops】devops-ansible之介绍和基础使用
运维·ansible·devops