日历

2019年九月
« 5月    
 1
2345678
9101112131415
16171819202122
23242526272829
30  

最近评论

    linux/unix基础知识

    第1章 UNIX 基本使用和基本命令

     1.1 UNIX 概述
            UNIX 是一个强大的多用户、多任务操作系统,支持多种处理器架构。最早由Ken Thompson,Dennis Ritchie 和Douglas McIlroy 于1969 年在AT&T 的贝尔实验室开发。Ken 和Dennis最早是在贝尔实验室开发UNIX的,此后的10年,UNIX在学术机构和大型企业中得到了广泛的应用。当时的UNIX拥有者AT&T公司以低廉甚至免费的许可将UNIX源码授权给 学术机构做研究或教学之用,许多机构在此源码基础上加以扩充和改进,形成了所谓的UNIX“变种(Variations)”,这些变种反过来也促进了UNIX的发展,其中最著名的变种之一是由加州大学Berkeley开发的BSD产品。 后来AT&T意识到了UNIX 的商业价值,不再将UNIX源码授权给学术机构,并对之前的UNIX及其变种声明了版权权利。为了不和AT&T的版权冲突,BSD产品在版本3之后将代码进行 了重写,BSD产品在此之后不再包括有版权的UNIX代码。
             BSD在发展中也逐渐衍生出3个主要的分支:FreeBSD,OpenBSD和NetBSD。 此后的几十年中,UNIX仍在不断变化,其版权所有者不断变更,授权者的数量也在增加。UNIX的版权曾经为AT&T所有,之后Novell拥有了UNIX,再之后Novell又将版权出售给 了SCO(这一事实双方尚存在争议)。有很多大公司在取得了UNIX的授权之后,开发了自己的UNIX产品,比如IBM的AIX,HP的HPUX,SUN的Solaris和SGI的IRIX。 UNIX因为其安全可靠,高效强大的特点在服务器领域得到了广泛的应用,与此形成对比的是,在桌面和个人计算领域,微软的Windows系列和苹果电脑的Mac OS系列产品占据了绝大部分市场。

      1.2 UNIX SHELL
        UNIX 操作系统的核心被称为内核(kernel),内核是处理用户软件和计算机硬件之间所有通信的一个软件。由内核决定如何同外围设备通信,如何使系统用户之间共享处理 器时间,如何为运行的不同程序分配内存,以及如何利用处理器和其他资源。内核记录了系统中当前正在运行的程序(通常称为进程),并根据已定义的策略在进程之间共享处理 器时间。 HP-UX 系统管理 UNIX 用户是无法与内核直接交互的,而是经常同一个叫做UNIX shell 的程序打交道。Shell 是一个命令解释器。Shell接受用户的命令。解释它们并采取必要的动作去执行这个命令。它也为用户提供这些命令的输出。
              有四个最通用的 shell,分别是:
             1、Bourne shell — 由AT&T 提供的最原始的 shell,由贝尔实验室的Stephen Bourne 开发。可提供命令的解释,支持可编程接口,提供诸如变量定义,变量替代,变量与 文件测试,分支执行与循环执行等功能。
              2、C Shell (/usr/bin/csh)—-C Shell 是在California Berkeley 大学的Bill Joy开发,一般存在于 BSD 系统中,于是被称为California shell,简写名称为CShell。 它被认为是Bourne Shell的一个改进版本。因为它提供拉交互的特征例如:命令堆栈 (-允许简单地调用和编辑以前输入的命令,)别名(提供对已有命令取个人的别名) 
               3、Korn Shell(/usr/bin/ksh)—- 贝尔实验室最新的开发成果,由David Korn开发成功。它被认为是是一种增强型的Bourne Shell,因为它提供对简单可编程的Bourne Shell 界面的支持,同时提供C Shell的简便交互的特征。它的代码也被优化来提供一种更快,更高效的shell。
               4、POSIX Shell(/usr/bin/sh): —- POSIX 是一种命令解释器和命令编程语言,这种 shell 同Korn Shell 在许多方面都很相似,它提供历史机制,支持工作控制,还提供 许多其他有用的特性。 应该注意到 shell 是与内核分离的。如果你不喜欢系统提供的shell 界面,可以很轻松地用其他的shell 代替它.

     1.3 HP-UX 的登录和注销 
              1.3.1 典型的终端会话过程为了能和计算机通信,需要有以下条件: 
               1、一个具有完全ASCII 字符集的终端
              2、一条连接计算机的数据通信线路
              3、一个登录ID (用户身份确认)
              4、一个密码 一个终端会话过程开始于用户登录一个系统认可的终端,结束于退出信号,计算机会在你登录期间响应你的键入的命令。
             UNIX通过用户名(有时也称为登录ID)来识别是否是系统中的用户。你的用户名,就是系统管理员分配给你的名称,通常是你的名字或是名字的缩写。
              你帐号的密码可以是一个随意的的字符串,你的系统管理员会提供给你一个你可以更改的初始化密码,你的密码是你私人所有的,你自己决定密码是什么,没人知道或能找出你的密码是什么。如果你忘记了你的密码,你就不得不求助于你的系统管理员。因为只有系统管理员有权删除修改用户的密码。在终端上出现登录提示符时,你就可以输入用户名和密码登录以系统。在登录上系统后,你可以输入命令,SHELL会解释命令,操作系统会为你执行命令,任何执行命令产生的 响应都会显示在你的屏幕上。当工作结束后,你可以退出系统以终止终端对话,这会释放终端以便让其他人可以通过这台终端登录系统。建议你在离开时退出系统,以防其他人使 用你的帐号使用系统。

     1.3.2 登录
            你需要执行以下步骤来登录系统:
            1、打开终端,如果一些终端显示已经超时(现象为屏幕上没有任何显示)你只需要敲一个键(例如shift 键)激活显示。 
             2、如果你没有看到login:提示符,或者出现一些垃圾字符,敲一下回车,如果仍旧不工作,敲一下 break键。垃圾字符通常是计算机试图以错误的速度与你的终端联结,break 键告诉计算机尝试另外一种速度,你可以通过敲break 键来实验不同的速度,但记住在每次敲键后要等待机器响应。
            3、当login:提示符出现后,键入你的登录ID。 
            4、如果passwd:提示符出现,键入你的密码,为了确保安全,你键入的密码不会在屏幕上显示。

              注意:键盘上的退格键在登录过程中没有删除功能。 $符是Bourne Shell(/usr/old/bin/sh),korn Shell(/usr/bin/ksh), 和 POSIX Shell(/usr/bin/sh)的标准提示符,%符通常表示这是C Shell(/usr/bin/csh)。如果你用的 是POSIX shell,你会看到一个$提示符。而#提示符一般是为系统管理员保留的。

            当你以系统管理员的身份登录时,会出现这个符号。这也为你的特殊身份提供一个有用的提示功能 :因为作为系统管理员,你能更改 (或删除)系统中的任何数据。 密码的说明:第一次登录系统,你的帐号可能被设置为要你键入密码。你提供的密码必须满足以下条件:
           1、你的密码必须不小于六个字符 
            2、前六个字符中至少要有两个字母。
           3、 前六个字符中至少要有一个不是字母。 当你第一次输入你的密码后,系统会提示你重新输入一次以确认密码。然后系统会重新出现登录提示符,你可以用你的新的密码来完成登录步骤。

    1.3.3 注销
              一旦你完成在HP-UX上的工作,就需要注销系统。注销过程将结束你的会话。要注销时,在shell 提示符后输入exit命令。系统会终止你的会话并提示登录提示符。
              一个典型的注销过程如下:
              $ exit  Logout GenericSysName[HP Release B.11.00] (See /etc/issue) Console Login:

    1.4 命令行的格式

    1.4.1 命令行格式
               命令行的格式如下: $ command [-options] [arguments]
               在你看到 shell 提示符($)后,你就可以键入命令。一个正确的命令名通常是在命令行的第一项。
              许多的命令还有命令选项,选项的作用是为了扩展命令功能,而参数通常是 一些文本,一个文件名,或者是目录名等命令可以操作的东西。选项通常以短横线(-)开始。空字符的作用是分割命令,选项,参数,空字符被定义为一个或多个空格符(space) ,或TAB 键,
                例如:命令echo Hi 和echoHi 是有很大的差别的,计算机会将第一个理解为命令echo和一个命令的参数(Hi ),而第二个会被认为是一个名为echoHi的命令,而此 命令可能不是一个有效的命令,每个命令都是以回车符结束,回车符会将命令送往计算机执行。在上图中,回车符会被系统识别,而其他的字符不会产生作用。终端的输入输出支 持预先键入字符,预先键入的意思是在你键入一个命令后在提示符返回前立即键入另一个命令,你键入的命令会先被缓存,并在当前命令执行完成之后执行。 注意:UNIX 的命令对大小写敏感的,大多数的命令和参数都是小写的字符。因而,echo hi 是一个合法的命令而ECHO hi不能被系统识别。你可以在一个命令行中同时键入两 个命令,方法是用分号(;)分割两个命令,如:$ ls;pwd

    1.4.2 二级提示符
              Bourne ,Korn,和POSIX shells 都支持多命令行。如果 shell 要求更多的输入来完成一个命令,在 回车前,就会出现第二提示符(>)。 一些命令要求有一个结束命令,一些字符要求有结束字符,例如一个开始的if要求fi来结束,开始的括号要求一个结束的括号,一个开始的引 号要求一个结束的引号。如果你键入一个错误的命令,就像上图中描述的一样,SHELL 会显示第二提示符。通常同时按 ctrl+c 会中止当前正在运行的程序,然后返回到SHELL 提 示符下,你可以通过stty -a命令来自行定义你的中止键。

    1.5 基本命令的使用
        这部分将介绍一些简单的HP-UX命令,其中有些命令非常方便有用。甚至对一些复杂的系统管理任务也是如此。

       1.5.1 Man 命令
              在许多UNIX系统中,手册通常是在线的。在线帮助手册通过man命令来存取。
              语法:man [123456791] command $ man ls 在指定命令的帮助条目的第一页已经出现在屏幕上。你可以键入以下的键: return 显示下一行 space 显示下一页 Q 或q 退出man命令并且回到提示符下

    1.5.2 date 命令
            date 命令告诉你设置在HP-UX系统时钟里的当前时间和日期。
            $ date Thu Aug 29 10:20:33 EDT 1999

    1.5.3 id 命令
                为了让你存取文件和执行程序,UNIX必须要知道你的用户和组的id号,这种由计算机维护的数字的id号,对应哪些为用户方便而使用文字名称 ,当你登录时,你的用户身份会被初始化。在你已经登录后,你也可以更改你的用户和组。id命令的作用就是显示你当前的用户和组的定义。计算机将所有的用户的信息存储在文件/etc/passwd中,组的信息存储在/etc/group中。 组 组让一组用户可以共享地存取文件。由系统管理员定义组中的用户,每一个用户都能存在于不同的组中。组通常由机构中已经定义的工作组组成。 $ id Uid 101(user1) gid=101(class) $

    1.5.4 who 命令
                 who 命令会报告有哪些用户已经登录系统,每一个用户连接的终端和登录时间的信息。who am i报告本用户的用户名和端口信息,whoami命令报告系统与本地终端的关联的用户名。用户是否有权执行一个命令,依靠的是用户的身份,一个用户能够更改他或她的身份标识来存取其它的命令或程序。
            $ who
               root pts/ta Aug 29 10:20:33
            $ who am i 
                user1 pts/tb Aug 29 12:20:42
            $ whoami
               user1

    1.5.5 passwd 命令
                  在许多的系统中,系统管理员控制着用户的密码。然而,在 UNIX 系统中,系统管理员能允许用户直接控制他们自己的密码,passwd 命令让用户改变他们的口令,语法如下: $ passwd 输入这个命令后,系统会要求输入你当前的密码(老密码)。这是为了避免在你登录了系统后,离开你的终端时间内有人更改你的密码。然后系统会要求你输入新 密码,并要求重输入一次以确认你的新密码,这样做是为了避免你打字的错误。你的新旧密码必须至少有三个字符不同。在你输入密码时,新旧密码字符不会出现在屏幕上。 密码限制 你的密码至少有六个字符,前六个字符中至少要有两个是字母,前六个字符中至少有一个不是字母。 系统管理员可以不遵守这些条件,所以如果系统管理员给你的账号分配一 个密码,这个密码可能不符合这些规则。

    1.5.6 echo 命令
               echo 命令使你可以显示命令行参数的,这个意思是,一个如下的命令: echo hello 导致输出:helllo 这个命令可能看上去十分平常,但是这个命令让我们可以佷方便地在shell 程序中显示用户信息和检查shell变量的值。在shell编程中,echo命令用的很普遍。 $ echo how are you

    1.5.7 clear 命令
            clear 命令清除终端屏幕上的字符。这个命令仅仅清除当前的屏幕,所以,用户有可能向上翻屏来查看以前的屏幕信息,想要清除所有的屏幕信息,按HOME键,将光标至到 home,然后键入clear命令。

     1.5.8 uname 命令
          每一个HP-UX系统都有一个系统名。如果你希望知道你的系统名是什么或系统正在运行什么版本的HP-UX,就使用uname 命令。 $ uname -a HP-UX myhp B.11.00E 9000/800 71678 2-user license

    1.5.9 write 命令
        你可以用 write 命令向当前登录到同一个系统的用户的终端发送信息。当你使用write 时,系统会让你输入信息,每一次你敲回车,信息就会被传送到接收者的终端上,接收者可以向你回写信息,你可以通过你的终端进行交互的对话。当你完成键入信息后,敲入ctrl+d.就可以结束你的对话。

                      注意:除非你禁用这项功能,否则,在任何时候,别人都可以发送信息到你的终端。,如果这时你正在使用一个工具,如man,mail,或是一个编辑器的时候,一个用户给你发生 一个信息,这行信息会出现在你的屏幕上,这会造成你的混乱。如果你想要发送信息给一个用户,而这个用户当前没有登录系统,你会得到如下提示: user is not logged on(用户没有登录系统),其中user 表示你试图发送信息的人的用户名。 $ write user2 how are you

    1.5.10 mesg 命令
        你可以通过mesg命令来禁止其他用户发送信息到你的终端上。如果你给一个已经禁止接收其他用户发送信息的用户发送信息,你会接到Permission Denied错误(没有许可)。 mesg n 拒绝其他人write到你的终端。 mesg y 允许其他人write到你的终端。 mesg 报告是允许或是不允许其他人写到你的终端。即使你的终端是禁止写入的,系统管理员一样能发送信息到你的终端。 $ mesg is y

    1.5.11 News 命令
        系统中的所有用户都感兴趣的信息可以通过news命令广播出去。这个命令通常是系统管理员对系统中所有用户进行通告的时候,例如在系统关闭,备份时,或是在新的硬件生效时使用。你可以键入news命令来阅读新闻。如果命令后没有选项,只有那些你还没有阅读过的信息会显示。
        news 命令的选项有:
        -a 读取所有的新闻,不管是否已经被读取过。
       -n 只显示未读过的新闻的标题每一个存取新闻的用户在他的HOME目录下都有一个.news_time文件。每一个UNIX系统中的文件都有一个时间标志,时间标志记录有上一次文件 被修改的时间。.news_time上的时间标志会被更新,以匹配你最后读取得新闻信息的时间。如果一条新的新闻加入,news命令知道这条新闻还没有被阅读,因为你的.news_time 文件的时间标志比新的新闻的时间标志早。

    1.6 实验
        完成以下练习,并回答相关问题。

         1. 用指导老师给你分配的用户和密码登录到系统。碰到了什么问题?
        2. 按Ctrl+d 或用命令exit 退出登录。发生了什么情况 (如果发生的话)?请再登录进系统。
        3. 下面哪些命令有语法错误?试试键入这些命令,看会出现什么结果或者错误信息? $ echo $ echo hello $ echohello $ echo HELLO WORLD $ banner $banner hello $ BANNER hello
        4.为你的账号分配一个密码,如果已经有密码,请修改密码。
        5.用who 或者whoami 命令得到以下问题的答案,每个问题用一个命令行求解。谁在使用该系统?你登录所用的终端是什么?你在系统中的身份是什么?
        6.其他用户能否向你的终端发送消息?用什么命令可以查出在这方面的设置?
        7.看看你的伙伴登录了没有,如果已经登录。向他 (她)的终端写一个消息,与他(她)建立一个双向的交谈。如果你的伙伴没有登录,给他 (她)写一个消息,这时会发生什么情况?如果你的伙伴禁止别人向他 (她)发消息,向他 (她)写一个消息,这时会发生什么情况?
        8.在UNIX 参考手册中查找命令ls。其功能是什么?所需参数的最少数目是多少?

    评论已关闭。