第3章 Linux字符界面操作基础
3.1 字符操作界面简介
内容提要
1.字符界面的使用方法。
2.本地登录和远程登录。
3.学会使用Putty。
4.理解系统运行级别及其切换方法。
5.掌握常用的系统关机和重启命令。
3.1.1 选择在字符界面下工作
为什么使用字符工作方式
Linux是一种类UNIX操作系统。在UNIX发展的早期,类UNIX操作系统根本没有图形操作界面,只有字符工作模式。后来随着GUI的发展,人们在类UNIX操作系统上开发了XWindow系统,使类UNIX系统有了图形用户界面。虽然图形用户界面的操作更简单,但是字符操作方式仍然沿用至今,这主要是因为:
● 在字符操作方式下可以高效地完成所有的任务,尤其是系统管理任务。
● 系统管理任务通常在远程进行,而远程登录后进入的是字符工作方式。
● 由于使用字符界面不用启动图形工作环境,大大地节省了系统资源开销。
进入字符工作方式的方法
可以使用如下的3种方法进入字符工作方式:
● 在图形环境下开启终端窗口进入字符工作方式。
● 在系统启动后直接进入字符工作方式。
● 使用远程登录方式(Telnet或SSH)进入字符工作方式。
3.1.2 虚拟控制台和本地登录
虚拟控制台
如果在系统启动时直接进入字符工作方式,系统将提供多个(默认为6个)虚拟控制台。每个虚拟控制台可以独立使用,互不影响。
可以使用组合键“Alt+F1”~“Alt+F6”进行多个虚拟控制台之间的切换。如果用户使用startx命令在字符界面下启动了图形环境,那么可以使用组合键“Ctrl+Alt+F1”~“Ctrl+Alt+F6”切换字符虚拟终端,使用组合键“Ctrl+Alt+F7”切换到图形界面。
本地登录和注销
在图3-1所示的登录界面输入用户名和口令即可登录。
图3-1 在字符界面下登录Linux
若要注销登录,用户可以在当前的登录终端上输入logout命令,或使用“Ctrl+d”快捷键。超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
提示:
1.Linux系统是严格区分大小写的,无论用户名,还是文件名或设备名都是如此。即:ABC、Abc、abc代表三个不同的用户名或文件名。
2.基于安全的考虑,一般应该使用普通用户登录系统,不要使用root用户登录,当需要进行超级用户的工作时可以使用su -命令切换为超级用户身份。初学者尤其要注意这一点。
3.1.3 远程登录Linux系统
在Linux环境下使用ssh登录远程Linux系统
Linux下的ssh命令是OpenSSH的客户端程序。要登录远程Linux系统,必须保证远程Linux系统上启动了OpenSSH服务器。使用ssh命令登录远程OpenSSH服务器的命令格式是:
$ ssh 远程主机上的用户名@远程主机的IP地址或FQDN
下面给出一个使用ssh命令登录远程Linux系统的操作步骤。以下为在Linux环境下使用ssh命令登录远程CentOS系统的示例。
## 以 root 身份登录IP地址为 192.168.0.101 的 CentOS 系统 osmond@ubuntu:~$ ssh root@192.168.0.101 The authenticity of host '192.168.0.101 (192.168.0.101)' can't be established. RSA key fingerprint is 6e:0c:62:70:0a:b9:d7:fe:11:7f:78:b0:af:28:69:7c. Are you sure you want to continue connecting (yes/no)? yes ## 如果第一次使用该账号进行ssh登录需确认密钥,选择“yes”才可继续登录过程 Warning: Permanently added '192.168.0.101' (RSA) to the list of known hosts. root@192.168.0.101's password: ## 在此输入root用户在主机192.168.0.101上的口令,口令输入过程中没有回显 Last login: Sun Dec 9 01:18:13 2007 [root@cnetos5 ~]# ## 正确登录后出现 Shell 提示符 [root@cnetos5 ~]# logout
## 输入 logout 命令注销远程连接 Connection to 192.168.0.101 closed. osmond@ubuntu:~$ ## 返回本地 Shell
在Windows环境下使用putty登录远程Linux系统
在Windows下,用户可以用putty来远程登录Linux系统。putty是一个绿色软件,无需安装,可直接使用。putty支持telnet、ssh、rlogin等多种连接方式。
● putty的下载地址是:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html。
● putty中文版的下载地址是:http://wrc.gro.clinux.org/putty/。
下面给出一个使用putty登录远程Linux系统的操作步骤。
步骤1:双击Windows桌面上的putty图标,启动putty。
步骤2:对putty进行设置。
1.Session设置
● 在Host Name一栏中添入远程主机的主机名或IP地址。
● 在Protocol一栏中选择SSH连接会话的类型。
2.Window设置
● 在Appearance页中的Font Settings单击“Change…”按钮设置字体
● 在Translation页中的“Received data assumed to be in which character set:”下的下拉列表中选“UTF-8”。
3.保存当前会话配置
● 在Session页中的Saved Sessions下的文本框中起一个名字,如“CentOS”。
● 单击右边的“Save”按钮。
步骤3:保存会话之后就可以用双击会话名的方法登录远程主机了,如双击会话名“CentOS”,如图3-2所示。
图3-2 双击会话名连接远程CentOS系统
步骤4:如果是第一次连接远程系统,putty会提示在本地主机上没有远程系统的公共密钥,询问用户是否要继续连接,如图3-3所示单击“是”继续。
步骤5:建立与远程主机的连接之后,输入用户名和口令登录系统,如图3-4所示。
图3-3 确认与远程系统建立连接
图3-4 登录远程系统
至此用户已经通过putty成功登录到服务器,下面用户就可以如同在服务器控制终端上一样执行各种命令进行系统管理了。
3.1.4 系统运行级别与关机
系统运行级别
Linux系统在任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务各不相同,所要完成的工作和所要达到的目的也不一样。CentOS设置了如表3-1所示的运行级,并且系统可以在这些运行级别之间进行切换,以完成不同的工作。
表3-1 Linux系统的运行级及说明
如果系统启动后进入字符登录界面,则说明系统默认的运行级别为3;如果系统启动后进入图形登录界面,则说明系统默认的运行级别为5。
如果已经启动了字符界面,用户想要进入图形界面可以使用如下命令切换:
$ startx &
查看和切换运行级
用户可以使用如下的命令查看当前系统的运行级:
$ runlevel
用户可以使用如下的命令切换运行级:
# init [0123456Ss]
在init命令后有一个参数,此参数是要切换到的运行级的代号,如:
● init 0命令表示切换至运行级别0,即关机。
● init 1命令表示切换至运行级别1,即进入单用户运行模式。
● init 6命令表示切换至运行级别6,即重新启动。
你也可以使用telinit命令,在CentOS中,telinit命令是init命令的符号链接。
下面看一个使用runlevel和init命令的例子。
## 显示系统当前运行级别 # runlevel N 3 ## 系统当前的运行级别为“3”,没有上一次运行级别(用“N”表示) # init 2 ## 执行“init 2”命令后会在系统控制台中显示相应的停止启动服务信息 # runlevel 3 2 ## 系统当前运行级别已经为“2”,上一次的运行级别为“3”,转换运行级别成功
关机与重启命令
系统的关机和重新启动,实际上是进行运行级别的切换。此时可以使用init命令进行关机和重启,命令init用于立即关机或重启,但是在多用户系统中,若想给用户发送关机警告信息以便各个用户完成自己的工作并注销登录,则必须使用shutdown、halt和reboot等命令。
在多用户环境下,通常使用shutdown命令关闭和重新启动系统。shutdown命令能够以一种比较安全的方式来关闭系统,所有登录到系统上的用户将被通知系统将要关闭,而新的登录操作将被阻止;同时所有的进程也将被通知系统将要关闭,这样有些程序,如Vi就能够及时保存用户编辑的文件并退出。
shutdown命令的格式为:
shutdown [参数] time [warning-message]
其中:
● time用于设置多长时间后执行shutdown指令,可以使用如下三种格式。
➢ hh:mm :指定绝对时间,hh用于指定小时,mm用于指定分钟。
➢ +m :指定相对时间,m为数字,单位为分钟。
➢ now :现在立刻进行,相当于+0。
● warning-message用于设置发给用户的警告信息。
常用参数如下:
● -t sec :送出警告信息和删除信息之间要延迟多少秒再通知init执行运行级切换。
● -k :并不真的关闭系统,只是给每个用户发送警告信息。
● -r :关闭之后重新启动系统。
● -h :关闭之后停止系统。
● -f :重新启动后不用fsck检查磁盘。
● -F :重新启动后强制用fsck检查磁盘。
请见如下命令示例。
## 警告所有用户系统将在5分钟后重新启动系统 # shutdown -r +5 "System will be reboot in 5 ms, Please save your work.” ## 立即关闭系统 # shutdown -h now ## 立即重新启动系统,并在重新启动后强制用fsck检查磁盘 # shutdown -h -F now
3.2 Shell和命令操作基础
内容提要
1.熟悉Shell及其功能。
2.熟悉Shell的元字符。
3.熟悉命令行格式。
4.学会使用命令帮助。
3.2.1 Shell简介
什么是Shell
● Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器)。
● Shell接收用户输入的命令并把它送入内核去执行。
● Shell起着协调用户与系统的一致性和在用户与系统之间进行交互的作用。
Shell在Linux系统中具有极其重要的地位,如图3-5所示。
图3-5 Shell在Linux系统中的地位
Shell的功能
Shell最重要的功能是命令解释,从这种意义上说,Shell是一个命令解释器。Linux系统中的所有可执行文件都可以作为Shell命令来执行。Linux系统上可执行文件的分类见表3-2。
表3-2 Linux系统中的可执行文件
图3-6描述了Shell是如何完成命令解释的。
当用户提交了一个命令后,Shell首先判断它是否为内置命令,如果是就通过Shell内部的解释器将其解释为系统功能调用并转交给内核执行;若是外部命令或实用程序就试着在硬盘中查找该命令并将其调入内存,再将其解释为系统功能调用并转交给内核执行。在查找该命令时有两种情况:
1.如果用户给出了命令的路径,Shell就沿着用户给出的路径进行查找,若找到则调入内存,若没找到则输出提示信息。
2.如果用户没有给出命令的路径,Shell就在环境变量PATH所制定的路径中依次查找命令,若找到则调入内存,若没找到则输出提示信息。
图3-6 命令解释过程
提示:
1.内置命令是包含在Shell自身当中的,在编写Shell的时候就已经包含在内了,当用户登录系统后就会在内存中运行一个Shell,由其自身负责解释内置命令。一些基本的命令如cd、exit等都是内置命令。用help命令可以查看内置命令的使用方法。
2.外部命令是存在于文件系统某个目录下的具体的可执行程序,如文件拷贝命令cp,就是在/bin目录下的一个可执行文件。用man或info命令可以查看外部命令的使用方法。外部命令也可以是某些商业或自由软件,如mozilla等。
此外,Shell还具有如下的一些功能:
● 通配符
● 命令补全、别名机制、命令历史
● 重定向
● 管道
● 命令替换
● Shell编程语言
Shell的主要版本
表3-3列出了几种常见的Shell版本。
表3-3 常见的shell版本
Shell元字符
在Shell中有一些具有特殊的意义字符,称为Shell元字符(Shell Metacharacters)。若不以特殊方式指明,Shell并不会把它们当做普通文字符使用。
表3-4简单介绍了常用的Shell元字符的含义。
表3-4 常用的shell元字符及含义
3.2.2 命令操作基础
目录和文件名的命名规则
在Linux下可以使用长文件或目录名,也可以给目录和文件取任何名字,但必须遵循下列的规则:
● 除了/之外,所有的字符都可以用于目录和文件名。
● 有些字符最好不用,如空格符、制表符、退格符和字符:?,@ # $ & () \ | ;'" < >等。
● 避免使用+、-或.来作为普通文件名的第一个字符。
● 大小写敏感。
● 以“.”开头的文件或目录是隐含的。
命令基本格式
Shell命令的一般格式为:
cmd [options] [arguments]
其中:
● cmd是命令名。
● options是选项。
● arguments是参数,也即操作对象。
说明:
● 最简单的Shell命令只有命令名,复杂的Shell命令可以有多个选项和参数。
● 选项和参数都作为Shell命令执行时的输入,它们之间用空格分隔开。
● 单字符参数前使用一个减号(-),单词参数前使用两个减号(--)。
● 多个单字符参数前可以只使用一个减号。
● 操作对象(arguments)可以是文件也可以是目录,有些命令必须使用多个操作对象,如cp命令必须指定源操作对象和目标操作对象。
● 并非所有命令的格式都遵从以上规则,例如dd、find等。
以下是一些命令示例:
$ ls $ ls -lRa /home $ cat abc xyz $ ls --help
具有以上格式的字符串习惯地称为命令行,命令行是用户与Shell之间对话的一个基本单位。
通配符
通配符主要为了便于用户描述目录或文件而使用。常用的通配符如下。
● *:匹配任何字符和任何数目的字符。
● ?:匹配单一数目的任何字符。
● [ ]:匹配[ ]之内的任意一个字符。
● [! ]:匹配除了[! ]之外的任意一个字符,!表示非的意思。
警告:1.“*”能匹配文件或目录名中的“.”。
2.“*”不能匹配首字符是“.”的文件或目录名。
通配符在指定一系列的文件名时非常有用,下面列举一些例子来说明通配符的使用。
● ls *.c :列出当前目录下的所有C语言源文件。
● ls /home/*/*.c :列出/home目录下所有子目录中的所有C语言源文件。
● ls n*.conf :列出当前目录下的所有以字母n开始的conf文件。
● ls test?.dat :列出当前目录下的以test开始的,随后一个字符是任意的.dat文件。
● ls [abc]* :列出当前目录下的首字符是a或b或c的所有文件。
● ls [!abc]* :列出当前目录下的首字符不是a或b或c的所有文件。
● ls [a-zA-Z]* :列出当前目录下的首字符是字母的所有文件。
3.2.3 获得命令帮助
使用man命令获得帮助
在系统中,用户可以非常容易的获得系统地帮助和支持,系统发行版本中为几乎每个程序、工具、命令或系统调用编制了使用手册。要想查看某个命令的使用手册页,只要输入man后面跟该命令的名称即可。例如,输入如下命令将显示如图3-7所示的界面。
$ man ls
在此界面中可以查看有关ls命令的详细使用说明。用户可以使用↑、↓和PgDn、PgUp键进行翻阅,按q键退出。
一般来说,命令的使用手册页中会包括如表3-5中所示的组成信息。
表3-5 命令使用手册页中的组成
图3-7 使用man获得命令帮助
另外,根据内容的不同可将手册页分为不同的类型,不同类型用一个数字(或字母)代表,各种类型的含义如表3-6所示。
表3-6 命令使用手册页的类型
手册页按照不同的类型被存放在系统不同的目录下(/usr/share/man/man[1..9])。例如,使用如下命令可以查看passwd命令的使用方法。
$ man 1 passwd
使用如下命令可以查看passwd配置文件的描述信息
$ man 5 passwd
使用info命令获得帮助
texinfo是Linux系统中提供的另一种格式的帮助信息,它与手册页相比具有更强的交互性,如支持连接跳转功能等。通常使用info命令查看texinfo格式的帮助文档(info文档存放在“/usr/share/info/”目录中)。例如,输入如下命令将显示如图3-7所示的界面。
$ info ls
图3-7 使用info获得命令帮助
用户可以使用↑、↓和PgDn、PgUp键进行翻阅,按q键退出。另外,用户可以使用Ctrl+H键进入info命令的帮助屏幕,学习info命令的更详细的使用方法。