什么是源文件什么是头文件_那是什么文件

什么是文件?

您可以了解很多有关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文件内容的命令
命令 描述
morepg 一次显示文件一页
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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值