Linux 是一个可以实现多用户登陆的操作系统,比如“李雷”和“韩梅梅”都可以同时登陆同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件。但实际上他们的文件都是放在同
Linux 是一个可以实现多用户登陆的操作系统,比如“李雷”和“韩梅梅”都可以同时登陆同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件。但实际上他们的文件都是放在同一个物理磁盘上的甚至同一个逻辑分区或者目录里,但是由于 Linux 的 用户管理 和 权限机制,不同用户不可以轻易地查看、修改彼此的文件。
1、X Window与文本模式的切换
通常我们也称文本模式为终端机接口, terminal 或 console。Linux 预设的情况下会提供六个Terminal 来让使用者登入。终端本质上是对应着 Linux 上的 /dev/tty 设备,Linux 的多用户登陆就是通过不同的 /dev/tty 设备完成的。X Windows实质上是运行在其中一个tty上面的一个图形Shell而已,文本模式也同样。
切换的方式为使用: [Ctrl] + [Alt] + [F1]~[F6]的组合按钮。
如果安装了X Window,则这六个快捷键分别对应:
- [Ctrl] + [Alt] + [F2] ~ [F6] :文字接口登入 tty2 ~ tty6 终端机;
- [Ctrl] + [Alt] + [F1] :图形接口桌面。
如果Linux预设使用纯文本界面,那么 tty1~tty6 就会被文字界面占用。
实际上,在 CentOS 7 环境下,当开机完成之后,默认系统只会提供给你一个 tty 而已,因此无论是文字界面还是图形界面,都是会出现在 tty1。只有要切换使,系统才会开启新的tty。
X Window在实际生产环境中使用较少,这里不再赘述。
1.1、文本模式
1.1.1、基本信息
进入文本模式并登录后,会有一行这样的提示符:
[pierre_cai@localhost~]$ _
其中:
- @之前的是当前的用户名
- @之后的是当前的主机名
- ~是一个变量,代表当前用户的”家目录“。举例来说,如果使用root登录,~就代表/root,如果使用pierre_cai登录,~就代表/home/pierre_cai
- $是提示符,提示可以在后面输入。在Linux中,默认root的提示符为#,一般用户的提示符为$
1.1.2、命令基础
Linux文本模式或者X Window里打开的console中,我们可以通过输入一些指令来进行操作。
指令的基本结构为:
[pierre_cai@localhost~]$ command [-options] parameter1 parameter2 ...
- 一行命令中首先要输入的是指令的名称或者可执行脚本名
- 然后是可选的选项,比如 -h/--help(一般缩略名前用-,完整名用--)
- 多个选项可以合并写,比如-a -l和-al是一样的
- 最后是命令执行的参数
注意:
- 一般来说按下[enter]命令就会执行,如果想要换行,可以在行末加上反斜杠"/"然今后换行。
- Linux命令区分大小写,比如cd和CD是不同的
- 不同项之间的空格个数并没有影响(如果是赋值语句,会有影响)
1.1.3、语系引起的乱码
在使用terminal的时候,有时候会发现出现乱码。这是因为terminal默认是不支持中文的。这时就需要修改支持语系为英文。
注意更改了字符集为中文后,可能在terminal下还是无法正常显示中文。这是因为terminal并不支持中文。但是如果我们是用远程shell软件(XShell、Putty等)远程登录,或者使用X Window的话,一般来说就可以正常显示中文。
如果不使用shell的话,建议还是将所有的系统文件设置为英文。更改字符集(非永久,每次注销以后都要重新修改)的命令(注意命令的大小写)有:
- locale:查看所有的语言设置
- LANG="en_US.utf8"
- export LC_ALL=en_US.utf8
注意如果安装的时候是按中文安装的,这时系统生成的文件名是中文的,还要同步更新文件名才能正常查看,使用的命令有:
- xdg-user-dirs-gtk-update
1.1.4、常用快捷键和操作符
1.1.4.1、more和less
在输入命令的时候,经常会出现一页无法全部显示的情况,而在Linux的terminal中又无法翻页。这时我们就需要在命令的结尾加上 |more 或者 |less。例如:
[pierre_cai@localhost ~]$ ifconfig | more
这样按就会先显示出一屏幕,然后按回车就可以接着查看下面的内容。
less和more类似,但是可以使用上下箭头任意移动。
当然,实际上不需要more和Less,直接使用shift+上箭头/下箭头也可以上下移动。
1.1.4、常用快捷键
其他一些常用快捷键
按键 | 作用 |
---|---|
两次TAB | 命令/选项/文件目录提示 |
Ctrl+c | 强行终止当前程序 |
Ctrl+d | 键盘输入结束或退出终端 |
Ctrl+s | 暂停当前程序,暂停后按下任意键恢复运行 |
Ctrl+z | 将当前程序以后到后台,并且暂停,恢复到前台为命令fg 进程号 ,进程号可以通过jobs 查看 |
Ctrl+a | 将光标移至输入行头,相当于Home 键 |
Ctrl+e | 将光标移至输入行末,相当于End 键 |
Ctrl+k | 删除从光标所在位置到行末 |
Alt+Backspace | 向前删除一个单词 |
Shift+PgUp | 将终端显示向上滚动 |
Shift+PgDn | 将终端显示向下滚动 |
1.1.5、常用通配符
通配符是一种特殊语句,主要有星号(*)和问号(?),用来对字符串进行模糊匹配(比如文件名、参数名)。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正字符。
Linux中的通配符和正则表达式有一些共通之处,常用通配符有:
字符 | 含义 |
---|---|
* | 匹配 0 或多个字符 |
? | 匹配任意一个字符 |
[list] | 匹配 list 中的任意单一字符 |
[!list] | 匹配 除list 中的任意单一字符以外的字符 |
[c1-c2] | 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z] |
{string1,string2,...} | 匹配 string1 或 string2 (或更多)其一字符串 |
{c1..c2} | 匹配 c1-c2 中全部字符 如{1..10} |
1.1.6、man page和info page
man时manuel的缩写,通过:
man 指令名
可以快速查看指令的说明。比如输入man date后:
如果当前的语言设置为中文的话,帮助文档就会是中文的,可以通过上面介绍的LANG=语言编码,进行切换中英文。当然并不是所有的命令都会有中文文档,建议还是看英文文档。
输出的这个界面我们一般成为”man page",首先注意到DATE(1)中的1,其代表命令所属的区段,具体的区段代码有:
区段 | 说明 |
---|---|
1 | 一般命令 |
2 | 系统内核可调用的函数和工具等 |
3 | 库函数,涵盖了C标准函数库 |
4 | 特殊文件(通常是/dev中的设备)和驱动程序 |
5 | 配置文件或者文件格式和约定 |
6 | 游戏和屏保 |
7 | 惯例和协议等等 |
8 | 系统管理命令和守护进程 |
9 | 跟kernel有关的文件 |
需要特别记住1、5、8。
通常查看man page的步骤如下:
- 先查看NAME项目,一般是简短的命令、数据名称说明
- 再查看SYNOPSIS,一般是简短的命令执行语法简介
- 再看一下OPTIONS,一般是SYNOPSIS中命令选项的详细说明
- 再看一下EXAMPLE,一般是提供的一些示例
- 最后有必要的话,查看一下DESCRIPTION,一般是命令的详细说明。
其余可能有帮助的项有:SEE ALSO(相关的其他说明)、EXIT STATUS(退出状态),ENVIRONMENT(环境),BUGS(程序漏洞),FILES(文件),AUTHOR(作者),REPORTING BUGS(已知漏洞),HISTORY(历史)和 COPYRIGHT(版权)。
通常 man 手册中的内容很多,你可能不太容易找到你想要的结果,不过幸运的是你可以在 man 中使用搜索/<你要搜索的关键字>
,或者使用?<你要搜索的关键字>
向上查找,查找找完毕后你可以使用n
键切换到下一个关键字所在处,shift+n
为上一个关键字所在处。
使用Space
(空格键)翻页,使用pageUp向上翻页,pageDown向下翻页,Enter
(回车键)向下滚动一行,或者使用j
,k
(vim 编辑器的移动键)进行向前向后滚动一行。按下h
键为显示使用帮助(因为 man 使用 less 作为阅读器,实为less
工具的帮助),按下q
退出。
想要获得更详细的帮助,你还可以使用info
命令,不过通常使用man
就足够了。如果你知道某个命令的作用,只是想快速查看一些它的某个具体参数的作用,那么你可以使用--help
参数。
1.1.6.1、man的其他选项
- man -f 命令名:查看有哪些区域代码
- man [区域代码] 命令名 : 查看指定区域代码的命令,默认输出代码最小的那个
比如:date命令存在两个不同的区域1和1p中,后面的是命令的简介
- man -k 关键词 : 查看命令名或者简介中包含指定关键词的命令
比如:
man -k date
这个命令不止会输出date命令相关的命令,还会输出简介中有date的命令。
1.2、使用XShell登录本地VirtualBox中的Linux虚拟机
虚拟机连接网络的方式主要有两种:bridged(桥接模式)、NAT(网络地址转换模式)。
- 桥接模式:“共享”宿主机的网卡,直接通过网卡链接网络。在这种模式下,虚拟机就像是局域网中的一台实际的主机,它可以访问网内任何一台机器。
- NAT模式:虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。
在VirtualBox中,虚拟机默认是使用NAT模式链接网络的。使用NAT模式的情况下,宿主机是无法通过Shell访问虚拟机的。
我们首先需要更改虚拟机的网络链接方式为桥接网卡:
在虚拟机中查看虚拟机被分配的IP,输入:
[pierre_cai@localhost ~]$ ifconfig
即可查看IP:
注意,有肯能会查到多个网卡,图中的三个分别是:
- enp0s3:本地网卡
- lo:本地回环接口,一般我们通过127.0.0.1或者localhost访问本地的资源时,就是通过这个网卡
- virbr0:虚拟网卡
网卡名后一般会跟着flags,提示网卡的当前状态,其中有RUNNING的网卡就是当前正在链接的网卡。
打开XShell,通过上面读取到的ip构建链接:
在用户身份验证中输入用户名密码,即可链接。