什么是文件?
您可以了解很多有关IBM®AIX®上文件的知识,但首先要了解的是第一件事。 什么是文件?
文件是可以读取或写入的数据的集合。 文件可以是您创建的程序,编写的文本,获取的数据或使用的设备。 该定义来自AIX 7.1信息中心(请参阅参考资料 )。 文件可以是任何东西,从目录到shell脚本,编译程序,操作系统可执行文件,设备或数据库索引文件(仅举几例)。
本文着眼于一些大家介绍一下文件的CON 帐篷的命令,同样重要的是,他们的CON 文本 。
使用ls
命令列出文件
通常,关于文件的第一件事就是所谓的文件。 ls
命令按名称列出当前目录中的文件。 清单1显示了/ home / ibmdw目录中ls
命令的输出。
清单1. ls命令示例
# ls backup.data image.info readme sample.txt bin myscript.sh reports
列出的所有文件都使用允许的AIX文件名字符。 (有关文件命名约定的信息,请参阅参考资料 。)了解文件名是一个开始,但是大多数人都希望使用包含更多详细信息的清单。 您可以使用ls -l
命令获得较长的清单。 这为您提供了更多信息,包括:
- 文件的上次更改时间
- 文件权限,显示谁拥有它,它属于哪个组以及允许谁读取,更新或运行它
- 文件大小
您可以在清单2中使用ls -l
查看长清单的示例。 我为该示例添加了标题行,但它不会作为常规命令的一部分出现。
ls -l命令
清单2。
ls -l command
$ ls -l
total 608 mode links owner group size modified file name
-rw-r--r-- 1 root system 187972 Nov 24 05:34 backup.data
drwxr-xr-x 2 ibmdw staff 256 Nov 24 05:29 bin
-rw-r--r-- 1 root system 11 Nov 24 05:34 image.info
-r-xr--r-- 1 ibmdw staff 109499 Nov 24 05:29 myscript.sh
-rw-r--r-- 1ibmdw staff 49 Nov 24 05:32 readme
drwxr-xr-x 2 ibmdw staff 256 Nov 24 05:30 reports
-rw-r--r-- 1 root system 2550 Nov 24 05:33 sample.txt
在此清单中,每个文件都有一行。 左列的第一个字符显示文件的类型。 两种最常见的文件类型是d
(表示目录)和-
(表示普通文件)。 然后,您会看到文件模式(文件权限的重要组成部分),链接数以及文件所属的所有者和组。 之后,您会看到文件大小(以字节为单位),然后是文件的最后修改日期和时间。 最后,有文件名。
文件权限信息不在本文讨论范围之内,但是“ 相关主题”部分显示了可以在哪里进行很好的说明。
运行ls
命令时,还有更多选项可用。 表1描述了一些常见的方法。
表1.可以与ls
命令一起使用的通用标志
旗 | 描述 |
---|---|
‑a 或‑A | 允许您查看以点开头的隐藏文件。 其中包括.profile之类的文件,该文件在登录时设置了一些用户变量。 注意:如果以root身份登录时使用 ls 命令,则也可以看到此信息。 |
-t | 按照文件的修改日期对文件进行排序。 |
-r | 颠倒排序顺序。 |
ls
命令有助于提供基本信息,但是您可以了解的文件要比ls
命令报告的内容多得多。
档案名称
文件名可以指示文件的类型。 例如,shell脚本通常以.sh结尾,而配置文件则可能以.cfg或.ini结尾。 您通常可以通过查看文件的名称和扩展名(如果有扩展名)来判断文件的用途。 表2显示了一些示例。
表2.文件名如何与文件类型相关的示例
文档名称 | 描述 |
---|---|
startnode.sh | 用于启动WebSphere节点的Shell脚本 |
/ etc /文件系统 | 文件系统列表 |
Java14.sdk.tar.gz | Java的? 1.4.2 Software Developer Kit tar文件(压缩为gzip) |
如您所见,文件名有时会提示您该文件的用途,但这并不是绝对的规则。 因为AIX可以灵活使用您可以使用的文件名类型,所以不能保证仅通过文件名就可以知道文件类型。
还有其他指向文件用途的指针,例如目录名称或文件所属的文件系统。 如果您有一个名为/ db_dat的文件系统和另一个名为/ db_idx的文件系统,则很有可能它们分别用于数据库数据文件和索引文件。
文件类型
一些命令可以帮助您查看正在处理的文件的类型。 file
命令尝试将文件分类为以下类别之一:
- ar档案库
- 阻止特殊
- C语言源
- 特殊字符
- cpio存档
- 目录
- 空的
- FORTRAN来源
- 先进先出(FIFO)
- Shell脚本(命令文本)
- 插座
- 符号链接
- 焦油档案
如果您计划查看或编辑文件,则file
命令特别重要。 当您知道文件的类型时,可以确定查看其内容所需的工具。
文件系统,目录和文件集
知道文件的名称和类型是有帮助的,但是文件不能独立存在。 它与其他文件有关系。 文件位于文件系统中,并且属于目录树中的某个位置。 一些文件也属于AIX文件集。 本节提供一些命令,可帮助您查看文件相对于其他文件的位置。
哪个文件系统?
如果要查找文件属于哪个文件系统,则有时查看由df
命令生成的文件系统列表可能会产生误导。 您可能会认为/usr/tmp/hostmibd.log文件属于/ usr,但实际上它属于/ var。 事实证明,/ usr / tmp父目录是/ var / tmp的符号链接,如清单3所示。
清单3.带有符号链接的列表目录
# ls -ld tmp lrwxrwxrwx 1 bin bin 8 Sep 13 2010 tmp -> /var/tmp
因此,如果该文件开始增长,它将使用/ var而不是/ usr中的可用空间。 幸运的是,您可以使用df
命令并添加文件名作为参数,让AIX为您解决这个问题,如清单4所示。
清单4.使用带有文件名作为参数的df
命令
# cd /usr/tmp # df aixmibd.log Filesystem 512-blocks Free %Used I
used %Iused Mounted on /dev/hd9var 2097152 1237000 42% 17545 11% /var
如果您具有符号链接或大量嵌套的文件系统,则此功能特别有用。 如果您正在使用脚本并且需要标识文件所属的文件系统,这也将很有帮助。
哪个目录?
文件属于目录路径,您可以追溯到根目录(/)。 例如,名为myfile的文件可能属于/ a / very / long / directory / path。
有时能够显示不带完整路径的文件名会很有帮助。 为此,可以使用清单5中所示的basename
命令。
清单5.一个basename
命令示例
# basename /a/very/long/directory/path/myfile myfile
如果要删除基本名称,而只保留其余的最后一个斜杠(/),请使用清单6中所示的dirname
命令。
清单6. dirname
命令示例
# dirname /a/very/long/directory/path/myfile /a/very/long/directory/path
当您想分割字符串时,这些命令通常在脚本中更有用。 您可以将结果存储在变量中,然后在该字符串上运行dirname
或基basename
。
哪个文件集?
许多文件是AIX文件集的一部分。 您可以使用lslpp -Jw
命令,后跟具有完整路径的文件名,来确定文件属于哪个文件集。 清单7显示mksysb
命令(/ usr / bin / mksysb文件)属于bos.sysmgt.sysbr文件集。
清单7.显示文件所属的文件集
File Fileset
Type
-----------------------------------------------------------------
/usr/sbin/installp bos.rte.install File
/usr/clvm/sbin/linstallpv prpq.clvm File
/usr/lpp/bos.sysmgt/nim/methods/c_installp
bos.sysmgt.nim.client File
您也可以将文件集用作起点并列出属于它的文件。 您可以使用lslpp -f
和文件集名称来完成此操作。 清单8是一个示例。
清单8.列出文件集中包含的文件
lslpp -f bos.sysmgt.sysbr Fileset File
Path: /usr/lib/objrepos bos.sysmgt.sysbr 7.1.0.0
/usr/lpp/bosinst/iscsi
/objrepos/sm_name_hdr
/usr/lib/bootpkg/5.3.7.0-spotpkg.tar
/usr/lpp/bosinst/iscsi
/usr/lib/bootpkg/6.0.0.0-spotpkg.tar /usr/lib/bootpkg/5.2.0.10-spotpkg.tar
/usr/lpp/bosinst/iscsi/objrepos/sm_cmd_hdr
/usr/lpp/bos.sysmgt/mkcd.README.txt
/usr/sbin/bootpkg /usr/samples/oem_cdwriters/burn_cd_jodian
/usr/lpp/bosinst/cdfs.optional.list /usr/sbin/mkinsttape
/usr/bin/mkszfile /usr/lib/bootpkg/5.1.0.50-spotpkg.tar
/usr/lpp/bosinst/tape /usr/lpp/bosinst/image.template
/usr/lpp/bosinst/CheckSize /usr/lpp/bosinst/BosMenus
/usr/lpp/bosinst/bi_main /usr/lpp/bosinst/bosinst.template.README
/usr/lpp/bosinst/bosinst.template /usr/lpp/bosinst/Get_RVG_Disks
/usr/lpp/bos.sysmgt/mkcd.README.html /usr/lpp/bosinst/iscsi/iscsi_cfg
/usr/lib/bootpkg/5.2.0.30-spotpkg.tar /usr/lib/bootpkg/5.3.0.0-spotpkg.tar
/usr/lib/bootpkg/bootpkg_list
/usr/lpp/bosinst/iscsi/objrepos/sm_menu_opt
/usr/lpp/bosinst/post_vgsync /usr/samples/oem_cdwriters /
usr/sbin/mkdvd -> /usr/sbin/mkcd /usr/lpp/bosinst/cdeject
/usr/lpp/bosinst/iscsi/objrepos
/usr/lpp/bosinst/iscsi/objrepos/sm_cmd_hdr.vc
/usr/lib/bootpkg
/usr/sbin/mkrr_fs -> /usr/samples/oem_cdwriters/mkrr_fs_gnu
/usr/bin/restwparfiles -> /usr/bin/listvgbackup
/usr/bin/restvg
/usr/bin/listvgbackup /usr/lib/bootpkg/6.1.1.0-spotpkg.tar
/usr/samples/oem_cdwriters/burn_cd_gnu_dvdram
/usr/samples/oem_cdwriters/burn_cd_youngminds
/usr/lpp/bos.sysmgt/README.oem_cdwriters ->
/usr/lpp/bos.sysmgt/mkcd.README.txt
/usr/lpp/bosinst/iscsi/objrepos/sm_cmd_opt
/usr/lpp/bosinst/iscsi/iscsi_smit /usr/bin/lsmksysb ->
/usr/bin/listvgbackup /usr/lib/bootpkg/5.2.0.75-spotpkg.tar
/usr/bin/lssavevg -> /usr/bin/listvgbackup
/usr/lib/bootpkg/4.3.3.75-spotpkg.tar
/usr/samples/oem_cdwriters/mkrr_fs_gnu
/usr/lpp/bosinst/cdfs.required.list
/usr/bin/savewpar ->
/usr/bin/mksysb
/usr/bin/mksysb
/usr/lpp/bos.sysmgt/README
/usr/sbin/burn_cd ->
/usr/samples/oem_cdwriters/burn_cd_gnu
/usr/bin/mkvgdata -> /usr/bin/mkszfile
/usr/bin/savevg -> /usr/bin/mksysb
/usr/samples/oem_cdwriters/burn_cd_gnu
/usr/lpp/bosinst/cmdbsys_lib
/usr/lpp/bosinst/iscsi/objrepos/sm_name_hdr.vc
/usr/lpp/bosinst/adjfs
/usr/lib/bootpkg/5.2.0.40-spotpkg.tar
/usr/lpp/bosinst/iscsi/objrepos/sm_cmd_opt.vc
/usr/samples/oem_cdwriters/mkrr_fs_youngminds
/usr/lpp/bosinst/tape/tapefiles1
/usr/bin/mkwpardata ->
/usr/bin/mkszfile
/usr/lpp/bosinst/iscsi/objrepos/sm_menu_opt.vc
/usr/bin/restorevgfiles ->
/usr/bin/listvgbackup
/usr/lpp/bosinst/cdboot
/usr/lpp/bosinst/bicheck
/usr/bin/lssavewpar ->
/usr/bin/listvgbackup
/usr/sbin/restwpar
/usr/lib/bootpkg/5.2.0.0-spotpkg.tar
/usr/sbin/mkcd
/usr/samples/oem_cdwriters/mkrr_fs_jodian
/usr/lpp/bosinst/bicfgsup
/usr/lpp/bosinst/cdfs.optional.B.list
/usr/lib/bootpkg/5.1.0.35-spotpkg.tar
Path: /etc/objrepos bos.sysmgt.sysbr 7.1.0.0 /etc/preserve.list
文件指纹
系统上的每个文件都是唯一的。 即使您制作了一个文件副本,该副本也不同于原始文件。 内容可能相同,但是文件仍然是唯一的。 怎么了
文件不仅仅包含其内容。 即使文件名也不能使其唯一,因为只要文件位于不同目录中,就可以拥有两个具有相同名称的文件。 那么,什么使一个文件与另一个文件不同呢? 要回答该问题,您可以查看文件的索引节点。 索引节点是一种目录。 每个文件都有一个索引节点编号,该编号对于文件系统中的该文件是唯一的。
您可以使用istat
命令检查文件的inode信息,该命令向您显示文件的inode编号和文件所在的设备。 索引节点还显示文件的上次访问时间,权限和扩展权限。 (有关扩展的权限和访问控制列表或ACL的更多信息,请参见参考资料 。) 清单9显示了istat
命令的输出示例。
清单9.一个istat
命令示例
# istat lspartition
Inode 321985 on device 10/9
File Protection: rwxr-xr-x Owner: 2(bin) Group: 2(bin) Link count: 1 Length 19884 bytes
Last updated: Thu Nov 17 10:19:59 EST 2011
Last modified: Wed Jul 20 01:06:07 EST 2011
Last accessed: Wed Jul 20 06:02:35 EST 2011
您可以在istat
命令的输出中看到三个日期和时间戳字段。 表3列出并描述了这些字段。
表3. istat
命令输出中的日期和时间戳记字段
领域 | 描述 |
---|---|
最近更新时间 | 显示最后一个inode更新的日期和时间。 重命名文件,更改其权限或对文件目录进行其他更改时,将更新此字段。 |
最后修改 | 显示文件本身(而不只是索引节点)的最后更改的日期和时间。 |
最后访问 | 显示文件的上次打开日期和时间,即使未对该文件进行任何更新。 |
您可以使用任何这些时间戳来使用find
命令搜索文件。 find
命令使用标志允许您将搜索范围缩小到在特定时间段内已访问,修改或索引节点已更新的文件。 例如,通过使用-mtime
(修改时间)调用find
,您可以查找在特定数量的24小时内已更改的文件。 清单10显示了如何从当前目录开始列出最近三天内所有已更改的文件。
清单10.按天数查找文件的修改时间
find . -mtime -3
同样,您可以在特定的分钟数内搜索已被修改,更新或访问的文件。 清单11显示了如何查找最近10分钟内已访问的文件。
清单11.以分钟为单位的修改时间查找文件
find . -amin -10
find
命令的AIX命令文档更详细地说明了这些选项(请参阅参考资料 )。
文件大小
要显示文件的大小,请使用du
命令。 这比转换ls -l
命令的输出要容易。 有关如何显示文件大小的更多详细信息,请参阅参考资料 。
文件内容
如果文件是文本文件,则可以查看其内容(前提是您具有文件的读取权限)。 有许多命令可以帮助您查看部分或全部的美国信息交换标准码(ASCII)文件。 表4列出并描述了其中一些命令。
表4.用于查看ASCII文件内容的命令
命令 | 描述 |
---|---|
more 或pg | 一次显示文件一页 |
head | 显示文件的前几行 |
tail | 显示文件的最后几行。 如果文件仍在更新,则可以使用tail -f 查看连续视图 |
view | 在只读模式下的vi编辑器会话中显示文件内容 |
即使文件不是ASCII格式,也可以使用strings
命令查看文件中的可打印字符串。
文件用户
要查看进程是否正在使用文件,请使用fuser
命令。 您可以使用fuser -u
列出拥有该进程的用户的名称。 如果您确信可以终止该过程,则可以使用fuser -k
停止该过程。
更多文件信息
许多其他命令可以通知您有关文件的信息并帮助您管理它们。 有用于删除,复制,移动或重命名文件的命令。 您还可以使用命令来显示文件内容或在文件中查找文本字符串。 您可以计算文件中的字符,行或单词。 您可以比较文件并显示差异。 表5列出了一些最有用的文件管理命令。 有关所有这些命令的文档可在AIX信息中心获得(请参阅参考资料 )。
表5.其他用于管理文件的命令
命令 | 描述 |
---|---|
猫 | 连接或显示文件 |
cmp | 比较两个文件 |
科尔姆 | 从文件中提取列 |
cp | 复制文件 |
切 | 写出文件每一行中的选定字节,字符或字段 |
开发者 | 显示文件所在的设备 |
差异,差异 | 比较文本文件 |
差异3 | 比较三个文件 |
目录 | 比较两个目录 |
ff | 列出文件系统中所有文件的路径 |
grep | 在文件中搜索模式 |
MV | 移动文件 |
nl | 编号文件中的行 |
R M | 删除(取消链接)文件或目录 |
糊 | 合并多个文件的行或一个文件中的后续行 |
斯迪夫 | 提供文件的并行比较 |
分类 | 排序文件,合并已经排序的文件,并检查文件以确定它们是否已排序 |
和 | 获取文件的校验和和块数 |
优衣库 | 报告或删除文件中的重复行 |
厕所 | 计算文件中的行数,单词数和字节数 |
哪一个 | 找到程序文件,包括别名和路径 |
结论
本文向您展示了一些可用于处理文件的AIX命令,但还有更多。 实际上, 每个命令都以一种或另一种方式处理文件。 如您所见,不时重新访问命令文档是有益的,因为可能会有新的标志或命令可用。 当您充分利用可用命令时,系统管理工作将变得更加容易。
翻译自: https://www.ibm.com/developerworks/aix/library/au-aix-commands/index.html