Linux文件管理

zhoushuaiyin 2015-09-06

Linux中的所有数据都被保存在文件中,所有的文件被分配到不同的目录。目录是一种类似于树的结构,称为文件系统。

当你使用Linux时,大部分时间都会和文件打交道,通过本节可以了解基本的文件操作,如创建文件、删除文件、复制文件、重命名文件以及为文件创建链接等。

在Linux中,有三种基本的文件类型:

1)普通文件

普通文件是以字节为单位的数据流,包括文本文件、源码文件、可执行文件等。文本和二进制对Linux来说并无区别,对普通文件的解释由处理该文件的应用程序进行。

2)目录

目录可以包含普通文件和特殊文件,目录相当于Windows和MacOS中的文件夹。

3)设备文件

有些教程中称特殊文件,是一个含义。Linux与外部设备(例如光驱,打印机,终端,modern等)是通过一种被称为设备文件的文件来进行通信。Linux输入输出到外部设备的方式和输入输出到一个文件的方式是相同的。Linux和一个外部设备通讯之前,这个设备必须首先要有一个设备文件存在。

例如,每一个终端都有自己的设备文件来供Linux写数据(出现在终端屏幕上)和读取数据(用户通过键盘输入)。

设备文件和普通文件不一样,设备文件中并不包含任何数据。

设备文件有两种类型:字符设备文件和块设备文件。

字符设备文件以字母"c"开头。字符设备文件向设备传送数据时,一次传送一个字符。典型的通过字符传送数据的设备有终端、打印机、绘图仪、modern等。字符设备文件有时也被称为"raw"设备文件。

块设备文件以字母"b"开头。块设备文件向设备传送数据时,先从内存中的buffer中读或写数据,而不是直接传送数据到物理磁盘。磁盘和CD-ROMS既可以使用字符设备文件也可以使用块设备文件。

查看文件

查看当前目录下的文件和目录可以使用ls命令,例如:

$ls

binhostslibres.03

ch07hw1pubtest_results

ch07.bakhw2res.01users

docshw3res.02work

通过ls命令的-l选项,你可以获取更多文件信息,例如:

$ls-l

total1962188

drwxrwxr-x2amroodamrood4096Dec2509:59uml

-rw-rw-r--1amroodamrood5341Dec2508:38uml.jpg

drwxr-xr-x2amroodamrood4096Feb152006univ

drwxr-xr-x2rootroot4096Dec92007urlspedia

-rw-r--r--1rootroot276480Dec92007urlspedia.tar

drwxr-xr-x8rootroot4096Nov252007usr

drwxr-xr-x22003004096Nov252007webthumb-1.01

-rwxr-xr-x1rootroot3192Nov252007webthumb.php

-rw-rw-r--1amroodamrood20480Nov252007webthumb.tar

-rw-rw-r--1amroodamrood5654Aug92007yourfile.mid

-rw-rw-r--1amroodamrood166255Aug92007yourfile.swf

drwxr-xr-x11amroodamrood4096May292007zlib-1.2.3

$

每一列的含义如下:

第一列:文件类型。

第二列:表示文件个数。如果是文件,那么就是1;如果是目录,那么就是该目录中文件的数目。

第三列:文件的所有者,即文件的创建者。

第四列:文件所有者所在的用户组。在Linux中,每个用户都隶属于一个用户组。

第五列:文件大小(以字节计)。

第六列:文件被创建或上次被修改的时间。

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

注意:每一个目录都有一个指向它本身的子目录"."和指向它上级目录的子目录"..",所以对于一个空目录,第二列应该为2。

通过ls-l列出的文件,每一行都是以a、d、-或l开头,这些字符表示文件类型:

前缀描述-普通文件。如文本文件、二进制可执行文件、源代码等。b块设备文件。硬盘可以使用块设备文件。c字符设备文件。硬盘也可以使用字符设备文件。d目录文件。目录可以包含文件和其他目录。l符号链接(软链接)。可以链接任何普通文件,类似于Windows中的快捷方式。p具名管道。管道是进程间的一种通信机制。s用于进程间通信的套接字。提示:通俗的讲软连接就是windows的快捷方式,原来文件删了,快捷方式虽然在但是不起作用了。

元字符

元字符是具有特殊含义的字符。*和?都是元字符:

*可以匹配0个或多个任意字符;

?匹配一个字符。

例如

$lsch*.doc

可以显示所有以ch开头,以.doc结尾的文件:

ch01-1.docch010.docch02.docch03-2.doc

ch04-1.docch040.docch05.docch06-2.doc

ch01-2.docch02-1.docc

这里,*匹配任意一个字符。如果你希望显示所有以.doc结尾的文件,可以使用

$ls*.doc。

隐藏文件

隐藏文件的第一个字符为英文句号或点号(.),Linux程序(包括Shell)通常使用隐藏文件来保存配置信息。

下面是一些常见的隐藏文件:

.profile:Bourneshell(sh)初始化脚本

.kshrc:Kornshell(ksh)初始化脚本

.cshrc:Cshell(csh)初始化脚本

.rhosts:Remoteshell(rsh)配置文件

查看隐藏文件需要使用ls命令的-a选项:

$ls-a

..profiledocslibtest_results

...rhostshostspubusers

.emacsbinhw1res.01work

.exrcch07hw2res.02

.kshrcch07.bakhw3res.03

$

一个点号(.)表示当前目录,两个点号(..)表示上级目录

注意:输入密码时,星号(*)作为占位符,代表你输入的字符个数。

创建文件

在Linux中,可以使用vi编辑器创建一个文本文件,例如:

$vifilename

上面的命令会创建文件filename并打开,按下i键即可进入编辑模式,你可以向文件中写入内容。例如:

ThisisLinuxfile....Icreateditforthefirsttime.....

I'mgoingtosavethiscontentinthisfile.

完成编辑后,可以按esc键退出编辑模式,也可以按组合键Shift+ZZ完全退出文件。这样,就完成了文件的创建。

$vifilename

$

编辑文件

vi编辑器可以用来编辑文件。由于篇幅限制,这里仅作简单介绍,将在后面章节进行详细讲解。

如下可以打开一个名为filename的文件:

$vifilename

当文件被打开后,可以按i键进入编辑模式,按照自己的方式编辑文件。如果想移动光标,必须先按esc键退出编辑模式,然后使用下面的按键在文件内移动光标:

l键向右移动

h键向左移动

k键向上移动

j键向下移动

使用上面的按键,可以将光标快速定位到你想编辑的地方。定位好光标后,按i键再次进入编辑模式。编辑完成后按esc键退出编辑模式或者按组合键Shift+ZZ退出当前文件。

查看文件内容

可以使用cat命令来查看文件内容,下面是一个简单的例子:

$catfilename

ThisisLinuxfile....Icreateditforthefirsttime.....

I'mgoingtosavethiscontentinthisfile.

$

可以通过cat命令的-b选项来显示行号,例如:

$cat-bfilename

1ThisisLinuxfile....Icreateditforthefirsttime.....

2I'mgoingtosavethiscontentinthisfile.

$

统计单词数目

可以使用wc命令来统计当前文件的行数、单词数和字符数,下面是一个简单的例子:

$wcfilename

219103filename

$

每一列的含义如下:

第一列:文件的总行数

第二列:单词数目

第三列:文件的字节数,即文件的大小

第四列:文件名

也可以一次查看多个文件的内容,例如:

$wcfilename1filename2filename3

复制文件

可以使用cp命令来复制文件。cp命令的基本语法如下:

$cpsource_filedestination_file

下面的例子将会复制filename文件:

$cpfilenamecopyfile

$

现在在当前目录中会多出一个和filename一模一样的copyfile文件。

重命名文件

重命名文件可以使用mv命令,语法为:

$mvold_filenew_file

下面的例子将会把filename文件重命名为newfile:

$mvfilenamenewfile

$

现在在当前目录下,只有一个newfile文件。

mv命令其实是一个移动文件的命令,不但可以更改文件的路径,也可以更改文件名。

删除文件

rm命令可以删除文件,语法为:

$rmfilename

注意:删除文件是一种危险的行为,因为文件内可能包含有用信息,建议结合-i选项来使用rm命令。

下面的例子会彻底删除一个文件:

$rmfilename

$

你也可以一次删除多个文件:

$rmfilename1filename2filename3

$

标准的Linux流

一般情况下,每个Linux程序运行时都会创建三个文件流(三个文件):

标准输入流(stdin):stdin的文件描述符为0,Linux程序默认从stdin读取数据。

标准输出流(stdout):stdout的文件描述符为1,Linux程序默认向stdout输出数据。

标准错误流(stderr):stderr的文件描述符为2,Linux程序会向stderr流中写入错误信息。

相关推荐