Linux-字符界面操作基础

3.1 字符界面简介

Linux字符界面

安装Linux系统之后,系统启动默认进入的是图形化界面,可以通过使用以下命令修改为进入字符界面,所做改变在系统重新引导之后即可生效。

[root@rhel ~]# systemctl get-default graphical.target
//查看计算机系统启动后要进入的默认目标,graphical.target表示图形化界面
[root@rhel ~]# systemctl set-default multi-user.target
//将multi-user.target目标设置为启动计算机系统后要进入的默认目标,multi-user.target表示字符界面

字符界面登录提示

Linux系统用户登录分两步:第一步输入用户的用户名,系统根据该用户名识别用户;第二步输入用户的口令。当用户正确地输入用户名和口令后,就能合法地进入系统,这时就可以对系统进行各种操作了,注意超级用户root登录后提示符是“#”,而其他用户登录后提示符是“$”。

虚拟控制台

Linux系统可以同时接受多个用户同时登录,还允许用户进行多次登录,这是因为Linux系统提供了虚拟控制台的访问方式。

在字符界面下,虚拟控制台的选择可以通过按下[Alt]键和一个功能键来实现,通常使用F1~F6键。比如用户登录后,按下[Alt+F2]键,用户可以看到“login:”提示符,说明用户进入了第二个虚拟控制台。然后只需按[Alt+F1]组合键,就可以回到第一个虚拟控制台。

如果用户在图形界面下,那么可以使用[Ctrl+ Alt+F2]~[Ctrl+ Alt+F6]组合键切换字符虚拟控制台,使用[Ctrl+Alt+F1]可以切换到图形界面。

1.shutdown命令

shutdown命令可以安全地关闭或重启Linux系统。

命令语法:

shutdown [选项] [时间] [警告信息]

【例3.1】 立即关闭计算机系统。

[root@rhel ~]# shutdown -h now

【例3.2】 定时45分钟后关闭计算机系统。

[root@rhel ~]# shutdown -h +45

【例3.3】 立即重新启动计算机系统,并发出警告信息。

[root@rhel ~]# shutdown -r now "system will be reboot now."

【例3.4】 定时在1点38分重新启动计算机系统。

[root@rhel ~]# shutdown -r 01:38

2.halt命令

使用halt命令就是调用“shutdown –h”命令执行关机任务。

命令语法:

halt [选项]

【例3.5】 使用halt命令关闭系统。

[root@rhel ~]# halt

3.reboot命令

reboot命令的工作过程与halt相似,不过reboot是引发计算机重启,而halt是引发计算机关闭。它的选项与halt相似。

【例3.6】 使用reboot命令重启计算机系统。

[root@rhel ~]# reboot

3.2在Linux系统下获取帮助

man命令

man命令格式化并显示在线的手册页。通常使用者只要在命令man后,输入想要获取的命令的名称,man就会列出一份完整的说明,其内容包括命令语法、各选项的意义以及相关命令等。

命令语法:

man [选项] [名称]

使用–help选项获取帮助

使用–help选项可以显示命令的使用方法以及命令选项的含义。只要在所需要显示的命令后面输入“–help”选项,然后就可以看到所查命令的帮助内容了。

命令语法:

[命令] --help

【例3.9】 查看mkdir命令的帮助信息。

[root@rhel ~]# mkdir --help

3.4 使用bash

1、常用控制组合键

控制组合键功能
Ctrl+l清屏
Ctrl+o执行当前命令,并选择上一条命令
Ctrl+s阻止屏幕输出
Ctrl+q允许屏幕输出
Ctrl+c终止命令
Ctrl+z挂起命令
Ctrl+m相当于按回车键
Ctrl+d输入结束,即EOF的意思,或者注销Linux系统

2、光标操作(1)

组合键功能
Ctrl+a移动光标到命令行首
Ctrl+e移动光标到命令行尾
Ctrl+f按字符前移(向右)
Ctrl+b按字符后移(向左)
Ctrl+xx在命令行首和光标之间移动
Ctrl+u删除从光标到命令行首的部分
Ctrl+k删除从光标到命令行尾的部分
Ctrl+w删除从光标到当前单词开头的部分
Ctrl+d删除光标处的字符
Ctrl+h删除光标前的一个字符

2、光标操作(2)

组合键功能
Ctrl+y插入最近删除的单词
Ctrl+t交换光标处字符和光标前面的字符
Alt+f按单词前移(向右)
Alt+b按单词后移(向左)
Alt+d从光标处删除至单词尾
Alt+c从光标处更改单词为首字母大写
Alt+u从光标处更改单词为全部大写
Alt+l从光标处更改单词为全部小写
Alt+t交换光标处单词和光标前面的单词
Alt+Backspace与Ctrl+w功能类似,分隔符有些差别

3、特殊字符

符号功能
~用户主目录
`反引号,用来命令替代(在Tab键上面的那个键)
#注释
$变量取值
&后台进程工作
(子Shell开始
)子Shell结束
\使命令持续到下一行
|管道
<输入重定向
>输出重定向
>>追加重定向
单引号(不具有变数置换的功能)
"双引号(具有置换的功能)
/路径分隔符
;命令分隔符

4、通配符

符号功能
?代表任何单一字符
*代表任何字符
[字符组合]在中括号中的字符都符合,比如[a-z]代表所有的小写字母
[!字符组合]不在中括号中的字符都符合,比如[!0-9]代表非数字的都符合

3.5Shell实用功能

命令行自动补全

在Linux系统中,有太多的命令和文件名称需要记忆,使用命令行补全功能可以快速
的写出文件名和命令名。

如果需要快速地从当前所在的目录跳转到/usr/src/kernels/目录,可以执行以下操作。

[root@rhel ~]# cd /u<Tab>/sr<Tab>/k<Tab>

是按“Tab”键的意思,使用“Tab”键也称为命令行自动补全,这在平常应用中是不可缺少的。

命令历史记录

在操作Linux系统的时候,每一个操作的命令都会记录到命令历史中,在以后可以通过命令历史查看和使用以前操作的命令。

bash启动的时候会读取~/.bash_history文件,并将其载入到内存中,$HISTFILE变量就用于设置~/.bash_history文件,bash退出时也会把内存中的历史记录回写到
~/.bash_history文件中。

使用history命令可以查看命令历史记录,每一条命令前面都会有一个序列号标示。
命令语法:

history [选项]

使用命令历史举例

举例描述
!!运行上一个命令
!6运行第6个命令
!8 /test运行第8个命令并在命令后面加上/test
!?CF?运行上一个包含CF字符串的命令
!ls运行上一个ls命令(或以ls开头的历史命令)
!ls:s/CF/G运行上一个ls命令,其中把CF替换成G
fc编辑并运行上一个历史命令
fc 6编辑并运行第6条历史命令
bootroot^快速替换。将最后一个命令中的boot替换为root后运行
!-5运行倒数第5个命令
!$运行前一个命令最后的参数

【例3.11】 使用命令历史记录功能键。

[root@rhel ~]# mkdir /root/aaa
//创建目录/root/aaa
[root@rhel ~]# cd !$
cd /root/aaa
//!$是指重复前一个命令最后的参数,参数是/root/aaa
[root@rhel aaa]# pwd
/root/aaa
//显示用户当前目录是/root/aaa

搜索历史命令

快捷键描述
↑(向上方向箭)查看上一个命令
↓(向下方向箭)查看下一个命令
Ctrl+p查看历史列表中的上一个命令
Ctrl+n查看历史列表中的下一个命令
Ctrl+r向上搜索历史列表
Alt+p向上搜索历史列表
Alt+>移动到历史列表末尾

命令排列

如果希望一次执行多个命令,Shell允许在不同的命令之间,放上特殊的排列字符。

1. 使用“;”

使用“;”命令时先执行命令1,不管命令1是否出错,接下来就执行命令2。

命令语法:

命令1; 命令2

【例3.15】 使用排列命令“;”同时执行两个命令。

[root@rhel ~]# ls -l /boot;du -hs /root

2. 使用“&&”

使用“&&”命令时只有当命令1正确运行完毕后,才能执行命令2 。

【例3.16】 使用排列命令“&&”同时执行两个命令。

[root@rhel ~]# ls -a /root/bogusdir&&du -hs
ls: 无法访问/root/bogusdir: 没有那个文件或目录
//将返回“ls: 无法访问/root/bogusdir: 没有那个文件或目录”,而“du –hs”命令根本没有运行,因为没有/root/bogusdir目录

命令替换

在Linux系统中,Shell命令的参数可以由另外一个命令的结果来替代,这种称之为命令替换。

1.使用“$( )”
命令语法:

命令1 $(命令2)

2.使用“`”(位于Tab键上面那个键)
命令语法:

命令1 \`命令2`
[root@rhel ~]# pidof less
7552
//less进程号为7552
Kill -9 7552

使用命令替换功能杀死less进程。

kill -9 $(pidof less)

或者

kill -9 `pidof less`

命令别名

在需要执行某一个非常长的命令时,所有的命令以及命令的选项、参数都要一一输入,很枯燥也容易出现错误。可以为常用命令定义快捷方式,这些快捷方式可以用比较简单的命令别名来定义。

1.创建别名
使用alias命令可以为命令定义别名。如果命令中有空格的话,就需要使用双引号(比如在命令与选项之间就有空格)。

命令语法:

alias [别名]=[需要定义别名的命令]

2.取消别名

当用户需要取消别名的定义时,可以使用unalias命令。
命令语法:

unalias [别名]

管道

Linux系统的理念是汇集许多小程序,每个程序都有特殊的专长。复杂的任务不是由大型软件完成,而是运用Shell 的机制,组合许多小程序共同完成。管道就在其中发挥着重要的作用,它可以将某个命令的输出信息当作某个命令的输入,由管道符号“|”来标识。
命令语法:

[命令1]|[ 命令2]|[ 命令3]

【例3.22】 使用简单的管道。

[root@rhel ~]# ls /etc|more
abrt
acpi
adjtime
akonadi
--More--
//命令ls /etc显示/etc目录的内容,命令more是分页显示内容

【例3.23】 使用复杂的管道。

[root@PC-LINUX ~]# rpm -qa|grep a|more
//命令rpm -qa显示已经安装在系统上的RPM包,命令grep a是过滤软件包,命令more是分页显示这些信息

3.6 重定向

希望将命令的输出结果保存到文件中,或者以文件内容作为命令的参数,这时就需要用到重定向。重定向不使用系统的标准输入端口、标准输出端口或是标准错误端口,而是进行重新的指定。

重定向有四种方式:输出重定向、输入重定向、错误重定向以及同时实现输出和错误的重定向。

输出重定向

输出重定向,即将某一命令执行的输出保存到文件中,如果已经存在相同的文件,那么覆盖源文件中的内容。

命令语法:

[命令] > [文件]

【例3.24】使用输出重定向将/boot目录的内容保存到/root/abc文件中。

[root@rhel ~]# ls /boot > /root/abc

【例3.25】使用echo命令和输出重定向创建/root/mm文件,文件内容是hello。

[root@rhel ~]# echo Hello > /root/mm
[root@rhel ~]# cat /root/mm
Hello
//显示文件/root/mm,可以看到文件的内容是Hello

另外一种特殊的输出重定向是输出追加重定向,即将某一命令执行的输出添加到已经存在的文件中。

命令语法:

[命令] >> [文件]

【例3.26】使用输出追加重定向将数据写入文件/root/ao。

[root@rhel ~]# echo Hello > /root/ao
//先创建文件/root/ao,文件内容是Hello
[root@rhel ~]# echo Linux >> /root/ao
//向文件/root/ao中追加数据Linux
[root@rhel ~]# cat /root/ao
Hello
Linux

输入重定向

输入重定向,即将某一文件的内容作为命令的输入。
命令语法:

[命令] < [文件]

【例3.27】使用输入重定向将文件/root/mm的内容作为输入让cat命令执行。

[root@rhel ~]# cat < /root/mm
Hello
//可以看到文件/root/mm的内容是Hello

另外一种特殊的输入重定向是输入追加重定向,这种输入重定向告诉Shell,当前标准输入来自命令行的一对分隔符之间的内容。

命令语法:

[命令] << [分隔符]
> [文本内容]
> [分隔符]

【例3.28】使用输入追加重定向创建/root/bc文件。

[root@rhel ~]# cat > /root/bc <<EOF
> Hello Linux
> EOF
//一般使用EOF作为分隔符

错误重定向

错误重定向,即将某一命令执行的出错信息输出到指定文件中。
命令语法:

[命令] 2> [文件]

【例3.29】 查看根本不存在的/root/kk文件,出现报错信息,将其保存到文件/root/b中。

[root@rhel ~]# cat /root/kk 2> /root/b
[root@rhel ~]# cat /root/b
cat: /root/kk: 没有那个文件或目录
//使用cat命令查看/root/b文件,可以看到其内容就是执行命令cat /root/kk的报错信息

另外一种特殊的错误重定向是错误追加重定向,即将某一命令执行的出错信息添加到已经存在的文件中。

命令语法:

[命令] 2>> [文件]

【例3.30】 使用错误追加重定向,将执行命令的多次出错信息保存到文件/root/b中。

[root@rhel ~]# cat /root/kk 2> /root/b
[root@rhel ~]# cat /root/kk 2>> /root/b
[root@rhel ~]# cat /root/b
cat: /root/kk: 没有那个文件或目录
cat: /root/kk: 没有那个文件或目录

同时实现输出和错误重定向

同时实现输出和错误的重定向,即可以同时实现输出重定向和错误重定向的功能。

命令语法:

[命令] &> [文件]

【例3.31】 同时使用输出和错误重定向。

[root@rhel ~]# ls /boot &> /root/kk
[root@rhel ~]# cat /root/kk
config-3.3.4-5.fc17.i686.PAE
grub
grub2
initramfs-3.3.4-5.fc17.i686.PAE.img
lost+found
System.map-3.3.4-5.fc17.i686.PAE
tboot.gz
tboot-syms
vmlinuz-3.3.4-5.fc17.i686.PAE
//因为/boot目录下有文件,所以最终使用了输出重定向

【例3.32】 同时使用输出和错误重定向。

[root@rhel ~]# ls /nn &> /root/oo
[root@rhel ~]# cat /root/oo
ls: 无法访问/nn: 没有那个文件或目录
//因为没有/nn目录,所以最终使用了错误重定向

3.7 vi编辑器

1.命令模式

进入vi编辑器之后,系统默认处于命令模式。命令模式控制屏幕光标的移动,字符、
字或行的删除,某区域的移动、复制等。
在命令模式下,按冒号键“:”可以进入末行模式,按字母键“a”就可以进入插入模式。

2.插入模式

只有在插入模式下,才可以进行文本编辑。在插入模式下按“Esc”键可回到命令模式。

3.末行模式

将文件保存或退出vi编辑器,也可以设置编辑环境、替换字符或删除字符。
在末行模式下按“Esc”键可以回到命令模式。

进入插入模式命令

命令功能
i从光标当前所在位置之前开始插入
a从光标当前所在位置之后开始插入
I在光标所在行的行首插入
A在光标所在行的行末尾插入
o在光标所在的行的下面新开一行插入
O在光标所在的行的上面新开一行插入
s删除光标位置的一个字符,然后进入插入模式
S删除光标所在的行,然后进入插入模式

光标移动(1)

命令功能重点
↑键(向上箭头 )使光标向上移动一行
↓键(向下箭头 )使光标向下移动一行
←键(向左箭头)使光标向左移动一个字符
→键(向右箭头 )使光标向右移动一个字符
k使光标向上移动一行
j使光标向下移动一行
h使光标向左移动一个字符
l使光标向右移动一个字符
nk使光标向上移动n行,n代表数字*

光标移动(2)

nj
nh
nl
H
M
L
Ctrl+b
Ctrl+f
Ctrl+u
Ctrl+d
0(数字0)

光标移动(3)

命令功能重点
$使光标移动到光标所在行的行尾*
^使光标移动到光标所在行的行首*
w使光标跳到下一个字的开头
W使光标跳到下一个字的开头,但会忽略一些标点符号
e使光标跳到下一个字的字尾
E使光标跳到下一个字的字尾,但会忽略一些标点符号
b使光标回到上一个字的开头
B使光标回到上一个字的开头,但会忽略一些标点符号
(使光标移动到上一个句首*
)使光标移动到下一个句首*
{使光标移动到上一个段落首*
}使光标移动到下一个段落首*
G使光标移动到文件尾(最后一行的第一个非空白字符处)*
gg使光标移动到文件首(第一行第一个非空白字符处)*

命令模式命令(1)

删除

命令功能
x删除光标所在位置的字符
X删除光标所在位置的前面一个字符
nx删除光标所在位置开始的n个字符,n代表数字
nX删除光标所在位置前面n个字符,n代表数字
dd删除光标所在行
ndd从光标所在行开始删除n行,n代表数字
db删除光标所在位置的前面一个单词
ndb删除光标所在位置的前面n个单词,n代表数字
dw从光标所在位置开始删除一个单词
ndw从光标所在位置开始删除几个单词,n代表数字
d$删除光标到行尾的内容(含光标所在处字符)
D删除光标到行尾的内容(含光标所在处字符)
dG从光标位置所在行一直删除到文件尾

命令模式命令(2)

复制和粘贴

命令功能重点
yw复制光标所在位置到单词尾的字符
nyw复制光标所在位置开始的n个单词,n代表数字
yy复制光标所在行*
nyy复制从光标所在行开始的n行,n代表数字
y$复制光标所在位置到行尾内容到缓存区
y^复制光标前面所在位置到行首内容到缓存区
YY将当前行复制到缓冲区*
nYY将当前开始的n行复制到缓冲区,n代表数字
p将缓冲区内的内容写到光标所在的位置

命令模式命令(3)

类型命令功能重点
替换r替换光标所在处的字符,按[r]键之后输入要替换的字符*
替换R替换光标所到之处的字符,直到按下[ESC]键为止,按[R]键之后输入要替换的字符*
撤销和重复u撤销上一个操作。按多次u可以执行多次撤销*
撤销和重复U取消所有操作*
撤销和重复.再执行一次前面刚完成的操作
列出行号Ctrl+g列出光标所在行的行号*
保存和退出ZZ保存退出*
保存和退出ZQ不保存退出*
查找字符/关键字先按[/]键,再输入想查找的字符,如果第一次查找的关键字不是想要的,可以一直按[n]键会往后查找下一个关键字,而按[N]键会往相反的方向查找
查找字符?关键字先按[?]键,再输入想查找的字符,如果第一次查找的关键字不是想要的,可以一直按[n]键往前查找下一个关键字,而按[N]键会往相反的方向查找
合并nJ将当前行开始的n行进行合并,n代表数字
合并J清除光标所在行与下一行之间的换行,行尾没有空格的话会自动添加一个空格

末行模式命令(1)

类型命令功能重点
运行Shell命令:!command运行Shell命令,command代表命令
运行Shell命令:r!command将命令运行的结果信息输入到当前行位置,command代表命令
运行Shell命令:n1,n2 w !command将n1到n2行的内容作为命令的输入,n1和n2代表数字,command代表命令
查找字符:/str/从当前光标开始往右移动到有str的地方,str代表字符*
查找字符:?str?从当前光标开始往左移动到有str的地方,str代表字符*
替换字符😒/str1/str2/将光标所在行第一个字符str1替换为str2,str1和str2代表字符*
替换字符😒/str1/str2/g将光标所在行所有的字符str1替换为str2,str1和str2代表字符
替换字符:n1,n2s/str1/str2/g用str2替换从第n1行到第n2行中出现的str1,str1和str2代表字符,n1和n2代表数字
替换字符:% s/str1/str2/g用str2替换文件中所有的str1,str1和str2代表字符
替换字符:.,$s/str1/str2/g将从当前位置到结尾的所有的str1替换为str2,str1和str2代表字符

末行模式命令(2)

保存和退出

命令功能重点
:w保存文件*
:w filename将文件另存为filename
:wq保存文件并退出vi编辑器*
:wq filename将文件另存为filename后退出vi编辑器
:wq!保存文件并强制退出vi编辑器
:wq! filename将文件另存为filename后强制退出vi编辑器
:x保存文件并强制退出vi编辑器,其功能和:wq!相同
:q退出vi编辑器
:q!如果无法离开vi,强制退出vi编辑器
:n1,n2w filename将从n1行开始到n2行结束的内容保存到文件filename中,n1和n2代表数字
:nw filename将第n行内容保存到文件filename中,n代表数字
:1,.w filename将从第一行开始到光标当前位置的所有内容保存到文件filename中
:.,$w filename将从光标当前位置开始到文件末尾的所有内容保存到文件filename中
:r filename打开另外一个已经存在的文件filename
:e filename新建名为filename的文件
:f filename把当前文件改名为filename文件
:/str/w filename将包含有str的行写到文件filename中,str代表字符
:/str1/,/str2/w filename将从包含有str1开始到str2结束的行内容写入到文件filename中,str1和str2代表字符

末行模式命令(3)

类型命令功能重点
删除:d删除当前行*
删除:nd删除第n行,n代表数字
删除:n1,n2 d删除从n1行开始到n2行为止的所有内容,n1和n2代表数字
删除:.,$d删除从当前行开始到文件末尾是所有内容
删除:/str1/ , /str2/d删除从str1开始到str2为止的所在行的所有内容,str1和str2代表字符
复制和移动:n1,n2 co n3将从n1行开始到n2行为止的所有内容复制到n3行后面,n1、n2和n3代表数字
复制和移动:n1,n2 m n3将从n1行开始到n2行为止的所有内容移动到n3行后面,n1、n2和n3代表数字
跳到某一行:n在冒号后输入一个数字,再按回车键就会跳到该行,n代表数字*
设置vi环境:set number在文件中的每一行前面列出行号*
设置vi环境:set nonumber取消在文件中的每一行前面列出行号
设置vi环境:set readonly设置文件为只读状态
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页