生信基础——三、Linux指令之文件操作

生信基础——三、Linux指令之文件操作

前言

这篇文章只是针对0基础的Linux小白,可以快速上手完成一些必须使用Linux场景的任务,尤其是生信领域。本着先会用,再理解,先局部,再系统的学习方法,只对必要内容进行讲解,大佬可以在评论区补充知识点。之后所有内容会优先使用WSL下的Ubuntu-22.04终端操作进行讲解,可以查看上一篇文章进行安装:生信基础——二、安装Ubuntu-优快云博客

一、认识 Linux 的文件系统

1、路径、目录、文件

  • 路径

    在 Windows 系统中,我们怎么去找到一个文件?我们会使用资源管理器(如下),通过鼠标的点击,就可以层层进入文件夹,找到目标文件。而一个文件所在的位置,会用 \ 反斜杠来表示层次,这就称为路径,在下面的图中,显示了 Windows 资源管理器的路径显示方式:F:\my_projects\生信教学\生信基础——三、Linux基础指令

    在这里插入图片描述

    但是在Linux的终端环境下(如下),我们并没有图形化界面去使用鼠标点击操作

    在这里插入图片描述

    这时候,就得使用键盘输入指令进行操作了,我们使用 cd {Linux路径} 命令进入某个目录(相当于Windows下的文件夹),当我在 WSL 终端中输入以下命令就可以进入刚才 Windows 资源管理器打开的 F:\my_projects\生信教学\生信基础——三、Linux基础指令 路径

    cd /mnt/f/my_projects/生信教学/生信基础——三、Linux基础指令
    

    在这里插入图片描述

    大家可能会疑惑:为什么在 Windows 下的路径是 F:\my_projects\生信教学\生信基础——三、Linux基础指令 ,而到了 Linux 下变成了 /mnt/f/my_projects/生信教学/生信基础——三、Linux基础指令 ,为什么反斜杠变成了正斜杠,开头的 F: 变成了 /mnt/f 呢?

    对比一下两个路径的区别:

    (Windows) F:\my_projects\生信教学\生信基础——三、Linux基础指令
    (Linux  ) /mnt/f/my_projects/生信教学/生信基础——三、Linux基础指令
    

    好的,注意,在 Linux 以及一些编程语言中,普遍使用的是正斜杠来划分路径。/mnt/f 表示 F 盘的挂载目录。”挂载” 指由操作系统使一个存储设备(如硬盘、CD-ROM或共享资源)上的计算机文件和目录可供用户通过计算机的文件系统访问的一个过程。简单来说就是它能够把外部储存设备加载到 Linux 系统中供你访问,/mnt 是一个系统目录(也被称为挂载点),是英文 mount 的缩写,直译就是 安装,安置 的意思,不过挂载听起来更专业一点是吧,哈哈哈。

    我们来看看 WSL 系统的 /mnt 目录下挂载了哪些东西,同样的,使用下面的命令进入 /mnt 目录(等下详细说明路径和目录的区别)

    cd /mnt
    

    在这里插入图片描述

    现在进到了 /mnt 下了,但是该怎么查看这个目录下到底有什么东西呢?

    好的,现在介绍一个新命令 ls ,这个命令其实是单词 list 的缩写,表示列出的意思,也就是列出当前目录下的非隐藏内容,现在输入这个指令:

    ls
    

    在这里插入图片描述

    可以看到,c d e f h wsl wslg 这些目录被挂载在我们的 WSL-Ubuntu 系统上,c-f 盘就是我的 Windows 电脑上的对应的盘符,其他的是 Linux 系统生成的一些被挂载的目录。通过 /mnt 挂载点,你就可以很方便(相对方便)地在 Linux 环境下翻找 Windows 主机上的文件了!

  • 目录

    上面讲了路径,其中也提到了目录,这里简要地介绍一下二者的区别:

    • 目录是一个真实存在的实体(如果你不了解面向对象的概念的话,就简单理解为是一个真实存在的东西),而路径是一个描述文件位置的方法,它并不能被储存或者找到,你找不到 /home/test 这个东西,但是你能够顺着这个路径找到 /home 下面的 /test 目录

    • 相同的,目录其实就是 Windows 下文件夹的概念,路径是一个地址的概念

  • 文件

    文件在 Linux 系统中是一个很重要的概念,有一句话叫“ Linux 下一切皆文件”,这被称为 Linux 哲学

    摘自为什么说Linux下“一切皆文件”? - 知乎":在windows中是文件的东西,它们在linux中也是文件,其次一些在windows中不是文件的东西, 比如进程, 磁盘, 也被抽象成了文件.。你可以使用访问文件的方法访问它们获得信息。甚至一些很离谱的东西,比如管道,也是文件。甚至类似于socket(套接字)这样的东西, 使用的接口跟文件接口也是一致的。"

  • 上面三个基础且重要的内容大致了解了,我再总结性地给出下面这张图,让大家再从宏观视角理解 Linux 的树状文件系统

    在这里插入图片描述

2、常用特殊目录

  • / 这个是根目录,一切路径的起源

  • /mnt 这个目录通常是用于 Linux 系统默认挂载外部储存设备的目录

  • /root 这个目录是专门存放 root 用户(超级用户,拥有掌管整个系统的至高无上的权利,很厉害,但是也很危险,一般我们不用这个用户进行操作)相关文件的地方

  • /home 温暖的家目录,你以普通用户的身份登录,默认会在 home 目录出生,里面存放了所有普通用户的个人目录,比如 /home/xiaoming /home/xiaozhang

  • ~ 这个是主目录,使用 cd ~ 可以快速回到当前用户的主目录,比如 /home/xiaoming ,如果是 root 用户,则回到 /root 目录下

  • . 没错,一个点号也是一个特殊目录,这个代表了当前目录

  • .. 两个点代表当前目录的上一级目录,比如当前在 /home/xiaoming/test ,使用 cd .. 命令,可以回到 /home/xiaominig ,然而更多的点号并不能返回更前面的目录,最多两个点号,我们可以用下面的方法返回更上级的目录 cd ../../../

  • - 这个目录表示返回上一次,对,不是上一级,是上一次的目录,比如我现在在 /home/xiaoming/test/hello ,我突然需要去另一个目录 /home/xiaoming/project/data ,处理完后需要回到 hello/ ,就不需要再输入一长串的 cd /home/xiaoming/test/hello ,直接 cd - 就能返回了

二、对文件进行增删改查

1、创建文件

这里秉承着 Linux 下一切皆文件的理念,将目录这个特殊的文件的创建也放在这里讲了

  • 创建一个新目录(类比 Windows 创建文件夹)

    这里介绍新命令 mkdir {新目录路径} ,是英文 make directory 的缩写,这个指令将在当前目录下创建一个新目录 new_dir

    mkdir new_dir
    

    下面的命令是在指定路径下创建新的目录 new_dir ,如果不存在这个路径是创建不了的

    mkdir /home/xiaooming/test/new_dir
    
  • 创建一个新文件

    使用 touch {文件名} 来创建一个空文件,例如以下命令将创建一个 new_file.py

    touch new_file.py
    

    同样的,后面跟路径也能在指定路径创建一个新的文件(后面就不再说了)

    touch /home/xiaoming/test/new_file.py
    
  • 或者直接使用编辑器创建一个不存在的文件并编辑,如果文件已经存在,则直接编辑

    使用 vim 编辑器创建文件

    vim new_file.py
    

    使用 nano 编辑器创建文件

    nano new_file.py
    

2、更改文件

主要介绍一些文件操作:在 Linux 下进行文件的复制,移动,重命名,编辑等操作,补充一点,我尽量以根目录开始完整地给出演示路径,但是实际上我们不需要输入这么完整的路径,我们有很多方式去偷懒提高效率

  • 复制文件到指定位置

    使用 cp {文件名1} {文件名2} {文件名……} {指定要复制到的路径+重命名} 命令来复制一个或多个文件到指定位置 ,如下面的命令会将当前目录下的 test1.txt 复制到 /home/xiaoming/copy_test/ 下,文件还是叫 test1.txt

    cp ./test1.txt /home/xiaoming/copy_test/test1.txt
    

    当然,上面我使用 ./ 强调是在当前目录下,你也可以不用

    cp test1.txt /home/xiaoming/copy_test/test1.txt
    

    不加重命名的文件名也是可以的,默认是原文件名称

    cp test1.txt /home/xiaoming/copy_test/
    

    你也可以一次性复制多个文件,但是一般这里就不方便重命名了,需要使用一些高级语法,超出入门范围了,不讲

    cp test1.txt test2.txt /home/xiaoming/copy_test/
    

    你也可以利用复制来拷贝一个重命名版本的文件,下面的命令就会复制 test1.txt 并且重命名为 test2.txt

    cp test1.txt /home/xiaoming/copy_test/test2.txt
    
  • 复制目录到指定位置

    如果你不是复制文件,而是复制一个目录,可以添加一个 -r 参数表示递归复制,将目录和目录内所有文件都复制过去,如下面的命令,会将 copy_me 目录本身以及其中的所有内容都复制到 /home/xiaoming/new_location/

    cp -r /home/xiaoming/copy_me /home/xiaoming/new_location/
    

    注意 ,对比下面两条命令,有很大区别

    cp -r /home/xiaoming/copy_me    /home/xiaoming/new_location/
    cp -r /home/xiaoming/copy_me/   /home/xiaoming/new_location/
    

    上面的两条命令中,区别就是 copy_me 后面的斜杠,有斜杠表示不包括 copy_me 这个目录,而是只将其内包含的文件复制过去,无斜杠则表示连带 copy_me 一起复制过去,而目标路径最后有无斜杠不受影响,有斜杠只是强调了这是个目录,无斜杠系统也会自动找到匹配的目录,如下两条命令是一样的效果

    cp -r /home/xiaoming/copy_me   /home/xiaoming/new_location/
    cp -r /home/xiaoming/copy_me   /home/xiaoming/new_location
    
  • 移动文件或目录到指定位置

    使用 mv 命令来移动文件,下面的命令将会把 /home/xiaoming/test/mv_test.txt 移动到 /home/xiaoming/test1/

    mv /home/xiaoming/test/mv_test.txt /home/xiaoming/test1/
    

    移动目录

    mv /home/xiaoming/test/ /home/xiaoming/new_dir/
    

    注意 ,如果 new_dir/ 这个目录不存在,则 test/ 目录将会直接改名为 new_dir/ ,如果存在 new_dir/ 了,才是将 test/ 移动到 new_dir/ 下,mv 命令并不会帮你创建目录

  • 使用 mv 来改名

    下面的命令会将 test.txt 改名为 test123.txt ,后面我会逐步精简路径,大家应该能明白用法了

    mv test.txt test123.txt
    

    给目录改名的方法上面已经有了,且与文件改名类似,不再赘述

  • 使用编辑器进行文件内容修改

    常见的终端环境编辑器有 nano vim 等,有的系统默认是 nano ,因此修改文件你需要安装这些编辑器,安装部分后面的文章会提到,使用下面的命令来启动编辑器

    nano test.txt
    
    vim test.txt
    

    编辑器的使用后面也会详细出一篇文章,这里篇幅有限,关注我获取更多教程更新

3、查找文件

这里提供一些和文件系统查找有关的命令及演示

  • pwd 查看当前的路径,新手如果容易迷路,或者需要复制路径,可以使用这个命令

    在这里插入图片描述

  • find 这个命令可以帮你在指定路径(默认当前路径)下查找指定的文件,如下

    find /home/xiaoming/test/ hello.txt
    

    这个命令会帮你在 /home/xiaoming/test/ 下查找名称为 hello.txt 的文件,这个命令的参数和用法很多,搭配通配符有很强大的效果,但是作者使用频率不高,你只需要知道这个命令即可

三、总结本章的常用指令(基础且重要)

  • cd {path}change directory 的缩写,切换目录

  • lslist 的缩写,列出内容

  • mkdir {dir_name}make directory 的缩写,创建目录

  • touch {file_name} ,创建新文件

  • cpcopy 的缩写,复制文件或目录(复制目录需要 -r 参数)

  • mvmove 的缩写,移动文件或目录,或者给文件或目录改名

  • vim ,调用一个编辑器命令

  • nano ,也是调用一个编辑器的命令

  • pwd ,查看当前目录的路径

  • find ,查找相关内容

以上是对本章的重要指令的概括,这些是探索 Linux 最基本的命令,如果出现遗忘,可以直接百度用法,或者问AI

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值