02.Linux基础命令
Linux基础命令
- Linux基础命令
- **命令格式**
- 1. tty
- 2. shell
- 3. hostname
- 4. type
- 5. which
- 6. hash
- 7. alias
- 8. 查看硬件信息
- 9. 查看系统版本信息
- 10. 日期时间和时区
- 11. **关机和重启**
- 12. 用户登录信息查看命令
- 13. echo
- 14. history
- 15. 获取帮助
- 16. 会话管理
- 17. seq
Linux基础命令
命令格式
COMMAND [OPTIONS...] [ARGUMENTS...]
COMMAND [COMMAND] [COMMAND] ....COMMAND # 命令
OPTIONS # 选项,用于启用或关闭命令的某个或某些功能
ARGUMENTS # 参数,命令的作用对象,比如:文件名,用户名等
[] # 表示里面的内容是可选项,也就是说,一条命令,选项和参数是可以都没有的
... # 表示可以有多个值,也就是说,一条命令,可以有多个选项,或多个参数选项有多种风格:短选项:UNIX 风格选项,-c 例如:-l, -h长选项:GNU风格选项,--word 例如:--all, --humanBSD风格选项: 一个字母,例如:a,使用相对较少注意:多个选项以及多参数和命令之间使用空白字符分隔取消和结束命令执行:Ctrl+c,Ctrl+d多个命令可以用 ";" 符号分开一个命令可以用\分成多行
1. tty
★ 查看当前的终端设备
[root@rocky8 test]# tty
/dev/pts/0
2. shell
★ 显示当前使用的shell
[root@rocky8 ~]# echo $SHELL
/bin/bash
[root@rocky8 ~]# echo ${SHELL}
/bin/bash★ 显示当前系统使用的所有shell
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
3. hostname
★ 设置主机名
临时生效
hostname NAME
[root@rocky8 ~]# hostname
rocky8
[root@rocky8 ~]# hostname zzz
[root@rocky8 ~]# hostname
zzz
reboot重启后
[root@rocky8 ~]# hostname
rocky8持久生效,支持CentOS7和Ubuntu18.04以上版本
hostnamectl set-hostname NAME
[root@rocky8 ~]# hostnamectl set-hostname rocky8
[root@rocky8 ~]# hostname
rocky8★ 查看主机名
[root@rocky8 ~]# hostname
rocky8★ 显示主机的IP地址
[root@rocky8 ~]# hostname -i
fe80::20c:29ff:fe2f:ae1f%ens160 10.0.0.150 192.168.122.1★ 显示主机的所有IP地址
[root@rocky8 ~]# hostname -I
10.0.0.150 192.168.122.1
注意
- 修改hostname 需要root权限
- 主机名不支持使用下划线,但支持横线,可使用字母,横线或数字组合
- 有些软件对主机名有特殊要求
- 一般按照组织的要求设置主机名,通常有一定的意义的
- 错误的主机名可能会导致某些服务无法启动
4. type
shell中可执行的两类命令
- 内部命令:由shell自带的,而且通过某命令形式提供,用户登录后自动加载并常驻内存中
- 外部命令:在文件系统路径下有对应的可执行程序文件,当执行命令时才从磁盘加载至内存中,执行完毕后从内存中删除
type COMMANDtype # 区分是内部命令还是外部命令
type -t # 简写,只给出类型,builtin|alias|file|keyword
type -a # 列出所有,有可能是内部命令,也同时会是外部命令
bash -c help # 查看bash中所有内容(不仅仅是内部命令)
help # 查看bash中所有内容(不仅仅是内部命令)
enable # 查看bash中所有内置命令
enable cmd # 启用内部命令
enable -n cmd # 禁用内部命令
enable -n # 查看所有禁用的内部命令
help echo # 查看内部命令帮助★ 区分是内部命令还是外部命令
[root@rocky8 ~]# type echo
echo is a shell builtin
[root@rocky8 ~]# type cat
cat is /usr/bin/cat★ 简写,只给出类型,builtin|alias|file|keyword
[root@rocky8 ~]# type -t echo
builtin
[root@rocky8 ~]# type -t ls
alias★ 列出所有,有可能是内部命令,也同时会是外部命令
[root@rocky8 ~]# type -a echo
echo is a shell builtin
echo is /usr/bin/echo
5. which
★ 查看外部命令路径
[root@rocky8 ~]# which ls
alias ls='ls --color=auto'/usr/bin/ls
[root@rocky8 ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz★ 查看外部命令路径且跳过别名
[root@rocky8 ~]# which --skip-alias ls
/usr/bin/ls★ -a 表示在所有路径中查找匹配的命令,默认只匹配第一个找到的
[root@rocky8 ~]# which -a echo
/usr/bin/echo★ 查看path
[root@rokcy8 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
which不是扫描整个硬盘,只会查找特定目录
6. hash
Hash缓存表
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的存在将执行之,如果不路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率
hash # 显示当前终端进程中的hash 缓存
hash -l # 显示详创建此条hash 的命令,可作为输入使用
hash -p path name # 手动创建hash
hash -t name # 输出路径
hash -d name # 删除指定hash
hash -r # 清空所有hash★ 显示当前终端进程中的hash 缓存
[root@rocky8 ~]# hash
hits command1 /usr/bin/hostnamectl6 /usr/bin/hostname1 /usr/bin/whereis1 /usr/sbin/ping1 /usr/sbin/ip★ 显示详细创建此条hash 的命令,可作为输入使用
[root@rocky8 ~]# hash -l
builtin hash -p /usr/bin/hostnamectl hostnamectl
builtin hash -p /usr/bin/hostname hostname
builtin hash -p /usr/bin/whereis whereis
builtin hash -p /usr/sbin/ping ping
builtin hash -p /usr/sbin/ip ip★ 手动创建hash
[root@rocky8 ~]# builtin hash -p /usr/sbin/ping ping
[root@rocky8 ~]# hash
hits command1 /usr/bin/hostnamectl6 /usr/bin/hostname1 /usr/bin/whereis0 /usr/sbin/ping1 /usr/sbin/ip★ 输出路径
[root@rocky8 ~]# hash -t ping
/usr/sbin/ping★ 删除指定hash
[root@rocky8 ~]# hash -d ping
[root@rocky8 ~]# hash
hits command1 /usr/bin/hostnamectl6 /usr/bin/hostname1 /usr/bin/whereis1 /usr/sbin/ip★ 清空所有hash
[root@rocky8 ~]# hash -r
[root@rocky8 ~]# hash
hash: hash table empty
7. alias
alias # 显示当前shell进程所有可用的命令别名
alias name # 查看指定别名
alias NAME='VALUE' # 定义别名NAME,其相当于执行命令VALUE
unalias # 撤消别名★ 列出所有别名
[root@rocky8 ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'★ 查看指定别名
[root@rocky8 ~]# alias ls
alias ls='ls --color=auto'★ 定义别名
[root@rocky8 network-scripts]# alias cdnet='cd /etc/sysconfig/network-scripts'
[root@rocky8 ~]# cdnet
[root@rocky8 network-scripts]# ★ 撤销别名
[root@rocky8 network-scripts]# unalias cdnet
[root@rocky8 ~]# cdnet
bash: cdnet: command not found...★ 撤销所有别名
[root@rokcy8 ~]# unalias -a
[root@rokcy8 ~]# alias# 扫描新加的磁盘 (别名)
[root@localhost scsi_host]#ls /sys/class/scsi_host/
host0 host1 host2[root@rocky8 ~]# alias scandisk='echo - - - >/sys/class/scsi_host/host0/scan;echo - - - > /sys/class/scsi_host/host1/scan;echo- - - > /sys/class/scsi_host/host2/scan'
在命令行中定义的别名,仅对当前shell进程有效
如里需要永久有效,则要写配置文件:
- 仅对当前用户:~/.bashrc
- 对所有用户有效:/etc/bashrc
编辑配置文件新加的别名不会立即生效,要退出重新登录或在当前进程中重新读取配置文件
source /path/to/config_file
. /path/to/config_file
命令执行优先级
别名 -----> 内部命令 ------> 外部命令
8. 查看硬件信息
★ 查看 cpu
[root@rocky8 ~]# lscpu
[root@rocky8 ~]# cat /proc/cpuinfo★ 查看内存大小
[root@rocky8 ~]# free
[root@rocky8 ~]# free -h
[root@rocky8 ~]# cat /proc/meminfo ★ 1秒刷新一次数据
[root@rocky8 ~]# free -hs 1★ 刷新2次数据后退出
[root@rocky8 ~]# free -hc 2total # 系统总的可用物理内存大小
used # 已被使用的物理内存大小
free # 还有多少物理内存可用
shared # 被共享使用的物理内存大小
buff/cache # 被 buffer 和 cache 使用的物理内存大小
available # 还可以被 应用程序 使用的物理内存大小free 是真正尚未被使用的物理内存数量。
available 是应用程序认为可用内存数量,available = free + buffer + cache (大概的计算方法)★ 查看硬盘和分区情况
[root@rocky8 ~]# lsblk
[root@rocky8 ~]# cat /proc/partitions
9. 查看系统版本信息
★ 查看系统架构
[root@rocky8 ~]# arch ★ 查看内核版本
[root@rocky8 ~]# uname
[root@rocky8 ~]# uname -r★ 查看操作系统发行版本
CentOS 查看发行版本
[root@rocky8 ~]# cat /etc/redhat-release CentOS 查看发行版本 ubuntu 查看发行版本
[root@rocky8 ~]# cat /etc/os-release
nan@nan:~$ lsb_release -a
10. 日期时间和时区
Linux的两种时钟
- 系统时钟:由Linux内核通过CPU的工作频率进行的
- 硬件时钟:主板
★ 显示系统时间
[root@rocky8 ~]# date
Fri Jan 19 11:38:29 CST 2024
[root@rocky8 ~]# date +%F
2024-01-19
[root@rocky8 ~]# date +%F-%T
2024-01-19-11:39:58★ 从1970年1月1日到当前时间经历了多少秒
[root@rocky8 ~]# date +%s
1705636028★ 显示硬件时间
[root@rocky8 ~]# clock
2024-01-19 11:48:01.334573+08:00
[root@rocky8 ~]# hwclock
2024-01-19 11:48:40.523216+08:00★ 以硬件时钟为准,校正系统时钟
[root@rocky8 ~]# clock -s★ 日历
Usage:
cal [options] [[[day] month] year]
cal [options] <timestamp|monthname>[root@rocky8 ~]# cal 9 1752September 1752
Su Mo Tu We Th Fr Sa1 2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
11. 关机和重启
★ 关机
halt
poweroff
init 0
shutdown -h now ★ 重启
reboot
init 6
shutdown -r now
⭐ctrl+alt+delete 三键shutdown # 一分钟后关机
shutdown +10 # 10分钟后关机
shutdown 01:02 # 1点过两分关机
shutdown -r|--reboot # 一分钟后重启
shutdown -r now # 现在重启
shutdown -H|--halt # 一分钟后调用halt 关机
shutdown -P|--poweroff # 一分钟后调用poweroff 关机
shutdown -c # 取消关机计划
关机或重启:shutdown
shutdown程序会广播己登录的用户,被看作是安全的关机命令 是一个计划关机任务,可撤销
12. 用户登录信息查看命令
★ 显示当前用户的用户名
[root@rocky8 ~]# whoami
root★ 显示当前用户的用户名 终端 登录时间 来源IP
[root@rocky8 ~]# who am i
root pts/1 2024-01-19 11:42 (10.0.0.1)who # 列出在当前主机上所有登录用户
who -u | --users # 列出当前主机上所有用户的空闲时间 . 表示最近一分钟还是活跃状态 old 表示用户己经空闲超过24小时
who -s | --short # 列出在当前主机上所有登录用户,等同于who
who -q | --count # 登录用户统计
who -b | --boot # 上次系统启动时间
who -a | --all # 多选项组合
who -m # who am i[root@rocky8 ~]# who
root pts/0 2024-01-19 09:37 (10.0.0.1)
root pts/1 2024-01-19 11:42 (10.0.0.1)
[root@rocky8 ~]# who -u
root pts/0 2024-01-19 09:37 01:33 1381 (10.0.0.1)
root pts/1 2024-01-19 11:42 . 34290 (10.0.0.1)
[root@rocky8 ~]# who -s
root pts/0 2024-01-19 09:37 (10.0.0.1)
root pts/1 2024-01-19 11:42 (10.0.0.1)
[root@rocky8 ~]# who -q
root root
# users=2
[root@rocky8 ~]# who -bsystem boot 2024-01-19 09:37
[root@rocky8 ~]# who -asystem boot 2024-01-19 09:37
root + pts/0 2024-01-19 09:37 01:38 1381 (10.0.0.1)run-level 5 2024-01-19 09:37
root + pts/1 2024-01-19 11:42 . 34290 (10.0.0.1)
[root@rocky8 ~]# who -m
root pts/1 2024-01-19 11:42 (10.0.0.1)★ 显示当前所有登录用户的具体信息
[root@rocky8 ~]# w★ 查看特定用户
[root@rocky8 ~]# w root[root@rocky8 ~]# w13:18:20 up 3:41, 2 users, load average: 0.19, 0.05, 0.01
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 09:37 1:38m 0.16s 0.16s -bash
root pts/1 10.0.0.1 11:42 1.00s 0.07s 0.01s w
[root@rocky8 ~]# w root13:18:27 up 3:41, 2 users, load average: 0.18, 0.05, 0.01
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 09:37 1:38m 0.16s 0.16s -bash
root pts/1 10.0.0.1 11:42 3.00s 0.06s 0.00s w root
登录名 终端 来源IP 登录时间 空闲时间 当前终端中所有进程使用cpu的时间,不包括后台作业占用的时间 当前进程使用的cpu的时间
load average 表示平均负载,最近一分钟,最近五分钟,最近15分钟
13. echo
echo 命令可以将后面跟的字符进行输出
功能:显示字符,echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号echo: echo [-neE] [字符串]-n # 输出完成后不换行
-e # 转义特定字符串
-E # 不转义,原样输出,默认选项★ 默认换行
[root@rocky8 ~]# echo hello
hello★ 不换行
[root@rocky8 ~]# echo -n hello
hello[root@rocky8 ~]# echo "$VAR_NAME” # 用变量值替换,弱引用
echo '$VAR_NAME' # 变量不会替换,强引用★ 输出变量
[root@rocky8 ~]# echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin★ 原样输出
[root@rocky8 ~]# echo '$PATH'
$PATH# 启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
\a 发出警告声
\b 退格键
\c 最后不加上换行符号
\e escape,相当于\033
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\\ 插入\字符
\0nnn 插入nnn(八进制)所代表的ASCI字符
\xHH 插入HH(十六进制)所代表的ASCI数字 (man 7 ascii)# echo 高级用法
在终端中,ANSI定义了用于屏幕显示的Escape屏幕控制码
可以显示具有颜色的字符,其格式如下:
"\033[字符背景颜色;字体颜色m字符串\033[0m'
14. history
[root@ubuntu2204 ~]#history!n # 执行history命令输出对应序号n的命令
[root@ubuntu2204 ~]#!15
15. 获取帮助
# whatis 使用数据库来显示命令的简短描述
此工具在系统刚安装后,不可立即使用,需要制作数据库后才可使用
[root@ubuntu2204 ~]#mandb
[root@ubuntu2204 ~]#whatis ls# 查看命令的帮助
内部命令帮助
[root@ubuntu2204 ~]#type history
history 是 shell 内建
[root@ubuntu2204 ~]#help history[root@ubuntu2204 ~]#whatis history
history (3readline) - GNU History Library
[root@ubuntu2204 ~]#man 3 history外部命令帮助
[root@ubuntu2204 ~]#type date
date 已被录入哈希表 (/usr/bin/date)
[root@ubuntu2204 ~]#date --help
[] 表示可选项
CAPS或<>表示变化的数据
... 表示一个列表
x|y|z的意思是“x或y或z”
-abc的意思是 -a-b -c
{}表示分组[root@ubuntu2204 ~]#whatis date
date (1) - print or set the system date and time
[root@ubuntu2204 ~]#man 1 date[root@ubuntu2204 ~]#info date
16. 会话管理
命令行的典型使用方式是,打开一个终端窗口(terminalwindow,以下简称“窗口"),在里面输入命令。用户与计算机的这种临时的交豆,称为一次“会话"(session)
会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完
一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消失了。为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定“其他窗口
终端复用器软件就是会话与窗口的"解绑"工具,将它们彻底分离。
- 它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用
- 它可以让新窗口"接入"已经存在的会话。
- 它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
- 它还支持窗口任意的垂直和水平拆分。
17. seq
seq [起始数] [步长] [结束数][root@ubuntu2204 ~]#seq 10
1
2
3
4
5
6
7
8
9
10