Linux|Ubuntu Linux操作系统——图形界面与命令行

【Linux|Ubuntu Linux操作系统——图形界面与命令行】
文章目录

  • Linux和Ubuntu
  • 命令行界面
    • 使用仿真终端窗口
    • Shell基础
    • 正则表达式
      • 通配符
      • 模式表达式
    • Shell中的特殊字符
  • Linux命令行的使用
    • 命令行语法格式
    • 命令行基本用法
    • 命令行输入与输出
    • 执行Shell脚本
    • vi编辑器
      • vi操作模式
      • 打开vi编辑器
      • 编辑文件
      • 保存文件和退出vi
      • 其他全局性操作

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

    推荐阅读