• 20145239 Linux下常用的ls命令总结


    20145239 Linux下常用的ls命令总结

          通过学习本周的教学视频和要求掌握的内容,发现ls命令被使用的次数非常多,但作为一个初学者,可能我只会ls或者顶多ls -l两种用法。但其实ls是一个非常实用的指令,因此我想简单的总结一下ls的常用命令。

    • ls,英文全名:list 即列表的意思。

    常用命令(以本周的10io文件夹为例):

    1. ls -a 列出文件下所有的文件,包括以“.“开头的隐藏文件(linux下文件隐藏文件是以.开头的,如果存在..代表存在着父目录)。

     

    2. ls -l 列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等。

     

    3. ls -F 在每一个文件的末尾加上一个字符说明该文件的类型。"@"表示符号链接、"|"表示FIFOS、"/"表示目录、"="表示套接字。

     

    4. ls -s 在每个文件的后面打印出文件的大小。 size(大小)

     

    5. ls -t 按时间进行文件的排序。 time(时间)

     

    6. ls -A 列出除了"."和".."以外的文件。

     

    7. ls -R 将目录下所有的子目录的文件都列出来,相当于我们编程中的“递归”实现。

     

    8. ls -L 列出文件的链接名。Link(链接)

     

    9. ls -S 以文件的大小进行排序

    文件颜色含义:

    绿色---->代表可执行文件
    红色---->代表压缩文件
    深蓝色---->代表目录
    浅蓝色----->代表链接文件
    灰色---->代表其它的一些文件

    所有ls命令列举:

    以下是几乎所有ls命令的选项,很多可能并不常用但可以作为了解。

          -a 列出目录下的所有文件,包括以 . 开头的隐含文件。 
      -b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。 
      -c 输出文件的 i 节点的修改时间,并以此排序。 
      -d 将目录象文件一样显示,而不是显示其下的文件。 
      -e 输出时间的全部信息,而不是输出简略信息。 
      -f -U 对输出的文件不排序。 
      -i 输出文件的 i 节点的索引信息。 
      -k 以 k 字节的形式表示文件的大小。 
      -l 列出文件的详细信息。 
      -m 横向输出文件名,并以“,”作分格符。 
      -n 用数字的 UID,GID 代替名称。 
      -o 显示文件的除组信息外的详细信息。 
      -p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通 
              文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字。
      -q 用?代替不可输出的字符。 
      -r 对目录反向排序。 
      -s 在每个文件名后输出该文件的大小。 
      -t 以时间排序。 
      -u 以文件上次被访问的时间排序。 
      -x 按列输出,横向排序。 
      -A 显示除 “.”和“..”外的所有文件。 
      -B 不输出以 “~”结尾的备份文件。 
      -C 按列输出,纵向排序。 
      -G 输出文件的组的信息。 
      -L 列出链接文件名而不是链接到的文件。 
      -N 不限制文件长度。 
      -Q 把输出的文件名用双引号括起来。 
      -R 列出所有子目录下的文件。 
      -S 以文件大小排序。 
      -X 以文件的扩展名(最后一个 . 后的字符)排序。 
      -1 一行只输出一个文件。 
      --color=no 不显示彩色文件名 
      --help 在标准输出上显示帮助信息。 
      --version 在标准输出上输出版本信息并退出。

    自己编写ls命令:

    其实ls命令是可以自己编写的,但我在自己尝试编写ls命令时发现还是有困难,对许多函数的理解不到位。这里提供一个可以运行的自己编写的ls命令的代码,可以供大家学习参考。

    #include <sys/types.h>
    #include <sys/stat.h>
    #include <unistd.h>
    #include <stdio.h>
    #include <string.h>
    #include <errno.h>
    #include <pwd.h>
    #include <grp.h>
    #include <time.h>
    #include <dirent.h>
    int  fun1(char *dir,char *filename)
    {
        struct stat buf;
        char out[100];
        if(stat(dir,&buf)<0)
        {
            perror("stat");
            return (-1);
    
        }
    
        switch(buf.st_mode & S_IFMT)
        {
        case S_IFREG:    
            printf("-");
            break;
        case S_IFDIR:    
            printf("d");
            break;
        case S_IFCHR:    
            printf("c");
            break;
        case S_IFBLK:    
            printf("b");
            break;
        case S_IFIFO:    
            printf("p");
            break;
        case S_IFLNK:    
            printf("l");
            break;
        case S_IFSOCK:    
            printf("s");
            break;
        }
    
        int n;
        for(n=8;n>=0;n--)
        {
            if(buf.st_mode&(1<<n))
            {
                switch(n%3)
                {
                case 2:
                    printf("r");
                    break;
                case 1:
                    printf("w");
                    break;
                case 0:
                    printf("x");
                        break;
                default:
                    break;
    
                }
            }
            else
            {
                printf("-");
            }
        }
        
        
        printf(" %d",buf.st_nlink);
        
        struct passwd *pw;
        pw = getpwuid(buf.st_uid);
        printf(" %s",pw->pw_name);
    
        struct group *gr;
        gr = getgrgid(buf.st_gid);
        printf(" %s",gr->gr_name);
    
        printf(" %ld",buf.st_size);
        
    
        struct tm *t;
        t = localtime(&buf.st_atime);
        printf(" %d-%d-%d %d:%d",t->tm_year+1900,
                                t->tm_mon+1,
                                t->tm_mday,
                                t->tm_hour,
                                t->tm_min);
       printf(" %s ",filename);    
    
        
           
        if(S_ISLNK(buf.st_mode))
        {
            printf(" -> ");
            if(readlink(filename,out,100)==-1)
            {
    
            }
            printf("%s",out);
    
        }
        printf("
    ");
        return 0;
    }
    
    
    int main(int argc ,char **argv)
    {
        char w[100];
        memset(w,0,100);
    
        if(argc<2)
            strcpy(w,"./");
    
        else
            strcpy(w,argv[1]);
        struct stat buf;
        char name[100];
        if(stat(w,&buf)<0)
        {
            fprintf(stderr,"stat error:%s
    ",strerror(errno));
            return -1;
        }
        
        if(S_ISDIR(buf.st_mode))
        {
            DIR *dir;
            dir = opendir(w);
            struct dirent *pdr;
            while ((pdr = readdir(dir))!=NULL)
            {
                if(pdr->d_name[0]=='.')
                {
                }
                else
                {
                    printf(" dir:%s 
    ",pdr->d_name);
                    memset(name,0,100);
                    strcpy(name,w);
                //    strcat(name,"/");
                    strcat(name,pdr->d_name);
                    fun1(name,pdr->d_name);
                }
                
            }
        }
        else
        {
            fun1(w,w);
        }
        return 0;
    }

    运行结果:

  • 相关阅读:
    Linux基础命令(一)
    You've made choice
    protege推理
    字符编码
    第二次作业
    数据类型-集合set
    数据类型-元组&字典
    数据类型-列表
    数据类型-数值&字符串
    流程控制之for循环
  • 原文地址:https://www.cnblogs.com/dwc929210354/p/6082345.html
Copyright © 2020-2023  润新知