UNIX 文件管理
UNIX中的所有数据被组织成文件。所有文件被组织成目录。这些目录被组织成一个树形结构,称为文件系统。
当使用UNIX工作以这种或那种方式,大部分的时间花在工作的文件。本在线教程将教你如何创建和删除文件,复制和重命名,创建链接到它们等。
在UNIX中,有三种基本类型的文件:
-
普通文件: 普通文件在系统上的文件包含数据,文字,或程序指令。在本在线教程中,以操作普通的文件为例。
-
目录: 目录特别及普通文件存储。对于用户熟悉Windows或Mac OS,UNIX目录相当于文件夹。
-
特殊文件: 一些特殊的文件提供访问硬件,如硬盘,CD-ROM驱动器,调制解调器和以太网适配器。其他特殊文件是类似的别名或快捷键,使您能够访问一个单一的文件使用不同的名称。
文件列表:
要列出存储在当前目录中的文件和目录。使用下面的命令:
$ls
下面是上述命令的示例输出:
$ls bin hosts lib res.03 ch07 hw1 pub test_results ch07.bak hw2 res.01 users docs hw3 res.02 work
ls命令支持,这将有助于获得更多的信息有关所列出的文件使用-1选项:
$ls -l total 1962188 drwxrwxr-x 2 amrood amrood 4096 Dec 25 09:59 uml -rw-rw-r-- 1 amrood amrood 5341 Dec 25 08:38 uml.jpg drwxr-xr-x 2 amrood amrood 4096 Feb 15 2006 univ drwxr-xr-x 2 root root 4096 Dec 9 2007 urlspedia -rw-r--r-- 1 root root 276480 Dec 9 2007 urlspedia.tar drwxr-xr-x 8 root root 4096 Nov 25 2007 usr drwxr-xr-x 2 200 300 4096 Nov 25 2007 webthumb-1.01 -rwxr-xr-x 1 root root 3192 Nov 25 2007 webthumb.php -rw-rw-r-- 1 amrood amrood 20480 Nov 25 2007 webthumb.tar -rw-rw-r-- 1 amrood amrood 5654 Aug 9 2007 yourfile.mid -rw-rw-r-- 1 amrood amrood 166255 Aug 9 2007 yourfile.swf drwxr-xr-x 11 amrood amrood 4096 May 29 2007 zlib-1.2.3 $
这里是所有列出的列信息:
-
第一列:表示授予该文件的文件类型和权限。下面是描述所有类型的文件。
-
第二列:代表所采取的内存块的文件或目录的数量。
-
第三栏:表示文件所有者。是谁创建了这个文件的Unix用户。
-
第四列:代表组的所有者。每个Unix用户将有关联的组。
-
第五栏:表示文件大小(以字节为单位)。
-
第六栏:表示当这个文件被创建或修改的最后一次的日期和时间。
-
第七栏:表示文件名或目录名。
在 ls -l清单的例子,每一个文件的行开始d, -,或l。这些字符表示的文件类型列出。
Prefix | 描述 |
---|---|
- | Regular file, such as an ASCII text file, binary executable, or hard link. |
b | Block special file. Block input/output device file such as a physical hard drive. |
c | Character special file. Raw input/output device file such as a physical hard drive |
d | Directory file that contains a listing of other files and directories. |
l | Symbolic link file. Links on any regular file. |
p | Named pipe. A mechanism for interprocess communications |
s | Socket used for interprocess communication. |
元字符:
在Unix元字符有特殊的含义。例如*和?是元字符。我们使用*匹配0个或多个字符,问号?匹配单个字符。
示例:
$ls ch*.doc
显示所有文件,其名称以ch开始和结束的。doc:
ch01-1.doc ch010.doc ch02.doc ch03-2.doc ch04-1.doc ch040.doc ch05.doc ch06-2.doc ch01-2.doc ch02-1.doc c
*元字符匹配任何字符。如果想显示所有文件只是文件结束,那么可以使用下面的命令:
$ls *.doc
隐藏文件:
一个无形的文件是一个点或者句号(.)的第一个字符是。 UNIX程序(包括shell)使用这些文件来存储配置信息。
隐藏文件的一些常见的例子包括以下文件:
-
.profile: 是Bourne shell(sh)的初始化脚本
-
.kshrc: Korn shell程序(KSH)初始化脚本
-
.cshrc: C shell(csh)的初始化脚本
-
.rhosts: 远程shell配置文件
要列出隐形文件,指定给ls-a选项:
$ ls -a . .profile docs lib test_results .. .rhosts hosts pub users .emacs bin hw1 res.01 work .exrc ch07 hw2 res.02 .kshrc ch07.bak hw3 res.03 $
-
单一点 . :这表示当前目录。
-
双点 ..:这表示父目录。
注:我已经把星号(*),只是为了显示位置,需要输入当前密码和新密码,否则系统,它不会告诉你,当键入任何字符。
创建文件:
可以使用vi编辑器来创建任何类Unix系统上的普通文件。只需给下面的命令:
$ vi filename
上面的命令,将打开一个给定文件名的文件。会需要按键来进入编辑模式。一旦在编辑模式下,就可以开始写内容在文件,如下:
This is unix file....I created it for the first time..... I'm going to save this content in this file.
一旦完成,请执行以下步骤:
-
按Esc键出来的编辑模式。
-
按两个键Shift+ ZZ一起完全退出来的文件。
现在,就可以把filemame创建的文件在当前目录中。
$ vi filename
$
编辑文件:
使用vi编辑器,可以编辑现有的文件。我们将覆盖在一个单独的在线教程中详细。但总之,可以打开现有的文件如下:
$ vi filename
一旦文件被打开,在编辑模式下,可以使用 i 按键,然后,可以编辑文件。如果想在这里和那里的文件内,那么首先需要走出来的编辑模式下按ESC键,那么可以使用下面的键,将里面的一个文件:
-
l 键移动到右侧。
-
h 键移动到左侧。
-
k 键向上移动在文件中。
-
j 键向下移动一边在文件中。
因此,使用上面的键就可以将光标定位在任何想要的编辑。然后在编辑模式下,可以使用i键。编辑该文件,一旦完成后,按ESC和最后两个键Shift+ ZZ一起退出的文件。
显示文件的内容:
可以使用cat命令来查看一个文件的内容。下面是一个简单的例子,看看上面创建的文件的内容:
$ cat filename This is unix file....I created it for the first time..... I'm going to save this content in this file. $
可以通过使用-b选项一起cat命令如下显示行号:
$ cat filename -b 1 This is unix file....I created it for the first time..... 2 I'm going to save this content in this file. $
计算在一个文件中的单词:
可以使用wc命令行,字,字符包含在一个文件总数计数。以下是一个简单的例子来看看上面创建的文件的信息:
$ wc filename 2 19 103 filename $
这里是所有的四列的细节:
-
第一栏:表示文件中的行的总数。
-
第二栏:表示文件中的总字数。
-
第三栏:表示文件中的字节总数。这是实际的文件大小。
-
第四栏:表示文件名。
在同一时间,以获得有关这些文件的信息,可以给多个文件。下面是简单的语法:
$ wc filename1 filename2 filename3
复制文件:
要复制的文件,请使用cp命令。该命令的基本语法是:
$ cp source_file destination_file
下面的例子,现有的文件的文件名创建一个副本。
$ cp filename copyfile
$
现在,发现多了一个文件在当前目录copyfile 。该文件将作为原始文件的filename完全相同。
重命名文件:
要更改名称的文件,使用mv命令。它的基本语法是:
$ mv old_file new_file
下面的例子将重命名现有文件 filename 修改为 newfile :
$ mv filename newfile
$
mv命令将现有的文件移动到新的文件完全。因此在这种情况下,在当前目录中有 newfile。
删除文件:
要删除现有的文件使用rm命令。它的基本语法是:
$ rm filename
注意:这可能是危险的,删除一个文件,因为它可能包含有用的信息。所以,要小心使用此命令时。建议使用-i选项的rm命令一起使用。
下面的例子将完全删除现有文件的文件名 filename:
$ rm filename
$
可以删除多个文件如下:
$ rm filename1 filename2 filename3
$
标准的UNIX流:
在正常情况下,每个Unix程序有三个流(文件)打开它时,它启动:
-
stdin : 这被称为作为标准输入和与其相关的文件的描述符是0。这也表示标准输入。 UNIX程序会从STDIN读取默认的输入。
-
stdout : 这被称为作为标准输出和1相关的文件描述符。这也表示STDOUT。 UNIX程序会写入默认输出STDOUT
-
stderr : 这是被称为标准错误和2相关的文件描述符。这也代表STDERR。 UNIX程序会写在STDERR所有的错误消息。