Linux中的所有数据都被组织成文件。所有文件被组织到目录中。这些目录被组织成一个称为文件系统的树状结构。Linux中文件、设备、目录皆是文件,目录是一种特殊的文件,本文主要介绍Linux中的文件管理。

1、Linux 文件简介

当以某种方式使用Linux时,大部分时间都花在处理文件上。文件管理需要学习创建和删除文件,复制和重命名它们,创建到它们的链接,等等。在Linux中,有三种基本类型的文件:

1)普通的文件

普通文件是系统上包含数据、文本或程序指令的文件。

2)目录

目录存储特殊文件和普通文件。对于熟悉Windows或Mac OS的用户来说,Linux目录相当于文件夹。

3)特殊文件

一些特殊文件提供对硬件(如,硬盘驱动器、CD-ROM驱动器、调制解调器和以太网适配器)的访问。其他特殊文件类似于别名或快捷方式,允许使用不同的名称访问单个文件。

2、ls列出文件列表

要列出存储在当前目录中的文件和目录,使用以下命令:

ls

下面是ls命令的示例输出:

$ ls
bin        hosts  lib          cjavapy
python     java   pub          test_results  users
docs       levi   cjavapy.zip  work

命令ls支持-l选项,可以显示更多信息:

$ ls -l
总用量 238028
-rw-r--r--  1 root root       108 10月  2 2019 1
drwxr-xr-x. 3 root root        22 10月 20 2018 20181020
-rw-r--r--. 1 root root     18109 10月 21 2018 20181020.zip
drwxr-xr-x  3 root root        39 11月  5 2018 20181105
-rw-r--r--  1 root root    149722 11月  5 2018 20181105.zip
drwxr-xr-x  3 root root        22 9月   4 2020 20200904
-rw-r--r--  1 root root      4095 9月   5 2020 20200904.zip
drwxr-xr-x  3 root root        22 9月  19 2020 20200919
-rw-r--r--  1 root root     22080 9月  19 2020 20200919.zip
-rw-------. 1 root root      1324 7月  12 2018 anaconda-ks.cfg
drwxr-xr-x. 8 root root       241 9月  23 2018 cjavapy
-rw-r--r--. 1 root root 237051879 7月  13 2018 cjavapy.zip
-rw-r--r--  1 root root         0 7月  20 2020 error.log
-rw-r--r--  1 root root       401 8月  11 2019 hello.class
-rw-r--r--  1 root root        17 11月 28 2019 IndexPage.cfg
-rw-r--r--  1 root root      2011 11月 26 2019 IndexPage.py
-rw-r--r--  1 root root        20 1月  23 2021 log
drwxrwxr-x  3 root root        22 11月  5 2018 __MACOSX
-rw-r--r--  1 root root   5020367 11月  2 2018 openjdk-11.0.1_linux-x64_bin.tar.gz
-rw-r--r--  1 root root      5729 11月  6 2020 RelatePage.py
-rw-r--r--  1 www  www         16 2月  26 2021 root.txt
-rw-r--r--  1 root root   1217276 9月  13 23:37 shop-web.access.log
-rw-r--r--. 1 root root       727 9月  23 2018 tomcat
$

下面是ls -l命令输出所有列的信息的说明:

第一列:表示文件类型和给该文件的权限。下面是所有类型文件的描述。

第二列:表示文件或目录所占用的内存块的数量。

第三列:表示文件的所有者。这是创建此文件的Linux用户。

第四列:表示所有者的组。每个Linux用户都有一个关联的组。

第五列:表示文件大小(以字节为单位)。

第六列:表示最后一次创建或修改此文件的日期和时间。

第七列:表示文件或目录名。

ls -l命令示例中,每个文件行都以d-l开头。这些字符表示所列文件的类型。如下表:

前缀

描述

-

普通文件,如,ASCII文本文件、二进制可执行文件或硬链接。

b

块特殊文件。块输入/输出设备文件,如物理硬盘。

c

字符特殊文件。原始的输入/输出设备文件,如物理硬盘驱动器。

d

目录文件,包含其他文件和目录的列表。

l

符号链接文件。任何常规文件的链接。

p

命名管道。一种进程间通信的机制。

s

用于进程间通信的套接字。

3、元字符

元字符在Linux中有特殊的含义。例如,*?元字符。*用于匹配0个或多个字符,问号(?)用于匹配单个字符。

例如,

$ ls 2020*.zip

显示所有文件名以"2020"开头和以.zip结尾的文件:

20200904.zip  20200919.zip

上面*作为元字符,可以匹配任何字符。如果想显示所有以.zip结尾的文件,可以使用以下命令:

$ ls *.zip

4、隐蔽文件

不可见文件是一个,文件名第一个字符是点或句(.)。Linux程序(包括shell)使用这些文件中的大部分来存储配置信息。

隐藏文件的一些常见示例包括文件:

.profile:Bourne shell (sh)初始化脚本

.kshrc:Korn shell (ksh)初始化脚本

.cshrc:C shell (csh)初始化脚本

.rhosts:远程shell配置文件

.bashrc:用户定义别名和函数

.bash_profile:获取.bashrc中的别名和函数,用户自定义一些环境变量,以及添加查询路径到PATH中

.bash_history:保存了当前用户使用过的历史命令,方便查找

.bash_logout:用户登出时执行的命令

要列不可见文件,可以使用ls -a命令:

$ ls -a
.
..
1
20181020
20181020.zip
20181105
20181105.zip
20200904
20200904.zip
20200919
20200919.zip
anaconda-ks.cfg
.bash_history
.bash_logout
.bash_profile
.bashrc
.cache
cjavapy
cjavapy.zip
.cshrc
error.log
hello.class
log
openjdk-11.0.1_linux-x64_bin.tar.gz
.oracle_jre_usage
.pki
.python_history
RelatePage.py
root.txt
shop-web.access.log
.ssh
.tcshrc
tomcat
$

上面输出信息中的点的说明:

单个点 (.):这表示当前目录。

两个点 (..):这表示父目录。

5、创建文件

可以使用vi编辑器在任何Linux系统上创建普通文件。只需要给出以下命令:

$ vi filename

上面的命令将打开给定文件名的文件。然后按i键进入编辑模式。一旦你在编辑模式,则可以开始写内容在文件中,

例如,

这是Linux文件....新创建它.....
要把这个内容保存到这个文件中。

注意:输入完成后,遵循以下步骤:

1)按下esc键以退出编辑模式。

2)按两个键Shift + ZZ就可以保存并且退出vi

3)现在,将在当前目录中创建一个具有filename的文件。

相关文档Linux Vim(vi) 常使用命令快捷键

6、编辑文件

可以使用vi编辑器编辑已存在的文件。打开现有文件,如下,

$ vi filename

注意:文件被打开,可以通过按i键进入编辑模式,然后可以继续编辑文件。如果想在文件中移动这里和那里,那么首先你需要通过按Esc键退出编辑模式。在此之后,在文件中移动光标可以使用如下键:

  • l键移到右侧。
  • h键移动到左边。
  • k键在文件中向上移动。
  • j键在文件中向下移动。

所以使用上面的键,可以把光标放在你想编辑的任何地方。移动完成,然后可以使用i键进入编辑模式。如完成了文件的编辑,按Esc和最后两个键Shift + ZZ来保存退出。

相关文档Linux Vim(vi) 常使用命令快捷键

7、显示文件内容

可以使用cat命令查看文件的内容。使用cat命令查看上面示例创建的filename文件,

例如,

$ cat filename
这是Linux文件....新创建它.....
要把这个内容保存到这个文件中。
$

可以通过使用-b选项和cat命令来显示行号,如下所示,

$ cat -b filename
1 这是Linux文件....新创建它.....
2 要把这个内容保存到这个文件中。
$

9、复制文件

使用cp命令复制一个文件。该命令的基本语法为:

$ cp source_file destination_file

下面是创建现有文件filename的副本的示例,如下,

$ cp filename copyfile
$

将在当前目录中发现另一个文件copyfile。这个文件内容将与原始文件的filename完全相同。

10、文件重命名

要更改文件名,可以使用mv命令。下面是基本语法:

$ mv old_file new_file

下面的命令将把现有文件的filename重命名为newfile

$ mv filename newfile
$

mv命令将把现有文件完全移动到新文件中。在这种情况下,将在当前目录中只找到newfile。

11、删除文件

如果需要删除已存在的文件,使用rm命令。下面是基本语法:

$ rm filename

文件中可能包含有用信息。建议在使用这个rm命令时一定要小心。最好将-i选项与rm命令一起使用。

下面示例删除存在文件,

例如,

$ rm filename
$

可以使用下面给出的命令一次删除多个文件:

$ rm filename1 filename2 filename3
$

12、标准的Linux流

在正常情况下,每个Linux程序在启动时都有三个流(文件)为它打开:

  • stdin :称为标准输入,相关的文件描述符为0。这也表示为STDIN。Linux程序将从STDIN读取默认输入。
  • stdout:称为标准输出,相关的文件描述符为1。这也表示为STDOUT。Linux程序将在STDOUT上写入默认输出.
  • stderr:称为标准错误,相关的文件描述符为2。这也表示为STDERR。Linux程序将在STDERR上写入所有错误消息。

推荐文档