Linux学习[2]---文件与链接

文章目录

  • 前言
  • 1.文件路径
  • 2.文件基本操作
    • 2.1 新建
    • 2.2 删除
    • 2.3 移动
    • 2.4 复制
  • 3. 文件查找
  • 4. 链接
    • 4.1 硬链接
    • 4.2 软链接

前言

Linux中所有的东西都是以文件的形式进行表现,比如我插个U盘,都需要挂载到文件系统上面去,对挂载的文件夹进行操作映射到对U盘的操作。
这篇博客就对文件做一些记录。


1.文件路径

Linux中以根目录/为起点,依次往下,类似于一棵树状的系统。
我们刚登陆树莓派的时候进入控制台会出现pi@主机名情况,此时输入pwd会输出当前所在目录。一般树莓派刚登陆系统所在的目录为/home/pi。这里表示根目录下的home文件下的pi文件。

涉及到路径最常见的就是修改路径情况,下面是一些常见用例及含义:

  1. cd 指令 即chdir库函数的缩写,改变路径的意思。我们常用它来切换目录。常见用法如:
    cd /etc cd ..
    前者是进入到/etc目录下,后者表示进入到当前目录的上一级目录。

  2. 稍微复杂一点的用例:
    现假设/home/pi目录下存在一个可执行文件test,home目录下还有一个pi1文件夹
    (1)我当前在/目录下,想执行test文件。

    cd /home/pi
    ./test

    (2)我在pi1文件夹下,想执行test文件

    第一种方式与上面一样
    第二种方式:
    cd …/pi
    ./test


2.文件基本操作

对于文件的操作大致就是,新建、删除、移动、复制等。下面进行阐述:

2.1 新建

文件的新建使用touch命令。
例如:touch test.txt
表示在当前的操作目录新建一个test.txt文件,这里新建文件的时候需要带上文件的后缀名即类型名。

衍生到目录的操作,新建一个目录;即新建一个文件夹的操作,使用mkdir
例如:mkdir Test
表示在当前的操作目录新建一个名为Test的文件夹。


2.2 删除

文件的删除使用rm命令
例如:rm test.txt
表示在当前操作目录删除test.txt文件。

衍生到目录(文件夹)的操作,那就是rmdir
例如:rmdir Test
表示在当前操作目录删除Test目录,这里假设Test为空目录,如果要删除非空目录,需要在rmdir指令后添加选项-f


2.3 移动

文件的移动使用的是mv指令
例如:mv test.txt /home/pi/test.txt
这里表示把当前目录的test.txt文件移动到/home/pi目录下,并取名为test.txt。

这里涉及到取名,其实mv指令也可以用来重命名。
例如:mv test.txt TEST.txt
把当前目录的test.txt文件重命名为TEST.txt文件。


2.4 复制

文件的复制使用的是cp命令
例如:cp test.txt /home/pi/test.txt
这里表示把当前目录的test.txt文件复制到/home/pi目录下,并取名为test.txt。

例如:cp test.txt TEST.txt
把当前目录的test.txt文件复制一份到当前目录下名为TEST.txt文件,后者内容和前者一模一样。


3. 文件查找

有时候我们会出现不知道文件在哪的情况,在windows系统中打开资源管理器,右上角会有一个搜索按钮进行输入,就可以在当前目录进行搜索。

在linux中搜索使用的指令是find
基本用法为:find + path + 表达式
其中path为查找的路径,后面的表达式则为主操作和运算符构成。

例如:find / -name "*.txt"
打印从根目录往下的所有后缀为txt的文件,-name表示对名称进行查找,*.txt中的*是通配符,表示所有任意长度的字符串。
上面是常见的用法,具体的其他高级用法参见find的文档手册。


相比于上面的find指令,还有一个查找的命令是locate
两者的区别在于:find是实时查找,locate是从数据库查找。

文件系统的信息提前存于一个数据库,locate命令在这个数据库中查找文件。
可以用下面的命令来更新文件系统信息的数据库:sudo updatedb

locate的查找相比于find要简单很多。
例如:locate test.txt
查找名为test.txt的文件。
例如:locate -i t*t.txt
查找以t开头t结尾的txt文件。

上面都是一些基本指令,当然了还有很多指令我这里都没整理到,比如打包压缩解压之类的,这个我后期打算开博客新写一篇关于指令的相关,指令这里暂时先写这么多了。


4. 链接

链接分为硬链接软链接,两者本质上还有是些区别的,下面进行阐述。

4.1 硬链接

一个文件a如果归属于A目录,那么A目录就会建立一个指向a文件的硬链接。
如果a归属于多个目录,即共享状态。假设a归属于ABCD四个目录,那么a的硬链接个数就为4。

当文件a有硬链接,即硬链接个数不为0时,linux系统是无法删除文件a的,即使在A目录把a删除了,那也只是表明A目录中关于a的硬链接断开了;只有当a的硬链接个数变为0之后,a才会被删除。

断开硬链接的命令如下:unlink a断开当前目录下a的硬链接,即硬链接个数-1
建立硬链接命令:ln
例如:我在A目录下进行操作,往B目录中添加a的硬链接,在B中的a文件取名为a1实现共享。
指令为:ln a /B/a1

这里a1实际上和a是同一个文件,只是名字不同;对a1的所有操作都是对a操作。

4.2 软链接

同一文件的多个硬链接,会破坏树状的文件系统。安全系数大打折扣,因此一般多用软链接。软链接通俗一点的理解就是快捷方式

我删快捷方式,那么源文件还在。
我删源文件,不影响快捷方式的存在,只不过在打开的时候会报错,提示找不到。

所以软链接其实是只存在一个源文件,外发出去很多快捷方式,快捷方式是保存源文件的目录地址,但是在linux中软链接本质上是一个文件,它的文件类型是symbolic link。在这个文件中,包含有链接指向的文件的绝对路径。当读写该文件时,Linux会根据软链接中的绝对路径把读写操作导向软链接所指向的文件。

查看文件是否是软链接文件可以使用file命令进行操作。
例如:file test-link.txt
结果大致为:test-link.txt:symbolic link to 绝对路径

你可能感兴趣的:(#,Linux学习系列,linux,学习,运维)