百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux终端生存指南 文件和目录操作

ahcoder 2024-12-19 11:15 19 浏览

这是一系列基础命令的集合,我会面向初学者从使用角度介绍,看完这些以后你能够在Linux终端下完成大部分之前需要鼠标和键盘才能完成的操作。

今天是第一篇,Linux下的普通文件和目录的操作,最简单的用法,不会介绍花里胡哨的命令给初学者。

  • 一切皆文件
  • 文件系统结构
  • 主目录
  • 文件和目录
  • 文件创建和删除
  • 目录创建和删除
  • 复制和剪切

一切皆文件

Linux中一切接文件,算是早期的一句名言了。事实也差不多,就连硬件设备在Linux中也是以一个文件来实现的,因此Linux下的文件类型也是非常有门道的(有门道不代表类型多),具体文件类型我们后面文章会整理。

文件系统结构

我们这里主要介绍跟文件系统的目录结构,这个非常关键,因为用终端在文件系统的路径中频繁切换,如果你对整个文件系统目录结构或者自己的位置不熟悉很容易出现迷路的情况。

想象成你正在爬树找果子,如果你不知道这棵树有多大,有多少树枝可以承受你的重量,非常容易出问题,轻则找不到你要的果子,重则连着树枝一起摔下来。

这里用个比喻是真的希望你能重视这个,同时你真的可以以一颗树的模型来理解文件系统。

根目录

根目录是Linux工作必须的文件树型结构,在docker中就是以不同的根文件系统(rootfs)来区分不同的虚拟机的。

在Linux中根目录用“/”来表示,cd / 就可以到达根目录。

ubuntu@ubuntu-virtual-machine:~$ cd /
ubuntu@ubuntu-virtual-machine:/$ ls
bin  boot  cdrom  dev  etc  home  lib  lib32  lib64  libx32  lost+found  media  mnt  opt  proc  root  run  sbin  snap  srv  sys  tmp  usr  var

没有人为修改情况下,根目录下面每个目录都有特殊的用途,可以了解一下:

目录

作用

/bin/

存放系统命令,普通用户和 root 用户都可以执行

/boot/

系统启动目录,保存与系统启动相关的文件

/dev/

设备文件

/etc/

配置文件保存位置,内核和Linux系统功能的大部分配置信息都在这里,包括一些第三方软件

/home/

普通用户的主目录(也称为家目录),如用户 ubuntu的主目录就是 /home/ubuntu

/lib/

系统调用的函数库保存位置

/media/

媒体设备挂载目录

/mnt/

挂载目录,系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区

/misc/

挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。

/opt/

一般第三方安装的软件保存位置

/root/

root 的主目录

/sbin/

系统环境设置相关的命令

/srv/

服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据

/tmp/

临时目录

/proc/

虚拟文件系统,运行过程中很多临时文件保存在这里

/lost+found/

/lost+found 就是根分区的备份恢复目录

其实我写完这个表格以后在考虑要不要删除,还是留着吧。

每个文件夹的功能初学时没必要全部了解,关键是位置。

主目录

在Linux下,每一个用户都有属于自己的主目录,大多数情况被称为家目录,前面表格中有描述。

普通用户的家目录一般在/home 目录下面,可以用~快速指代当前用户的家目录。

root用户的家目录是 /root

ubuntu@ubuntu-virtual-machine:/$ cd ~
ubuntu@ubuntu-virtual-machine:~$ pwd
/home/ubuntu
ubuntu@ubuntu-virtual-machine:~$ ls -l
总用量 44
drwxr-xr-x 2 ubuntu ubuntu 4096 4月   7 21:04 公共的
drwxr-xr-x 2 ubuntu ubuntu 4096 4月   8 22:05 模板
drwxr-xr-x 2 ubuntu ubuntu 4096 4月   7 21:04 视频
drwxr-xr-x 2 ubuntu ubuntu 4096 4月  10 23:08 图片
drwxr-xr-x 2 ubuntu ubuntu 4096 4月   7 21:04 文档
drwxr-xr-x 2 ubuntu ubuntu 4096 4月   9 18:42 下载
drwxr-xr-x 2 ubuntu ubuntu 4096 4月   7 21:04 音乐
drwxr-xr-x 2 ubuntu ubuntu 4096 4月  10 22:58 桌面

Linux希望所有用户都能快速回家,所以cd 命令不带任何参数就是回到自己的家目录,下面这三条命令都是一个效果:

ubuntu@ubuntu-virtual-machine:~$ cd
ubuntu@ubuntu-virtual-machine:~$ cd ~
ubuntu@ubuntu-virtual-machine:~$ cd /home/ubuntu

每个用户的家目录下一般有一些固定资源文件夹,比如文档、图片、音乐、桌面等,其中桌面文件夹就真的是指向图形界面的桌面的,如果你在这个文件夹创建一个文本文件那么就会在桌面也显示这个文本文件;一般浏览器或者一些下载器下载的文件会自动保存在下载目录里,其他目录也都是可以使用的。

文件和目录

文件和目录当然是不同的东西,在Linux下也是这样。

文件用来存储具体的内容,必须存储二进制数据、ASCII文本等。

目录用来存放文件和子目录。

通过ls -l可以查看目录下的文件信息,包括文件类型,现在你只需要区分目录和文件就可以了:

ubuntu@ubuntu-virtual-machine:~$ ls -l
总用量 44
drwxrwxr-x 2 ubuntu ubuntu 4096 4月  10 22:44 1
-rw-rw-r-- 1 ubuntu ubuntu    0 4月  12 22:51 t.txt

目录显示的文件信息第一个字符是‘d’,普通文件是‘-’(还有其他类型后面再讲)。

有个特殊的目录需要了解:

除了根目录,在任何一个目录下执行ll 或者 ls -al会看到几个特殊的目录

  • 隐藏目录 .
  • 当前目录 .
  • 上一级目录 ..

看这个例子:

ubuntu@ubuntu-virtual-machine:~$ ll
总用量 108
drwxr-xr-x 21 ubuntu ubuntu 4096 4月  12 23:06 ./
drwxr-xr-x  3 root   root   4096 4月   7 20:34 ../
-rw-r--r--  1 ubuntu ubuntu 3771 4月   7 20:34 .bashrc

因此 cd .. 这个命令就代表到当前目录的上一级目录去,ls .其实就是列出当前目录的文件。

文件创建和删除

  • touch命令创建一个空文件
ubuntu@ubuntu-virtual-machine:~$ touch 2.txt
ubuntu@ubuntu-virtual-machine:~$ touch 3
ubuntu@ubuntu-virtual-machine:~$ ls -l
-rw-rw-r-- 1 ubuntu ubuntu    0 4月  12 22:54 2.txt
-rw-rw-r-- 1 ubuntu ubuntu    0 4月  12 22:55 3
  • echo命令创建一个文本文件并写入数字123
ubuntu@ubuntu-virtual-machine:~$ echo 123 > 4.txt
ubuntu@ubuntu-virtual-machine:~$ ls -l
-rw-rw-r-- 1 ubuntu ubuntu    4 4月  12 22:57 4.txt
ubuntu@ubuntu-virtual-machine:~$ cat 4.txt
123
  • 创建一个空文件
ubuntu@ubuntu-virtual-machine:~$ > 6.txt
ubuntu@ubuntu-virtual-machine:~$ ls -l
-rw-rw-r-- 1 ubuntu ubuntu    0 4月  12 23:00 6.txt
ubuntu@ubuntu-virtual-machine:~$ cat 6.txt

能创建文件的方式还有很多,touch和echo命令本身的作用不是用来创建文件的,创建文件只是一种用法,而 > 在Linux中成为定向输出符号,也不是专业创建文件的,他的用处还多。

  • 删除文件

删除文件就相对统一一些,一般使用rm命令

ubuntu@ubuntu-virtual-machine:~$ ls 6.txt
6.txt
ubuntu@ubuntu-virtual-machine:~$ rm 6.txt
ubuntu@ubuntu-virtual-machine:~$ ls 6.txt
ls: 无法访问 '6.txt': 没有那个文件或目录

目录创建和删除

  • 创建目录

使用mkdir来创建目录

ubuntu@ubuntu-virtual-machine:~$ mkdir mydir
ubuntu@ubuntu-virtual-machine:~$ ls -l mydir/
总用量 0
ubuntu@ubuntu-virtual-machine:~$ mkdir mydir2/subdir2
mkdir: 无法创建目录 “mydir2/subdir2”: 没有那个文件或目录
ubuntu@ubuntu-virtual-machine:~$
ubuntu@ubuntu-virtual-machine:~$ mkdir mydir2/subdir2 -p
ubuntu@ubuntu-virtual-machine:~$ ls -l mydir2/
总用量 4
drwxrwxr-x 2 ubuntu ubuntu 4096 4月  12 23:16 subdir2
ubuntu@ubuntu-virtual-machine:~$

这里记住一个参数-p,当你需要创建多级目录,而前一级目录不存在的时候,可以使用-p参数,Linux会为你创建缺失的上一级目录。如果不加这个参数将会在没有的第一层目录时报错,显示“ 没有那个文件或目录”。

  • 删除目录

使用rm命令来删除目录

ubuntu@ubuntu-virtual-machine:~$ rm -rvf mydir2/
已删除目录 'mydir2/subdir2'
已删除目录 'mydir2/'
ubuntu@ubuntu-virtual-machine:~$

这里需要记住三个常用参数;

-r 表示删除目录下所有子目录文件

-v 表示打印删除执行情况,初学者建议使用这个检查你有没有删错文件

-f 表示强制执行

复制和剪切

  • 复制

使用cp命令复制文件和目录

ubuntu@ubuntu-virtual-machine:~$ ls -l mydir
总用量 0
-rw-rw-r-- 1 ubuntu ubuntu 0 4月  12 23:26 8.txt
-rw-rw-r-- 1 ubuntu ubuntu 0 4月  12 23:25 9.txt
ubuntu@ubuntu-virtual-machine:~$ ls -l mydir2
总用量 0
ubuntu@ubuntu-virtual-machine:~$ cp mydir/8.txt mydir2/ # 将8.txt复制一份到mydir2
ubuntu@ubuntu-virtual-machine:~$ ls -l mydir2
总用量 0
-rw-rw-r-- 1 ubuntu ubuntu 0 4月  12 23:26 8.txt

ubuntu@ubuntu-virtual-machine:~$ cp -r mydir mydir3 # 将mydir目录复制一份命名为mydir3
ubuntu@ubuntu-virtual-machine:~$ ls -l mydir3
总用量 0
-rw-rw-r-- 1 ubuntu ubuntu 0 4月  12 23:28 8.txt
-rw-rw-r-- 1 ubuntu ubuntu 0 4月  12 23:28 9.txt

目录复制时cp命令后面紧跟-r参数。

cp 后面跟两个路径,第一个是被拷贝对象,第二个是拷贝出来的对象。

  • 剪切
ubuntu@ubuntu-virtual-machine:~$ ls -l mydir3/
总用量 0
-rw-rw-r-- 1 ubuntu ubuntu 0 4月  12 23:28 8.txt
-rw-rw-r-- 1 ubuntu ubuntu 0 4月  12 23:28 9.txt
ubuntu@ubuntu-virtual-machine:~$ ls -l mydir2/
总用量 0
-rw-rw-r-- 1 ubuntu ubuntu 0 4月  12 23:26 8.txt
ubuntu@ubuntu-virtual-machine:~$ mv mydir3/9.txt mydir2/ #将mydir3下的9.txt剪切到mydir2目录下
ubuntu@ubuntu-virtual-machine:~$ ls -l mydir2/
总用量 0
-rw-rw-r-- 1 ubuntu ubuntu 0 4月  12 23:26 8.txt
-rw-rw-r-- 1 ubuntu ubuntu 0 4月  12 23:28 9.txt
ubuntu@ubuntu-virtual-machine:~$ ls -l mydir3/
总用量 0
-rw-rw-r-- 1 ubuntu ubuntu 0 4月  12 23:28 8.txt
ubuntu@ubuntu-virtual-machine:~$ mv mydir3/ mydir4/ #将mydir3 剪切到mydir4
ubuntu@ubuntu-virtual-machine:~$ ls -l mydir3/
ls: 无法访问 'mydir3/': 没有那个文件或目录
ubuntu@ubuntu-virtual-machine:~$ ls -l mydir4/
总用量 0
-rw-rw-r-- 1 ubuntu ubuntu 0 4月  12 23:28 8.txt

mv命令一般除了用来剪切文件和目录外,还用来对文件和目录进行更名。比如前面的例子其实就将mydir3更名为了mydir4。

相关推荐

PC也能装MAX OS X

MACBOOK向来以其时尚的外观以及易用的OSX操作系统成为了时(zhuang)尚(bi)人士的最爱。但是其动不动就上万元的昂贵价格,也将一批立志时(zhuang)尚(bi)人士的拒之门外。但是最近...

一千多元的笔记本能买吗?英特尔11代+大屏幕,豆小谷值得选吗?

前言:有很多粉丝都问过本人,一千多元到底能买到什么样的笔记本?在此笔者只想说,这样的资金预算真的太低了!如果想买全新的,那大概率买的就是性能比较拉垮的上网本,比如搭载英特赛扬N系列、J系列处理器的轻薄...

首款配备骁龙X Elite处理器的Linux笔记本:采用KDE Plasma桌面环境

德国Linux硬件供应商TUXEDOComputers宣布正在开发一款配备高通骁龙XElite处理器(SnapdragonXEliteSoC)的ARM笔记本电脑,内部将该...

System76推出Gazelle Linux笔记本:配酷睿i9-13900H处理器

IT之家3月30日消息,主打Linux硬件的厂商System76于今天发布了新一代Gazelle笔记本电脑,共有15英寸和17英寸两个版本,将于3月30日接受预订,...

Kubuntu Focus Xe Gen 2笔记本发布,预装Linux系统

IT之家3月25日消息,KubuntuFocusXeGen2笔记本于近日发布,这是一款预装Kubuntu22.04LTSGNU/Linux发行版的轻薄本。上一代Kub...

这台Linux笔记本已用上英特尔12代酷睿,最高可选i7-1255U、卖1149美元起

Linux笔记本可能因为比较小众,一般都是拿Windows笔记本换个系统而来,硬件上也会落后同期Windows笔记本一两代,不过现在专门做Linux电脑的System76,推出了一款名为LemurP...

戴尔Inspiron 14 Plus骁龙笔记本迎新补丁,支持启动Linux

IT之家4月25日消息,科技媒体phoronix今天(4月25日)发布博文,报道称最新发布的Linux内核补丁,针对骁龙芯片的戴尔Inspiron14Plus笔记本,让其...

TUXEDO推出InfinityFlex 14二合一Linux笔记本,配i5-1335U

IT之家8月12日消息,Linux硬件企业TUXEDO当地时间本月2日推出了InfinityFlex14二合一Linux笔记本。该笔记本搭载2+8核的英特尔酷睿i5-...

登月探测器嫦娥使用什么操作系统,是Linux还是其它自主研发?

这是不是国家机密啊。事实什么样的不知道,但是从美国的探测器来看,就算不是也是相似的东西。下面我来说说我知道的。龙芯已经随北斗卫星上天了.就算登月探测器嫦娥是用"龙芯+Linux"也不出奇.没必要...

DNS分离解析实验

如果本文对你有帮助,欢迎关注、点赞、收藏、转发给朋友,让我有持续创作的动力目录一、分离解析概述二、实验需求三、实验步骤3.1双网卡服务器配置3.1.1添加两张网卡(内外网)3.1.2对两个网卡进...

一个小实验巩固下进程管理

先回顾下之前的三篇文章:Linux进程在内核眼中是什么样子的?Linux进程线程是如何创建的?Linux是如何调度进程的?通过这三篇文章的学习我们知道,无论内核进程还是用户进程,都是可以用task...

VMware Kali无线WIFI密码破解

WIFI破解前准备工作一张支持Kali系统监听的无线网卡VMware虚拟机安装好Kali系统(本实验用的是Kali2022版本)Kali系统下载、安装官方网站:https://www.kali.or...

python多进程编程

forkwindows中是没有fork函数的,一开始直接在Windows中测试,直接报错importosimporttimeret=os.fork()ifret==0:...

拔电源十台电脑藏后门!德国实验惊曝Windows致命漏洞

2025年4月15日,央视突然曝出一个超级大新闻!原来美国国家安全局通过黑龙江,往微软Windows系统里发送加密信息,激活了系统里藏着的后门程序,想破坏哈尔滨亚冬会!这消息一出来,大家才发现,竟然已...

深度探索RK3568嵌入式教学平台实战案例:设备驱动开发实验

一、产品简介TL3568-PlusTEB人工智能实验箱国产高性能处理器64位4核低功耗2.0GHz超高主频1T超高算力NPU兼容鸿蒙等国产操作系统二、实验目的1、熟悉基本字符设备的驱动程序...