Linux中的很多操作都是通过命令行完成,我们最常用的输入命令的方法有以下两种。
(1)打开自带的终端,类似于Windows下的CMD。
(2)ssh远程连接,关于ssh连接后面有专门章节讲解。
本章主要讲的是在终端中的操作。
2.1 终端的使用及设置
打开终端,单击左上角红帽logo,并单击九宫格上方的图标,如图2-1所示。即可进入终端界面,如下图所示。
第二种方法是进入字符界面。RHEL8给我们提供了6个控制台16,其中第1个和第2个控制台是图形化界面,第36个是字符界面。
按【Ctrl+Alt+Fn】(n=1~6)组合键可以切换控制台(需要注意的是,在vmware中有时会卡死)。如按【Ctrl+Alt+F3】组合键后显示的字符界面如下图所示。
输入“root”,按【Enter】键,输入密码后再次按【Enter】键,之后输入“tty”,可以看到结果为/dev/tty3,说明现在是在第三个控制台,如下图所示。
按【Ctrl+Alt+F2】组合键切换到刚才的图形化界面。在终端上单击鼠标右键,在弹出的快捷菜单中选择【配置文件首选项】选项,如下图所示。
在打开的界面中选中【自定义字体】复选框,并单击后面的字体框,根据喜好调整字体大小,以及喜欢的颜色,然后单击右下侧的【关闭】按钮,如下图所示。
2.2 敲命令的语法
在终端中执行命令需要遵照一定的语法,输入命令的格式如下。
命令 参数
命令 -选项 参数
输入命令时可以包含多个选项,假如一个命令有-a、-b、-c、-d四个选项。可以写作:
命令 -a -b -c -d 参数
这里的多个选项可以“提取公因式”,写作:
命令 -abcd 参数
这里会把-abcd当成-a、-b、-c、-d四个选项。
如果一个单词(多个字母)作为一个选项使用,要使用两个“–”。
[lduan@server ~]$ ls -help
ls: 不适用的选项 -- e
请尝试执行 "ls --help" 来获取更多信息。
[lduan@server ~]$
这里会把-help当成4个选项:-h、-e、-l、-p,报错信息是没有-e选项。但是我们知道help是一个单词,应该是作为一个选项出现的,所以前面应该是两个“-”。
[lduan@server ~]$ ls --help
用法:ls [选项]... [文件]...
...大量输出...
或者在本地使用:info '(coreutils) ls invocation'
[lduan@server ~]$
我们先来看几个常见命令的使用。
第一个命令是ls,ls的作用是列出一个目录中的内容,类似Windows cmd命令行下的dir命令,如下图所示。
先执行ls命令。
[lduan@server ~]$ ls
公共 模板 视频 图片 文档 下载 音乐 桌面
[lduan@server ~]$
这里ls并没有加任何参数,则显示当前所在目录。如何查看当前所在目录呢?可以用pwd命令。
[lduan@server ~]$ pwd
/home/lduan
[lduan@server ~]$
这里可以看到,命令中所在的目录是/home/lduan,所以刚才ls查看的就是/home/lduan目录的内容。
[lduan@server ~]$ ls /home/lduan/
公共 模板 视频 图片 文档 下载 音乐 桌面
[lduan@server ~]$
ls命令可以加上一个-a选项,表示列出所有的内容,包括隐藏文件。
[lduan@server ~]$ ls -a
. 公共 视频 文档 乐 .bash_logout .bashrc .config .esd_auth .local .pki
.. 模板 图片 下载 桌面 .bash_profile .cache .dbus .ICEauthority .mozilla
.Xauthority
[lduan@server ~]$
在Linux中所有以.开头的文件都隐藏文件。
ls命令可以加上一个-l(字母l不是数字1),表示以长模式的形式展示。
[lduan@server ~]$ ls -l /boot/config-4.18.0-305.el8.x86_64
-rw-r--r--. 1 root root 192091 4月 29 21:03 /boot/config-4.18.0-305.el8.x86_64
[lduan@server ~]$
这里显示了/boot/config-4.18.0-305.el8.x86_64相关属性的信息,包括所有者所属组和权限等,这些后面章节会详细讲解。上面加粗字表示的文件的大小,这里单位是B,但是看起来并不能很快识别具体大小,所以可以加上-h选项。
[lduan@server ~]$ ls -lh /boot/config-4.18.0-305.el8.x86_64
-rw-r--r--. 1 root root 188K 4月 29 21:03 /boot/config-4.18.0-305.el8.x86_64
[lduan@server ~]$
加上-h选项之后,会以更适合阅读的单位来显示。
在ls后如果以目录作为参数,显示的是这个目录下的内容,如果想显示这个目录本身的属性,需要加上-d选项。
[lduan@server ~]$ ls -lhd /boot/
dr-xr-xr-x. 5 root root 4.0K 8月 1 00:21 /boot/
[lduan@server ~]$
会有人有疑问,/boot中那么多东西,大小怎么才是4.0K?
因为这里仅显示了/boot目录本身的属性,并不包括目录里面文件的大小。例如,一个口袋重1斤,装了500斤重的石头,口袋的重量仍然是1斤。
如果想显示目录及里面东西的总大小,则可以使用du命令。
[lduan@server ~]$ du -sh /boot/
du: 无法读取目录'/boot/efi/EFI/redhat': 权限不够
du: 无法读取目录'/boot/grub2': 权限不够
du: 无法读取目录'/boot/loader/entries': 权限不够
193M /boot/
[lduan@server ~]$
这里有报错信息"无法读取目录",这是因为当前是使用lduan用户登录,权限不够,可以忽略。
(1)选项-h是以更适合阅读的单位来显示。
(2)选项-s是摘要信息,只显示总的目录大小,不显示子目录的大小,这样可以看到/boot及里面东西的总大小是193M。
下面介绍其他命令的使用。
直接输入“date”,可以显示日期和时间。
[lduan@server ~]$ date
2021年 11月 19日 星期五 00:21:46 CST
[lduan@server ~]$
显示日历信息,用法是 cal 月 年,例如,显示2025年8月的日历。
[lduan@server ~]$ cal 8 2025
八月 2025
日 一 二 三 四 五 六
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
[lduan@server ~]$
如果不加月、年,则显示的今年、本月的日历。
命令whoami可以显示当前是哪个用户在登录的。
[lduan@server ~]$ whoami
lduan
[lduan@server ~]$
屏幕内容太多,可以输入“clear”后,按【Enter】键清屏,或者按【Ctrl+l】组合键清屏。
命令行中的计算器是bc,bc加上-q选项,是以简洁模式显示。在bc中输入要计算的表达式,按【Enter】键即可。
[lduan@server ~]$ bc -q
2+3
5
可以看到,2+3得到的值为5。
[lduan@server ~]$ bc -q
2+3
5
5/2
2
这里计算5/2得到的值应该是2.5,但是答案却是2,因为默认情况下bc中并不保留小数点之后的部分。如果想保留小数点之后的部分,需要通过scale=N指定需要保留小数点之后的多少位,这里N是一个数字,例如,要保留小数点之后的2位,可以写成scale=2。
scale=2
5/2
2.50
quit
[tom@vms10 ~]$
输入quit命令后,按【Enter】键,可以退出计算器。
输入命令时,如果遇到#,#后面的东西不会执行,而是作为注释。
[lduan@server ~]$ #whoami
[lduan@server ~]$
如果已经输入了某个命令,不想执行该命令,可以按【Ctrl+C】组合键终止命令。
[lduan@server ~]$ ls ^C
[lduan@server ~]$
这里显示的^C是按【Ctrl+C】组合键之后显示在屏幕上的。
2.3 介绍shell
在终端上输入的命令,必须要对它进行解释/解析,这个解释器就是shell,shell是一种进程。Linux支持很多种shell。
[lduan@server ~]$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
[lduan@server ~]$
这里cat的意思是查看一个文本文件的内容,Linux默认使用的shell是bash。
bash所能使用到的一些快捷方法。
2.3.1 tab补齐
在Linux中输入命令时不能简写,必须要完整。先输入几个字符,例如,这里先输入“hi”,如果有以hi开头的命令,再按【Tab】键。
[lduan@server ~]$ hi<tab>
这里表示按【Tab】键,可以看到会自动补齐为history。
[lduan@server ~]$ history
因为在所有命令中,只有history这一个命令是以hi开头的。
如果有多个命令都是以输入的字符开头的,那么需要按两次【Tab】键,就可以把所有以这些字符开头的命令显示出来。例如,输入“h”,按两次【Tab】键。
[lduan@server ~]$ h<tab><tab>
这里表示按了两次【Tab】键,得到的结果如下。
[lduan@server ~]$ h
halt hash hcitool hex2hcd hostid hwclock
handle-sshpw hciattach hdparm hexdump hostname hypervfcopyd
hangul hciconfig head history hostnameCtrl hypervkvpd
hardlink hcidump help host hunspell hypervvssd
[lduan@server ~]$ h ^C
[lduan@server ~]$
这里把所有以h开头的命令列了出来,可以按【Ctrl+C】组合键终止。
2.3.2 历史命令
前面想查看前期输入过的命令,可以执行命令history。
[lduan@server ~]$ history
1 ls
...输出...
17 clear
18 history
[lduan@server ~]$
此时可以按键盘上的上、下箭头来调用历史命令中的那些命令。
执行history -c可以清除所有历史命令。
2.3.3 调整光标位置
当输入了一条比较长的命令之后,可以通过快捷键来调整光标的位置。
按【Ctrl+A】组合键或【Home】键,可以把光标调到行的开头,如下图所示。
按【Ctrl+E】组合键或【End】键,可以把光标调到行的结束,如下图所示。
按【Ctrl+U】组合键可以从光标位置往前删,一直删到开头。
按【Ctrl+K】组合键可以从光标位置往后删,一直删到结尾,如下图所示。
在浏览器中经常打开多个标签来访问不同的页面,同样的,在Linux的终端中我们也需要打开多个标签,方便我们执行命令。例如,图2-11就一个标签。
我们可以按【Ctrl+Shift+T】组合键快速打开标签,如下图所示。
然后通过【Ctrl+PgUp】组合键或【Ctrl+PgDn】组合键进行标签的切换。
2.4 用户的切换
在Linux中管理用户是root,在终端中的提示符是#。root的权限很大,为了防止误操作平时尽可能地使用普通用户登录,普通用户的提示符是$。
但有时使用普通用户登录时,会遇到权限不够的情况,例如,执行下面的命令。
[lduan@server ~]$ mount /dev/cdrom /mnt
mount: 只有 root 能执行该操作
[lduan@server ~]$
这个命令是什么意思暂且不管,后面会讲。但是这里用lduan用户执行此命令,被告知没权限,只有root用户才能执行这个命令。这个问题可以通过su和sudo来解决,其中sudo命令的使用我们将在第8章第4节讲解。
su命令可以从当前用户切换到其他用户,su的用法如下。
su 用户名
su - 用户名 #注意"-"两边是有空格的
如果后面没有跟用户名,则默认为root。这里带-和不带-的区别在于切换用户之后的环境变量不一样,关于环境变量后面讲到脚本时会讲,区别如下。
[lduan@server ~]$ whoami
lduan
[lduan@server ~]$ pwd
/home/lduan
[lduan@server ~]$
这里当前用户是lduan用户,所在目录是lduan的家目录/home/lduan。下面通过su root切换到root用户,注意这里su后面没有"-"。
[lduan@server ~]$ su root
密码:
[root@server lduan]# whoami
root
[root@server lduan]# pwd
/home/lduan
[root@server lduan]#
这里通过su命令已经切换到root用户了,因为su后面没有加"-",所以切换之后所在目录并没有发生任何的改变,仍然是在/home/lduan中的。这样即使切换到root用户了,使用的仍然是lduan用户的PATH变量。
[root@server lduan]# echo $PATH
/home/lduan/.local/bin:/home/lduan/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
[root@server lduan]#
下面退回到lduan用户。
[root@server lduan]# exit
exit
[lduan@server ~]$ echo $PATH
/home/lduan/.local/bin:/home/lduan/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
[lduan@server ~]$
可以看到,环境变量是一样的,再次查看当前用户及所在目录。
[lduan@server ~]$ whoami
lduan
[lduan@server ~]$ pwd
/home/lduan
[lduan@server ~]$
下面使用su - root切换到root用户,注意这里su后面有"-"。
[lduan@server ~]$ su - root
密码:
[root@server ~]# whoami
root
[root@server ~]# pwd
/root
[root@server ~]#
可以看到,现在已经切换到root用户了,且所在目录也变为了root的家目录/root了。此时使用的是root的环境变量。
[root@server ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@server ~]#
su后面不加用户名,默认就是root,所以:
su - 和 su - root相同
su 和 su root相同
root用户su到任何用户都不需要密码。
作业
1.在终端提示符中已经敲了很长一条命令,现在想把光标快速切换到此命令的开头,按什么键?
a. Ctrl+A
b. Ctrl+E
c. Ctrl+U
d. Ctrl+K
2.如果要查看/boot(含里面内容)的总大小,应该用如下哪个命令?
a. du –sh /boot
b. ls –size –d /boot
c. df –Th /boot
3.哪个组合键可以关闭一个正在运行的任务?
a. Ctrl+C
b. Ctrl+D
c. Ctrl+Z
d. Ctrl+Break