480 likes | 644 Views
第 4 章 字符界面与 Shell. 本章主要讲述字符界面的基本概念,理解 Shell 命令的基本功能,掌握最常用的 Shell 命令,掌握文本编辑器 vi 的用法。. 4.1 字符界面简介. 使用字符界面的原因: 目前的图形化用户界面还不能完成所有的系统操作,部分操作仍然必须在字符界面下进行。 字符界面占用的系统资源较少,同一硬件配置的计算机仅运行字符界面时比运行图形化界面时速度快。 对于熟练的系统管理人员而言,字符界面更加直接高效。. 4.1 字符界面简介. 1 虚拟终端 Linux 的字符界面被称为虚拟终端或虚拟控制台。
E N D
第4章 字符界面与Shell 本章主要讲述字符界面的基本概念,理解Shell命令的基本功能,掌握最常用的Shell命令,掌握文本编辑器vi的用法。
4.1 字符界面简介 使用字符界面的原因: • 目前的图形化用户界面还不能完成所有的系统操作,部分操作仍然必须在字符界面下进行。 • 字符界面占用的系统资源较少,同一硬件配置的计算机仅运行字符界面时比运行图形化界面时速度快。 • 对于熟练的系统管理人员而言,字符界面更加直接高效。
4.1 字符界面简介 1 虚拟终端 Linux的字符界面被称为虚拟终端或虚拟控制台。 Linux的虚拟终端默认有7个,其中从第1个到第6个虚拟终端总是字符界面,而第7个虚拟终端则总是图形化用户界面。每个虚拟终端相互独立,虚拟终端间的相互切换方法: • ALT+F1~ALT+F7字符界面的虚拟终端切换到其他虚拟终端。 • CTRL+ALT+F1~CTRL+ALT+F6则可从图形化用户界面切换到字符界面的虚拟终端。
4.1 字符界面简介 2 字符界面下的用户登录 • 第一行:显示当前使用Linux的版本 • 第二行:显示Linux内核版本是2.4.20-8,以及本机的CPU型号是i686。 • 第三行:显示主机名,login后显示登录的帐号“root”。 • 第四行:回车后出现,在password后输入口令(注意:在输入口令时,屏幕上没有任何显示内容,不出现****字符串)。
4.1 字符界面简介 • 若不是第一次登录,则系统会显示上次登录系统的时间以及登录的终端号 • 有时候还有系统自带的电子邮件系统发了份邮件给用户,出现提示“you have new mail”
4.1 字符界面简介 3 Shell命令 • Shell可执行的用户命令可分为两大类:内置命令和使用程序 Shell对于用户输入的命令,有以下三中处理方式: • 如果用户输入的是内置命令,那么由Shell的内部解释器进行解释,并交由内核执行。 • 如果用户输入的是实用程序命令,用户也给出了命令的路径,那么Shell会按照用户提供的路径在硬盘中查找。找到则调入内存,交由内核执行,否则输出提示信息。 • 如果用户输入的是实用程序命令,但是用户没有给出命令的路径,那么shell会根据PATH环境变量所制定的路径依次进行查找。找到则调入内存,交由内核执行,否则输出提示信息。
4.1 字符界面简介 4.1.3 Shell命令 1 Shell命令提示符 • 成功登录Linux后将出现Shell命令提示符: [root@redhatroot]# 系统主机名 用户名 用户当前目录 # —指root用户,$ —指一般用户
4.1 字符界面简介 4.1.3 Shell命令 2 Shell命令格式 命令名 [选项] [参数1] [参数2] …… (1)命令名有小写的英文字母构成,一般为相应功能单词的缩写。 (2)方括号部分可以省略 (3)选项是对命令的特别定义,以“-”开始,多个选项可用一个“-”(此符号一般不可以省略)。 (4)参数提供命令运行的信息或者是命令执行过程中所使用的文件名。 (5)如在命令行中没参数,则从标准输入文件接收,并将结果显示在标准输出文件上。 (6)Linux操作系统的联机帮助对每个命令都做了说明。
4.1 字符界面简介 4.1.3 Shell命令 (1)在Shell提示符下,可以输入相应的命令。 (2)Shell命令可以识别大小写。 (3)如系统找不到输入命令,则显示“Command not found”。 (4)当一个命令一行写不下时可在第一行行尾键入“\”回车后继续输入。 (5)在命令与选项和参数之间要用空格或制表符隔开。多个空格被当做单个空格。 (6)输入命令时,可书用多个空格符。
4.1 字符界面简介 4.1.4 注销、重启与关机 1.注销 两种方式: • 图形化注销: 主菜单注销确定 • 虚拟控制台注销 在命令提示符后键入“exit”或按Ctrl+D快捷键。
4.1 字符界面简介 2 系统重启: 可在命令提示符下键入命令“reboot”或“shutdown –r now ”或同时按下Ctrl、Alt、Delete键。 3.关机 两种方法: • 图形化关机: 主菜单注销关机 • 虚拟控制台关机 在命令提示符下键入“halt”或“shutdown –h now”。 注意:如果不能正常切断电源,可在看到“Power down”或“System halted”消息后,手动关闭电源。
4.1 字符界面简介 关于shutdown命令: 格式:shutdown [选项] 时间 [警告信息] 参数选项: -r:系统关闭后重启 -h:关闭后停机 时间格式: now:立即 hh:mm:指定时分 +m:指m分钟以后
4.2 简单Shell命令实例 4.2.1.与时间相关的Shell命令 1.date命令 格式:date [MMDDhhmm[YYYY]] 功能:查看或修改系统时间 注:(1)显示内容依次为星期、月份、日期、小时、分钟、秒钟和年份。 (2)用户必须拥有超级用户权限才能修改系统的时间。修改系统时间必须按照月份、日期、小时、分钟、年份的顺序表示,其中年份占4位(可省略),其他部分各占两位,不足两位的添0不足。例:date 080915032008
2.Cal命令 功能:显示指定年月的月历 格式:cal [选项] [月] [年] 参数选项: -m:以星期一为每周的第一天方式显示 -j:以恺撒历显示(以一月一日起的天数显示) -y:显示今年年历 注意:未指明年月,则显示当月的月历,如只带一个参数,则该参数被认为是表示年份。
4.2 简单Shell命令实例 4.2.2 与文件和目录相关的Shell命令 熟悉几个命令:1.mkdir、2.rmdir 3.touch 4.rm命令 功能:删除文件或目录 格式:rm [选项] 文件名或目录名 说明:删除文件或目录,包括目录下的文件和各级子目录,删除链接文件时愿文件不变。 参数选项: -f:删除文件或目录时不提示用户 -i:删除文件或目录时提示用户 -r:递归删除目录,即包含目录下的文件和各级子目录 5.mv命令 功能:移动文件或目录 格式:mv [选项] 源文件或目录 目标文件或目录 说明:可以移动,也可重命名,如目标文件已存在则内容被覆盖 参数选项: -i:如果目标文件或目录存在时,提示是否覆盖 -f:不论目标文件或目录是否存在,均不提示
4.2 简单Shell命令实例 6.cp命令 功能:拷贝文件或目录 格式:cp [选项] 源文件 目标文件 参数选项: -a:尽可能将档案状态、权限等资料都照原状予以复制 -r:若源文件中含有目录名,则将目录下之档案依序拷贝至目的地 -f:若目的地已经有同名的档案存在,则在复制前先予以删除再行复制 注:如果源文件是普通文件,则可不加选项即可,如是目录,则要加“-r”
链接文件命令 链接:为一个文件取多个名字 被链接文件的文件如放在同一目录下则不能同名,而放在不同目录则可以同名 链接两种形式:软链接(符号链接)和硬链接 格式:ln [选项] 源文件或目录 链接名 参数选项: -s:建立软链接,不加该项时建立的是硬链接 软链接和硬链接区别:硬链接与原文件指向同一硬盘位置,而符号链接只是指向原文件的一个假名。删除所有的链接才能删除文件,软链接在原文件删除后无法使用。
4.2 简单Shell命令实例 1.pwd命令 功能:显示当前工作目录的绝对路径 绝对路径:指从根目录(/)开始到当前目录(文件)的路径。 相对路径:指从当前目录到其下子目录(文件)的路径。
4.2 简单Shell命令实例 2.cd命令 格式:cd [目录] 功能:切换到指定目录 几个特殊符号: • . 代表此层目录 • .. 代表上层目录 • ~ 代表自己的根目录 • ~user 代表到 user 用户的根目录 例: • [root @test root]# cd ..<==回到上一层目录 • [root @test root]# cd ../home<==相对路径的写法 • [root @test root]# cd /var/www/html<==绝对路径的写法 • [root @test etc]# cd<==回到使用者的根目录 • [root @test etc]# cd ~ <==回到使用者的根目录! • [root @test etc]# cd ~test<==回到 test 用户的根目录
所有者 权限 大小 文件名 文件所在组群 4.2 简单Shell命令实例 3.ls命令 格式:ls [选项] [文件|目录] 功能:显示指定目录中的文件和子目录信息。当不指定目录时,显示当前目录下的文件和子目录信息。 参数说明: • a :全部的文件都列出(连同隐藏文件) • d :只列出目录的信息 • l :显示详细信息:文件类型与权限、连接数、文件所有者、文件组、文件大小、建立或最近修改时间、文件名。 • S :以文件的大小排序 • t:按照时间顺序显示 • -color=never :不要显示颜色 • -color=always :均显示颜色 • -color=auto :由系统自行判断! 例: -rw-r--r-- 1 root root 26195 Dec 17 10:42 install.log 连接数
4.2 简单Shell命令实例 4.cat命令 功能:一是显示文件内容,二是连接两个或多个文件。 格式:cat [选项] 文件名 参数选项: -n:由1开始对所有输出的行数编号 -b:与-n相似,但对空白行不编号 -s:将遇到连续空白行时用一行空白行代替 例1:cat f1 f2>f3 将f1和f2文件合并后通过输入重定向符“>”,作为f3内容。 例2:cat f1 f2>>f3 “>>”追加重定向符,对原有内容不删除,只附加到文件后。 注:命令的重定向在后面章节讲述
5.more命令 功能:显示文件内容,每次显示一屏 格式:more [选项] 文件 参数选项: -d:在下方出现提示字样 -f:计算行数时以实际行数为准,而不计算自动换过行的行 -p:不以卷动的方式显示每一页,而是先清屏再显示内容 -c:与-p相似,但是先显示内容再清除其他。 -s:用一行空白行代替连续多行空白行 +num:从第num行开始显示。 注意:more命令中按“ENTER”是向后移动一行,按“SPACE”是向后移动一页,按“q”退出。 6.less命令 类似more命令,但扩展了许多功能。如可以使用光标键来滚屏,阅读到最后不退出,并可进行复杂检索(输入/+关键字),以高亮度显示。
7.head命令 功能:在屏幕上显示指定文件的前几行(或字符) 格式:head [选项] 文件名 参数选项: -n num:显示文件的前num行(不加则默认为10行) -c num:显示文件的前num个字符 8.tail命令 功能:显示文件的末尾几行(或字符) 格式:tail [选项] 文件名 参数选项: -n num:显示文件的末尾num行(不加则默认为最后10行) -c num:显示文件的末尾num个字符
4.2 简单Shell命令实例 其他命令: 1.clear命令 格式:clear 功能:清除当前终端的屏幕内容 2.wc命令 格式:wc [选项] 文件 功能:统计文件的字节数、字数、行数,并将统计结果显示出来 参数选项: -l:行数 -w:字数 -c:字节数
4.2 简单Shell命令实例 4.2.3 获得帮助 • 使用--help参数获得命令的帮助信息 格式:#命令名 --help或#命令名 --h • 使用man命令获得应用程序帮助手册 格式:#man 命令名 • 使用info命令获得应用程序的帮助信息 格式:#info 命令名
4.3 深入Shell 4-3-1 Shell命令的通配符 Linux系统中的通配符除了MS-DOS中常用的“*”和“?”外,还可以使用“[]”、“-”和“!”组成的字符组模式,扩充需要匹配的文件范围。 • 通配符“*” 代表任意长度的任何字符 • 通配符“?” 代表任何一个字符 • 字符组通配符“[]”、“-”和“!” “[]”表示指定的一个字符范围,而“[]”内的任意一个字符都用于匹配。 “[]”内的字符范围可以由直接给出的字符组成,也可以由起始字符、“-”和终止字符组成。
4.3 深入Shell 4-3-2 输入输出重定向 命令重定向:就是将目前的所得数据转到其他地方。 语法:命令>文件名 则:1.屏幕不会显示任何信息,但把命令执行结果输出到所指定文件名中 2.若该文件不存在,则系统自动创建 3.若这个文件存在,系统会先将这个文件内容清空,然后再将数据写入(即覆盖原文件内容)
4.3 深入Shell 几个常用的命令重定向符号: • >:将原本由屏幕输出的正确数据输出到>右边的文件名或设备中 • <:由<的右边读入参数文件 • >>:将原本由屏幕输出的正确数据以累加方式添加到文件的最后面 • 2>将原本应该由屏幕输出的错误数据输出到右边指定的文件中(&>的使用) • /dev/null:可以视为垃圾设备
4.3 深入Shell 在 bash命令执行的过程中,主要有三种输出输入的状况,分别是: • 1. 标准输入;代码为 0 ;或称为 stdin ;使用的方式为 < • 2. 标准输出:代码为 1 ;或称为 stdout;使用的方式为 1> • 3. 错误输出:代码为 2 ;或称为 stderr;使用的方式为 2> 基本的指令书写方式为: • 1> • 1>> • 指令 2> 设备或文件 • 2>> • <
4.3 深入Shell 4-3-3 管线命令 管线命令:由若干个指令组成,每个指令用“|”隔开,仅在前一个指令正确才会执行后面的指令。 常见的管线命令: last 命令: 功能:列出目前与过去登入系统的用户相关信息。 语法:last [-adRx][-f <记录文件>][-n <显示列数>][帐号名称...][终端机编号...] 参数: -a : 把从何处登入系统的主机名称或IP地址,显示在最后一行。 -d : 将IP地址转换成主机名称。 -f <记录文件> : 指定记录文件。 -n <显示列数>或-<显示列数> : 设置列出名单的显示列数。 -R : 不显示登入系统的主机名称或IP地址。 -x : 显示系统关机,重新开机,以及执行等级的改变等信息。 注:单独执行last指令,它会读取位于/var/log目录下,名称为wtmp的文件,不能用less、cat之类的命令直接查看这些文件,而是需要使用相关命令通过这些文件来查看
4.3 深入Shell 1 cut 功能:将同一行的数据(以指定字符)进行分解。(一般用于分析日志文件) 语法:cut –d “分割字符” [-cf] fields 参数说明: -d:后面接的是分隔字符,默认是空格符 -c:后面接的是第几个字符 -f:后面接的是第几个区块
4.3 深入Shell 2 sort 功能:对文件内容进行排序 语法:sort [-t 分隔符] [(+起始)(-结束)] [-nru] 参数说明: -t 分隔符:使用分隔符隔开不同区块,默认是tab +start -end:由第start区块排序到end区块 -n:使用纯数字排序(默认是以字母方式排序) -r:反向排序 -u:相同出现的一行,只列出一次 3 uniq 功能:删除相邻重复的行从而只显示一个 语法:uniq(一般与sort配合使用)
4.3 深入Shell 4 tee 功能:在执行命令重定向时同时将数据显示在 屏幕上 语法:tee(配合其他管线命令) 5 tr 功能:取代某些字符数据 语法:tr [-ds] set1 参数说明: -d:删除set1这个字符串 -s:取代重复的字符 6 split 功能:分割文件 语法:split [-bl] 输入文件 输出文件前导字符 参数说明: -b:以文件size来分(默认byte),可以加后缀 k 或 m -l:以行数来分
4.3 深入Shell 还原合并: cat :文件连接命令,最好不要修改分块文件的名字 (例如前导字符为test) cat test* > 文件名 paste : 按合并行方式合并文件命令(文本文件列合并)格式:paste [-d 分隔符] file1 file2……cut程序用于从文件中裁下一个垂直片段,而paste程序把若干垂直片段合并到一个文件中,二程序合作完成重排文件的列。 cut和paste作用类似于文本编辑组合――剪切和粘贴。
4.3 深入Shell 4-3-4 历史命令 history 功能:查询以前输入过的指令 语法:history [!number] [!command] [!!] 参数说明: Number:历史指令的编号 Command:指令的内容 !:上一个指令(!!直接执行上一个指令)
4.3 深入Shell 4-3-5 命令别名 alias与unalias 功能:通过命令别名的定义可以简化命令的输 入。 语法:alias 命令别名=‘指令 参数’ 如直接使用alias则可查看当前有哪些命令别名 命令别名在定义规则与变量定义规则几乎相同。 如果要取消命令别名,使用unalias 命令别名
4.3 深入Shell BASH主要的优点: • 命令编辑能力(类似 DOS的 doskey功能): 能记忆使用过的指令。只要在指令列按『上下键』就可以找到前一个输入的指令!而在 Red Hat Linux 9.0默认可记忆1000条指令。设的指令记忆功能可以到达 1000个!记录的文件在根目录内的 .bash_history!但~/.bash_history记录的是前一次登入以前所执行过的指令,而至于这一次登入所执行的指令都被暂存在内存中,只有在注销该指令记忆才会记录到 .bash_history当中。
4.3 深入Shell • 补全功能(比对数据正确性)(Tab键的运用) 主要分为指令补全与文件名称补全: 指令补全:如果在执行命令的时候不想按下太多的按键,例如指令 pcprofiledump够长,如果你输入了 pcprofile之后,再按下 Tab按键的话,那么 bash马上会自动的将后面的 dump接上来!如果有重复的指令那么按下两次 [Tab]将会把所有重复的指令列出来,就是『直接在提示字符后面连按两次 <tab>键,则系统会将所有可以使用的指令都列出来! 文件名称补全:例如用vi打开 /etc/man.config这个文件,那么可以在输入 vi/etc/man.之后,直接按下 <tab>按键,那么该文件名称就会被自动的补齐,而且对于文件名称或者指令名称的正确性上面很有帮助。
4-4 文本编辑器vi • Linux与 Unix系统中的参数文件几乎都是ASCII 码的『纯文字』文件!因此,利用简单的文字编辑软件就可以马上修改Linux 的参数,vi是 Unix预设的文字处理软件,也是 Linux预设的文字处理软件!
4-4-1 vi 简易说明 基本上 vi共分为三种模式,分别是一般模式、编辑模式与命令行模式三种: • 一般模式:以 vi打开一个文件,一进入该文件就是一般模式了。在这个模式中,可以使用『上下左右』按键来移动光标,可以使用『删除字符』或『删除整行』来处理文件内容,也可以使用『复制、贴上』来处理文件数据。 • 编辑模式:在一般模式中可以处理删除、复制、贴上等等的动作,但是却无法编辑的!要等到按下『i, I, o, O, a, A, r, R』等字母之后才会进入编辑模式。注意:通常在 Linux中,按下上述的字母时,在画面的左下方会出现『 INSERT或 REPLACE』的字样,才可以输入任何字来输入到文件中!而如果要回到一般模式时,则必须要按下『Esc』这个按键即可退出编辑模式。 • 命令行模式:在一般模式当中,输入『 :或 /』就可以将光标移动到最底下那一行,在这个模式当中,可以提供查找、读取、保存、替换、退出 vi、显示行号 等操作。
4-4-1 vi 简易说明 一般模式 移动光标 查找、替换 删除字符,删除整列 复制整列,粘贴整列 i,o,a,R,Insert 编辑模式 可输入任何字符 [Esc] 命令行模式 读取、保存文件 其他功能 : / ?
4-4-2 常用指令 一般模式: 光标移动 • h 或 向左方向键 光标向左移动一个字符 • j 或 向下方向键 光标向下移动一个字符 • k 或 向上方向键 光标向上移动一个字符 • l 或 向右方向键 光标向右移动一个字符 • [Ctrl] + [f] 屏幕『向前』移动一页(常用) • [Ctrl] + [b] 屏幕『向后』移动一页(常用) • [Ctrl] + [d] 屏幕『向前』移动半页 • [Ctrl] + [u] 屏幕『向后』移动半页 • + 光标移动到非空格符的下一列 • - 光标移动到非空格符的上一列 • 按下数字后再按空格键,光标会向右移动这一行
4-4-2 常用指令 一般模式: 光标移动 • n<space> 的 n 个字符。例如 20<space> 则光标会向后面 • 移动 20 个字符距离。 • 0 这是数字『 0 』:移动到这一行的最前面字符处(常用) • $ 移动到这一行的最后面字符处(常用) • H 光标移动到这个屏幕的最上方那一行 • M 光标移动到这个屏幕的中央那一行 • L 光标移动到这个屏幕的最下方那一行 • G 移动到这个文件的最后一行(常用) • nG 移动到这个文件的第 n 行。例如 20G 则会移动到这个文件的 20 行 • (可配合 :set nu) • n<Enter> 光标向下移动 n 行(常用)
4-4-2 常用指令 • 一般模式: 查找与替换 • /word 向光标之后寻找一个字符串名称为 word 的字符串。(常用) • ?word 向光标之前寻找一个字符串名称为 word 的字符串。 • :n1,n2s/word1/word2/g 在第 n1 与 n2 行之间寻找 word1 这个 • 字符串,并将该字符串取代为 word2 ! (常用) • :1,$s/word1/word2/g 从第一行到最后一行寻找 word1 字符串, • 并将该字符串取代为 word2 !(常用) • :1,$s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将 • 该字符串取代为 word2 !且在取代前显示提示 • 字符给使用者确认(conform)是否需要取代! • (常用)
4-4-2 常用指令 • 一般模式: 删除、复制与粘贴 • x, X x 为向后删除一个字符, X 为向前删除一个字符(常用) • nx 向后删除 n 个字符 • dd 删除游标所在的那一整列(常用) • ndd 删除光标所在的向下 n 列,例如 20dd 则是删除 20 列 (常用) • d1G 删除游标所在到第一行的所有数据 • dG 删除游标所在到最后一行的所有数据 • yy 复制游标所在的那一行(常用) • nyy 复制光标所在的向下 n 列,例如 20yy 则是复制 20 列 (常用) • y1G 复制游标所在列到第一列的所有数据 • yG 复制游标所在列到最后一列的所有数据 • p, P p 为复制的数据在光标下一行贴上,P 则为贴在游标上一 行!(常用) • J 将光标所在列与下一列的数据结合成同一列 • c 重复删除多个数据,例如向下删除 10 行, [ 10cj ] • u 复原前一个动作。(常用)
4-4-2 常用指令 编辑模式 • i, I插入:在目前的光标所在处插入输入之文字,已存 在的文字会向后退;(常用) • a, A增加:由目前光标所在的下一个字开始输入,已存 在的文字会向后退:(常用) • o, O插入新的一行:从光标所在的下一行枝行首开始输 入文字;(常用) • r, R替换:r 会替换光标所在的那一个字符;R会一直 替换光标所在的文字,直到按下 ESC为止; (常用) • Esc退出编辑模式,回到一般模式中(常用)
4-4-2 常用指令 命令行模式 • :w将编辑的数据写入硬盘文件中(常用) • :w! 若文件属性为『只读』时,强制写入该文件 • :q退出 vi (常用) • :q!若曾修改过文件,又不想保存,使用 ! 为退出退出不保存文件。 • :wq保存后退出,若为 :wq! 则为强制保存后退出(常用) • :e! 将文件还原到最原始的状态! • ZZ若文件没有更动,则不保存退出,若文件已经经过更动,则保存 后退出 • :w [filename]将编辑的数据保存成另一个文件(类似另存为 • 在编辑的数据中,读入另一个文件的数据。亦即 • :r [filename] 将 『filename』 这个文件内容加到游标所在行后面 • :set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号 • :set nonu 与 set nu 相反,为取消行号! • n1,n2 w [filename] 将 n1 到 n2 的内容保存成 filename 这个文件 • :! Command 暂时退出 vi 到指令列模式下执行 command 的 • 显示结果!例如[ :! ls /home ]
4-5 变换默认的登入模式 修改/etc/inittab文件,最少有7种方式 • # Default runlevel. The runlevels used by Mandrake Linux are: • # 0 - halt (Do NOT set initdefault to this) • # 1 - Single user mode • # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) • # 3 - Full multiuser mode • # 4 - unused • # 5 - X11 • # 6 - reboot (Do NOT set initdefault to this) • id:3:initdefault: