Site icon TuringPlanet

文件系统和文本操作【Linux操作系统教程2】

计算机中最重要的数据都存在我们的文件中,所以计算机的指令大部分也都是和文件打交道,比如创建新文件,删除文件,更新文件或者移动文件等等。这章我们就来聊聊如何在Ubuntu中使用指令来操作文件。

Linux文件系统

在了解如何操作文件之前,我们先要了解一下文件在 Linux 操作系统中是如何被储存的。Linux文件系统类似树状结构,所有的文件和目录都被组织成以一个根节点开始的倒置的结构:

文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。

默认情况下,我们如果使用pwd,会发现我们所在的位置是/home/enoch/,那如果我是使用 ls /,则会发现根目录的内容:

在Linux文件系统中有两个特殊的目录,一个用户所在的工作目录,也叫当前目录,可以使用一个点 . 来表示;另一个是当前目录的上一级目录,也叫父目录,可以使用两个点 .. 来表示,这个在我们后面操作文件夹的时候会具体介绍。

具体文件夹解析

这些文件都有什么用呢?我们来简单了解一下每个文件夹的基础作用

系统启动必须

指令集合

外部文件管理

临时文件

账户

运行过程中要用:

扩展用的:

改变当前目录位置(cd)

了解完文件系统,我们就来学习如何移动我们所在文件夹的位置。在前往其他文件夹之前,我们首先得知道我们当前所处的位置。命令行中 $ 符号前的字符显示的就是我们当前的位置,我们也可以使用pwd这个指令输出我们当前所在的文件夹:

~$ pwd
/home/enoch

不知道大家有没有注意的,默认情况下我们的 $ 符号前有一个 ~,这表明我们当前在系统指定的默认目录 /home/ecnoh 中,也就是下图图形界面中的位置:

有意思的是,你会发现原来Desktop桌面也只是一个文件夹,只不过里面的内容会显示在桌面而已。

当我们知道自己的位置后,我们可以使用 cd(change directory)指令切换到不同的文件夹中,如果想去Desktop文件夹,直接输入下面的指令即可。

~$ cd Desktop/

这时候,不仅仅 $ 符号前的内容变成了 ~/Desktop,说明我们已经在Desktop这个文件夹中了,之后所有的操作也都会在此文件夹中生效。如果此时再用pwd指令,也会发现我们的位置发生了改变

~/Desktop$ pwd
/home/enoch/Desktop

以下列举的就是常用的cd指令:

1. 返回上一级目录

~/Desktop$ cd ..
~$ 

3. 进入子文件夹

陌生情况下大家的桌面是没有这个 new_folder 文件夹的,大家可以手动创建,或者使用后面教的创建指令 $ mkdir ~/Desktop/new_folder 先创建一个子文件夹,然后运行下面的指令:

~$ cd Desktop/new_folder/
~/Desktop/new_folder$

3. 返回上级目录两次

~/Desktop/new_folder$ cd ../../
~$

4. 返回你刚才所在的目录

~$ cd -
/home/enoch/Desktop/new_folder
~/Desktop/new_folder$ 

5. 前往 Home

~/Desktop/new_folder$ cd ~
~$

6. 输入绝对路径,前往电脑的任何地方

~$ cd /home/enoch/Desktop/new_folder
~/Desktop/new_folder$

文本操作

查看文件夹内容

如果光能移动当前位置,可是无法查看文件夹中的内容就没有意义了。所以我们需要 ls(list)这个指令来查看每个文件夹中的内容,如果我们移动到Desktop这个目录,然后使用 ls,那么桌面中的new_folder这个子文件夹就会被显示出来:

~/Desktop$ ls 
new_folder

查看的方式有很多种,我们可以在 ls 后面添加不同的参数,来获得更多与文件相关的信息。

如果想要查看文件的详细信息我们可以添加 -l(long的简写)参数,这个指令会打印出文件的权限 drwxr-x-x(我们之后的章节再探讨这个),用户名,文件大小,修改日期和文件名:

~/Desktop$ ls -l
total 4
drwxr-x-x 2 enoch enoch 4096 Nov  6   08:49 new_folder

如果使用 -a(all的简写),所有的文件则会被显示出来,此时就能看到以 . 开头的隐藏文件:

~/Desktop$ ls -a
.  ..  new_folder

我们也可以将多个参数结合起来,来查看更加详细的信息,比如我们既想查看所有的隐藏文件和文件的具体信息,我们就可以添加 -al 这个参数:

每个指令的用法有很多,大家可以使用 man(manual)这个命令,来查看指令的具体内容:

$ man ls 

下面为了帮助大家的重点能放在指令上,我就不输出 $ 前面的路径提示了。

创建和删除

查了查看文件外,最重要的操作便是创建、删除、移动和复制文件,下面我们就来看看哪些指令可以实现这些操作。

如果想要创建文件夹,我们可以使用 mkdir(make directory)指令加上新文件夹的名字即可:

$ mkdir folder1

我们也可以直接用 mkdir 直接创建子文件夹:

$ mkdir folder1/folder2

这样folder2就会被创建在folder1中了

要删除文件夹的话,我们可以使用 rmdir(remove directory)命令。rmdir的前提条件就是被删除的文件夹必须得是空的,不然命令就会失败。所以fodler1是无法用 rmdir 删除的,因为其中有一个folder2文件夹。但是我们直接删除folder2是可以的:

$ rmdir folder1/folder2

如果想要把文件夹中的内容全部删除,不管里面是否有其他文件,那么可以使用 rm 加参数 -r 或 -R(recursively)来删除文件夹中的全部内容(此操作很危险,请谨慎使用)

$ rm -r folder1

如果要创建文件,使用touch指令加上文件名即可:

$ touch new_file

删除文件可以使用 rm 指令

$ rm new_file

如果要删除多个文件,可以直接在指令后加上所有的文件名

$ rm file1 file2 file3

移动和复制

mv(move)指令可以将一个文件或者文件夹移动到其他的位置

$ mv file1 folder1 # 将file1移动到文件夹folder1中

mv也有重命名的功能

$ mv file1.txt file2.txt # 将file1.txt重命名为file2.txt

cp(copy)指令可以复制文件和文件夹,要注意的是,如果一个文件夹不为空,那么需要加上 -r 或 -R 参数才能复制:

$ cp file1 folder1 # 将file1复制到folder1中
$ cp -R folder1 folder2 # 将folder1全部复制到folder2中

编辑文件

Linux自带文本编辑器nano,我们在nano后加上想要编辑的文件就可以了

$ nano file1.txt

之后我们就可以自己在nano中直接编辑文件内容

然后按 “Ctrl + s” 保存,再按 “Ctrl + x” 退出。

如果要查看文件内容,可以使用 cat(catenate) 命令

$ cat file1.txt
Hello World!

我们也可以使用在 cat <file_name> 之后加上 > 用一个文件中的内容覆盖掉另一文件的内容

$ cat file1.txt > file2.txt # file2.txt的内容会被file1.txt完全覆盖
$ cat file2.txt
Hello World!

如果不想要完全覆盖文件的内容,我们可以使用 >> 将文件的内容添加到新文件的末尾:

$ cat file1.txt >> file2.txt
$ cat file2.txt 
Hello World!
Hello World!

重点命令总结

$ man ls # 显示指令ls的具体信息
$ pwd # 显示当前路径
$ cd Desktop # 进入Desktop文件夹中
$ ls # 显示当前目录中含有的文件和文件夹
$ mkdir new_folder # 创建文件夹new_folder
$ rmdir new_folder # 删除文件夹new_folder
$ touch new_file # 创建new_file文件
$ rm new_file # 删除new_file
$ mv new_file new_folder # 加new_file移到new_folder中
$ cp new_file new_folder # 将new_file复制到new_folder中
$ nano file1 # 用nano文本编辑器编辑文件
$ cat file1 # 在终端查看file1内容
$ cat file1 > file2 # 用file1的内容覆盖掉file2的内容
$ cat file1 >> file2 # 在file2文件的末尾加上file1的内容

实践练习

使用本章学到的命令创建一个新的文件夹 folder1,然后在 folder1 中创建新的文件 file1.txt,并用nano给 file1.txt 编辑任意内容。最后创建一个 folder2,将 folder1 完全复制到 folder2 中,最后删除整个 folder1 文件夹。

Exit mobile version