Linux 中执行命令的语法
Linux 中最常见命令的使用
使用一些快捷键提升输入命令的速度
切换用户
重置root密码
Linux中的很多操作都是通过命令行完成的,最常用的输入命令的方法有以下两种。 1. 打开自带的终端,类似于Windows中的CMD。 2. ssh远程连接,关于ssh连接后面有专门章节讲解。 本章主要讲解的是在终端中的操作
1. 输入命令的语法
在终端中执行命令需要遵照一定的语法,输入命令的格式如下。
1 命令 参数
2 命令 ‐选项 参数
输入命令时可以包含多个选项,假如一个命令有 -a、-b、-c、-d 四个选项,可以写作
1 命令 ‐a ‐b ‐c ‐d 参数
这里会把-abcd当成 -a、-b、-c、-d四个选项。 如果一个单词(多个字母)作为一个选项使用,要使用两个“--”。
[root@redhat8 ~]# ls -help
ls: 不适用的选项 -- e
请尝试执行 "ls --help" 来获取更多信息。
这里会把--help当成4个选项:-h、-e、-l、-p,报错信息使没有-e选项。但是我们知道 help是一个单词,应该作为一个选项出现,所以前面应该是两个“--”。
[root@redhat8 ~]# ls --help
用法:ls [选项]... [文件]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
我们先看几个常见命令的使用。
第一个命令是ls,ls的作用是列出一个目录中的内容,类似Windows CMD命令行下的dir 命令,如图所示。
[root@redhat8 ~]# ls
公共 模板 视频 图片 文档 下载 音乐 桌面
这里ls并没有加任何参数,表示显示当前所在的目录内容。如何查看当前所在目录呢?可以使用pwd命令。
[root@redhat8 ~]# pwd
/root
ls命令可以加上一个 -a 选项,表示列出所有的内容,包括隐藏文件。
[root@redhat8 ~]# ls -a
. 模板 文档 桌面 .bash_profile .config .esd_auth .local .Xauthority
.. 视频 下载 anaconda-ks.cfg .bashrc .cshrc .ICEauthority .pki
公共 图片 音乐 .bash_logout .cache .dbus initial-setup-ks.cfg .tcshrc
在Linux中,所有以 “ . ” 开头的文件都是隐藏文件。 ls命令可以加上一个 -l(字母 l 不是数字 1)选项,表示以长模式的形式展示。
[root@redhat8 ~]# ls -l /boot/config-4.18.0-348.el8.x86_64
-rw-r--r--. 1 root root 193903 10月 5 2021 /boot/config-4.18.0-348.el8.x86_64
这里显示了/boot/config-4.18.0-348.el8.x86_64 相关属性的信息,包括所有者、所属组 织和权限等,这些后面章节会详细。上面加粗字表示的是文件的大小,这里单位是B,但是 看起来并不能很快识别具体大小,所以可以加上 -h 选项。
[root@redhat8 ~]# ls -lh /boot/config-4.18.0-348.el8.x86_64
-rw-r--r--. 1 root root 190K 10月 5 2021 /boot/config-4.18.0-348.el8.x86_64
加上-h选项之后,会以更适合阅读的单位来显示。
在ls后如果以目录作为参数,则显示的是这个目录中的内容,如果想显示这个目录本身的 属性,需要加上 -d 选项。
有人会有疑问,/boot中那么多东西,怎么才是4.0K?
因为这里仅显示了/boot目录本身的属性,并不包括目录里面内容的大小。例如,一个口 袋重1斤,装了500斤重的石头,口袋的重量仍然是1斤。
如果想显示目录及里面内容的总大小,则可以使用du命令。
[root@redhat8 ~]# du -sh /boot/
188M /boot/
1. -h选项是以跟适合阅读的单位来显示。
2. -s选项是摘要信息,只显示目录总大小,不显示子目录的大小,这里可以看 到/boot 及里面内容的总大小为188M。
下面介绍其它命令的使用。 直接输入date命令,可以显示日期和时间。
[root@redhat8 ~]# date
2023年 11月 29日 星期三 14:41:46 CST
显示日历信息,用法是“cal 月 年”,例如,显示2023年12月的日历。
2023年 11月 29日 星期三 14:41:46 CST
[root@redhat8 ~]# cal 12 2023
十二月 2023
日 一 二 三 四 五 六
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
如果不加月、年,则显示今年、本月的日历。
屏幕内容太多,可以输入“clear”后,按【Enter】键清屏,或者按【Ctrl+l】组合键清屏。
命令行中的计算器是bc,bc加上-q选项,是以简洁模式显示。在bc中输入要计算的表达 式。按【Enter】键即可。
[root@redhat8 ~]# bc -q
5+10
15
5/2
2
这里计算5/2得到的值应该是2.5,但是答案却是2,因为默认情况下bc中并不保留小数点 之后的部分。如果想保留小数点之后的部分,需要通过scale=N指定需要保留小数点之后的 多少位,这里N是一个数字。例如,要保留小数点之后的2位,可以写出scale=2
scale=2
5/2
2.50
quit
[root@redhat8 ~]#
输入quit命令后,按【Enter】键,可以退出计算器。输入命令时,如果遇到#,#后面的内容不会执行,而是作为注释。
[root@redhat8 ~]# #whoami
[root@redhat8 ~]#
如果已经输入了某个命令,不想执行该命令,可以按【Ctrl+C】组合键终止命令。
[root@redhat8 ~]# ls ^C
[root@redhat8 ~]#
2.介绍shell
在终端中输入命令,必须对它进行解悉/解析,这个解释器就是shell,shell是一种进程。 Linux支持很多种shell
[root@redhat8 ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
这里cat的意思是查看一个文本文件的内容,Linux默认使用的shell是bash。
3.tab补齐
在Linux中输入命令时不能简写,必须完整。先输入几个字符,例如,这里先输 入“hi”,如果有以hi开头的命令,再按【Tab】键。
[root@redhat8 ~]# hi<tab>
这里表示按【Tab】键,可以看到会自动补齐为history。
[root@redhat8 ~]# history
因为在所有命令中,只有history这一个命令是以hi开头的。
如果有多个命令都是以输入的字符开头的,那么需要按两次【Tab】键,就可以把所有以 这些字符开头的命令显示出来。例如,输入“h”,按两次【Tab】键。
这里表示按了两次【Tab】键,得到的结果如下。
root@redhat8 ~]# h
halt hash hcitool hex2hcd hostid hwclock
handle-sshpw hciattach hdparm hexdump hostname hypervfcopyd
hangul hciconfig head history hostnamectl hypervkvpd
hardlink hcidump help host hunspell hypervvssd
4 历史命令
想查看前期输入过的命令,可以执行history命令。
[root@redhat8 ~]# history
此时可以按键盘上的上,下箭头来调用历史命令中的那些命令。支持history -c命令可以清除所有历史命令
5 调整光标位置
当输入了一条较长的命令之后,可以通过快捷键来调整光标的位置。 按【Ctrl+A】组合键或【Home】键,可以把光标调整到行的开头,如图所示。
按【Ctrl+E】组合键或【Enter】键,可以把光标调整到行的结束,如图所示。
在浏览器中经常打开多个标签来访问不同的页面,同样地,在Linux的终端中我们也需要 打开多个标签,方便我们执行命令。例如,图中就一个标签
我们可以按【Ctrl+Shift+T】组合键快速打开标签,如图所示
然后通过按【Ctrl+PgUp】或【Ctrl+PgDn】组合键进行标签的切换。
6.用户切换
在Linux中,管理用户是root,在终端中的提示符是#。root的权限很大,为了防止误操作,平时尽量使用普通用户登录,普通用户登录的提示符是$
但有时普通用户登录时,会遇到权限不够的情况,例如,执行下面的命令。
[bdqn@redhat8 ~]$ mount /dev/cdrom /mnt/
mount: 只有 root 能执行该操作
这个命令是什么意思暂且不管,后面会讲。但是这里使用 blab 用户执行此命令,被告知 没有权限,只有root用户才能执行这个命令。这个问题可以通过su和sudo命令来解决,其 中sudo命令的使用我们将在后面进行讲解。
su命令可以从当前用户切换到其他用户,su的用法如下。
su 用户名
su ‐ 用户名 #注意“ ‐ ”两边是有空格的
如果后面没有跟用户名,则默认为root。这里带“ - ”和不带“ - ”的区别在于切换用 户之后的环境变量不一样,关于环境变量后面讲到脚本时会讲,区别如下。
[bdqn@redhat8 ~]$ whoami
bdqn
[bdqn@redhat8 ~]$ pwd
/home/bdqn
这里当前用户时blab用户,所在目录是blab的家目录/home/blab。下面通过su root切 换到root用户,注意这里su后面没有“ - ”。
[bdqn@redhat8 ~]$ su
密码:
[root@redhat8 bdqn]# whoami
root
[root@redhat8 bdqn]# pwd
/home/bdqn
这里通过 su 命令已经切换到 root 用户了,因为 su 后面没有加“ - ”,所以切换之后所 在目录并没有发生任何改变,仍然是在/home/blab中的。这样即使切换到root用户了,使 用仍然是blab用户的PATH变量。
[bdqn@redhat8 ~]$ echo $PATH
/home/bdqn/.local/bin:/home/bdqn/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
下面回退到bdqn用户
[root@redhat8 bdqn]# exit
exit
[bdqn@redhat8 ~]$ echo $PATH
/home/bdqn/.local/bin:/home/bdqn/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
可以看到,环境变量是一样的,再次查看当前用户及所在目录。
[bdqn@redhat8 ~]$ whoami
bdqn
[bdqn@redhat8 ~]$ pwd
/home/bdqn
下面使用su -root切换到root用户,注意这里 su 后面有“ - ”。
bdqn@redhat8 ~]$ su - root
密码:
[root@redhat8 ~]# whoami
root
[root@redhat8 ~]# pwd
/root
可以看到,现在已经切换到 root 用户了,且所在目录也变成了 root 的家目录 /root。此 时使用的是root用户的PATH变量。
[root@redhat8 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
su后面不加用户名,默认就是root,所以 su - 和 su - root 相同。su和su root相同。
root用户su命令切换到任何用户都不需要输入密码。