-
认识linux 中的权限问题,理解用户和用户组
-
认识unix 中的文本,理解UNIX 为什么要使用文本
-
认识linux 中的文件,学习你的linux系统中文件的基本情况,认识到linux中任何东西都是文件
-
学习和使用管道指令、重定位指令;
-
进程查看以及创建链接文件的方法;
-
了解make指令的使用方法;
写在最前面:原老师提供了一份其他UNIX环境编程的课件,讲解十分详细,可供大家参考,写在实验指导中的内容毕竟没有经过若干时间的打磨,有些粗糙在所难免,欢迎大家指出问题,同时极力推荐大家多阅读其他的内容,我们会提供一个比较优质的资源。 一些可供选择的资源: http://billie66.github.io/TLCL/book/ (不知道什么原因非常不稳定,有时候无法访问)
经过上一次实验,同学应该已经掌握了基本的linux下的命令和工具。 linux系统的使用,还希望大家不止在实验课上使用,只有使用可以巩固自己的记忆。
管道是Linux环境中用来实现进程间通信的抽象
管道通讯是单向的,先进先出,有固定的读端和写端。
数据被进程从管道读出后,在管道中该数据就不存在了。
当进程去读取空管道的时候,进程会阻塞。
当进程往满管道写数据时,进程会阻塞。
管道容量为64KB(#define PIPE_BUFFERS 16
include/linux/pipe_fs_i.h)
---------------------
作者:惜暮
来源:CSDN
原文:https://blog.csdn.net/u010853261/article/details/53464053
file
命令可以帮助你认识文件,file <文件名> 会输出这个文件的类型
文件是对存储设备上的数据和元数据进行组织的机制,Linux中的设备,管道等都以文件的形式呈现。
当你使用ls -l
命令的时候, 会发现列出了目录的很多信息,并且以行为单位,下来就认识一下这些文件的基本含义
首先 -l 选项代表ls (- long) 就是展示目录下的详细信息。 比如如下例子
[me@linuxbox ~]$ ls -l
total 56
drwxrwxr-x 2 me me 4096 2007-10-26 17:20 Desktop
drwxrwxr-x 2 me me 4096 2007-10-26 17:20 Documents
drwxrwxr-x 2 me me 4096 2007-10-26 17:20 Music
drwxrwxr-x 2 me me 4096 2007-10-26 17:20 Pictures
drwxrwxr-x 2 me me 4096 2007-10-26 17:20 Public
drwxrwxr-x 2 me me 4096 2007-10-26 17:20 Templates
-
第一个字段是这个文件的权限,第一个d表示这是一个目录,其余九个字段表示这个文件的详细权限,一个rwx为一组 表示一个读(r) 写(w) 执行(x) 的权限,总共有三组,分别代表了拥有者,拥有组,所有人 对这个文件的权限,对应的字段为-表示没有该权限 ` “-”表示普通文件;
“d”表示目录;
“l”表示链接文件;
“p”表示管理文件;
“b”表示块设备文件;
“c”表示设备文件;
“s”表示套接字文件;
2)文件属性,其属性可分为三段:[rwx][rwx][r-x],其中:
r(Read,读取权限):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限;
w(Write,写入权限):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限;
x(eXecute,执行权限):对文件而言,具有执行文件的权限;对目录来说,该用户具有进入目录的权限。
- 第二个字段表示该文件硬连接的数目,这个问题以后再说
- 第三个&第四个字段 分别表示所有人和所有组,这里表示拥有人和拥有组都是me
- 第五个字段表示以字节数表示的文件大小。
- 最后修改时间
- 文件名
- 用户及用户组
Linux用户分为管理员和普通用户,普通用户又分为系统用户和自定义用户。
可以查看/etc/passwd来查看;
1)系统管理员:即root帐户,拥有所有系统权限,是整个系统的所有者。
2)系统用户:linux为满足自身系统管理所内建的账号,通常在安装过程中自动创建,不能 用于登录操作系统。
3)自定义用户:由root管理员创建供用户登录系统进行操作使用的账号。
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。同样用户组的信息我们可以在/etc/group中查看。
-
用户管理命令(详情请使用
man
指令) -
添加用户命令:useradd
- 修改用户密码:passwd
- 修改用户信息:usermod
- 修改用户密码状态:chage
- 删除用户命令:userdel
- 查看用户:id
- 切换用户身份:su
- 修改用户组:groupmod
- 添加用户组:groupadd
- 删除用户组:groupdel
file
命令可以帮助你认识文件,file <文件名> 会输出这个文件的类型
linux 中的任何都是由文件组成的,下面的指引会给出一些相关的概念,在 / 也就是根目录下时,你可以看到下列的文件夹
-
bin:是英语binary的缩写,表示“二进制文件”(我们知道可执行文件是二进制的)。包含了会被所有用户使用的可执行程序。
-
boot:英语boot表示“启动”。包含与Linux启动密切相关的文件。
-
dev:是英语device的缩写,表示“设备”。包含外设。我们之后会仔细研究这个目录,因为它里面的子目录,每一个对应一个外设。比如代表我们的光盘驱动器的文件就会出现在这个目录下面。
-
etc:etc有点不能顾名思义了。因为etc是法语et cetera的缩写,翻成英语就是and so on,表示“等等”。包含系统的配置文件。至于为什么在/etc下面存放配置文件, 按照原始的UNIX的说法(Linux文件结构参考UNIX的教学实现MINIX) ,这下面放的都是一堆零零碎碎的东西, 就叫etc好了。哈哈 ,这其实是个历史遗留。
-
home:英语home表示“家”。用户的私人目录。之前我们提过一些,在这个目录中,我们放置私人的文件,有点类似Windows中的Documents这个文件夹,也叫“我的文档”。Linux中的每个用户(除了大管家用户,也就是超级用户root外,root因为太厉害,拥有所有权限,所以比较“任性”,跟普通用户不住在一起)都在home目录下有自己的一个私人目录。比如我的用户名是oscar,那么我的私人目录就是/home/oscar;如果另一个用户叫jean,那么他的私人目录就是/home/jean。
-
lib:是英语library的缩写,表示“库”。包含被程序所调用的库文件,例如.so结尾的文件,在Windows下这样的库文件是以.dll结尾的。
-
media:英语media表示“媒体”。当一个可移动的外设(比如USB盘,SD卡,DVD,光盘等等)插入电脑时,Linux就可以让我们通过media的子目录来访问这些外设中的内容。
-
mnt:是英语mount的缩写,表示“挂载”。有点类似media,但一般用于临时挂载一些装置。
-
opt:是英语optional application software package的缩写,表示“可选的应用软件包”。用于安装多数第三方软件和插件。
-
root:是英语“根”的意思。超级用户root的家目录/主目录。一般的用户的家目录是位于/home下,不过root用户是个例外。之前的课程我们也提到过,root是整个系统的超级用户,拥有一切权限,初学者请慎用此用户模式。
-
sbin:是英语system binary的缩写,表示“系统二进制文件”。比起bin目录多了一个前缀system,所以包含的是系统级的重要可执行程序。
-
srv:是英语service的缩写,表示“服务”。包含一些网络服务启动之后所需要取用的数据。
-
tmp:是英语temporary的缩写,表示“临时的”。普通用户和程序存放临时文件的地方。
-
usr:是英语Unix Software Resource的缩写,表示“Unix操作系统软件资源”(也是个历史遗留的命名)。这个目录是最庞大的目录之一。有点类似Windows中的C:\Windows和C:\Program Files这两个文件夹的集合。在这里面安装了大部分用户要调用的程序。
-
var:是英语variable的缩写,表示“动态的,可变的”。通常包含程序的数据,比如一些log(日志)文件,记录电脑中发生了什么事。
/proc 下的文件表示进程,这里的文件实际存在位置是内存中,并不是硬盘, 对应的数字则是一个进程的进程号。 /dev 下的文件被称作设备文件,是一种特殊的文件,甚至可以根据这些文件的名字推测出设备是什么。
十分推荐大家自己看一看这两个文件夹的内容,理解linux对于文件这一级别的抽象,更推荐大家看看其他的目录下都有什么,推测一下实际的用途,通常不会相差太多
linux 下对于文本由广泛的利用,下面是一些解释
关于开机启动,先行的linux发行版具有不同的开机启动顺序,这里根据centos介绍一下开机的启动,
在命令行环境下,也有类似于windos下批处理文件的脚本,叫做shell脚本,shell脚本的编写将是这门课后续的内容,这里简单介绍一下基本的规则
正如你所见,进入命令行后实际上是打开了一个名叫bash 的程序,bash也有自己的脚本, 在每一个人的目录中有一个 .bashrc 文本文件,这个文件就是bash的启动脚本之一,打开看一下启动脚本中完成了那些内容
构建程序的时候我们需要模块化的设计,组织这些模块的工具就是make
关于unix 下为什么使用文本《UNIX编程艺术》第5章中给了详细的说明,相信通过长时间的使用,你也能感受到其中的优越之处 这里仅仅给出两个截图,感兴趣的同学可以自行查阅(这本书很有趣的)
#实验任务
#提交方式
将自己的答案放在word文件里,标清题号,不用复制题目和前面的实验指导。以.docx或.doc的文件格式提交至软件学院云平台,以便于助教批改。请不要抄袭他人,被查重者将严肃处理。
命名规则:学号_姓名_实验二
截止提交时间: 如有错误或不当的地方,欢迎大家指出