linux下的ls实现问题,下面这段while内代码每一句有什么功能?急!b-name什么表示?

linux下的ls实现问题,下面这段while内代码每一句有什么功能?急!b-name什么表示?,第1张

int ls_prepare(char *w,int aflag,int lflag)   //从后面看w是路径

{            //块语句

struct stat buf        //结构体保存文件信息,在头文件<sys/stat.h>

char name[100]        //数组

DIR *dir                    //目录结构体没有必要去研究知道哪些函数用他即可

struct dirent *pdr     //目录信向息结构体, 里面保存文件信息,包括inode,文件名,偏移量...

目测这里应该少了代码因为buf没有初始化

if(S_ISDIR(buf.st_mode))        //判断是否为一个目录

{  

dir = opendir(w)                    //打开路径w

while ((pdr = readdir(dir))!=NULL)         //然后读取目录

{

if(pdr->d_name[0]=='.')                    //如果目录是'.'和隐藏文件(linux隐藏文件'.'打头)

continue                                        //那么跳过

memset(name,0,100)                    情况name字符串

strcpy(name,w)                                把路含亩径复制到字符串中

strcat(name,"/")        烂没                        字符串拼接

strcat(name,pdr->d_name)         饥老纳   字符串拼接

do_ls(name,pdr->d_name,lflag)        //这个应该就是自己定义ls的名字吧

}

closedir(dir)                //关闭目录

}

ls 指令是Linux下最常用的指令之一。

ls 命令将每个由 Directory 参数指定的目录或者每个由 File 参数指定的名称写到标准输出,以及您所要求的和标志一起的其它信息。

如果不指定 File 或 Directory 参数, ls 命令显示当前目录的内容。

基本介绍中文名 :ls 类属 :指令 所属领域 :计算机 套用范围 :linux 指令释义,描述,许可权表示,标志,注意事项, 指令释义 ls 指令可以说是Linux下最常用的指令之一。它有许多的选项,下面列出了 ls 指令塌知的绝大多数选项。 List information about the FILEs (the current directory by default).Sort entries alphabetically if none of -cftuvSUX nor --sort is specified. 用法:ls [选项]... [档案]... 运用举例:

1.列出具体档案 #ls -al 这个最常用,可是往往又不彻底符合要求,

2.列出一切子目录的档案:#ls -R 上个指令仅仅列出了本目录下的一切目录和档案,可是目录下的档案不会循环的列出。

3.若是档案过多一屏看不完,怎么办?并且,关于想找到许多档案中的某个档案的姓名。

3.1分屏显现:#ls -l|more 能在当时屏退出,很有用,但不能一页一页翻屏

#ls -l|less 能用pgup,pgdw 翻页,但不能在当时方位退出

3.2横向输出尽可能多的显现档案姓名: #ls -m

-a 列出目录下的一切档案,包含以 . 最初的隐含档案。常用  

-m 横向输出档案名称,并以“,”作分格符。

-c 输出档案的 i 节点的修正时刻,并以此排序。

-R 列出一切子目录下的档案。

-l 列出档案的具体信息。

-s 在每个档案名称后输出该档案的巨细。

-k 以 k 位元组的方式表明档案的巨细。

-i 输出档案的 i 节点的索引信息。

2.只显现目录:#ls -l |grep ^d 3.只显现非目录档案:#ls -l |grep ^[^d]

3.对输出档案进行各种排序;

3.1 依照字元序(default): #ls -l

3.2 依照修正时刻排序: #ls -t 近来修正在最上面

3.3 逆排序 : #ls -r

3.4 按档案巨细排序 :#ls -S 大档案的在上

3.5 依照档案扩展名(最终一个.后的字元)排序: #ls -X

3.6 按数字排序 :#ls -lv

-t 以时刻排序。

-r 对目录反向排序

-f -U 对输出的团顷消档案不排序。

-X 以档案的扩展名(最终一个 . 后的字元)排序。

-S 以档案巨细排序。

-u 以档案前次被拜访的时刻排序。 

-n 用数字的 UID,GID 替代称号。

-o 显现档案的除组信息外的具体信息。

-p -F 在每个档案名称后附上一个字元以阐明该档案的类型,“*”表明可执行的一般

档案;“/”表明目录;“@”表明符号连线;“|”表明FIFOs;“=”表明套接字(sockets)。

-q 用?替代不行输出的字元。 

-x 按列输出,横向排序。

暂时无用选项:

-b 把档案名称中不可输出的字元用反斜杠加字元编号(就象在C言语里相同)的方式列出。不常用

-d 将目录象档案相同显现,而不是显现其下的档案。

-e 输出时刻的悉数信息,而不是输出简略信息。 没用

-g 无用。

-A 显现除 “.”和“..”外的一切档案。

-B 不输出以 “~”结束的备份档案。

-C 按列输出,纵向排序。

-G 输出档案的组的信息。

-L 列出连线档案名称而不是连线到的档案。

-N 不约束档案长度。

-Q 把输出的档案名称用双引号括起来。 

-1 一行只输出一个档案。

--color=no 不显现五颜六色档案名称

--help 在规范输出上显现协助信息。

--version 在规范输出乎凯上输出版别信息并退出 描述 ls 命令将每个由 Directory 参数指定的目录或者每个由 File 参数指定的名称写到标准输出,以及您所要求的和标志一起的其它信息。如果不指定 File 或 Directory 参数, ls 命令显示当前目录的内容。 在互斥对中指定多个选项不看成错误。每对中最后一个指定的选项确定输出格式。 预设情况下,ls 命令按照档案名称的字母顺序显示所有信息。整理顺序由环境变数 LANG 或 LC_COLLATE 环境变数确定。在 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 "National Language Support Overview for Programming" 包含更多细节。 当 ls 命令显示目录内容时,它不显示名称以 .(点)开头的档案项,除非使用了 -a 或者 -A 标志。如果命令由 root 用户执行,它预设使用 -A 标志。 格式化输出有三种主要方式: * 每行列出一项。 * 通过指定 -C 或 -x 标志以多列列出各项。当向 tty 输出时,-C 标志是预设格式。如果档案或目录名太长,ls 命令显示单列输出。 * 通过指定 -m 标志可以以逗号分隔系列列出项。 要确定输出行中字元位置的数目,ls 命令使用环境变数 COLUMNS。如果没有设定此变数,命令获取显示的当前列值。如果使用这些方法,ls 命令还不能确定字元位置的数量,它就使用预设值 80。 使用 -e 和 -l 标志所显示的方式解释如下: 如果第一个字元是: d 此项为目录。 b 此项为块特殊档案。 c 此项为字元特殊档案。 l 此项为符号连结,或者指定 -N 标志,或者符号连结不指向现有档案。 p 此项为一个先进先出(FIFO)特殊档案。 s 此项为本地套接字。 - 此项为普通档案。 接下来的 9 个字元被分成 3 个集合,每个集合 3 个字元。第一组 3 字元集合显示所有者许可权。下一组 3 字元集合显示了组中其它用户的许可权。最后 3 字元集合显示了访问此档案的其它任何人的许可权。每个集合中的三个字元各自表示了档案的读、写和执行许可权。目录的执行许可权让您可以搜寻目录中的指定档案。 许可权表示 如下: r 读 w 写(编辑) x 执行(搜寻) - 没有授予相应的许可权 如果档案有 set-group-ID 方式,那么组执行许可权字元是 s。如果档案有 set-user-ID 方式,则用户执行许可权字元是 s。如果方式位被设定为 01000(八进制)(请参阅 chmod 命令以获得此方式的含义),最后一个方式字元(通常 x 或者 -)是 T。如果没有设定相应的执行许可权,set-ID 的指示和方式位 01000 以大写字母开头(分别为 S 和 T)。方式 t 表示粘滞位是为档案或目录而设定的。 当使用 -e 标志时,其显示方式与使用 -l 标志一样,除了多出了第 11 个字元,其解释如下: + 表示档案有扩展安全性信息。例如,档案可能在方式中有扩展的 ACL、TCB 或者 TP 属性。 通过使用 aclget 命令,可以显示档案的访问控制信息(ACL)。通过使用 chtcb 命令,可以显示 TCB 和 TP 属性的值。 - 表示档案没有扩展安全性信息。 当列出目录中档案大小时,ls 命令显示块总数,包括间接块。 标志 -A 列出所有条目,除了 .(点)和 ..(点-点)。 -a 列出目录中所有项,包括以 .(点)开始的项。 -b 以八进制 ( \nnn) 表示法显示非列印字元。 -c 使用索引节点最近一次修改的时间,用以排序(当带 -t 标志使用时)或者用以显示(当带 -l 标志使用时)。该标志必须和 -t 或 -l 标志或者两者一起使用。 -C 以多列纵向排序输出。当往终端输出时,此为预设方法。 -d 仅仅显示指定目录信息。目录和档案一样处理,这在当使用 -l 标志获取目录状态时非常有用。 -e 显示方式(包括安全信息)、连结数目、所有者、组、大小(按位元组)、最近修改时间和每个档案名称称。如果档案是特殊档案,大小栏位包含主要和次要设备数目。如果档案是符号连结,会列印所连结到的档案的路径名,其前有 ->(减号,大于号)符号。显示符号连结的属性。 -E 列出档案的保留空间、固定范围大小和范围分配标志信息。使用该标志时,必须指定 -l 标志。 -f 在每个存储槽中列出 Directory 参数指定的每个目录的名称。该标志关闭 -l、-t、 -s 和 -r 标志并且开启 -a 标志。列表的顺序就是项出现在目录中的顺序。 -F 如果档案是目录,在档案名称后面放置一个 /(斜杠),如果档案可执行,则放置一个 *(星号),如果档案为套接字,则放置一个 =(等号),如果为 FIFO,则放置一个 |(管道)符号,如果是符号连结,则放置一个 @。 注:只有在使用 -N 标志或者连结指向一个不存在的档案时,符号连结显示时才后跟 ->。否则,显示目标档案的有关信息。通过输入 ls -f 命令,也可以调用此选项。 -g 与使用 -l 标志时显示同样的信息,除了 -g 标志禁止显示所有者和符号连结信息。 -H 如果在命令行上指定了引用类型目录档案的符号连结,ls 命令将档案信息和档案类型估计为由连结引用的档案的信息和类型,而非连结本身;然而,ls 命令将写连结本身的名称,而非由连结引用的档案。 -i 显示每个档案报告第一列中的索引节点数目。 -L 列出连结引用的档案或目录内容。此为预设 *** 作。后跟符号连结。如果使用 -l 选项,-N 选项就成为预设值,不后跟符号连结。当使用 -l 选项时,仅有 -L 选项能够覆盖 -N 预设值。 -l (L 的小写)显示方式、连结数目、所有者、组、大小(按位元组)和每个档案最近一次修改时间。如果档案是特殊档案,大小栏位包含主要和次要设备数目。如果最近一次修改时间大于六个月之前,时间栏位以 月份 日期 年份 的格式显示,然而六个月内修改的档案以 月份 日期 时间 的格式显示。 如果档案是符号连结,,列印所连结到的档案的路径名,其前跟 ->。显示符号连结的属性。-n、-g、和 -o 标志覆盖 -l 标志。 注意事项 1. 符号连结档案后跟一个箭头,然后是符号连结的内容。 2. 当使用 -l 选项时,通过执行 mkpasswd 命令,可以提高 ls 命令的执行性能。当目录包含不同用户拥有的档案时,这非常有用,比如 /tmp 目录。 -m 使用流输出格式(逗号分隔系列)。 -n -n 标志除显示用户和组 ID 而不是用户和组名称以外,它显示和 -l 标志同样的信息。 -N 当确定档案状态时,不跟在符号连结之后。 注:如果使用 -L 和 -N 两个标志,最后一个标志起作用。同样的,任何时候给定一个包含以 /(斜杠)作为最后字元的符号连结,不管使用何种选项,后面都会跟有连结。 -o -o 标志除禁止显示组和符号连结信息之外,它显示和 -l 标志同样的信息。 -p 如果档案是目录,在每个档案名称后面放置一个斜杠。当将 ls 命令的输出通过管道传递到 pr 命令时,这很有用,如下所示: ls -p | pr -5 -t -w80 -q 将档案名称中的非列印字元显示成 ?(问号)。 -r 反转排序顺序,适当的按字母逆向排序或者首先排序最旧的档案。 -R 递归列出所有子目录。 -s 按照千位元组(包括间接块)给出每一项的大小。 -t 按照最近一次修改时间(最近的最先)而不是名称排序。 -u 使用最近访问时间,而不是最近修改时间用以排序(当使用 -t 标志)或者显示(当使用 -l 标志)。如果不和 -t 或 -l 标志或两者一起使用,则该标志无效。 -x 以多列格式横向排序输出。 -1 强制输出为每行一项格式。当输出没有定向到终端时,此为预设值。 退出状态 此命令返回以下退出值: 0 写所有档案成功。 >0 产生错误。 示例 1. 要列出当前目录中的所有档案,请输入: ls -a 列出所有档案,包括 .(点)、..(点点)和其他以点开头的档案。 2. 要显示详细信息,请输入: ls -l chap1 .profile 显示一个长列表,包括关于 chap1 和 .profile 的详细信息。 3. 要显示有关目录的详细信息,请输入: ls -d -l . manual manual/chap1 显示目录 . 和 manual 以及档案 manual/chap1 的长列表。不使用 -d 标志时,会列出 . 和 manual 目录中的所有档案,而不是关于目录本身的详细信息。 4. 要按照修改时间列出档案,请输入: ls -l -t 显示最近被修改档案的长列表,较旧的档案跟在后面。 档案 /usr/bin/ls 包含 ls 命令。 /etc/passwd 包含用户 ID。 /etc/group 包含组 ID。 /usr/share/lib/terminfo/* 包含终端信息。

功能:ls命令用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。

格式:ls(选项)(参数)

参数:

-a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);源模皮

-A:显示除影藏文件码困“.”和“..”以外的所有文件列表;

-C:多列显示输出结果。这是默认选项;

-l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列;

-F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;

-b:将文件中的不可输出的字符以反斜线“”加字符编码的方式输出;

-c:与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间;

-d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;

-f:此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果;

-i:显示文件索引节点号(inode)。一个索引节点代表一个文件; --file-type:与“-F”选项的功能相同,但是不显示“*”;

-k:以KB(千字节)为单位显示文件大小;

-l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;

-m:用“,”号区隔每个文件和目录的名称;

-n:以用户识别码和群组识别码替代其名称;

-r:以文件名反序排列并输出目录内容列表;

-s:显示文件和目录的大小,以区块为单位;

-t:用文件和目录的更改时间排序;

-L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;

-R:递归处理,将指定目录下的所有文件及子目录一并处理; --full-time:列出完雹差整的日期与时间; --color[=WHEN]:使用不同的颜色高亮显示不同类型的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12164056.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存