一、Linux常用文件命令

实验四  LINUX文件系统编程

一、Linux常用文件命令

(一)实验目的

1.加深对文件,目录,文件系统等概念的理解。

2.掌握Linux文件系统的目录结构。

3.掌握有关Linux文件系统操作的常用命令。

4.了解有关文件安全方面的知识。

(二)实验准备

文件及其分类

    文件是Linux用来存储信息的基本结构。一个文件就是被命名的一组信息。

    Linux文件通常分为普通文件、目录文件、特别文件、链接文件。

    特别文件分为块特别文件(如磁盘、磁带、CD-ROM等)和字符特别文件(如终端、打印机等)。块特别文件与字符特别文件的类型标志分别是“b”和“c”。

  例如:

      普通文件                              -rw-rw-r--

      目录文件                              drwxrwx---

      块特别文件                            brw-rw----

      字符特别文件                          crw-rw-rw-

(三)实验内容

  1.浏览文件系统

(1)运行pwd命令,确定你当前的工作目录。

(2)利用以下命令显示当前工作目录的内容:ls –l

     照屏幕上的现实信息,理解各字段的含义。

(3)运行以下命令:ls –ai

观察显示的信息。注意列出的前两项,它们分别表示当前目录和父目录。

使用不带-a选项的ls命令,注意,不再显示隐藏文件了。

使用不带-i选项的ls命令,注意,文件的i节点号不再出现。

(4)使用mkdir命令建立一个子目录subdir。

(5)使用带-d选项的ls命令,你只能看到有关子目录的信息。

(6)使用cd命令,将工作目录改到根目录(/)上。命令格式:cd  /

(7)使用ls命令列出根目录的内容,再分别列出各子目录的内容。

      步骤:①cd /;②ls;

③ls+子目录名或者cd+子目录名进入子目录后,用ls命令查看。

(8)使用ls -l命令列出/dev的内容,注意各行第一个字符b和c的含义以及规定的访问权限。

(9)使用不带参数的命令cd,然后用pwd命令确定你当前的工作目录是什么。

(10)使用命令cd .. /..,你将工作目录移到什么地方。这个命令同cd /。注意cd .. /..(/前有空格)和cd ../..(/前无空格)的区别。

2.查看你的文件

(1)利用cd命令,将工作目录改到你的主目录上。命令格式:cd+目录名;

 (2)将工作目录改到你的子目录subdir,然后运行命令:

date > file1

将当前日期和时间存放到新建文件file1中。

具体步骤:①mkdir subdir;②cd subdir;③date>file1;

(3)使用cat命令查看file1文件的内容。

(4)利用man命令显示date命令的用法:

man date

(5)将date命令的用法附加到文件file1的后面:

man date >> file1

(6)利用cat命令显示文件file1的内容。你会看到,前面date命令的输出和有关date命令的用法的信息都在这个文件中。

(7)利用ls -l file1命令列出文件file1的较详细的信息,注意其中第二字段(链接计数)的值。

(8)利用ln file1../fa命令进行文件链接。然后运行ls -l file1,查看显示的第二段的值发生了什么变化。

(9)现在想利用cat fa命令显示文件fa的内容,应该如何改动工作目录?

(10)设你的主目录是/usr/student,利用ln -s /usr/student/file1 slink进行符号连接。然后,利用ls -l file1 slink显示有关file1和slink的信息。

(11)运行ls -l/bin命令显示目录的内容。

(12)利用ls -l/bin|more命令行分屏显示/bin目录的内容。

3.文件操作

(1)查找文件和目录

利用find命令可以查找文件和目录的位置。你要告诉系统你想查找的文件名和从哪个目录开始进行查找。其常用使用格式是:

find pathname -name filename -print

其中,pathname是指定开始查找的目录,filename是你要查找的文件或目录。-name和-print是find命令的选项。例如:find . –name ‘f*’ –print,在当前目录的父目录的所有子目录中查找名字以f开头的文件名。要查找的文件名模式‘f*’必须用引号括起来,因为其中用到shell的元字符(*)。

(2)查找文件中指定的模式

grep命令常用于文本文件中查找给定的词或短语。包含给定模式字符串的行在标准输出(即显示器)上显示出来。例如:grep root/etc/passwd,在口令文件etc/passwd中查找名称为root的用户是否为和服的用户。

4.文件存取权限

(1)存取权限。Linux系统对所有文件设置了存取权限。存取权限让你确定谁可以对你的个人文件和目录进行访问,以及可以进行什么操作。

把所有用户分为三类:

——文件主(user),即文件的属主。

——组用户(group),即文件组的成员。

——其他用户(other),即能对系统进行访问的所有其他用户。

对一个文件的存取权限分为三种:

——读(r)

——写(w)

——执行(x)

一组存取权限以及相应的文件类型统称为文件模式。如:rw-r--r--表示文件主有读和写的权限,同组用户和其他用户只有读权限。

(2)文件存取权限

读权限(r):允许指定的用户可以打开文件并阅读其内容。如cat,more,file和cp命令等。

写权限(w):允许指定的用户可以打开文件并修改其内容。如vi,mail,cp等。

执行权限(x):允许指定的用户运行(即执行)一个二进制文件或者把一个shell脚本文件当作命令来运行。当你通过输入命令名来调用命令时,你必须具有该命令文件的执行权限。

(3)目录存取权限

读权限(r):允许你列出相应目录中所存放的文件的名字(即目录的内容表)。

写权限(w):允许你从目录中删除已有文件或者把新文件添加到目录中。

查询权限(x):允许你在目录中进行查找和使用cd命令把工作目录放到它这里。

(4)修改文件权限

文件主或root用户可以使用chmod命令来修改文件或目录的权限。修改文件权限的方式有两种:符号模式和绝对模式。

符号模式

使用chmod命令修改当前权限设置的一般形式是:

chmod key file [file...]

其中,key由以下成分组成:

[who] [+|-|=] [mode]

——who这一部分可以由下面的一个和多个字符组成:u,g,o或a,它们分别表示文件主,组用户,其他用户或所有三种用户。默认值是a。

——第二部分必须是以下三个字符中的一个:+,-,或者=,分别表示增加,删除或者设定。

——mode成分可以由以下字符任意组合:r,w或x,分别表示读,写或者执行/查询的权限。

以上三个部分必须依次输入,而且它们之间没有空格。在一个命令行中可以指定多个key,彼此间用逗号隔开,中间没有空格。

如:设文件f原来的权限是rw-rw-r--,现在想让所有用户都具有执行权限,则可使用以下命令:

chmod a+x f

该命令执行后,文件f的权限变成rwxrwxr-x。

练习:首先使用ls –l命令查看文件file1的存取权限。然后用命令 chmod g –r o –r file1修改file1的权限——组用户和其他用户都能被取消对该文件的读权限。最后使用命令ls –l file1核查文件file1存取权限的变化情况。

二、LINUX文件系统编程

(一)实验目的:

1)掌握LINUX文件系统的基本原理,结构和实现的方法

2)掌握LINUX文件系统中文件的建立,打开,读写,执行,属性等系统调用的使用.

(二)实验内容:

1)仔细阅读提供的源代码

2)理解LINUX文件系统的基本原理

3)调试提供的源代码

(三)实验程序:

#include<stdio.h>

#include<sys/types.h>

#include<unistd.h>

#include<fcntl.h>

#include<sys/stat.h>

#include<syslog.h>

#include<string.h>

#include<stdlib.h>

#define MAX 128

int chmd();

int chmd ()

{

       int c;

       mode_t mode=S_IWUSR;

       printf(" 0. 0700\n 1. 0400\n 2. 0200 \n 3. 0100\n ");

       printf("Please input your choice(0-3):");

       scanf("%d",&c);

       switch(c)

       {

              case 0: chmod("file1",S_IRWXU);break;

              case 1: chmod("file1",S_IRUSR);break;

              case 2: chmod("file1",S_IWUSR);break;

              case 3: chmod("file1",S_IXUSR);break;

              default:printf("You have a wrong choice!\n");            

       }

       return(0);

}

main()

{

       int fd;

       int num;   

       int choice;

       char buffer[MAX];

       struct stat buf;

       char* path="/bin/ls";

       char* argv[4]={"ls","-l","file1",NULL};

   while(1)

   {

       printf("********************************\n");

       printf("0. 退出\n");

       printf("1. 创建新文件\n");

       printf("2. 写文件\n");

       printf("3. 读文件\n");

       printf("4. 修改文件权限\n");

       printf("5. 查看当前文件的权限修改文件权限\n");  

      printf("********************************\n");

      

    printf("Please input your choice(0-6):");

    scanf("%d",&choice);   

   

        switch(choice)

        {

           case 0:close(fd);   

              exit(0);

          case 1:

                fd=open("file1",O_RDWR|O_TRUNC|O_CREAT,0750);

                if(fd==-1)

                    printf("File Create Failed!\n");

                else

                    printf("fd = %d\n",fd);                

                break;

            case 2:                            

                num=read(0,buffer,MAX); 

                   write(fd,buffer,num);  

                break;

            case 3:

                read(fd,buffer,MAX);

                write(1,buffer,num);

                break;

            case 4:

                chmd ();

                printf("Change mode success!\n");

                break;

            case 5:

                 execv(path,argv);         

                break;          

            default:

                printf("You have a wrong choice!\n");

        }

  }   

}

回答问题

(1)程序分析

(2)num=read(0,buffer,MAX); write(fd,buffer,num);代码的含义?

(3)系统调用execv()的用途?

(4)心得体会

《操作系统原理》

实验报告

报告要求

一.    封面—指定样稿

 二.    纸张—统一用A4纸打印

标题:字体—黑体;大小—小三~小四

正文内容:字体—宋体;大小—小四

左右页边距:2厘米,有页码

 三.撰写内容 

1、实验目的

2、实验内容与要求

3、实验步骤

4、程序清单:注意加注释(包含关键字、方法、变量等),在每个模块前加注释

5、测试结果(运行结果、结果分析)

6、总结(实验效果分析、心得体会,遗留问题)

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值