Unix / Linux – 文件管理

本章将详细讨论Unix中的文件管理。Unix中的所有数据都组织成文件。所有文件都被组织到目录中。这些目录被组织成树状结构,称为文件系统。使用Unix大部分时间都是花在处理文件上。

在Unix中,有3种基本类型的文件

  • 普通文件 – 普通文件是包含数据、文本或程序指令的文件。
  • 目录 – 目录存储特殊文件和普通文件。对于熟悉Windows或Mac OS的用户,Unix目录相当于文件夹。
  • 特殊文件 – 一些特殊文件可以提供对硬件的访问,如硬盘、光驱、网卡。另外还有特殊文件如别名或快捷方式,让你可以为某个文件建立别名/快捷方式。

列出文件

要列出当前目录下的文件和目录,可使用ls命令。

示例:


[kevin@localhost /]$ ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var [kevin@localhost /]$

ls支持-l选项,列出详细信息:

[kevin@localhost /]$ ls -al
总用量 24
dr-xr-xr-x.  17 root root  245 3月  24 21:59 .
dr-xr-xr-x.  17 root root  245 3月  24 21:59 ..
-rw-------.   1 root root   37 3月  21 20:33 .bash_history
lrwxrwxrwx.   1 root root    7 2月   3 12:48 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 2月   3 12:59 boot
drwxr-xr-x.  20 root root 3080 3月  31 17:40 dev
drwxr-xr-x.  75 root root 8192 3月  31 17:40 etc
drwxr-xr-x.   4 root root   33 3月  30 21:51 home
lrwxrwxrwx.   1 root root    7 2月   3 12:48 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 2月   3 12:48 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 4月  11 2018 media
drwxr-xr-x.   2 root root    6 4月  11 2018 mnt
drwxr-xr-x.   2 root root    6 4月  11 2018 opt
dr-xr-xr-x. 105 root root    0 3月  31 17:40 proc
dr-xr-x---.   3 root root  164 3月  24 22:06 root
drwxr-xr-x.  24 root root  740 3月  31 17:40 run
lrwxrwxrwx.   1 root root    8 2月   3 12:48 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 4月  11 2018 srv
dr-xr-xr-x.  13 root root    0 3月  31 17:40 sys
drwxrwxrwt.  13 root root 4096 3月  31 17:41 tmp
drwxr-xr-x.  13 root root  155 2月   3 12:48 usr
drwxr-xr-x.  19 root root  267 2月   3 13:21 var
[kevin@localhost /]$

详细信息包含很多列:

  • 第1列 – 表示文件的类型和权限。关于类型下面表格有详细说明。
  • 第2列 – 表示文件/目录占用的内存块数量。
  • 第3列 – 表示文件所有者,即创建文件的Unix用户。
  • 第4列 – 表示文件所有者的组。每个用户都属于一个用户组。
  • 第5列 – 表示文件大小(以字节为单位)。
  • 第6列 – 表示最后一次写文件的时间。
  • 第7列 – 表示文件/目录名称。

ls -l清单示例中,每个文件行都以d-l开头,这些字符表示文件类型。

序号 前缀字符
1
常规文件,如文本文件、可执行文件或硬链接。
2 b
块特殊文件。块输入/输出设备文件,如物理硬盘驱动器。
3 c
字符特殊文件。原始输入/输出设备文件,如物理硬盘驱动器。
4 d
目录文件,下面可包含文件和子目录。
5 l
符号链接文件,可指向任何常规文件。
6 p
命名管道。进程间通信的一种机制。
7 s
套接字,用于网络通信。

通配符

有2个通配符*?,可以使用*来匹配0个或多个字符,?匹配单个字符。

例如:


[kevin@localhost book]$ ls ch*.md ch-10.md ch-1.md ch-2.md ch-3.md ch-4.md ch-5.md ch-6.md ch-7.md ch-8.md ch-9.md

显示所有名称以ch开头,以.md结尾文件,*匹配任意字符。

隐藏文件

隐藏文件的名称以点(.)开头,通常用于保存配置信息。

隐藏文件作为配置文件的例子:

  • .profile – Bourne shell (sh)初始化脚本
  • .kshrc – Korn shell (ksh)初始化脚本
  • .cshrc – C shell (csh)初始化脚本
  • .rhosts – 远程shell配置文件

ls命令要列出隐藏文件,需指定-a选项


[kevin@localhost ~]$ ls -a . .. .bash_history .bash_logout .bash_profile .bashrc book .viminfo
  • 单点(.) – 表示当前目录
  • 双点(..) – 表示父目录

创建文件

在任何Unix系统上,都可使用vi编辑器创建文本文件。

示例:

$ vi filename

上面的命令将打开一个具有给定文件名的文件。按下i键进入编辑模式,开始编写内容:

This is a test file...

通过下面步骤保存文件并退出:

  • 按下esc键退出编辑模式。
  • 同时按下Shift + ZZ两个键保存文件并退出。

现在,你已经创建好了1个文件。

编辑文件

可以使用vi编辑器编辑现有文件:

$ vi filename

文件打开后,按下i键进入编辑模式,然后继续编辑文件。

如果想在文件中移动光标,首先需要按下Esc键退出编辑模式,然后按箭头键移动光标,也可以通过下面的键移动光标

  • l – 右
  • h – 左
  • k – 上
  • j – 下

光标到达指定位置,可以使用i键进入编辑模式。完成编辑后,按Esc,然后2个键Shift + ZZ一起按保存文件并退出。

显示文件的内容

可以使用cat命令查看文件内容:

$ cat filename
This is a test file

可以使用cat命令-b选项显示行号:

$ cat -b filename
1   This is a test file
$

统计文件中的字数

可以使用wc命令获取文件中包含的行、词和字符的总数。

示例:

[kevin@localhost book]$ wc ch-1.md
 1  5 20 ch-1.md

每列信息说明:

  • 第一列 – 文件中的总行数。
  • 第二列 – 文件中的总字数。
  • 第三列 – 文件中的总字节数。这是文件的实际大小。
  • 第四列 – 文件名。

可以1次统计多个文件:

$ wc filename1 filename2 filename3

复制文件

可使用cp命令复制文件。基本语法是:

cp source_file destination_file

示例:

$ cp filename copyfile

当前目录中可以看到复制文件copyfile。

重命名文件

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

$ mv old_file new_file

把现在的文件名重命名为newfile:

$ mv filename newfile
$

删除文件

可使用rm命令删除现有文件。下面是基本语法:

rm filename

警告 – rm命令删除文件不可恢复,使用rm命令务必小心。

示例:

$ rm filename
$

可以一次删除多个文件

$ rm filename1 filename2 filename3
$

Unix 标准流

通常每个Unix程序在启动时都有3个流文件打开:

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


浙ICP备17015664号-1 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载