1.1.Linux桌面环境介绍
相对于现在的 Windows 系统,UNIX/Linux 本身是没有图形界面的,我们通常在 UNIX/Linux 发行版上看到的图形界面实际都只是运行在 Linux 系统之上的一套软件,类似 Windows95 之前的 Windows 的图形界面实则也只是运行在 DOS 环境的一套软件。而 Linux 上的这套软件以前是 XFree86,现在则是 xorg(X.Org),而这套软件又是通过 X 窗口系统(X Window System,也常被称为 X11 或 X)实现的,X 本身只是工具包及架构协议,而 xorg 便是 X 架构规范的一个实现体,也就是说它是实现了 X 协议规范的一个提供图形界面服务的服务器,就像实现了 http 协议提供 web 服务的 Apache 。如果只有服务器也是不能实现一个完整的桌面环境的,当然还需要一个客户端,我们称为 X Client,像如下几个大家熟知也最流行的实现了客户端功能的桌面环境 KDE,GNOME,XFCE,LXDE 。在 Linux 上你可以自己选择安装不同的桌面环境,甚至可以定制自己的专属桌面。
Linux桌面环境和Windows操作系统桌面有着本质区别
1.2.Linux桌面环境使用
······
2.Linux终端
2.1.终端概念
通常在使用 Linux 时,并不是直接与系统打交道,而是通过一个叫做 Shell 的中间程序来完成的,在图形界面下为了实现让我们在一个窗口中完成用户输入和显示输出,Linux 系统还提供了一个叫做终端模拟器的程序(Terminal)。 下面是几个比较常见的终端模拟器: gnome-terminal,Konsole,xterm,rxvt,kvt,nxterm 和 eterm 。不过要注意的是这里所说的终端(Terminal)和控制台(Console)是有区别的。
终端本质上是对应着 Linux 上的 /dev/tty 设备,Linux 的多用户登录就是通过不同的 /dev/tty 设备完成的,Linux 默认提供了 6 个纯命令行界面的 “terminal”(准确的说这里应该是 6 个 virtual consoles)来让用户登录。在物理机系统上可以通过使用[Ctrl]
+[Alt]
+[F1]~[F6]
进行切换。
2.2.shell(壳)
通常在图形界面中对实际体验带来差异的不是上述的不同发行版的各种终端模拟器,而是这个 Shell(壳)。有壳就有核,这里的核就是指 UNIX/Linux 内核,Shell 是指**“提供给使用者使用界面”的软件(命令解析器)**,类似于 DOS 下的 command(命令行)和后来的 cmd.exe 。普通意义上的 Shell 就是可以接受用户输入命令的程序。它之所以被称作 Shell 是因为它隐藏了操作系统底层的细节。同样的 UNIX/Linux 下的图形用户界面 GNOME 和 KDE,有时也被叫做“虚拟 shell”或“图形 shell”。
UNIX/Linux 操作系统下的 Shell 既是用户交互的界面,也是控制系统的脚本语言。当然这一点也有别于 Windows 下的命令行,虽然该命令行也提供了很简单的控制语句。在 Windows 操作系统下,可能有些用户从来都不会直接使用 Shell,然而在 UNIX 系列操作系统下,Shell 仍然是控制系统启动、X11 启动和很多其它实用工具的脚本解释程序。
在 UNIX/Linux 中比较流行的常见的 Shell 有 bash、zsh、ksh、csh 等等,Ubuntu 终端默认使用的是 bash,默认的桌面环境是 GNOME 或者 Unity(基于 GNOME)
2.3.命令行操作初体验
Linux中,最重要的就是命令,其中包含两个过程,输入输出(IO)
-
输入:打开终端,键盘输入,回车
eg1:
touch file
#创建一个名为file的文件,touch即一个命令eg2:
cd /etc/
#进入一个目录,cd即一个命令eg3:
pwd
#查看当前所在目录,pwd即一个命令 -
输出:输出即返回的结果,比如查看的文件,如果只是执行,失败了会告诉哪里错了,执行成功没有输出,一说Linux哲学没有结果就是最好的结果
2.3.1.重要的快捷键
-
tab
tab键命令补全。当忘记某个命令时输入开头一部分按下tab键可以补全或得到提示;同时也可以补全目录、补全命令参数
-
ctrl+c
使用ctrl+c强行终止当前程序。比如可以用在以下情况,在命令行中无意输入一个不知道的命令或错误地使用命令当值终端出现了无法预料的情况,大多表现为屏幕上只有光标在闪烁却无法继续输入命令,或者不停地输出一大堆你不想要的结果。
但是有时候终端没反应也不能接受输入,可能只是运行程序需要一些时 间
-
其他常用快捷键
按键 作用 Ctrl+d
键盘输入结束或退出终端 Ctrl+s
暂停当前程序,暂停后按下任意键恢复运行 Ctrl+z
将当前程序放到后台运行,恢复到前台为命令 fg
Ctrl+a
将光标移至输入行头,相当于 Home
键Ctrl+e
将光标移至输入行末,相当于 End
键Ctrl+k
删除从光标所在位置到行末 Alt+Backspace
向前删除一个单词 Shift+PgUp
将终端显示向上滚动 Shift+PgDn
将终端显示向下滚动
2.3.2.利用历史输入命令
just键盘方向上建↑
2.3.3.利用通配符
通配符是一种特殊的语句,主要有星号*
和问号?
用于对字符串进行模糊匹配(比如文件名、参数名)。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正字符。
终端里面输入的通配符是由 Shell 处理的,不是由所涉及的命令语句处理的,它只会出现在命令的“参数值”里(它不能出现在命令名称里, 命令不记得,那就用Tab
补全)。当 Shell 在“参数值”中遇到了通配符时,Shell 会将其当作路径或文件名在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给“命令”,然后再由命令进行处理。总之,通配符实际上就是一种 Shell 实现的路径扩展功能。在通配符被处理后, Shell 会先完成该命令的重组,然后继续处理重组后的命令,直至执行该命令。
比如很久前建立了两个文件,现在忘记了文件名,想要在众多文件中找到它们,就可以使用通配符:通过命令touch asd.txt fgh.txt
创建了两个.txt
文件,现在想要找到就可以这样操作,输入命令ls *.txt
又比如需要一次性创建多个文件时,eg:1linux.txt,2linux.txt,···,10linux.txt,可以通过以下命令touch {1..10}linxu.txt
shell常用通配符
字符 | 含义 |
---|---|
* | 匹配 0 或多个字符 |
? | 匹配任意一个字符 |
[list] | 匹配 list 中的任意单一字符 |
[^list] | 匹配 除 list 中的任意单一字符以外的字符 |
[c1-c2] | 匹配 c1-c2 中的任意单一字符 如:[0-9][a-z] |
{string1,string2,...} | 匹配 string1 或 string2 (或更多)其一字符串 |
{c1..c2} | 匹配 c1-c2 中全部字符 如{1…10} |
2.3.4.Linux中获取帮助
Linux环境中遇到困难可以使用man
命令(manual pages
指南页的缩写)
manual pages是Unix类或Unix操作系统中在线软件文档的一种普遍形式,内容包括计算机程序(包括库和系统调用)、正式的标准和惯例,甚至是抽象的概念。用户可以通过执行man
命令调用手册页。
可以使用如下方式获得某个具体命令的说明和使用方式:man <command_name>
以获取man本身即为man man
通常情况man手册里面的内容都是英文的,所以有一定的英文基础能便于阅读理解。man 手册的内容很多,涉及了 Linux 使用过程中的方方面面。为了便于查找,man 手册被进行了分册(分区段)处理,在 Research UNIX、BSD、OS X 和 Linux 中,手册通常被分为 8 个区段,安排如下:
区段 | 说明 |
---|---|
1 | 一般命令 |
2 | 系统调用 |
3 | 库函数,涵盖了 C 标准函数库 |
4 | 特殊文件(通常是/dev 中的设备)和驱动程序 |
5 | 文件格式和约定 |
6 | 游戏和屏保 |
7 | 杂项 |
8 | 系统管理命令和守护进程 |
需要查看某区段的手册内容在man后面加上相应区段的数字序号即可,以查看第3区段(库函数,涵盖了 C 标准函数库)为例,终端输入:man 3 ls
2.3.5手册页布局
所有的手册页遵循一个常见的布局,为了通过简单的 ASCII 文本展示而被优化,而这种情况下可能没有任何形式的高亮或字体控制。一般包括以下部分内容:
NAME(名称)
该命令或函数的名称,接着是一行简介。
SYNOPSIS(概要)
对于命令,正式的描述它如何运行,以及需要什么样的命令行参数。对于函数,介绍函数所需的参数,以及哪个头文件包含该函数的定义。
DESCRIPTION(说明)
命令或函数功能的文本描述。
EXAMPLES(示例)
常用的一些示例。
SEE ALSO(参见)
相关命令或函数的列表。
也可能存在其它部分内容,但这些部分没有得到跨手册页的标准化。常见的例子包括:OPTIONS(选项),EXIT STATUS(退出状态),ENVIRONMENT(环境),BUGS(程序漏洞),FILES(文件),AUTHOR(作者),REPORTING BUGS(已知漏洞),HISTORY(历史)和 COPYRIGHT(版权)。
通常 man 手册中的内容很多,你可能不太容易找到你想要的结果,不过幸运的是你可以在 man 中使用搜索/<你要搜索的关键字>
,查找完毕后你可以使用n
键切换到下一个关键字所在处,shift+n
为上一个关键字所在处。使用Space
(空格键)翻页,Enter
(回车键)向下滚动一行,或者使用k
,j
(vim 编辑器的移动键)进行向前向后滚动一行。按下h
键为显示使用帮助(因为 man 使用 less 作为阅读器,实为less
工具的帮助),按下q
退出。
想要获得更详细的帮助,你还可以使用info
命令,不过通常使用man
就足够了。如果你知道某个命令的作用,只是想快速查看一些它的某个具体参数的作用,那么你可以使用--help
参数,大部分命令都会带有这个参数,如:ls --help