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
上面*
作为元字符,可以匹配任何字符。如果想显示所有以.zi
p结尾的文件,可以使用以下命令:
$ 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的文件。
6、编辑文件
可以使用vi编辑器编辑已存在的文件。打开现有文件,如下,
$ vi filename
注意:文件被打开,可以通过按i键进入编辑模式,然后可以继续编辑文件。如果想在文件中移动这里和那里,那么首先你需要通过按Esc
键退出编辑模式。在此之后,在文件中移动光标可以使用如下键:
l
键移到右侧。h
键移动到左边。k
键在文件中向上移动。j
键在文件中向下移动。
所以使用上面的键,可以把光标放在你想编辑的任何地方。移动完成,然后可以使用i
键进入编辑模式。如完成了文件的编辑,按Esc
和最后两个键Shift + ZZ来保存退出。
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
上写入所有错误消息。