一、Linux图形界面
1.X Window System(C/S)模式
Linux内核借助X Windows服务器为客户端提供桌面环境(GNOME、KDE等)。X Client是操作系统窗口功能的一些应用程序,没办法直接影响窗口和显示,只能想X Server请求来完成。X Server是一个普通应用程序,一套显示设备只有一个负责响应请求。
X Server和X Client可能位于同一台计算机上,也可能位于不同计算机上,需要通过网络进行通信,由相关协议提供支持。
总的来说,X Client将希望显示的图形发送到X Server,X Server将图像显示到显示器上,同时提供鼠标键盘的输入服务。
2.窗口管理器
窗口管理器(Window Manager)是X Server上运行的应用程序,控制窗口外观,提供与用户交互方法(管理键盘和鼠标焦点)。
3.显示管理器
图形界面让用户登录到系统由显示管理器(Display Manager)启动,包括X Server。如果关闭了显示管理器可以由命令startx
启动X Server
4.Widget库
图形用户界面的编程接口。程序员不懂X Server语言可以由这个库开发用户界面、按钮、菜单、滚动条等,之后提交给X Server。
5.桌面环境
桌面环境(Desktop Environment)包括一个整体的环境:应用程序,窗口管理器,登陆管理器,设置界面等,他将除X Server以外的各种与X有关组件整合起来,呈现出图形界面(工具条、面板等都是程序),图形界面输出由X Server实现。
目前主流Linux桌面环境包括GNOME(GNU网络对象模型环境)、KDE(K桌面环境)、Ubuntu默认Unity桌面环境。
二、Linux命令行界面
1.仿真终端窗口
图形界面里的终端是一个仿真终端应用程序。界面中显示的提示符格式如下:
当前用户名@主机名 当前目录 命令提示符(普通用户命令提示符为$超级管理员为#)
2.文本模式
如果没有装X Window和桌面环境,只能进入文本模式。Linux允许同时打开六个虚拟控制台(tty1~tty6),每个控制台可以让不同用户身份登录。每个控制台有一个设备特殊文件与其关联,文件名即tty加上序号,不管当前正在使用哪个控制台系统信息都会发送到tty0上。
在Ubuntu图形界面中可按组合键<Ctrl><Alt><F(n)>
(其中F(n)为F1到F6分别代表1~6号控制台)切换到文本控制台界面,在文本控制台界面中按组合键<Ctrl>+<Alt>+<F7>
回到图形界面。例如,按组合键<Ctrl>+<Alt>+<F1>
进入1号控制台,分别输入用户名和口令(密码),就可以登录到Linux系统。
注销就是退出某个用户的会话,是登录操作的反向操作。注销会结束当前用户的所有程,但是不会关闭系统,也不影响系统上其他用户的工作。注销当前登录的用户的目的是为了以其他用户身份登录系统。 在文本模式下执行logout或exit命令即可注销。
三、Linux命令行使用
基本格式:提示符 命令 选项 参数
(由空格或者制表符隔开)。命令行是严格区分大小写的,有的参数是可以不带任何选项与参数的。
选项前有一个“-”连字符,例如xxx@Linux:~$ ls -a
。多个选项时还可以简化输入ls -l -a
简化为ls -la
。不过多个字符组成的选项(的名称)就没法简写,前面必须有“-”如-directory
。
参数一般是命令的操作对象,例如不带参数的ls
命令列出当前目录下的文件和目录,而xxx@Linux:~$ ls /home/test
是列出指定目录的。
通常选项位于参数前。
1.调用历史命令
默认情况bash存储1000个历史命令。按上下箭头可以查看。如果命令非常多,可以使用history列出最近使用过的所有命令,显示的结果也非常友好是历史命令加上数字编号。如果要执行其中某一条历史命令可以输入“!编号”。
2.自动补全命令
bash有命令自动补全,输入命令或者文件名的一部分按<Tab>
可以补全剩余。如果补不全就再按一次,获得与输入部分匹配的命令或文件名列表,自己选。好处是减少不必不要的错误输入。
3.命令行续行
前面一篇博客提到过一行多个命令用“;”隔开。那么一个命令输入几行可以用“\”反斜杠将一个命令持续到下一行。
4.输入重定向
Shell打开的标准输入文档(stdin)一般对应终端键盘。如果要让输入源来自文件命令 < 文件名
。举个例子,wc命令统计文件行数、字数、字符数。如果执行不带参数的wc,用户输入命令按<Ctrl><D>
表示提交一个文件结束符以结束键盘输入,于是对输入内容进行统计。而xxx@Linux:~$ wc < /ect/protocols
将统计指定文件的。
5.输出重定向
Shell程序通常自动打开标准输出文档(stdout)和标准错误输出文档(stderr)。要将显示到屏幕上的东西保存至指定文件中则命令 > 文件名
例如ls > /home/test
(没有该文件夹将新建一个)。如果是追加到指定文件末尾可用ls >> /home/test
。如果是标准错误输出重定向,将>改为2>,>>改为2>>。如果两个同时重定向&>。
6.管道
管道用于将一个命令的输出作为另一个命令的输入,符号“|”连接命令。例如将ls命令输出结果交给grep命令搜索ls | grep "ab"
。对于输出内容较多的命令可以通过管道使用more命令分页例如cat /ect/log/message | more
7.命令替换
前一篇博客说过,反引号内的会先计算,并将结果带入命令行中。命令替换就是将一个命令的输出作为另一个命令的参数,由反引号实现。
8.执行脚本
执行脚本前要将Shell脚本权限设置为可执行的,直接编辑生成的脚本是没有执行权限的。用chmod命令,例如chmod +x 某脚本名
四、vi编辑器使用
Ubuntu使用的版本是vim相当于vi增强版。在命令行中输入vi
进入vi编辑器。如果没指定文件,保存时会要求给出,如果指定文件不存在,保存时将以这个命名。
刚进入vi处于命令模式,需要输入字符进入插入模式。
1.插入模式
a: 从当前光标位置右边开始输入下一字符。
A: 从当前光标所在行的行尾开始输入下一字符。
i: 从当前光标位置左边插入新的字符。
I: 从当前光标所在行的行首开始插入字符。
o: 从当前光标所在行新增一行并进入插入模式,光标移到新的一行行首。
O: 从当前光标所在行上方新增一行并进入插入模式,光标移到新的一行行首。
从插入模式切换到命令模式,只需按<ESC>
键。
命令模式下输入“:”切换到末行模式,从末行模式切换到命令模式,也需按<ESC>
键。
如果不知道当前处于哪种模式,可以直接按<ESC>
键确认进入命令模式。
2.移动光标
vi可以直接用键盘上的光标键来上下左右移动,但正规的vi的用法是用小写英文字母h、i、k、1,分别控制光标左、下、上、右移格(9j表示向下移动9行)。常用的光标操作还有以下几种情况。
●按<CtrI>+<b>
键 上翻一页, 按<Ctrl>+<f>
键 下翻一页。
●按0
键移到光标所在行行首,按$
键移到该行开头,按w
键光标跳到下个单词开头。
●按G
键移到文件最后一行,再按nG
键(n为数字,下同),移到文件第n行,gg
移动到文件第一行。
●f{char}
正向移动到下一个char字符所在位置。
●+
光标移动到非空格符的上一行,-
光标移动到非空格符的上一行。
●H
移动到屏幕最上方那一行的第一个字符,L
屏幕最下方。
●nEnter
光标下移N行。
3.删除
- 字符删除:按
x
键向后删除一个字符;按nx
键,向后删除n
个字符(相当于Del
键)。X
删除光标所在前一个字符,相当于Backspace
键。 - 行删除:按
dd
键删除光标所在行;按ndd
键,从光标所在行开始向下删除n行。4.复制与粘贴
删除和复制的内容都将放到内存缓冲区。
进行大段文字复制时输入命令v
进入可视选择模式。字符复制:按y键复制光标所在字符,按yw复制光标所在处到字尾的字符。 行复制:按yy键复制光标所在行;按nyy键,复制从光标所在行开始往下的n行。 使用命令p将缓冲区内的内容粘到光标所在位置。 u撤销前一个命令。
5.查找字符串
- /关键字:先按/键,输入要寻找的字符串,再按回车键向下查找字符串。
- ?关键字:先按?键,输入要寻找的字符串,再按回车键向上查找字符串。
6.撤销或重复操作
如果误操作一个命令,按u
恢复到上一次操作。按键.
可以重复上一次操作。
7.保存文件和退出vi
保存文件和退出vi要进入末行模式才能操作(“:”切换到末行模式)。
● :w filename
将文件存入指定的文件名filename。
● :wq
将文件以当前文件名保存并退出vi编辑器。
● :w
将文件以当前文件名保存并继续编辑。
● :q
退出vi编辑器。
● :q!
不保存文件强行退出vi编辑器
在末行模式下还可执行以下操作(8,9,10,11)。
8.列出行号
输入set nu按回车键,在文件的每一行前面都会列出行号。
9.跳到某一行
输入数字,再按回车键,就会跳到该数字指定的行。
10.替换字符串
输入“范围/字符串1/字符串2/g”,将文件中指定范围字符串1替换为符串2,g表示替换不必确认;如果g改为c,则在替换过程中要求确认是否替换。范围使用“m,ns’的形式表示从m行到n行。对于整个文件,则可表示为“1,$s”。
11.多文件操作
要将某个文件内容复制到另一个文件中当前光标处,可在末行模式执行命令:r filename
将filename的内容贴进来。要同打开多个文件,启动v时加上多个文件名,如:vi filename1 filename2
。打开多个文件之后,在末行模式下可以执行命令:next
和:previous
在文件之间切换。