第2章 Linux 中执行命令
命令格式
命令 [选项] [参数....]
在linux 中命令分为内部命令和外部命令。
ctrl+l 可以清屏
查看帮助的命令
在使用命令之前,我们可以通过帮助来查看这个命令的格式和使用方式。在 Linux 中有两个帮助命令, help 和 man
help
例如 cd 这个命令我只知道命令的名称,不知道的使用方式。此时就可以使用 help 来查看,使用的格式为:
# help 命令名称 [root@bogon ~]# help cd cd: cd [-L|[-P [-e]] [-@]] [dir] Change the shell working directory. Change the current directory to DIR. The default DIR is the value of the HOME shell variable. # 还可以使用 --help 的方式来查看帮助 [root@bogon ~]# ls --help Usage: ls [OPTION]... [FILE]... List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
man
man 是 manual(手册)的简写。它的使用方式为:
man 命令名称
例如我们通过 man 来查看 ls 命令的使用:
# man ls LS(1) User Commands LS(1) NAME ls - list directory contents SYNOPSIS ls [OPTION]... [FILE]...
说明:进入这个使用的帮助信息后,按向下箭头可以向下滚动一行,按向上箭头可以往前滚动一行。按空格键可以向下翻页,按q键退出帮助。
IP 地址指令
获取IP地址
[root@bogon ~]# nmcli --help Usage: nmcli [OPTIONS] OBJECT { COMMAND | help } # 查看网络设备 [root@bogon ~]# nmcli device DEVICE TYPE STATE CONNECTION ens160 ethernet connected ens160 lo loopback connected (externally) lo [root@bogon ~]# nmcli d DEVICE TYPE STATE CONNECTION ens160 ethernet connected ens160 lo loopback connected (externally) lo # 注意:上面中的 ens160 就是我的网卡设备名称,你们的名称有可能和我不一样,要用你们自己的名称 # 使用ens160 [root@bogon ~]# nmcli connection ens160 Error: argument 'ens160' not understood. Try passing --help instead. [root@bogon ~]# # 上面的命令报错了,原因是没有指定 OBJECT,正确的使用如下; [root@bogon ~]# nmcli device connect ens160 Device 'ens160' successfully activated with '1f212fa6-bb52-3c62-ab97-66818fb871a1'.
日期 date
[root@bogon ~]# date --help Usage: date [OPTION]... [+FORMAT] or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] [root@bogon ~]# date Sun Oct 29 03:20:26 PM CST 2023
说明:上面命令执行后在输出的内容中有一个 CST 的,它表示的是中国是区,UTC 世界时区, CST = UTC + 8
如果希望显示的日期是我们习惯的日期,则需要按照如下的命令格式来指定。
[root@bogon ~]# date +%Y/%m/%d 2023/10/29
如果希望显示年-月-日 小时:分:秒,如果实现?
[root@bogon ~]# date +%Y-%m-%d %H:%M:%S date: extra operand ‘%H:%M:%S’ Try 'date --help' for more information.
上面的命令执行后报错了。原因在于我们的格式部分有了空格。如果解决?
解决的方式是把格式化的内容放在引号中:
[root@bogon ~]# date "+%Y-%m-%d %H:%M:%S" 2023-10-29 15:31:43 [root@bogon ~]# date '+%Y-%m-%d %H:%M:%S' 2023-10-29 15:32:18
在 Linux 中单引号和双引号都可以使用。
如果希望设置时区,则可以使用 timedatectl 来操作。
[root@bogon ~]# timedatectl --help timedatectl [OPTIONS...] COMMAND ... Query or change system time and date settings. Commands: status Show current time settings show Show properties of systemd-timedated set-time TIME Set system time set-timezone ZONE Set system time zone list-timezones Show known time zones set-local-rtc BOOL Control whether RTC is in local time set-ntp BOOL Enable or disable network time synchronization [root@bogon ~]# timedatectl status Local time: Sun 2023-10-29 15:34:08 CST Universal time: Sun 2023-10-29 07:34:08 UTC RTC time: Sun 2023-10-29 07:34:08 Time zone: Asia/Shanghai (CST, +0800) System clock synchronized: yes NTP service: active RTC in local TZ: no
修改时区
[root@bogon ~]# timedatectl set-timezone Asia/Shanghai
用户切换
用户切换需要使用 su 命令来实现它的使用格式为:
[root@bogon ~]# su --help Usage: su [options] [-] [<user> [<argument>...]]
由于我们在安装 Redhat 时已经添加了一个叫 redhat 的普通用户。我们再在就在 root 用户和 redhat 这两个用户之间来进行切换。
-
从root 用户切换到 redhat 普通用户
[root@bogon ~]# su -l redhat [redhat@bogon ~]$ [root@bogon ~]# su redhat [redhat@bogon root]$
记住:在 Linux 中执行后没有信息就是最好的消息
@ 前面表示当前登录用户的名称,而 @ 后面表示主机名称
切换成功后,命令提示符发生以下的变化:
-
由 [root@bogon] 变为了 [redhat@bogon]
-
中括号后的 # 号变为了 $ 符号(# 表示超级用户的提示符,而 $ 表示是普通用户的命令提示符)
-
-
再从普通用户 redhat 切换到超级用户 root 中
[redhat@bogon ~]$ su -l root Password: [root@bogon ~]#
说明:当从普通用户切换到超级用户时,要求输入超级用户的登录密码,在输入密码过程中不会有任何的提示信息,我们输入正确的密码即可。
注意:在切换用户时带有 -l 选项和不带 -l 选项的区别是带了后在切换用户的同时也会切换用户的环境,否则不会切换用户环境只会切换用户
[redhat@bogon ~]$ su -l Password: [root@bogon ~]# # 注意:如果 su 后面不带用户名,默认就会切换到 root 用户
问:切换用户后,如果想回到之前的用户怎么做?
答:我们可以使用 exit 命令来退出当前用户的登录状态。
[root@bogon ~]# exit logout [redhat@bogon ~]$
设置主机名称
通常我们为了区分以及后面搭建集群时可以更好的标识一个虚拟机,我们都会给当前的系统指定方机名称。
指定主机名称通过 hostnamectl 命令来实现。
命令格式:
[root@bogon ~]# hostnamectl --help hostnamectl [OPTIONS...] COMMAND ... Query or change system hostname. Commands: status Show current hostname settings hostname [NAME] Get/set system hostname icon-name [NAME] Get/set icon name for host chassis [NAME] Get/set chassis type for host deployment [NAME] Get/set deployment environment for host location [NAME] Get/set location for host
查看当前的主机名称:
# 查看主机名称的状态 [root@bogon ~]# hostnamectl status Static hostname: (unset) Transient hostname: bogon Icon name: computer-vm Chassis: vm 🖴 Machine ID: 5c5bb57619564f628a3f3f51cb63f773 Boot ID: 0a3d61c8bed54836abe384268495b33d Virtualization: vmware Operating System: Red Hat Enterprise Linux 9.2 (Plow) CPE OS Name: cpe:/o:redhat:enterprise_linux:9::baseos Kernel: Linux 5.14.0-284.11.1.el9_2.x86_64 Architecture: x86-64 Hardware Vendor: VMware, Inc. Hardware Model: VMware Virtual Platform Firmware Version: 6.00 # 获取主机名称 [root@bogon ~]# hostnamectl hostname bogon
如果希望修改主机名称为 redhat01 则执行如下的命令:
[root@bogon ~]# hostnamectl hostname redhat01 [root@bogon ~]# hostnamectl hostname redhat01 [root@bogon ~]#
从上面的命令执行后的效果可以发现:主机名称已经修改成功,但是在命令提示符上显示的还是原来的名称。要想它也跟着变化我们需要重启服务。
获取当前路径 pwd
我们可以使用 pwd 命令来获取当前用户所在路径
[root@bogon ~]# pwd /root [root@bogon ~]# cd /home/redhat [root@bogon redhat]# pwd /home/redhat