【Linux|Ubuntu Linux操作系统——图形界面与命令行】
文章目录
- Linux和Ubuntu
- 命令行界面
-
- 使用仿真终端窗口
- Shell基础
- 正则表达式
-
- 通配符
- 模式表达式
- Shell中的特殊字符
- Linux命令行的使用
-
- 命令行语法格式
- 命令行基本用法
- 命令行输入与输出
- 执行Shell脚本
- vi编辑器
-
- vi操作模式
- 打开vi编辑器
- 编辑文件
- 保存文件和退出vi
- 其他全局性操作
Linux和Ubuntu
- Linux是一种起源于UNIX,以可移植操作系统接口标准为框架而发展起来的操作系统
- Linux是一个内核,即一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件
- Linux采用分层设计,包括用户应用程序、操作系统服务、Linux内核和硬件系统。每层只能与它相邻的层通信,层次间具有从上到下的依赖关系,考上的层依赖下层,但靠下的层不依赖靠上的层。
- Linux版本分为两种:内核版本和发行版本。
- 内核版本:指内核小组开发维护的系统内核的版本号,分为实验版本和产品版本。内核版本的每一个版本号由4个部分组成:
主版本. 实验版本. 修订版本. - 附版本
- 发行版本:指配备基本应用程序的,集成的完整的操作系统。Debian是迄今为止完全遵循GNU规范的LInux系统,Ubuntu是其一个改版。
- 内核版本:指内核小组开发维护的系统内核的版本号,分为实验版本和产品版本。内核版本的每一个版本号由4个部分组成:
- Linux磁盘分区
- Linux使用单一的目录树结构,整个系统只有一个根目录
- 各个分区以挂载到某个目录的形式称为根目录的一部分
- Linux使用设备名称加分区编号来标明分区
- SCSI磁盘、SATA磁盘均可表示为
sd
,后用小写字母表示磁盘编号 - 磁盘编号后使用阿拉伯数字表示分区编号,主分区或扩展分区为1~4,逻辑分区从5开始
- 终端界面提示符格式:
当前用户名@主机名 当前目录 命令提示符
- 普通用户登陆后,命令提示符为
$
- 超级用户登录后,命令提示符为
#
- 普通用户登陆后,命令提示符为
- Linux是一个真正的多用户操作系统,可以同时接受多个用户登录,而且允许一个用户进行多次登录
- Linux和UNIX一样,提供虚拟控制台(Virtual Console)的访问方式,允许用户在同一时间从控制台多次登录
- 直接在Linux计算机上的登录称为从控制台登录
- 使用talent、SSH等工具通过网络登录到Linux主机称为远程登录
- Linux允许用户同时打开六个虚拟控制台进行操作,不管当前正在使用哪个虚拟控制台,系统信息都会发送到该控制台上
- 为安全起见,用户输入的口令(密码)不在屏幕上显示
- 在Linux中,Shell是外壳的意思,是用户和系统交互的接口,他接受用户输入的命令并将其送到内核去执行。Ubuntu中默认使用的Shell程序是
bash
,使用一下命令可以查看当前使用Shell类型:~$ echo $SHELL
- Shell是一个命令解释器,拥有自己内建的Shell命令集
- Shell又是一种程序设计语言,运行用户编写由Shell命令组成的程序,通常称为Shell脚本(Shell script)或命令文件
- Linux Shell的主要功能:
- 解释用户在命令行提示符下输入的命令
- 提供个性化的用户环境
- 编写Shell脚本,实现高级管理功能
- Regular Expression(RE)是一种可以用于模式匹配和替换的工具
- Shell可以通过利用正则表达式使用一系列的特殊字符构建匹配模式,然后将匹配模式与待比较字符串或文件进行比较,执行相应程序
用于模式匹配,如字符串查找、文件名匹配与搜索等。常用的有以下六种:
*
(星号):表示任何字符串,如*log*
表示含有log的字符串?
(问号):表示任何单个字符串[]
(一对方括号):表示一个字符序列,字符序列可以直接包含若干字符,例如[abc]
表示a、b、c中的任一字符。也可以是由-
连接起止字符形成的序列。除-
外,其他特殊字符在[]
中都是普通字符!
(感叹号):在[]
中使用表示排除其中任意字符^
(幂符号):只在一行的开头匹配字符串$
(美元符号):只在行尾匹配字符串
模式表达式是那些包含一个或多个通配符的字符串,各模式之间以竖线|
分开。bash除支持上述通配符外,还提供了以下特有的扩展模式匹配表达式。
*
:匹配任意多个模式。例如file*(.c|.o)
匹配文件file.c、file.o、file.c.o、file.c.c、file.o.c,file等,但不匹配file.h、 file.s等。+
:匹配1个或多个模式。例如,file+(.c|.o)
匹配文件 file.c、file.o、file.o.c、file.c.o等,但不匹配file。?
:匹配模式表中任何一种模式。例如,file?(.c|.o)
只匹配file、file.c、file.o等,不匹配file.c.c、 file.c.o等。@
:仅匹配模式表中一个给定模式。例如,file@(.c|.o)
只匹配 file.c和 file.o,但不匹配file,file.c.c、file.c.o等。!
:除给定模式表中的一个模式之外,它可以匹配其他任何字符串。
在实际使用时,模式表达式可以递归,即每个表达式中都可以包含一个或多个模式。例如,Shell中的特殊字符file*(.[cho]|.sh)
是合法的模式表达式。
- 引号
- 在 Shell 中的引号有3种,即单引号、双引号和反引号
- 由单引号
'
括起来的字符串视为普通字符串,包括空格、$、1、N
等特殊字符 - 由双引号
"
括起来的字符串,除$、l、'和"
仍作为特殊字符并保留其特殊功能外,其他都视为普通字符对待 \
是转义符,Shell不会对其后面的那个字符进行特殊处理,要将$、\、'和"
作为普通字符,在其前面加上转义符\
即可- 特殊引号是反引号(`)。由反引号括起来的字符串被Shell解释为命令行,在执行时首先执行该命令行,并以它的标准输出结果替代该命令行(反引号括起来的部分,包括反引号)
- 其他符号
#
(注释)\
(跳转符号,将特殊字符或通配符还原成一般字符)|
(分隔两个管道命令);
(分隔多个命令)/~
(用户的主目录)$
(变量前需要加的变量值)&
(将该符号前的命令放到后台执行)
Linux命令包括内部命令和程序(相当于外部命令)。命令行语法格式
内部命令包含在Shell内部,而程序是存放在文件系统中某个目录下的可执行文件。
- Shell提示符(管理员为#,普通用户为$),输入命令必须遵循一定的语法规则
- 输入的第1项:一个命令的名称
- 输入的第2项:命令的选项(Option)或参数(Arguments ),各项之间必须由空格或TAB制表符隔开
- 格式如下:
提示符 命令 选项 参数
- 有的命令不带任何选项和参数。Linux 命令行严格区分大小写
- 选项:选项是包括一个或多个字母的代码,前面有一个
-
连字符,主要用于改变命令执行动作的类型。- 使用一个命令的多个选项时,可以简化输入。例如,将命令ls -l-a简写为 ls -la。
- 对于由多个字符组成的选项(长选项格式),前面必须使用
-
符号,如1s -directory o
- 参数:参数通常是命令的操作对象,多数命令都可使用参数。使用多个参数的命令必须注意参数的顺序。有的命令必须带参数。同时带有选项和参数的命令,通常选项位于参数之前。
- 编辑修改命令行
- 调用历史命令
可使用history
命令列出最近用过的所有命令,显示结果中为历史命令加上数字编号,如果要执行其中某一条命令,可输入!编号
来执行该编号的历史命令。 - 自动补全命令
bash具有命令自动补全功能,当用户输入了命令、文件名的一部分时,按键就可将剩余部分补全,如果不能补全,再按一次键就可获取与已输入部分匹配的命令或文件名列表,供用户从中选择。 - 一行多条命令和命令行续行
可在一个命令行中使用多个命令,用分号;
将各个命令隔开。例如:ls -l; pwd
。也可在几个命令行中输入一个命令,用反斜杠\
将一个命令行持续到下一行。例如ls -l -a \
- 强制中断命令运行
在执行命令的过程中,可使用组合键+强制中断当前运行的命令或程序。 - 获得联机帮助
Linux系统安装有联机手册(Man Pages ),使用命令man
显示联机手册,基本用法如下:man [选项] 命令名或配置文件名
与DOS类似,Shell程序通常自动打开3个标准文档:标准输入文档( stdin )、标准输出文档(stdout)和标准错误输出文档(stderr )
其中stdin
一般对应终端键盘,stdout
和stderr
对应终端屏幕。
进程从stdin
获取输入内容,将执行结果信息输出到stdout
,如果有错误信息,同时输出到stderr
。
- 输入重定向
主要用于改变命令的输入源,让输入不要来自键盘,而来自指定文件。
基本用法:命令 < 文件名
- 输出重定向
主要用于改变命令的输出,让标准输出不要显示在屏幕上,而是写入到指定文件中。
基本用法:命令 > 文件名
如果要写入已有文件,则将该文件重写(覆盖)。要避免重写破坏原有数据,可选择追加功能,将>
改为>>
至于标准错误输出的重定向,只需要换一种符号,将>
改为2>
,将>>
改为2>>
。将标准输出和标准错误输出重定向到同一文件,则使用符号&>
。 - 管道
管道用于将一个命令的输出作为另一个命令的输入,使用符号|
来连接命令。可以将多个命令依次连接起来,前一个命令的输出作为后一个命令的输入。
基本用法:命令1|命令2……|命令n
- 命令替换
命令替换与重定向有些类似,不同的是命令替换将一个命令的输出作为另一个命令的参数
常用命令格式如下:命令1 ` 命令2 反引号
其中命令2的输出作为命令1的参数,注意这里的符号是指反引号,被它括起来的内容将作为命令执行,执行的结果作为命令1的参数。
- Shell脚本是指使用Shell所提供的语句所编写的命令文件,又称Shell程序。
- Shell脚本可以包含任意从键盘输入的 Linux命令。Shell脚本最基本的功能就是汇集一些在命令行输入的连续指令,将它们写入脚本中,然后直接执行脚本来启动一连串的命令行指令。
- 执行Shell 脚本最常用的方式是将Shell 脚本的权限设置为可执行,然后在提示符下直接执行它。
- 直接编辑生成的脚本文件没有执行权限,如果要将Shell脚本直接当作命令执行,就需要利用命令
chmod
将它置为具有执行权限。例如:chmod +x example1
Linux系统图形界面中编辑文件,通常使用gedit。vi操作模式
作为管理员,往往要在文本模式下操作。vi是一个功能强大的文本模式全屏幕编辑器
Ubuntu提供的版本为vim, vim相当于vi的增强版本。
- vi分为以下3种操作模式,代表不同的操作状态:
- 命令模式(Command mode):输入的任何字符都作为命令(指令)来处理
- 插入模式(Insert mode):输入的任何字符都作为插入的字符来处理。
- 末行模式(Last line mode):执行文件级或全局性操作,如保存文件、退出编辑器、设置编辑环境等。
- 命令模式下可控制屏幕光标的移动、行编辑(删除、移动、复制),输入相应的命令进入插入模式。
- 进入插入模式的命令有以下6个。
- a:从当前光标位置右边开始输入下一字符。
- A:从当前光标所在行的行尾开始输入下一字符。
- i:从当前光标位置左边插入新的字符。
- L:从当前光标所在行的行首开始插入字符。
- o:从当前光标所在行新增一行并进入插入模式,光标移到新的一行行首。
- O:从当前光标所在行上方新增一行并进入插入模式,光标移到新的一行行首。
- 从插入模式切换到命令模式,需按
ESC
键。 - 命令模式下输入
:
切换到末行模式 - 从末行模式切换到命令模式,需按
ESC
键。 - 如果不知道当前处于哪种模式,可以直接按
ESC
键确认进入命令模式。
- 在命令行中输入
vi
命令即可进入vi编辑器 - 没有指定文件名,将打开一个新文件,保存时需要给出一个明确的文件名。
- 如果给出指定文件名,如vi filename,将打开指定的文件。如果指定的文件名不存在,则将打开一个新文件,保存时使用该文件名。
- 如果要将编辑的文件保存到个人主目录之外的目录,需要root权限,使用
sudo
命令,如sudo vi
。
- 进入vi之后处于命令模式下,不要急着用上下左右键移动光标,而是要输入a、i、o中的任一字符进入插入模式,正式开始编辑。
- 插入模式下只能进行基本的字符编辑操作,可使用键盘操作键(非vi命令)打字、删除、退格、插入、替换、移动光标、翻页等。
- 一些编辑操作,如整行操作、区块操作,需要按
ESC
键回到命令模式中进行。 - 实际应用中插入模式与命令模式之间的切换非常频繁。下面列出常见的vi编辑命令。
- 移动光标:vi可以直接用键盘上的光标键来上下左右移动,但正规的vi的用法是用小写英文字母h、j、k、l,分别控制光标左、下、上、右移一格。
- 常用的光标操作还有以下几种情况。按
上翻一页,按+键
下翻一页。+ 键 - 按
0
键移到光标所在行行首,按$
键移到该行开头,按w
键光标跳到下个单词开头。 - 按
G
键移到文件最后一行,再按nG
键(n为数字,下同),移到文件第n行。
- 常用的光标操作还有以下几种情况。按
- 删除:
- 字符删除:按
x
键向后删除一个字符;按nx
键,向后删除n个字符。 - 行删除:按
dd
键删除光标所在行;按ndd
键,从光标所在行开始向下删除n行。
- 字符删除:按
- 复制:
- 字符复制:按
y
键复制光标所在字符,按yw
复制光标所在处到字尾的字符。 - 行复制:按
yy
键复制光标所在行;按nyy
键,复制从光标所在行开始往下的n行。
- 字符复制:按
- 粘贴:
- 删除和复制的内容都将放到内存缓冲区。使用命令
p
将缓冲区内的内容粘贴到光标所在位置。
- 删除和复制的内容都将放到内存缓冲区。使用命令
- 查找字符串
/
关键字:先按/
键,输入要寻找的字符串,再按回车键向下查找字符串。?
关键字:先按?
键,输入要寻找的字符串,再按回车键向上查找字符串。
- 撤销或重复操作:
- 如果误操作一个命令,按
u
恢复到上一次操作。按.
键可以重复执行上一次操作。
- 如果误操作一个命令,按
- 移动光标:vi可以直接用键盘上的光标键来上下左右移动,但正规的vi的用法是用小写英文字母h、j、k、l,分别控制光标左、下、上、右移一格。
保存文件和退出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 filename2。打开多个文件之后,在末行模式下可以执行命令:next
和:previous
在文件之间切换。
推荐阅读
- Hadoop|Hadoop集群搭建(二)——Linux系统SSH远程双向免密登陆
- Linux学习之路|Linux——SSH服务篇与防火墙简单配置
- redhat|远程连接——SSH
- linux|Linux基础篇——Linux网络配置(配置网卡、固定IP,固定hostname,终端远程)详解
- Linux防护与群集|第十章(Mysql主从复制读写分离)
- SLAM|Linux 配置《视觉SLAM十四讲》环境的步骤
- Linux服务器下搭建SFTP服务
- 服务器|EsgynDB Troubleshooting - 网卡MTU导致跨网段访问数据库失败
- linux|Linux之 JavaEE-搭建 JavaEE环境