精华内容
下载资源
问答
  • unix操作系统知识
    千次阅读
    2021-07-18 08:59:30

    Unix是20世纪70年代初出现的一个操作系统,除了作为网络操作系统之外,还可以作为单机操作系统使用。现在Unix系统的用户日益增多,应用范围也日益扩大。Unix系统在计算机操作系统的发展史上占有重要的地位,对已有技术不断作了精细、谨慎而有选择的继承和改造,并且,在操作系统的总体设计构想等方面有所发展,才使它获得如此大的成功。本文对Unix操作系统的原理、优点与缺点做了简单的分析。

    Unix系统在计算机操作系统的发展史上占有重要的地位,对我们学习嵌入式操作系统有重大的意义。本文主要分析了Unix操作系统的原理、优点和缺点。其中原理部分包括Unix系统的基本结构、Unix文件系统、Unix存储管理。

    一. Unix操作系统的原理

    Unix是一种多用户、多任务管理操作系统。Unix系统由硬件部分、内核、Shell和应用程序构成,用户通过Shell发送用户命令到内核。Unix文件系统采用树形结构。Unix支持多种处理器架构,按照操作系统的分类,属于分时操作系统。苹果系统就是基于Unix的。

    1.Unix系统的基本结构

    (1)内核层
    Unix系统内核的作用是与硬件交互并控制硬件向用户程序提供抽象服务。负责计算机系统中的资源管理和进程调度分配,其中包括中断处理、存储器管理、进程管理和I/O文件管理等。这些功能由Unix内核中的各个模块实现。其中包括直接控制硬件的各模块。Unix的内核是计算机硬件的第一次延伸,向用户提供接口进行服务,而用户不能够直接访问内核。

    (2)Shell及专用程序层
    Shell是Unix的用户接口,是Unix系统的重要组成部分。它负责完成用户命令的解释执行,完成Unix系统用户工作环境的设定等,但它不是内核的组成部分。在Unix系统中,一些命令通过应用程序的命令接口来实现。其中编译部件也在Shell及专用程序层上。

    (3)用户程序层
    用户程序层在Shell和专用程序的外部,与编译器同处最外层的是用户的实际应用程序。编译器主要完成将用户程序编译成系统可识别和处理的形式,也在用户程序层上。

    2.Unix文件系统

    Unix文件系统采用树形文件结构、内核与外核结合、设备与文件一样的管理机制和使用方法。Unix文件系统通过“磁盘索引i节点”和“目录项”来进行管理的,在文件被打开或被引用后还需要“内存索引i节点”、“用户文件描述表”、“文件表”。

    文件系统在磁盘中大致分为以下三个区域:

    (1)超级块
    作用是存放文件系统本身的结构信息,比如每个区域的大小以及有哪些空余的磁盘块信息。超级块中保存了全局文件信息,如硬盘已用空间、数据块可用空间、i结点信息等等。

    (2)i-节点表
    存储文件的属性,大小以及所有者等。每个i-节点结构的大小一致,而且访问的方式就和数组类似,比如要访问i-节点号为9的i-节点结构,就对应i-节点表中的第10个位置。i结点是Unix操作系统中文件的核心,也是操作系统与硬盘中存储的数据间的中介,如果这个结点信息出现错误的话,那么硬盘中存储的数据块将无法被用户所采用。

    (3)数据区
    文件的内容就保存在这个区域,磁盘上的所有块的大小都是相同的,如果该文件的内容存储下来不止需要一个块,那就使用多个块进行存储。如果文件很大的话,就需要很多个磁盘块才能存储下来。

    3.Unix存储管理

    存储管理是对作业从进入就绪状态起到运行结束之间所使用的存储器进行管理。可以将存储管理模块的任务分为存储分配、地址映射和存储保护。

    (1)存储分配
    一个程序在编译和链接后,得到一个称为内存映像的文件。该文件描述了这个程序在运行时所需要的内存大小,其中包括代码和数据区的地址。这些地址称为逻辑地址,并且以首地址0为参考地址。每当一个作业调入内存,进入就绪状态,存储管理模块就要根据可利用的内存空间与作业所需要的内存两者进行计算,给该作业分配相应的内存空间。

    (2)地址映射
    将一个作业装入内存,意味着一个进程将被创建。存储管理模块会把该作业的映像文件首地址(为零)对准内存中进程的首地址。这个进程的首地址或起始地址是内存中的物理地址,称为偏移量。映像文件的逻辑地址加上偏移量,得到内存中的地址值均为物理地址。计算逻辑地址到物理地址的转换工作称为地址映射。映像中所有的逻辑地址都可转换为物理地址。

    (3)存保护
    内存空间总是被若干个进程分享,其中包括操作系统本身要常驻在内存中的那一部分。内存保护的任务是对内存空间中已划分出的区域,知道它们各属于哪些进程,并且知道每个进程有权访问的区域。每当一个进程执行过程中需要访问某个地址时,存储管理模块就要检查一下这个进程是否有权访问这个物理地址。通常,每个进程在内存中的区域是该进程可以访问的合法地址。如果访问的地址落在该进程的区域之外,即产生了非法访问。一旦遇到非法访问,内存保护就要拒绝访问,并进行出错处理。

    二. Unix操作系统的优点

    Unix系统是最早出现的操作系统之一,现在Unix系统的技术已经变得成熟,它具有以下优点:

    1.可靠性高

    Unix操作系统具有较高的可靠性,Unix主机和服务器可以保持24小时不间断运行,使用Unix系统的主机/服务器更加稳定可靠。现在的Unix操作系统采用64位技术,多路I/O提高系统可靠性和性能,支持控制器热插拔、硬盘跨接和镜像等,满足了复杂的应用要求。

    2.良好的用户界面

    Unix系统提供了良好的用户界面,具有使用方便、功能齐全、清晰而灵活、易于扩充和修改等特点。Unix系统的使用有两种形式:一种是操作命令,即Shell语言,是用户可以通过终端与系统发生交互作用的界面;另一种是面向用户程序的界面,它不仅在汇编语言,而且在C语言中向用户提供服务。并且Unix有3种主流的Shell,同时为用户提供数千条系统命令,大大方便了系统操作、系统管理。系统的可操作性强,可以用非常简易的输出设备代替显示器,来操作计算机和完成复杂的系统开发和管理工作。

    3.良好的文件系统

    Unix系统的文件系统是树形结构。它由基本文件系统和若干个可装卸的子文件系统组成,既能扩大文件存储空间,又有利于安全和保密。Unix系统把文件、文件目录和设备统一处理。它把文件作为不分任何记录的字符流进行顺序或随机存取,并使得文件、文件目录和设备具有相同的语法语义和相同的保护机制,这样既简化了系统设计,又便于用户使用。其中跨平台的文件系统和网络文件系统都为用户提供了很大便利。

    4.可移植性强

    Unix系统包含有非常丰富的语言处理程序、实用程序和开发软件用的工具性软件,向用户提供了相当完备的软件开发环境。Unix系统的绝大部分程序是用C语言编程的,只有约占5%的程序用汇编语言编程。C语言是一种高级程序设计语言,它使得Unix系统易于理解、修改和扩充,并且具有非常好的移植性。

    5.强大的网络功能

    这是Unix系统的一大重要特色。作为Internet网络技术和异构系统互连重要手段的TCP/IP协议就是在Unix上开发和发展起来的,而且他也成为Unix系统的一个不可分割的部分。Unix几乎所有系统都包括对TCP/IP的支持。同时,在Internet网络服务器中,Unix服务器占80%以上,占绝对优势。还支持所有常用的网络通讯协议,能方便的与其他主机系统、各种广域网和局域网相连接。

    6.开放性

    这也是Unix系统的一大重要特色。一些Unix是部分开源的,也有一些分支是开源的。例如macOS就是基于Unix的bsd分支。任何人都可以一起发现漏洞,改进、增加新功能,提高安全性能,提高了知识的利用率,也促进了生态的发展。

    三. Unix操作系统的缺点

    虽然Unix系统具有很多优点,但也存在一些缺点。

    1.不适合普通用户

    Unix操作系统的使用需要使用者掌握晦涩难懂的计算机语言,而且操作复杂,没有智能修正,命令行易产生歧义,造成使用上的一些问题。因此,Unix系统具有一定的入门门槛,不适合普通用户使用。

    2.文本流作为接口不够方便可靠

    Unix系统从标准输入得到文本流,处理,向标准输出打印文本流。程序之间用管道进行通信,让文本流可以在程序间传递。在程序向标准输出打印时,数据被转换成文本,这是一个编码过程,而程序之间用管道进行通信,程序从文本中提取信息是一个解码过程。由于鼓励使用文本流,很多程序员很随意的设计他们的编码方式而不经过严密思考。这就造成了 Unix 的几乎每个程序都有各自不同的输出格式,使得解码成为非常头痛的问题,经常出现歧义和混淆。

    3.传统Unix内核可扩展性差

    Unix用一种极简的方法构建工具,大型和复杂的工具都可以通过小型简单的工具组合创建出来,而同样的方法没有在内核上继续应用。传统Unix内核只有少量的基础功能用于代码重用,可扩展性差。随着Unix的发展,开发者直接将代码添加到内核中,会使内核变得臃肿复杂、反模块化。

    更多相关内容
  • UNIX操作系统知识.doc

    2022-06-09 15:17:20
    UNIX操作系统知识.doc
  • unix操作系统基础知识.doc
  • Unix操作系统的小知识.txt
  • unix操作系统的小知识(Little knowledge of UNIX operating system).doc
  • ST-006 Linux和UNIX操作系统基础知识V2.0.ppt
  • [重点]UNIX操作系统概述及基本知识.doc
  • UNIX&Linux操作系统编程-操作系统基本知识.ppt
  • unix系统中UUCP的简单介绍。
  • UNIXLINUX操作系统重点知识复习.pdf
  • unix,linux操作系统概述及基本知识.txt
  • [整理]unix,linux操作系统概述及基本知识.doc
  • UNIX操作系统教程

    2011-05-06 12:10:25
    UNIX操作系统教程(第3版)》内容简介:本教材第3版修订中删减了第2版中一些过时的UNIX技术和描述,增加了针对Linux系统设计技术和使用技术的阐述,增加了对UNIX环境编程实用技术的描述。其中第1章是有关UNIX技术的...
  • 第1章绪论.1 1.1操作系统概述1 1.1.1建立操作系统的目标1 1.1.2操作系统是用户与计算机的接口1 1.1.3操作系统是资源管理器2 1.2UNIX系统的主要特性3 1.3UNIX系统的发展史4 1.4开源软件与UNIX的推广发展6 1.4.1开源...
  • 系统知识汇编Compilation of system knowledge 系统知识汇编 Compilation of system knowledge 20XX 20XX 系统知识汇编整理 word可编辑 UNIX操作系统 目 录 基础篇 TOC \o "1-3" 第一章 UNIX操作系统概述 1 1.1 UNIX...
  • 电子科技大学<UNIX&Linux操作系统编程>课程课件1,详细讲解Linux操作系统命令等基础知识
  • 初识UNIX操作系统

    千次阅读 2019-06-09 21:07:39
    初识UNIX操作系统 前言: ​ 与大家熟悉的Windows用户界面和使用习惯不同,Unix是常使用命令运行、极具灵活性的操作系统,目前的产品主要有IBM-AIX,SUN-Solaris、HP-UNIX等。初期接触Unix操作系统,下列的问题几乎...

    初识UNIX操作系统

    前言:

    ​ 与大家熟悉的Windows用户界面和使用习惯不同,Unix是常使用命令运行、极具灵活性的操作系统,目前的产品主要有IBM-AIX,SUN-Solaris、HP-UNIX等。初期接触Unix操作系统,下列的问题几乎是常遇的:由图形界面操作转到以命令行方式操作的不习惯性;在短期内掌握全部命令的困难性;针对同一操作有几个命令的难选择性;不同shell命令格式的易混淆性,等等。根据上述的实际情况,本文遵循“避繁就简、避滥就精,不求详尽、只求适用”的原则,以初学者上机的必经过程为思路,力求用层次分明的浚理和详略得当的阐释,解读该操作系统使用的基本须知内容,以期达到便捷入门和较快精进的目的。

    概述:

    ​ Unix操作系统是一种强大的多任务、多用户操作系统。按照操作系统的分类,属于分时操作系统。早在上世纪六十年代未,AT&T Bell实验室的Ken Thompson、Dennis Ritchie及其他研究人员为了满足研究环境的需要,结合多路存取计算机系统(Multiplexed Information and Computing System)研究项目的诸多特点,开发出了Unix操作系统。目前商标权有国际开发标准组织(The Open  Group)所拥有。至今,Unix本身固有的可移植性使它能够用于任何类型的计算机:微机、工作站、小型机、多处理机和大型机等。

    UNIX——历史起源:

    ​ 美国电话及电报公司、通用电器公司及麻省理工学院计划开发一个多用途、分时及多用户的操作系统,即MULTICS操作系统。1969年2月,贝尔实验室推出这个项目。  贝尔实验室有个叫Ken Thompson的人,他为这个系统写了一个叫“SpaceTravel”的游戏,为了让这个游戏能玩,后来他找来Dennis Ritchie为这个游戏开发一个极其简单的操作系统,即Unix。

    ​ 1971年,Ken Thompson写了申请报告,申请到了PDP-11/24的机器,第一版Unix出现了。Unix占用了12KB的内存。1973年,Ken Thompson与Dennis Ritchie用高级语言完成了第三版。此时他们将B语言改良成为现在使用的C语言。

    ​ 1974年7月他们在 the Communications of the ACM发表的“The UNIX Time Sharing System”,是UNIX与外界的首次接触。

    ​ 1978年,伯克利大学在第六版的基础上,推出了新功能和改进的Unix,开创了Unix的一个分支:BSD系列,同时期,AT&T成立USG将Unix产品商业化,和BSD的Unix相互抗衡,因此Unix就分为System IV和4.x BSD这两大主流

    ​ 1979年发布的Unix 第七版被称为是“最后一个真正的Unix”,该版本内核只有40KB

    UNIX——特点:

    ​ 多任务、多用户并行处理能力,安全保护机制,功能强大的shell,强大的网络支持,Internet上各种服务器的首选操作系统,稳定性好,系统源代码用C语言写成,移植性强,出售方源代码,软件厂家自己增删。

    UNIX——优势:

    1. UNIX是最早出现的操作系统之一,发展趋于成熟  C语言因UNIX而出现,具有强大的可移植性,适合多种硬件平台;
    2. UNIX具有良好的用户界面;
    3. 提供了完美而强大的文本处理工具,如vi,pico,nano,emacs,为用户提供良好的开发环境;
    4. 好的文件系统,如ufs,AFS,EAFS;
    5. 强大的网络功能,集群和分布式计算;
    6. 完善的系统审计;
    7. 增强的系统安全机制;
    8. 系统备份功能完善;
    9. 系统结构清晰,有利于操作系统的教学和实践;
    10. 系统的专业性和可定制性强;
    11. UNIX系统具有强稳定性和健壮的系统核心;
    12. 系统的规范性;
    13. 功能强大的帮助系统。

    UNIX——系统组成 :

    ​ 内核(Kernel)、Shell(外壳)和文件系统。

    ​ 内核是Unix操作系统的核心,直接控制着计算机的各种资源,能有效地管理硬件设备、内存空间和进程等,使得用户程序不受错综复杂的硬件事件细节的影响。
      Shell是Unix内核与用户之间的接口,是Unix的命令解释器。目前常见的Shell有Bourne Shell(sh)、Korn Shell(ksh)、C Shell(csh)、Bourne-again Shell(bash),本文主要以csh和bash为例。
      文件系统是指对存储在存储设备(如硬盘)中的文件所进行的组织管理,通常是按照目录层次的方式进行组织。每个目录可以包括多个子目录以及文件,系统以 / 为根目录。常见的目录有 /etc (常用于存放系统配置及管理文件)、/dev (常用于存放外围设备文件)、/usr (常用于存放与用户相关的文件)等。

    UNIX——三大派生版本:

    System  V:

    ​ 主要有A/UX,AIX,HP-UX,IRIX,LynxOS,SCOOpenServer,Tru64,Xenix

    ​ A/UX是苹果电脑公司所开发的UNIX操作系统,A/UX于1988年首次发表,最终的版本为3.1.1版

    ​ AIX是IBM开发的一套UNIX操作系统

    ​ Solaris是SUN公司研制的类Unix操作系统。目前最新版为Solaris 10

    ​ HP-UXHP-UX是惠普科技公司以SystemV为基础所研发成的类UNIX操作系统

    ​ IRIX是由硅谷图形公司以System V与BSD延伸程序为基础所发展成的UNIX操作系统

    Xenix是由微软公司在1979年从美国电话  电报公司获得授权,为Intel处理器所开发,后来,SCO公司收购了其独家使用权

    Berkley:

    ​ 主要有386BSD,DragonFly BSD,FreeBSD,NetBSD,NEXTSTEP,Mac OS X,OpenBSD,Solaris

    ​ FreeBSD是由经过BSD、386BSD和4.4BSD发展而来的Unix的一个重要分支

    NetBSD 是免费的、安全的具有高度可定制性的类Unix操作系统

    ​ OpenBSD是从NetBSD衍生出来的类Unix操作系统

    ​ DragonFly是以与 FreeBSD 采用的实现方式不同的方式来实现并发、SMP、集群以及其他操作系统特性的 BSD 分支

    ​ Mac OS X是苹果公司(原苹果电脑公司)为麦金塔电脑开发的专属操作系统Mac OS的最新版本

    (3)主要有GNU / Linux,Minix,QNXUnix

    ​ Linux是一类Unix计算机操作系统的统称,后面再主要介绍。

    ​ Minix是一个迷你版本的类Unix操作系统,其它类似的系统还有Idris,Coherent,和Uniflex等,它是荷兰阿姆斯特丹的Vrije大学计算机科学系的Andrew S. Tanenbaum教授所发展的一个类Unix操作系统。

    初次使用Unix,最常见的操作不外乎创建新目录、创建新文件、进入指定的目录、显示目录内容、显示当前所处的路径、查看文件内容、拷贝文件、移动文件、删除文件、删除目录、查看系统帮助等,那我们就模拟这些必经过程来练习基本操作吧。

    基本操作:

    (1)在当前目录下创建两个目录dir1,dir2:
          mkdir dir1 dir2   //输入命令后记得敲一下回车键:)
      (2)进入目录dir1中创建文件file1,file2:
          cd dir1 //进入目录dir1
          touch file1 file2   //创建文件file1,file2
      (3)再进入目录dir2中创建文件file3,file4:
          cd …         //返回上一级目录
          cd dir2       //进入目录dir2
          touch file3 file4    //创建文件file3,file4
      (4)查看目录dir2中所含的文件及子目录情况:
          ls //这时会看到屏幕显示出目录dir2中有2个文件file3和file4
      (5)往文件file3中写入信息,并将其拷贝到目录dir1中:
          cal 5 2005 > file3   //该句命令后文会有详细讲解,此处照样输入即可
          **cp file3 …/dir1 **
      (6)回到目录dir1中,查看所含的文件及子目录情况:
          **cd … **
          **cd dir1 **
          ls          //这时会看到屏幕显示出目录dir1中有3个文件file1、file2、file3
      (7)再查看一下文件file3中内容,并将该文件删除:
          cat file3       //这时会看到屏幕显示2005年5月份的日历
          rm file3       //删除文件file3
      (8)将文件file1移动到目录dir2中,同时查看目录dir1、dir2所含文件及子目录情况:
          **mv file1 …/dir2 **
          ls          //这时会看到屏幕显示出目录dir1中有1个文件file2
          ls …/dir2      //这时会看到屏幕显示出目录dir2中有3个文件file1、file3、file4
      (9)显示当前所处的路径,并删除目录dir1:
          pwd
          cd …
          rm –r dir1
      (10)显示ls命令的系统帮助:
          man ls
          man ls | more     //对于| more的使用后文将会进行详细解释,这里只需知道使用空格键是往前翻看帮助文档即可。

    下面就让我们从头开始作登陆系统的操作吧

    登陆系统的操作:

    如果在本机上已安装了Unix操作系统,比如安装了SUN-Solaris,则只需启动系统

    我们这里主要是使用命令行方式来使用Solaris,因此点按住“Options”按钮,这时会出现选项菜单;

    将鼠标移动到“Command Line Login”项上后弹开。然后在出现画面时,敲击回车键。

    这样,我们就能使用命令行来操纵操作系统了。这时会要求用户输入用户名及口令,默认情况下可使用用户名“root”、口令为空来进入系统。

    如果用户是在本机上通过网络对远程装有Unix操作系统的主机进行操作,则可以使用telnet进行访问。假设该装有Unix操作系统主机的IP地址为198.4.30.25,用户使用的操作系统是WindowsXP,则可以进入“DOS命令提示符”状态,输入以下命令:

    telnet 198.4.30.25 
    
    login: //输入登录用户名 
    
    password: //输入登录口令 
    

    倘若用户使用的是Red Hat Linux系统,则可以在桌面上右击鼠标,在弹出的菜单中选择“新建终端”项,再在随后弹出的窗口中进行相同的操作。通常用户若是第一次登入某远程主机,还需要先进行注册操作,具体情况视该远程主机操作的说明而定。

    要注意,在每次使用完毕要退出Unix系统之前,一定要进行注销,以防止他人通过你的账号进入系统,保证系统的完整性。输入命令“exit”即可完成注销过程。

    演进所涉知识预习:

    经过前面的上机操作,大家对于如何使用Unix系统应该有了一定的感性认识。为了下一步更深入的了解掌握Unix系统及使用的一些技巧,这里再对相关的应知内容做一补叙与准备。

    关于Shell

    上文中曾简要介绍过的Shell,不同Shell的命令格式会略有差异,现今最常使用的Shell是C Shell(csh)和Bourne-again Shell(bash)。Shell之间可以嵌套,即在C Shell环境中,输入命令:

     bash 
    

    就能进入Bourne-again Shell的使用环境。同理在Bourne-again Shell环境中,输入命令:

     csh 
    

    就能进入C Shell的使用环境。大家可依据自己的使用习惯来选择相应的Shell。

    Unix命令格式

    1、Unix命令提示符

    在命令行操作环境下,Unix系统会显示一提示符,提示用户可以在此提示符后输入一行命令。不同的Shell有不同的缺省提示符,如B Shell、Bourne-again Shell的缺省提示符为"$",C Shell的缺省提示符为"%"。但当以root用户登录时,系统提示符统一缺省为"#"。

    2、基本命令格式

    Unix命令的基本格式如下:

    Command [option(s)] [argument(s)] 
    

    Unix命令由一个命令(command)和零到多个参数构成。Unix的命令区分大小写,且命令和参数之间、参数与参数之间都应用空格隔开。

    Unix文件系统

    1、Unix文件系统分类

    Unix操作系统可由多个可以动态安装及拆卸的文件系统组成。Unix文件系统主要分为两大类:根文件系统和附加文件系统。根文件系统是Unix系统至少应含有的一个文件系统,它包含了构成操作系统的有关程序和目录,由“/”符号来表示。附加文件系统是除根文件系统以外的其它文件系统,它必须挂(mount)到根文件系统的某个目录下才能使用。本文中若无特别声明,则都是针对根文件系统来进行说明的。

    2、Unix文件类型

    在Unix中文件共分为四种:

    (1)普通文件(-):又分为文本文件、二进制文件、数据文件;

    (2)目录文件(d);

    (3)设备文件(l);

    (4)链接文件(b/c):又可分为块设备文件、字符设备文件。

    普通文件中的文本文件主要包括ASCII文本文件、英文文本文件和一些可执行的脚本文件等;二进制文件主要是32位的可执行文件等;数据文件主要是系统中的应用程序运行时产生的文件。

    目录文件是用来存放文件目录的。

    设备文件代表着某种设备,一般放在/dev目录下。它分为块设备文件和字符设备文件,块设备文件以区块为输入输出单元,如磁盘;字符设备文件是以字符作为输入输出单元,如串口。

    链接文件类似于Windows系统中的快捷方式,它指向链接文件所链接着的文件。

    值得注意的是,与Windows系统不同,Unix系统中目录本身就是一个文件,另外文件类型与文件的后缀名无关。

    不同类型的文件有着不同的文件类型标识(可使用“ls -l”命令来进行查看),它们使用下列符号来表示相应的文件类型:

    -  普通文件

    d  目录文件

    b  块设备文件

    c  字符设备文件

    l   链接文件

    3、Unix目录结构

    Unix系统采用树型的目录结构来组织文件,每一个目录可能包含了文件和其他的目录。该结构以根目录“/”为起点向下展开,每个目录可以有许多子目录,但每个目录都只能有一个父目录。

    4、Unix文件名称

    Unix文件名称的最大长度为256字符,其对字母大小写敏感,比如file1和File1是表示两个不同的文件。要说明的是,如果用“.”作为文件名的第一个字母,则表示此文件为隐含文件,如“.cshrc””文件(对于此文件,后文将有介绍)。

    值得说明的是,当创建了一个目录或文件时所赋予它的名字并非它的全名。一个目录的全名就是它的完整路径名,而一个文件的全名应该是由根目录到该文件所在目录的这条路径上的所有目录名再加上此文件的名称组成,相互之间用“/”分隔。如有一文件resume处于目录/export/home/ray中,则该文件的全名应为:/export/home/ray/ resume。

    此外,对于路径名还会有绝对路径和相对路径这样两个概念。绝对路径是指一个目录或文件的全路径名,即以根目录为起始的路径。相对路径则以用户当前工作目录为起始,它是一个相对于用户的工作目录的文件路径。由于从根目录到用户的主目录的绝对路径可能会比较复杂,在csh和bash中可以使用一种特殊字符“~”来代表用户的主目录的绝对路径名。另外,“.”可用来表示当前工作目录,“…”可用来表示当前工作目录的父目录。

    说明:

    工作目录是指用户当前正在其中进行操作的目录。
    用户主目录是Unix系统管理员为每位用户分配的使用空间,该目录名与用户登陆账户同名。用户如以任何除“root”外的账户登入系统,则用户自动登入的就是该用户主目录。

    在了解掌握上述应知应会内容之后,下一步就可深入到Unix系统命令集合及其使用技巧,这里就不再多多掇溯了。

    展开全文
  • unix操作系统培训教材 ,有关UNIX操作系统的相关知识
  • Unix与Linux知识产权之争.pdf
  • Linux操作系统原理知识点思维导图,自己耗费2天时间一点一点做出来的,压缩包内有各种格式(km mm svg xmind png )
  • Unix操作系统服务器离线硬件检测软件的设计与实现.pdf
  • UNIX基础知识

    千次阅读 2022-03-13 23:50:47
    文章目录UNIX基础知识1.1 引言1.2...典型的服务包括:执行新程序、打开文件、读取文件、分配存储区以及获取当前的时间等,这里集中阐述不同版本的UNIX操作系统所提供的服务。 想要按严格的先后顺序来介绍UNIX,而不超前

    UNIX基础知识

    1.1 引言

    所有的操作系统都为它们所运行的程序提供服务。典型的服务包括:执行新程序、打开文件、读取文件、分配存储区以及获取当前的时间等,这里集中阐述不同版本的UNIX操作系统所提供的服务。
    想要按严格的先后顺序来介绍UNIX,而不超前引用尚未介绍的术语,这几乎是不可能的。本章从程序员的角度快速浏览UNIX,对这里介绍的一些术语和概念进行简单的说明并给出实例。在后面的各章中,将对这些概念做更详细的说明。对于初涉UNIX环境的程序员,这里还简要介绍了UNIX提供的各种服务。

    1.2 UNIX体系结构

    从严格意义上来说,可将操作系统定义为一种软件,它控制着计算机硬件资源,提供程序运行环境。我们通常将这种软件称之为内核,因为它相对较小,而且位于环境的核心。
    内核的接口被称为系统调用。共用函数库构建在系统调用接口之上,应用程序即可使用共用函数库,也可以使用系统调用。shell是一个特殊的应用程序,为运行其他应用程序提供了一个接口。
    从广义上来说,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并使计算机具有自己的特性。这里所说的其他软件包括系统应用程序、应用程序、shell以及共用函数库等。
    例如,Linux是GNU操作系统使用的内核。一些人将这种操作系统称为GNU/Linux操作系统,但是,更常见的简单将其称之为Linux。虽然这种表达方式在严格意义上讲并不正确,但鉴于操作系统这个词的双重含义,这种叫法也是可以理解的。

    1.3 登录

    1. 登录名
      用户在登录UNIX系统时,先键入登录名,然后键入口令。操作系统在其口令文件(通常是/etc/passwd文件)中查看登录名。口令文件的登录项由7个以上以冒号分隔开来的字段组成,依次是:登录名、加密口令、数字用户ID(205)、数字组ID(105)、注释字段、起始目录(/home/sar)以及shell程序(/bin/ksh)。
    sar:x:205:105:Stephen Rago:/home/sar:/bin/ksh
    

    目前,所有的系统已将加密口令转移到另一个文件中。后续将会说明这种文件以及访问它们的函数。
    2. shell
    用户登录以后,系统通常先显示一些系统信息,然后用户就可以向shell程序键入命令(当用户登录时,某些系统启动一个视窗管理程序,但最终总会有一个shell程序运行在一个视窗中)。shell是一个命令行解释器,它读取用户输入,然后执行命令。shell的用户输入通常来自于终端,有时来自于文件。系统从口令文件中相应用户的登录项的最后一个字段中了解到应该为该登录用户执行哪一个shell。
    自从V7以来,由Steve Bourne在贝尔实验室开发的Bourne shell得到了广发的应用,几乎每一个现在的UNIX系统都提供Bourne shell,其控制留结构类似于Algol68。
    C shell是由Bill Joy在伯克利开发的,所有BSD版本都提供这种shell。另外,AT&T的System V/386 R3.2和System V R4也提供C shell。C shell是在第6版shell而非Bourne shell的基础上构造的,其控制流类似与其C语言,它支持Bourne shell没有的一些特色功能,例如作业控制、历史机制以及命令行编辑等。
    Bourne-again shell是GNU shell,所有linux系统都提供这种shell。它的设计遵循POSIX标准,同时也保留了Bourne shell的兼容性。它支持C shell和Korn shell两者的特色和功能。
    TENEX C shell是C shell得到加强版本。它从TENEX操作系统借鉴和很多特色,例如命令完备。TENEX C shell在C shell基础上增加了很多特性,常被采用来替换C shell。
    POSIX 1003.2标准对shell进行了标准化。这项规范基于Korn shell和Bourne shell的特性。
    这里将使用很多交互式shell实例来执行所开发的程序,这些实例使用了Bourne shell、Korn shell和Bourne-again shell同用的功能。

    1.4 文件和目录

    1. 文件系统
      UNIX文件系统是目录和文件的一种层次结构,所有的东西的起点是称之为根的目录,这个目录的名称是一个字符“/”。
      目录是一个包含目录项的文件。在逻辑上,可以认为每个目录项都包含一个文件名,同时还包含说明该文件的属性的信息。文件属性是指文件类型。文件属性是指文件类型(是普通文件还是目录等)、文件大小、文件所有者、文件权限(其他用户是否可以访问这个文件的权限)以及文件最后的修改时间等。stat和fstat函数返回包含所有文件属性的一个信息结构。

    目录项的逻辑视图与实际存放在磁盘上的方式是不同的。UNIX文件系统的到多数实现并不在目录中存放属性,这时因为当一个文件具有多个硬链接时,很难保持多个属性副本之间的同步。

    1. 文件名

    目录中的各个名称称为文件名。只有斜线和空字符这个两个字符不能出现在文件名中。斜线用来分隔构成路径名的各文件名,空字符则用来终结一个路径名。尽管如此,好的习惯还是只使用常用印刷字符的一个子集作为文件名字符。事实上,为了可移植性,POSIX.1推荐将文件名限制在以下字符集之内:字母、数字、句点、短横线和下划线。
    创建新目录是会自动创建两个文件名:. 和 … 。点指向当前目录,点点指向父目录。在最高层次的根目录中,点点与点相同。
    3. 路径名
    由斜线分隔的一个或多个文件名组成的序列构成路径名,以斜线开头的路径名称称为绝对路径名,否则称之为相对路径。相对路径名指向相对于当前目录的文件。文件系统根的名字(/)是一个特殊的绝对路径名,它不包含文件名名。
    不难列出一个目录中所有的文件名,下面就是ls命令的简要实现:

    #include "apue.h"
    #include <dirent.h>
    int main (int argc, char *argv[])
    {
       DIR *dp;
       struct dirent *dirp;
       if (argc != 2) {
       	err_quit("usage: is directory_name");
       }
       if ((dp = opendir(argv[1])) == NULL)
       	err_sys("can't open %s", argv[i]);
       while ((dirp = readdir(dp) != NULL)
       	printf("%s\n", dirp->d_name);
       closedir(dp);
       exit(0);
    }
    

    现在,大多数手册都以电子文档的形式提供。如果用的是联机手册,则可以使用以下的命令查看ls命令手令册:

    man  1 ls
    man -s1 ls
    
    1. 工作目录
      每个进程都有一个工作目录,有时称之为当前工作目录。相对路径名doc/memo/joe指的是当前工作目录中的doc目录下的memo目录下的文件或者目录joe。从该路径名看,doc和memo都应该是目录,但是却不能分辨joe是文件还是目录。路径名/usr/lib/init是一个绝对路径名,它指的是根目录usr目录中的lib目录中的文件或目录init。
    2. 起始目录
      登录时,工作目录设置为起始目录,该起始目录从口令文件中相应的登录项中取得。

    1.5 输入和输出

    1. 文件描述符
      文件描述符通常是一个非负整数,内核用以标识一个特定进程正在访问的文件。当内核打开一个现有文件或者创建一个新文件时,它都返回一个文件描述符。在读、写文件时,可以使用这个文件描述符。
    2. 标准输入、标准输出和标准错误
      按惯例,每当运行一个新程序时,所有的shell都为其打开3个文件描述符,即标准输入,标准输出,标准错误。如果不做特殊处理,例如就像命令ls,则这三个描述符都链接向终端。大多数shell都提供一种方法,使其任何一个或所有的这3个描述符都能重新定义向某个文件,例如:
    ls > file.list
    

    执行ls命令,其标准输出重新定向到名为file.list的文件。
    3. 不带缓冲的I/O
    函数open、read、write、lseek以及close提供了不带缓冲的I/O。这些函数都使用文件描述符。
    如果愿意从标准输入读,并向标准输出写,则下面的程序可以用于复制任一UNIX普通文件。

    #include "apue.h"
    #define BUFFSIZE 4096
    
    int main(void)
    {
    	int n;
    	char buf[BUFFSIZE];
    	
    	while ((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0) {
    		if (write(STUDOUT_FILENO, buf, n) != 0) {
    			err_sys("write error");
    		}
    	}
    	
    	if (n < 0)
    		err_sys("read error");
    
    	exit(0);
    }
    

    头文件中包含一两个常量STDIN_FILENO和STDOUT_FILENO是POSIX标准的一部分。头文件<unistd.h>包含了很多UNIX系统服务的函数原型,例如上面的read和write。
    两个常量STDIN_FILENO和STDOUT_FILENO定义在<unistd.h>头文件中,它们指定了标准输入和标准输出的文件描述符。在POSIX标准中,它们的值分别为0和1,但是考虑到可读性,我们将使用这些描述符来表示这些常量。
    后面将会详细的讨论BUFFSIZE常量,说明它的各种不同的值将如何影响程序的效率。但是不管该常量的值如何,此程序总能复制在任一UNIX普通文件。
    read函数返回读取的字节数,此值用作要写的字节数。当到达输入文件的尾端时,read返回0,程序停止执行。如果返回一个度错误,read返回-1。出错时,大多数系统函数返回-1。
    4. 标准I/O
    标准I/O函数为那些不带缓冲的I/O函数提供了一个带缓冲的接口。使用标准I/O函数无需担心如何选取最佳的缓冲区大小,比如上面程序中的BUFFSIZE的大小。使用标准的I/O函数还简化了对输入行的处理。例如,fgets函数读取一个完整的行,而read函数读取指定字节数。我们最熟悉的标准I/O函数时printf。在调用printf的程序中,总是包含<stdio.h>,该头文件中包括所有标准I/O函数的原型。

    1.6 程序和进程

    1. 程序

    程序是一个存储在磁盘上某个目录中的可执行文件。内核使用exec函数(7个exec函数之一),将程序读入内存,并执行程序。

    2. 进程和进程ID

    程序的执行实例被称为进程。某些操作系统统用任务表示正在被执行的程序。
    UNIX系统确保每一个进程都有一个唯一的数字标识符,称为进程ID。进程ID总是一个非负数。
    下面程序用于打印进程ID:

    #include "apue.h"
    
    int main()
    {
    	printf("hello world from process ID %ld\n", (long)getpid());
    	exit(0);
    }
    

    如果将该程序编译成a.out文件,然后执行它,则有:

    $ ./a.out
    hello world from process ID 851
    $ ./a.out
    hello world from process ID 854
    

    ​ 此程序运行时,它调用函数getpid得到其进程ID。我们将会在后面看到,getpid返回一个pid_t类型的数据类型。我们不知道它的大小,仅知道的是标准汇保证它能保存在一个长整型中。因为我们必须在printf函数中指定需要打印的每一个变量的大小,所以我们必须把它的值强转为它可能用到的最大的数据类型。虽然大多数进程ID可以用整型表示,但用长整型可以提高可移植性。

    3. 进程控制

    有3个用于进程控制的主要函数:fork、exec和waitpid。

    实例

    UNIX系统的进程控制功能可以用一个简单的程序说明,如下。该程序从标准输入读取命令,然后执行这些命令。它的作用类似于shell程序的基本实施部分。

    #include "apue.h"
    #include <sys/wait.h>
    
    int main()
    {
        char buf[MAXLINE];
        pid_t pid;
        int status;
        
        printf("%% ");
        
        while (fgets(buf, MAXLINE, stdin) != NULL) {
            if (buf[strlen(buf) - 1] == '\n')
                buf[strlen(buf) - 1] = 0;
            if ((pid = fork()) < 0) {
                err_sys("fork error");
            } else if (pid == 0) {
                execlp(buf, buf, (char *)0);
                err_ret("couldn't execute: %s", buf);
                exit(127);
            }
            
            if ((pid = waitpid(pid, &status, 0)) < 0)
                err_sys("waitpid error");
            printf("%% ");
        }
        exit(0);
    }
    

    在上面这个差不多30行的程序中,有很多功能需要考虑:

    • 用标准的I/O函数fgets从标准输入一次读取一行。当键入文件结束符作为行的第一个字符时,fgets返回一个null指针,于是循环终止,进程也就终止。后续会继续说明所有的特殊的终端字符,以及如何改变它们。
    • 因为fgets返回的每一行都以换行符终止,后随一个null字节,因此用标准的C函数strlen计算该字符串的长度,然后用一个null字符替换掉换行符。这样做是因为execlp函数要求的参数是以null结束的而不是以换行符结束的。
    • 调用fork创建一个新进程。新进程是调用进程的一个副本,我们称调用进程为父进程,新创建的进程为子进程。fork对于父进程返回新的子进程的进程ID,对子进程返回0。因为fork创建一个新进程,所以说它被调用一次,但返回两次。
    • 在子进程中,调用execlp以执行从标准输入读入的命令。这就用新的程序文件替换了子进程中原先执行的程序文件。fork和随后的exec两者的组合就是某些操作系统所称的产生一个新进程。在UNIX系统中,这两部分分离成两个独立的函数。
    • 子进程调用execlp执行新程序文件,而父进程希望等待子进程终止,这是通过调用waitpid实现的,其参数指定要等待结束的进程。waitpid函数返回子进程等待终止状态,即上面的status变量。我们在这个简单的程序中,没使用者值。如果需要,可以用此值准确的判断子进程是如何终止的。
    • 该程序的最主要限制是不能向所执行的命令传递参数。例如不能指定要列出目录项的目录名,只能对工作目录执行ls命令。为了传递参数,先要分析输入行,然后用某种约定把参数分开,再将分割后的各个参数传递给execlp函数。尽管如此,此程序仍可用来说明UNIX系统的进程控制功能。

    4. 线程和线程ID

    ​ 通常,一个进程只有一个控制线程 —— 某一时刻执行的一组机器指令。对于某些问题,如果有多个控制线程分别作用与它的不同部分,那么解决起来就容易的多。另外,多个控制线程也可以重复利用多处理器系统的并向能力。

    ​ 一个进程内的所有线程共享同一地址空间、文件描述符、栈以及线程相关的属性。因为它们能访问同一存储区,所以各线程在访问共享数据时需要采取同步措施避免不一致性。

    ​ 与进程相同,线程也有ID标识。但是线程ID只在它所属的进程内起作用。一个进程中的线程ID在另一个进程中毫无意义。当一个进程中对某个特定的线程进行处理时,我们可以使用该线程的ID引用它。

    ​ 控制线程的函数与控制进程的函数类似,但另有一套。线程模型是在进程模式简历里很久之后才被引入到UNIX系统中的,然后这两种模型之间存在复杂的交互。

    1.7 出错处理

    ​ 当UNIX系统函数出错时,通常会返回一个负值,而且整型变量errno通常会被设置为其具有特定的信息的值。例如,open函数,如果成功执行就会返回一个非负文件描述符,如果出错则返回-1。在open出错时,有大约15种不同的errno值(文件不存在、权限问题等)。而有些函数对于则使用另一种约定而不是返回负值。例如,大多数函数返回指向对象指针的函数,在出错时返回一个NULL指针。

    ​ 文件<errno.h>中定义了errno以及可以赋予它的各种常量。这些常量都以字符E开头。另外,UNIX系统手册第2部分的第1页,intro(2)列出了所有这些出错常量。例如,若errno等于EACCES,则表示产生了权限问题。

    ​ POSIX和ISO C将errno定义为一个符号,它拓展成一个可修改的正弦左值。它可以是一个包含出错编号的整数,也可以是一个返回出错编号指针的函数。以前使用的定义是:

    extern int errno;
    

    ​ 但是在支持线程的环境中,多个线程共享进程地址空间,每个线程都有属于它们自己的局部errno,以避免一个线程干扰另一个线程。例如,Linux支持多线程存储errno,将其定义为:

    extern int *_errno_location(void);
    #define errno (*_errno_location());
    

    ​ 对于errno应该注意的两条规则。第一条规则是:如果没有出错,其值不会例程清楚。因此,仅当函数的返回值指明出错时,才校验其值。第二条规则是:任何函数都不会将errno值设置为0,而且在<errno.h>中定义的所有常量都不为0。

    ​ C语言标准中定义了两个函数,它们用于打印出错信息:

    #include <string.h>
    
    char *strerrno(int errnum);
    

    ​ strerror函数将errnum映射为一个出错消息字符,并且返回此字符串的指针。

    ​ perror函数基于errno的当前值,在标准错误上产生一条出错信息,然后返回。

    #include <stdio.h>
    
    void perror(const char *msg);
    

    它首先输出由msg指向的字符串,然后是一个冒号,一个空格,接着是对应于errno值的出错消息,最后一个是一个换行符。

    实例

    #include <stdio.h>
    #include <errno.h>
    
    int main(int argc, char *argv[])
    {
        fprintf(stderr, "EACCES: %s\n", strerror(EACCES));
        errno = ENOENT;
        perror(argv[0]);
        exit(0);
    }
    

    如果将此程序编译成文件a.out,然后执行它,则有

    $ ./a.out
      EACCES:Permission denied
      ./aout: No such file or directory
    

    注意:我们将程序名(argv[0], 其值是./a.out)作为参数传递给perror。这是一个标准的UNIX惯例。使用这种方法,在程序作为管道的部分执行时,例如:

    prog1 < inputfile | prog2 | prog3> outputfile
    

    我们就能分清3个程序中的哪一个产生了一条特定的出错信息。

    出错恢复

    ​ 可将在<errno.h>中定义的各种出错分为两类:致命性和非致命性的。对于致命性的错误,无法执行恢复操作。最多能做的是在用户屏幕上打印出一条出错信息或者将一条出错消息写入日志文件中,然后退出。对于非致命性的错误,有时可以较妥善地进行处理。大多数非致命性出错时暂时的,比如资源短缺,当系统中的活动较少时,这种出错很可能不会发生。

    ​ 与资源相关的非致命出错包括:EAGAIN、ENFILE、ENOBUFS、NLOCK、ENOSPC、EWOULDBLOCK,有时ENOMEM也是致命性出错。当EBUSY指明共享资源正在被使用时,也可以将它作为非致命性出错处理。当EINTR终端一个慢速系统调用时,可以将它做为非致命性出错处理。

    ​ 对于资源相关的非致命性出错的典型恢复操作就是延迟一段时间,然后重试。这种技术可以应用于其他情况。例如,假设出错表面一个网络连接不再起作用,那么应用程序可以采用这种方法,在短时间延迟后尝试重新建该连接。一些应用使用指数补偿算法。在每次迭代中等待更多的时间。

    ​ 最终,由应用的开发者决定在那些情况下应用程序可以从出错中恢复。如果能够采用一种合理的恢复策略,那么可以避免应用程序异常终止,进而就能改善应用程序的健壮性。

    1.8 用户标识

    1. 用户ID

    2. 组ID

    展开全文
  • 本课程介绍了Solaris操作系统的使用 具体介绍了Solaris系统的常见操作和简单的系统维护知识主要包括UNIX的 结构Solaris系统常用操作UNIX常用工具与实用程序网络通信等内容 ...UNIX操作系统基础 NM0000
  • UNIX操作系统基础

    2014-07-01 22:38:23
    放在硬盘里也是放着,不如上传到网上,看看有没有要的。
  • Unix操作系统的入门与基础  与大家熟悉的Windows
    原文地址为: Unix操作系统的入门与基础

                                                                        Unix操作系统的入门与基础

      与大家熟悉的Windows用户界面和使用习惯不同,Unix是常使用命令运行、极具灵活性的操作系统,目前的产品主要有IBM-AIX、SUN-Solaris、HP-UNIX等。初期接触Unix操作系统,下列的问题几乎是常遇的:由图形界面操作转到以命令行方式操作的不习惯性;在短期内掌握全部命令的困难性;针对同一操作有几个命令的难选择性;不同shell命令格式的易混淆性,等等。一些初学者可能会因此而丧失继续学习的信心。根据上述的实际情况,本文遵循“避繁就简、避滥就精,不求详尽、只求适用”的原则,以初学者上机的必经过程为思路,力求用层次分明的浚理和详略得当的阐释,解读该操作系统使用的基本须知内容,以期达到便捷入门和较快精进的目的。

                                        (一)Unix操作系统概述

      Unix操作系统是一种强大的多任务、多用户操作系统。早在上世纪六十年代未,AT&T Bell实验室的Ken Thompson、Dennis Ritchie及其他研究人员为了满足研究环境的需要,结合多路存取计算机系统(Multiplexed Information and Computing System)研究项目的诸多特点,开发出了Unix操作系统。至今,Unix本身固有的可移植性使它能够用于任何类型的计算机:微机、工作站、小型机、多处理机和大型机等。
            Unix操作系统通常被分成三个主要部分:内核(Kernel)、Shell和文件系统。


      内核是Unix操作系统的核心,直接控制着计算机的各种资源,能有效地管理硬件设备、内存空间和进程等,使得用户程序不受错综复杂的硬件事件细节的影响。
      Shell是Unix内核与用户之间的接口,是Unix的命令解释器。目前常见的Shell有Bourne Shell(sh)、Korn Shell(ksh)、C Shell(csh)、Bourne-again Shell(bash),本文主要以csh和bash为例。
      文件系统是指对存储在存储设备(如硬盘)中的文件所进行的组织管理,通常是按照目录层次的方式进行组织。每个目录可以包括多个子目录以及文件,系统以 / 为根目录。常见的目录有 /etc (常用于存放系统配置及管理文件)、/dev (常用于存放外围设备文件)、/usr (常用于存放与用户相关的文件)等。


                                           (二)上机基本操作解说

      简介Unix操作系统是作必要的知识铺垫,为避免一开始就进行枯燥论理和罗列繁复的Unix命令、参数让人感到畏惧与厌烦,接下来就先让我们上机操作吧!
      初次使用Unix,最常见的操作不外乎创建新目录、创建新文件、进入指定的目录、显示目录内容、显示当前所处的路径、查看文件内容、拷贝文件、移动文件、删除文件、删除目录、查看系统帮助等,那我们就模拟这些必经过程来练习基本操作吧。
      (1)首先让我们在当前目录下创建两个目录dir1,dir2:
          mkdir dir1 dir2       //输入命令后记得敲一下回车键:)
      (2)进入目录dir1中创建文件file1,file2:
          cd dir1                //进入目录dir1
          touch file1 file2      //创建文件file1,file2
      (3)再进入目录dir2中创建文件file3,file4:
          cd ..           //返回上一级目录
          cd dir2          //进入目录dir2
          touch file3 file4      //创建文件file3,file4
      (4)查看目录dir2中所含的文件及子目录情况:
          ls            //这时会看到屏幕显示出目录dir2中有2个文件file3和file4
      (5)往文件file3中写入信息,并将其拷贝到目录dir1中:
          cal 5 2005 > file3     //该句命令后文会有详细讲解,此处照样输入即可
          cp file3 ../dir1
      (6)回到目录dir1中,查看所含的文件及子目录情况:
          cd ..
          cd dir1
          ls            //这时会看到屏幕显示出目录dir1中有3个文件file1、file2、file3
      (7)再查看一下文件file3中内容,并将该文件删除:
          cat file3         //这时会看到屏幕显示2005年5月份的日历
          rm file3         //删除文件file3
      (8)将文件file1移动到目录dir2中,同时查看目录dir1、dir2所含文件及子目录情况:
          mv file1 ../dir2
          ls           //这时会看到屏幕显示出目录dir1中有1个文件file2
          ls ../dir2        //这时会看到屏幕显示出目录dir2中有3个文件file1、file3、file4
      (9)显示当前所处的路径,并删除目录dir1:
          pwd
          cd ..
          rm –r dir1
      (10)显示ls命令的系统帮助:
          man ls
      在进行第10步操作后,这时会觉得眼前一闪,除了有点类似“黑客帝国”的感觉之外,对于ls的解释是否啥也没看清楚啊?对了,因为我们还没有使用分屏显示信息,那使用如下的命令将会让你的眼前豁然明朗:
          man ls | more     //对于| more的使用后文将会进行详细解释,这里只需知
                     //道使用空格键是往前翻看帮助文档即可

      看到这里,想必大家对于Unix操作系统的使用会有一定的感性认识了,已基本会使用类似于Windows操作系统中建立文件夹、建立文件、查看文件内容、复制文件、剪切文件、删除文件、删除文件夹等操作了。可且慢,这时大概会有朋友问:“兄弟,偶还没登陆系统呢,怎么进行上面的操作啊?”这个问题提得好,下面就让我们从头开始作登陆系统的操作吧。
      如果在本机上已安装了Unix操作系统,比如安装了SUN-Solaris,则只需启动系统,稍等片刻后会看到如图1的界面。

                                                    (图1)

      我们这里主要是使用命令行方式来使用Solaris,因此点按住“Options”按钮,这时会出现选项菜单,如图2所示。

                                                     (图2)
      将鼠标移动到“Command Line Login”项上后弹开。然后在出现如图3中所示的画面时,敲击回车键。

                                                           (图3)
      这样,我们就能使用命令行来操纵操作系统了。这时会要求用户输入用户名及口令,默认情况下可使用用户名“root”、口令为空来进入系统。
      如果用户是在本机上通过网络对远程装有Unix操作系统的主机进行操作,则可以使用telnet进行访问。假设该装有Unix操作系统主机的IP地址为198.4.30.25,用户使用的操作系统是WindowsXP,则可以进入“DOS命令提示符”状态,输入以下命令:
          telnet 198.4.30.25
          login: //输入登录用户名
          password: //输入登录口令
      倘若用户使用的是Red Hat Linux系统,则可以在桌面上右击鼠标,在弹出的菜单中选择“新建终端”项,再在随后弹出的窗口中进行相同的操作。通常用户若是第一次登入某远程主机,还需要先进行注册操作,具体情况视该远程主机操作的说明而定。
      要注意,在每次使用完毕要退出Unix系统之前,一定要进行注销,以防止他人通过你的账号进入系统,保证系统的完整性。输入命令“exit”即可完成注销过程。

                                      (三)演进所涉知识预习

      经过前面的上机操作,大家对于如何使用Unix系统应该有了一定的感性认识。为了下一步更深入的了解掌握Unix系统及使用的一些技巧,这里再对相关的应知内容做一补叙与准备。

      一、关于Shell
      上文中曾简要介绍过的Shell,不同Shell的命令格式会略有差异,现今最常使用的Shell是C Shell(csh)和Bourne-again Shell(bash)。Shell之间可以嵌套,即在C Shell环境中,输入命令:
          bash
    就能进入Bourne-again Shell的使用环境。同理在Bourne-again Shell环境中,输入命令:
          csh
    就能进入C Shell的使用环境。大家可依据自己的使用习惯来选择相应的Shell。

      二、Unix命令格式
      1、Unix命令提示符
      在命令行操作环境下,Unix系统会显示一提示符,提示用户可以在此提示符后输入一行命令。不同的Shell有不同的缺省提示符,如B Shell、Bourne-again Shell的缺省提示符为"$",C Shell的缺省提示符为"%"。但当以root用户登录时,系统提示符统一缺省为"#"。
      2、基本命令格式
      Unix命令的基本格式如下:
          Command [option(s)] [argument(s)]
    Unix命令由一个命令(command)和零到多个参数构成。Unix的命令区分大小写,且命令和参数之间、参数与参数之间都应用空格隔开。

      三、Unix文件系统
      1、Unix文件系统分类
      Unix操作系统可由多个可以动态安装及拆卸的文件系统组成。Unix文件系统主要分为两大类:根文件系统和附加文件系统。根文件系统是Unix系统至少应含有的一个文件系统,它包含了构成操作系统的有关程序和目录,由“/”符号来表示。附加文件系统是除根文件系统以外的其它文件系统,它必须挂(mount)到根文件系统的某个目录下才能使用。本文中若无特别声明,则都是针对根文件系统来进行说明的。

      2、Unix文件类型
      在Unix中文件共分为四种:
      (1)普通文件(-):又分为文本文件、二进制文件、数据文件;
      (2)目录文件(d);
      (3)设备文件(l);
      (4)链接文件(b/c):又可分为块设备文件、字符设备文件。
      普通文件中的文本文件主要包括ASCII文本文件、英文文本文件和一些可执行的脚本文件等;二进制文件主要是32位的可执行文件等;数据文件主要是系统中的应用程序运行时产生的文件。
      目录文件是用来存放文件目录的。
      设备文件代表着某种设备,一般放在/dev目录下。它分为块设备文件和字符设备文件,块设备文件以区块为输入输出单元,如磁盘;字符设备文件是以字符作为输入输出单元,如串口。
      链接文件类似于Windows系统中的快捷方式,它指向链接文件所链接着的文件。
      值得注意的是,与Windows系统不同,Unix系统中目录本身就是一个文件,另外文件类型与文件的后缀名无关。
      不同类型的文件有着不同的文件类型标识(可使用“ls -l”命令来进行查看),它们使用下列符号来表示相应的文件类型:
        -  普通文件
        d  目录文件
        b  块设备文件
        c  字符设备文件
        l   链接文件

      3、Unix目录结构
      Unix系统采用树型的目录结构来组织文件,每一个目录可能包含了文件和其他的目录。该结构以根目录“/”为起点向下展开,每个目录可以有许多子目录,但每个目录都只能有一个父目录。

      4、Unix文件名称
      Unix文件名称的最大长度为256字符,其对字母大小写敏感,比如file1和File1是表示两个不同的文件。要说明的是,如果用“.”作为文件名的第一个字母,则表示此文件为隐含文件,如“.cshrc””文件(对于此文件,后文将有介绍)。
      值得说明的是,当创建了一个目录或文件时所赋予它的名字并非它的全名。一个目录的全名就是它的完整路径名,而一个文件的全名应该是由根目录到该文件所在目录的这条路径上的所有目录名再加上此文件的名称组成,相互之间用“/”分隔。如有一文件resume处于目录/export/home/ray中,则该文件的全名应为:/export/home/ray/ resume。
      此外,对于路径名还会有绝对路径和相对路径这样两个概念。绝对路径是指一个目录或文件的全路径名,即以根目录为起始的路径。相对路径则以用户当前工作目录为起始,它是一个相对于用户的工作目录的文件路径。由于从根目录到用户的主目录的绝对路径可能会比较复杂,在csh和bash中可以使用一种特殊字符“~”来代表用户的主目录的绝对路径名。另外,“.”可用来表示当前工作目录,“..”可用来表示当前工作目录的父目录。

      说明: 
           
     工作目录是指用户当前正在其中进行操作的目录。
     用户主目录是Unix系统管理员为每位用户分配的使用空间,该目录名与用户登陆账户同名。用户如以任何除“root”外的账户登入系统,则用户自动登入的就是该用户主目录。

      在了解掌握上述应知应会内容之后,下一步就可深入到Unix系统命令集合及其使用技巧


    转载请注明本文地址: Unix操作系统的入门与基础
    展开全文
  • 第一章 UNIX基础知识

    2021-01-09 12:39:23
    操作系统 = 内核 + 一些其他软件(系统实用程序、应用程序、shell 和 公用函数); 1) 实用程序:是针对操作系统的不足而 编制的程序,它帮助用户进一步管理好自己的计 算机; 2) shell:计算机用来解释你输入的...
  • UNIX操作系统学习教程

    热门讨论 2010-07-13 15:46:19
    第1章 UNIX操作系统概述 7 1.1 UNIX操作系统简介 7 1.2 UNIX系统组成 7 1.3 UNIX启动过程 8 1.4 UNIX用户登录过程 8 1.5 与UNIX有关的几个名词 9 第2章 UNIX基本常识 11 2.1 启动终端 11 2.2 登录 11 2.3 初始化文件...
  • 初探 Unix 操作系统

    千次阅读 2018-08-05 22:34:08
    在互联网公司里面,基本大大小小所有的服务器端应用程序都是部署在 Linux ...所以就趁这段时间系统的学习一下 Linux 操作系统的基础知识。不求精通,但求能在工作上能够熟练操作,例如编写一些 Shell 脚本,配置一些...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 127,004
精华内容 50,801
关键字:

unix操作系统知识