学习笔记-图形界面与命令行

2.图形界面与命令行

2.1 Linux图形界面

2.1.1 X Window System

X Window System 本身基于客户/服务器(C/S)模式,具有网络操作的透明性如图所示:

X Window Systems由以下3部分构成。

  • X Server:响应X Client程序的"请求",建立窗口以及在窗口中会出图形和文字。每一套显示设备只对应一个唯一的X Server。X Server只是一个普通的应用程序。

  • X Client:作为X Server的客户端,向X Server发出请求以完成特定的窗口操作。X Client无法直接影响窗口或显示,只能请求X Server来完成。X Client是使用操作系统窗口功能的一些应用程序。

  • 通信通道:负责 X Server与X Client之间的通信。X Server和X Client可能位于统一计算机上,也可能位于不同的计算机上,这需要通过网路进行通信,由相关网络协议提供支持。

X Client将希望显示的图形发送到X Server,X Server将图形显示在显示器上,同时为X Client提供鼠标、键盘的输入服务。

2.1.2 窗口管理器(Window Manager)

X Window System只是提供了建立窗口的一个标准,具体的窗口形式由窗口管理器决定。窗口管理器是X Window System的组成部分,用来控制窗口的外观,并提供与用户交互的方法。作为在X Server上运行的应用程序,窗口管理器为用户提供操作窗口程序的方法,主要用于管理应用程序窗口,如窗口移动、缩放、开关等,当然还要管理键盘和鼠标。

2.1.3 显示管理器(Display Manager)

显示管理器提供图形界面用户登录,用于验证用户身份,让用户登录到系统。图形页面由显示管理器启动,包括X Server。可以选择关闭显示管理器,通过命令行运行startx命令(或使用登录脚本)来启动X Server。系统启动之后第一个要启动的X Client程序是DM,DM也是一类软件,如XDM、KDM、GDM。

2.1.4 Widget库

Widget库定义一套图形用户界面的编程接口。应用程序开发人员通过调用该库来实现具体的用户界面,包括按钮、文本框、菜单、滚动条等。程序员不需要理解X Server的语言,由Widget库讲调用提价给X Server即可。

2.1.5 桌面环境(Desktop Environment)

对于使用操作系统图形环境的用户来说,仅有窗口管理器提供的功能是不够的。为此,开发人员在窗口管理器的基础上,增加各种功能和应用程序,提供更为完善的图形用户环境,这就是桌面环境。作为一个整体的环境,它包括应用程序、窗口管理器、登录管理器、桌面程序、设置界面等。桌面环境将除X Server以外的各种与X有关的部件整合起来,用于呈现整个图形界面,不过图形输出处理却是由后台的X Server实现的。

2.1.6 Unity桌面环境

Unity是基于GNOME桌面环境的用户界面,由Canonical公司开发,主要用于Ubuntu操作系统。Ubuntu原来使用的是完整GNOME桌面环境。由于创始人MarkShuttleworth对用户体验的理念与GNOME团队不同,从Ubuntu 11.04起,Ubuntu使用Unity作为默认的用户界面,但Ubuntu仍然可以通过PPA(个人软件包档案)来安装GNOME。

2.2 Linux命令行界面

2.2.1使用仿真终端窗口

可以在Ubuntu图形界面中使用终端来执行命令行操作。该终端是一个终端仿真应用程序,提供命令行工作模式。在Ubuntu系统快捷方式里默认是没有终端图标的,可以使用如下的几种方法打开终端控制台

  • 使用组合键Ctrl+Alt+T。这个组合键适合Ubuntu的各种版本。

  • 在Dash中浏览搜索。浏览到“终端”程序,或者搜索“gnome-terminal”或“终端”,就可以找到终端应用程序。

  • 在文件系统中搜索“gnome-terminal”,找到对应的二进制文件(菱形图标),运行即可。也可以直接在/usr/bin目录下浏览查找该二进制文件。

打开之后界面中将显示一串提示符,由4部分组成:当前用户名@主机名 当前目录 命令提示符

普通用户登录后,命令提示符为$;超级管理员root用户登录后,命令提示符为#。

2.2.2 使用文本模式

没有安装X Window和桌面环境的Linux系统只能进入文本模式。已经安装X Window和桌面环境的Linux系统则可以通过修改配置,是使用系统引导时进入文本模式。Ubuntu桌面版启动后直接进入图形界面,然后可以根据需要切换到文本模式,此时需要登录到Linux系统。

2.2.3 使用命令行关闭和重启系统

linx@ubuntu:~$ reboot    			普通用户重启
linx@ubuntu:~$ shutdown -r			普通用户重启
linx@ubuntu:~$ shutdown -h now		 普通用户立刻关机
linx@ubuntu:~$ poweroff				普通用户关机
linx@ubuntu:~$ halt -p				普通用户停止进程,保存文件,停止内核运行,关闭电源。
linx@ubuntu:~$ shutdown +10 "System will shutdown after 10 minutes"		普通用户10分钟后关机
linx@ubuntu:~$ shutdown -c			普通用户取消关机
需要使用root权限必须使用sudo命令。
linx@ubuntu:~$ sudo reboot  	使用root权限的重启
[sudo] linx 的密码: 

2.3 Shell基础

2.3.1 什么是Shell

在Linux中Shell就是外壳的意思,是用户和系统交互的接口

实际上Shell是一个命令解释器,拥有自己内建的Shell命令集。用户在命令提示符下输入的命令都由Shell先接收并进行分析,然后在传给Linux内核执行。结果返回给Shell,由它在屏幕上显示。不管命令执行结果成功与否Shell总是再次给出命令提示符,等待用户输入下一个命令。

Shell同时又是一种程序设计语言,允许用户编写由Shell命令组成的程序,这种程序通常成为Shell脚本(Shell sctipt)或命令文件。Shell具有普通编程语言的很多特点,简单易学,任何Linux命令都可以编入可执行的Shell程序中。

总的来说,Linux Shell主要提供以下几种功能。

  • 解释用户在命令行提示输入的命令。这是最主要的功能。

  • 提供个性化的用户环境,通常由Shell初始化配置文件(如.profile、.login等)实现。

  • 编写Shell脚本,实现高级管理功能。

Shell有多种版本,按照来源可以分为两大类型。一类是由贝尔实验室开发的,以Bourne Shell(sh)为代表,此类兼容的有Bourne-Agian Shell(bash)、Korn Shell(ksh)、Z Shell(zsh)。另一类是由加州大学伯克莱分校开发的,以C Shell(csh)为代表,与之兼容的由TENEX C Shell(tcsh)。

2.3.2 使用Shell

linx@ubuntu:~$ echo $SHELL
/bin/bash

Ubuntu默认使用的Shell程序是bash。使用上面的命令可以查看当前使用的Shell类型,bash是Bourne Again Shell的缩写,是Linux标准的默认Shell,操作和使用非常方便。它基于Bourne Shell,吸收了C Shell和Korn Shell的一些特性。bash是sh的增强版本,完全兼容sh,也就是说,用sh写的脚本可以不加修饰地在bash中执行。

2.3.3 正则表达式

正则表达式(Regular Expression,RE)是一种可以用于模式匹配和替换的工具。通过正则表达式,Shell可以使用一系列的特殊字符构建匹配模式,然后将匹配模式与待比较字符串或文件进行比较,根据比较对象中是否包含匹配模式,执行相应的程序。

通配符

  • *(星号):表示任何字符串。例如,*log*表示含有log的字符串。

  • ?(问好):表示单个字符串。例如,a?b表示由a、任意字符和b组成的字符串。

  • [](一对方括号):表示一个字符序列,字符序列可以直接包括若干字符,例如[abc]表示a、b、c之中的任一字符,也可以是由“-”连接起止字符形成的序列,例如:[abc-fp]表示a、b、c、d、e、f、p之中的任一字符。除连字符“-”之外,其他特殊字符在[]中都是普通字符,包括*和?。

  • !(感叹号):在[]中使用!表示排除其中任意字符,如[!ab]表示不是a或b的任一字符。

  • ^(幂符号):只在一行的开头匹配字符串。如执行命令ls -l .^d” 将显示所有的目录。

  • $(美元符号):只在行尾匹配字符串,它放在匹配单词的后面。例如,linux$表示以单词linux结尾的所有文件。

模式表达式

  • *:匹配任意多个模式。例如,file*(.c|.o)匹配文件file.c、file.o、file.c.o、file.c.c、file.o.c、file等。
  • +:匹配1个或多个模式。例如,file+(.c|.o)匹配文件file.c、file.o、file.c.o、file.o.c等,但不匹配file。
  • ?:匹配模式表中任何一种模式。例如,file?(.c|.o)只匹配file.o、file.c、file等,不匹配file.c.c、file.c.o等。
  • @:仅匹配模式表中一个给定模式。例如,file@(.c|.o)只匹配file.c和file.o,但不匹配file、file.c.c、file.c.o等。
  • !:除给定模式表中的一个模式之外,它可以匹配其他任何字符串。

2.3.4 Shell中的特殊字符

引号

  • (’)由单引号括起来的字符串视为普通字符串,包括空格、$、/、\等特殊字符。
  • (")由双引号括起来的字符串,除KaTeX parse error: Undefined control sequence: \、 at position 2: 、\̲、̲单引号和双引号仍作为特殊字符并…、\、单引号和双引号作为普通字符,在其前面加上转义字符\即可。
  • 还有一个特殊引号是反引号(`)。由反引号括起来的字符串被Shell解释为命令行,在执行时首先执行该命令行,并以它的标准输出结果代替该命令行(反引号括起来的部分,包括反引号)。

其他符号

  • #(注释)
  • \(跳转符号,将特殊字符或通配符还原成一般字符)
  • |(分隔两个管道命令)
  • ;(分隔多个命令)
  • /~(用户的主目录)
  • $(变量前需要加的变量值)
  • &(将该符号前的命令放到后台执行)

2.3.5 环境变量

使用env命令可显示所有的变量环境

linx@ubuntu:~$ env
  • PATH(可执行命令的搜索路径)
 linx@ubuntu:~$ echo $PATH 
  • HOME(用户主目录)
 linx@ubuntu:~$ echo $HOME 
  • LOGNAME(当前用户的登录名)
 linx@ubuntu:~$ echo $LOGNAME 
  • HOSTNAME(主机名)
 linx@ubuntu:~$ echo $HOSTNAME
  • PS1(当前命令提示符)
 linx@ubuntu:~$ echo $PS1 
  • SHELL(用户当前使用的Shell)
 linx@ubuntu:~$ echo $SHELL 

修改环境变量

linx@ubuntu:~$ echo $HISTSIZE
1000
linx@ubuntu:~$ HISTSIZE=1010
linx@ubuntu:~$ echo $HISTSIZE
1010
linx@ubuntu:~$ HISTSIZE=1000
linx@ubuntu:~$ echo $HISTSIZE
1000

2.4 Linux命令行使用

2.4.1命令语法格式

命令语法格式:提示符 命令 选项 参数

  • 选项,选项是包括一个或多个字母的代码,前面有一个“-”连字符,主要用于改变命令执行的动作。
  • 参数,参数通常是命令的操作对象,多数命令都可以使用参数。

2.4.2命令行基本用法

编辑和修改命令行

  • 命令行实际上是一个可编辑的文本缓冲区,在按回车之前,可以对输入的内容进行编辑,如删除字符、删除整行、插入字符。

调用历史命令

  • 按上、下箭头键,便可以在命令行上逐次显示已经执行过的命令,用户可以修改并执行这些命令
  • 可使用history命令列出最近用过的所有命令,在输入“!编号”来执行该编号的历史命令。

自动补全命令

  • 使用Tab键可获取与已输入部分匹配的命令或文件名列表,供用户从中选择。这个功能可以减少不必要的输入错误,非常使用。

一行多条命令和命令行续行

  • 可在一个命令行中使用多个命令,用分号“;”将各个命令隔开。
  linx@ubuntu:~$ ls -l;pwd
  • 用反斜杠“\”将一个命令行持续到下一行。
  linx@ubuntu:~$ ls -l \
  > -a

强制中断命令运行

  • 可以使用Ctrl+c强制中断当前运行的命令或程序。

获取联机帮助

  • 使用命令man显示联机手册,输入q即可退出man命令,基本用法如下:

    man [选项] 命令名或配置文件名

2.4.3 命令行输入与输出

输入重定向:主要用于改变命令的输入源,让输入不要来自键盘,而来自指定文件。

命令 < 文件名
# wc命令用于统计指定文件包含的行数、字数和字符数。
linx@ubuntu:~$ wc < /etc/protocols
  64  474 2932

输出重定向:主要用于改变命令的输出,让标准输出不要显示在屏幕上,而是写入到指定文件中。

命令 > 文件名

linx@ubuntu:~$ ls > /home/linx/myml.lst
#如果要写入已有文件,则将该文件重写(覆盖)。
linx@ubuntu:~$ ls >> /home/linx/myml.lst
#如果对于标准错误输出
linx@ubuntu:~$ ls 2> /home/linx/myml.lst
linx@ubuntu:~$ ls 2>> /home/linx/myml.lst
#如果将标准输出和标准错误输出重定向到同一文件
linx@ubuntu:~$ ls &> /home/linx/myml.lst

管道:用于将一个命令的输出作为另一个命令的输入,使用符号“|”来连接命令。

命令1|命令2······|命令n
#将ls命令输出的结果提交给grep命令进行搜索
linx@ubuntu:~$ ls | grep "a"
snap
VMwareTools-10.3.22-15902021.tar.gz
vmware-tools-distrib
#在执行输出内容较多的命令时可以通过管道使用more命令进行分页显示。
linx@ubuntu:~$ cat /home/linx/myml.lst | more
公共的
模板
视频
图片
文档
下载
音乐
桌面
etc
myml.lst
snap
VMwareTools-10.3.22-15902021.tar.gz
vmware-tools-distrib
公共的
模板
视频
图片
文档
下载
音乐
桌面
etc
myml.lst
snap
VMwareTools-10.3.22-15902021.tar.gz
vmware-tools-distrib

命令替换:命令替换与重定向有些类似,不同的是命令替换将一个命令的输出作为另一个命令的参数。

命令1 `命令2`

linx@ubuntu:~$ cd `pwd`

2.4.4 执行Shell脚本

执行Shell脚本最常用的方式是将Shell的权限设置为可执行,然后在提示符下直接执行它。直接编辑生成的脚本文件没有执行权限,如果要将Shell脚本直接当作命令执行,就需要利用命令chmod将它置为具有执行权限。

linx@ubuntu:~$ chmod +x example

2.5使用vi编辑器

作为管理员,往往要在文本模式下操作,这就需要熟练掌握文本编辑器。vi是一个功能强大的文本模式全屏编辑器,也是UNIX/Linux平台上最通用、最基本的文本编辑器,Ubuntu提供的版本为vim,vim相当于vi的增强版。掌握vi对于管理员是必须的。

vi操作模式

  • 命令模式(Command mode):输入的任何字符都作为命令(指令)来处理。

  • 插入模式(Insert mode):输入的任何字符都作为插入字符来处理。

  • 末行模式(Last line mode):执行文件级或全局性操作,如保存文件、退出编辑器、设置编辑环境等。

命令模式可以控制光标移动、行编辑(删除、移动、复制),输入相应的命令进入插入模式。插入模式的命令有以下6种:

  • a:从当前光标位置右边开始输入下一个字符
  • A:从当前光标所在行的行尾开始输入下一个字符
  • i:从当前光标位置坐标开始输入下一个字符
  • I:从当前光标所在行的行首开始插入字符
  • o:从当前光标所在行新增一行并进入插入模式,光标移到新的一行行首。
  • O:从当前光标所在行上方新增一行并进入插入模式,光标移到新的一行行首。

打开vi编辑器

linx@ubuntu:~$ vi

编辑文件

1)移动光标。

  • vi可以直接用键盘上的的光标键来上下左右移动,但正规的vi的用法使用h、j、k、l分别控制光标左、下、上、右。

  • Ctrl+b上一页,Ctrl+f下一页

  • 按0键移到光标所在行行首,按$键移到该行开头,按w键光标跳到下个单词开头。

  • 按G键移到文件最后一行,再按nG键(n为数字,下同),移到文件第n行。

2)删除

  • 字符删除:按x键向后删除一个字符;按nx键,向后删除n个字符。
  • 行删除:按dd键删除光标所在行;按ndd键,从光标所在行开始向下删除n行

3)复制

  • 字符复制:按y键复制光标所在字符,按yw复制光标所在处到字尾的字符。
  • 行复制:按yy键复制光标所在行;按nyy键,复制从光标所在行开始往下的n行。

4)粘贴

  • 删除和复制的内容都将放到内存缓冲区。使用命令p键将缓冲区内容粘贴到光标所在位置。

5)查找字符串

  • /关键字:向下查找字符串
  • ?关键字:向上查找字符串

6)撤销或重复操作

  • 如果误操作一个命令,按u恢复到上一次操作。

  • 按.键可以重复执行上一次操作。

保存文件和退出vi

  • :w filename 将文件存入指定的文件名filename。

  • :wq 将文件以当前文件名保存并退出vi编辑器。

  • :w 将文件以当前文件名保存并继续编辑。

  • :q 退出vi编辑器

  • :q! 不保存文件强行退出vi编辑器

  • qw 保存文件并退出vi编辑器

其他全局性操作

  • 列出行号:输入set nu
  • 跳到某一行:在末行模式下输入数字
  • 替换字符串:输入“范围/字符串1/字符串2/g”,将文件中指定范围字符串1替换为字符串2,g表示替换不必确认;如果g改为c,则在替换过程中要求确认是否替换。范围使用“m,ns”的形式表示从m行到n行,对于整个文件,则可表示为“1,$s”

多文件操作
要将文件某个文件内容复制到另一个文件中当前光标处,可在末行模式执行命令:r filename,filename的内容将粘贴进来。要同时打开过个文件,启动vi时加上多个文件名,如vi filename1 filenam2。打开多个文件之后,在末行模式下可以执行命令:next和:previous在文件之间切换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值