文章目录
一、基础知识
[root@localhost ~]#
--------------------------------------------------------------------------
root # 表示用户名
localhost # 表示主机名
~ # 表示当前用户的家目录
# 普通用户的家目录在 /home/普通用户名称/
# 超级管理员root的家目录在 /root/
/ # 表示根目录
# # 表示当前用户用有超级管理员权限
$ # 表示当前用户是普通用户
# 关机命令
-------------------------------------------------------------------------
halt # 立即关机
poweroff # 立即关机
shutdown -h now # 立即关机(root用户使用)
shutdown -h 5 # 5秒后自动关机
# 重启
------------------------------------------------------------------------、
reboot
init6
shutdown -r now
二、Linux 基础命令
1. shell
shell 是 linux 系统后台运行的特殊程序,为用户和 linux 系统内核交互提供接口
(1)shell环境
bash 是 linux 系统默认的 shell 环境
① 查看当前使用的shell环境
[root@localhost ~]# echo $SHELL

② 查看当前可使用的shell环境
[root@localhost ~]# cat /etc/shells

③ shell的环境切换至sh
[root@localhost ~]# sh

(2)内部命令和外部命令
内部命令优先级比外部命令高
| 内部命令 | 外部命令 |
|---|---|
| 在shell内部 | 在shell外部 |
| 在shell解析器程序内部的特殊指令 | linux系统中可以完成某种功能的特定脚本文件和二进制文件 |
| 没有单独的系统文件 | 每个命令都有一个可执行的文件 |
| 自动载入内存 | 需要找到其对应的存储位置,由shell加载执行 |
查看是命令的类型
# 查看cd的类型
[root@localhost ~]# type cd
# 查看ls的类型
[root@localhost ~]# type ls

2. 命令格式
(1)格式
命令字 [选项] [参数]
-
命令字
整条命令最关键的一部份
-
选项
短格式:用 - 表示 再加上一个字母
长格式:用 – 表示 再加上一个单词
-
参数
命令字处理的对象
可以是单个也可以是多个
; 可以隔开命令,一次执行多个命令
(2)快捷键
| 快捷键 | 功能 |
|---|---|
| Tab 键 | 自动补齐(两次可以显示所有选项) |
| 反斜杠“\” | 强制换行或转义 |
| Ctrl+a | 光标移到最前 |
| Ctrl+e 或 end 键 | 光标移到最后 |
| Ctrl+U | 清空至行首不包括当前光标处的 字符 |
| Ctrl+K | 清空至行尾包括当前光标处的字符 |
| Ctrl+w | 从当前光标删除到开头 |
| ALT+d | 从当前光标删除末尾 |
| Ctrl+l | 清屏 |
| Ctrl+c | 取消本次命令编辑 |
| Ctrl+s/Ctrl+q | 锁屏/解锁 |
| 向上下箭头 | 回看执行过的命令 |
3. 帮助命令
(1)help
用于查看命令字的用法
① help内部命令格式:help 命令字
查看内部命令echo用法
[root@localhost ~]# help echo

② help外部命令格式:命令字 help
查看外部命令cat用法
[root@localhost ~]# cat --help

(2)man
man 比 help 显示的更加详细
退出查看按 q 键
用 man 查看 cat 的详细用法
[root@localhost ~]# man cat
(3)info
info 比 man 更加详细
退出按 q 键
用 info 查看 cat 的详细用法
[root@localhost ~]# info man
3. cd 命令
切换目录
格式:cd 目标目录
(1)特殊目录
| 目录 | 含义 |
|---|---|
| / | 根目录 |
| ~ | 当前用户的家目录 |
| /root | 超级管理员家目录 |
| /home/用户名 | 普通用户的家目录 |
| - | 上一次目录(上一次使用cd的目录) |
| . | 当前目录 |
| … | 当前目录的父目录 |
| . 开头的文件 | 隐藏文件(ls -a 可看到) |
(2)实操
切换至/opt目录
[root@localhost ~]# cd /opt

4. ls 命令
生产环境慎用,文件量过大,或导致死机
格式:ls [选项] [文件或目录]
(1)选项作用
| 选项 | 作用 |
|---|---|
| -l 或 直接 ll | 长格式显示 |
| -a | 显示全部文件,含隐藏文件(开头为 . 的文件) |
| -A | 显示全部文件,含隐藏文件(不包含 . 和 … ) |
| -d | 只列出本身,不包含目录下的文件 |
| -h | 人性化显示,文件大小带单位(与长格式显示联合使用) |
| -R | 递归显示 |
长格式显示每个字段的含义:
| 字段(共七个字段) | 含义 |
|---|---|
| 第一字段 | 第一位: 文件类型 - 表示普通文件 d 表示目录; l 表示链接文件; b 表示块设备(磁盘) p 管道文件 s 套接字文件 后九位: 每三位代表一方的权限 第一方 文件拥有者 第二方 — 文件拥有者所在的组 第三方 — 其他人 r 代表 可读;w 代表 可写;x 代表 可执行; |
| 第二字段 | 如果文件是目录:表示该目录下有多少文件 如果是文件:表示链接数 |
| 第三字段 | 拥有者 |
| 第四字段 | 拥有者所属组 |
| 第五字段 | 占用空间大小 |
| 第六字段 | 文件的更改的最新时间 |
| 第七字段 | 文件名称 如果是链接文件:会有箭头从文件名指向被链接文件的路径 |
(2)实操
① 显示当前目录下的内容
[root@localhost /]# ls

② 长格式显示 / 目录下的文件名
[root@localhost ~]# ll /

③ 人性化显示
[root@localhost /]# ll -h

④ 显示自身文件
[root@localhost /]# ls -d

⑤ 递归显示
[root@localhost /]# ls -R /opt

5. 查看文件或目录的占用空间大小
格式:
du [选项] [文件或目录]
(1)选项含义
| 选项 | 含义 |
|---|---|
| -a | 统计当前目录和目录下所有文件的占用空间大小 |
| -h | 人性化显示统计结果(默认 KB 为单位) |
| -s | 只统计当前目录的总占用空间大小,不统计子目录和子文件大小 |
| -d | 最大显示到第几层 |
| –exclude | 不计入统计 |
(2)实操
统计 /etc 目录的总占用空间大小并人性化显示
[root@localhost ~]# du -sh /etc

6. 创建目录和文件
(1)命令作用
| 命令 | 作用 |
|---|---|
| mkdir | 创建目录 创建递归目录时 使用选项 -p |
| touch | 创建文件 |
(2)实操
格式:
mkdir [选项] 目录名(路径)
touch 文件名
① 在根目录下创建 data 目录
[root@localhost ~]# cd /
[root@localhost /]# mkdir data

② 在 /data 目录下递归创建目录 aa、bb、cc,即 bb 在 aa 中,cc 在 bb 中
[root@localhost /]# cd data/
[root@localhost data]# mkdir -p aa/bb/cc

③ 在data目录下创建file1文件
[root@localhost data]# touch file1

④ 在data目录下创建多个同级目录 file2、flie3、file4
[root@localhost data]# touch file2 file3 file4

7. 复制及剪切目录和文件
(1)命令作用
| 命令 | 作用 |
|---|---|
| cp | 用于复制文件及目录 |
| mv | 用于剪切文件及目录(若源文件路径与目标文件路径一致,表示重命名) |
(2)选项含义
| 选项 | 含义 |
|---|---|
| -f | 覆盖同名文件及目录时不提醒,直接强制覆盖 |
| -i | 覆盖同名文件时提示用户确认 |
| -p | 复制、剪切时保持源目录的权限、属主、时间标记等属性不变 |
| -r | 复制、剪切目录时必须使用此选项,表示递归复制所有文件及子目录 |
| -a | 复制、剪切目录时完整保留完整的信息 |
| -v | 可视化(显示过程) |
| -u | 相当于增加备份,差异备份(只对目录起作用) |
(3)实操
格式:
cp [选项] 源文件路径 目标文件路径
mv [选项] 源文件路径 目标文件路径
① 将 /data/file1 文件复制到 /data/aa 目录中
[root@localhost data]# cp /data/file1 /data/aa/

② 将 /data/aaa 目录 复制到 /data/aa 目录下
[root@localhost data]# cp -rfa /data/aaa/ aa/

③ 将 /data/file2文件 剪切到 /data/aa 目录下
[root@localhost data]# mv /data/file2 /data/aa/
④ 将 /data/aa/bb 目录剪切到 /data/aaa 目录下
[root@localhost data]# mv /data/aa/bb /data/aaa

8. 删除目录和文件
(1)命令作用
| 命令 | 作用 |
|---|---|
| rm | 删除文件及目录 |
(2)选项含义
| 选项 | 含义 |
|---|---|
| -r | 递归删除(目录) |
| -f | 强制,不询问直接删除 |
| -i | 删除时询问 |
(2)实操
格式:
rm [选项] 目标目录或文件路径
① 删除 /data/file1文件
[root@localhost data]# rm -f file1

② 删除 /data/aaa目录
[root@localhost data]# rm -rf /data/aaa

9. 正则表达式
用于匹配符合要求的内容
(1)符号含义
| 符号 | 含义 |
|---|---|
| ? | 匹配任意一个字符(相当于任意一个字符),例:a?,表示a开头的两个字符 |
| * | 匹配所有字符,不包括 . 开头文件(隐藏文件) |
| {1…5} | {1…5} 匹配 1 到 5 的数字 |
| {a…z} | {a…z}匹配 a 到 z 的小写字母 |
| {A…Z} | {A…Z} 匹配 A 到 Z 的大写字母 |
| [123] | 匹配 1 、2 、3 中的随意字符 |
| [a-z] | 匹配 a-z 的任意大小写字母(大写Z 除外) |
| [A-Z] | 匹配 A-Z 的任意大小写字母(小写a 除外) |
| \ | 转义字符表示原来的意思 |
| [[:lower:]] | 匹配 a 到 z 的小写字母 |
| [[:upper:]] | 匹配 A 到 Z 的大写字母 |
| [[:digit:]] | 匹配任意数字,相当与 0-9 |
(2)实操
① 查看/data中含有共两个字符且第二个字符时a的文件及目录
[root@localhost data]# ls ?a

② 查找/data目录中f开头的所有文件或目录
[root@localhost data]# ls f*

③ 在/data目录中创建 1-3.txt 文件
[root@localhost data]# touch {1..3}.txt

④ 在/data目录中创建 a-c.txt 文件
[root@localhost data]# touch {a..c}.txt

⑤ 查找/data目录中 1.txt 和 a .txt 的文件或目录
[root@localhost data]# ls [1a].txt

10. 命令别名
(1)命令
| 命令 | 作用(临时修改,系统重启后失效) |
|---|---|
| alias 命令别名=‘命令’ | 修改命令别名 |
| unalias 命令别名 | 删除命令别名 |
| \加别名的命令 | 使用原始命令 |
| 命令 | 作用(永久修改) |
|---|---|
| 进入 /etc/.bashrc 添加修改别名 | 影响全部用户 |
| 进入 /当前用户的家目录/.bashrc 添加修改别名 | 只影响当前用户 |
(2)实操
① 将 cat /etc/sysconfig/network-scripts/ifcfg-ens33 命令临时将别名设置为 ens33
[root@localhost ~]# alias ens33='cat /etc/sysconfig/network-scripts/ifcfg-ens33'

② 删除别名ens33
[root@localhost ~]# unalias ens33

③ 将 ls /opt 命令的别名设置为 ls,当使用 ls 查看当前目录下的内容时,发现是查看 /opt 目录下的内容,使用 \ls 使用原 ls 命令
[root@localhost /]# alias ls='ls /opt'
[root@localhost /]# \ls

④ 将 cat /etc/sysconfig/network-scripts/ifcfg-ens33 命令的当前用户的别名永久设置为 ens33
[root@localhost ~]# vim .bashrc
[root@localhost ~]# source .bashrc
alias catens33='cat /etc/sysconfig/network-scripts/ifcfg-ens33'
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# catens33
[root@localhost ~]# su m
[m@localhost root]$ catens33
bash: catens33: 未找到命令...
[m@localhost root]$



⑤ 删除当前用户永久别名catens33
[root@localhost ~]# vim .bashrc
将 alias catens33='cat /etc/sysconfig/network-scripts/ifcfg-ens33' 删除
[root@localhost ~]# source .bashrc
[root@localhost ~]# catens33
bash: catens33: 未找到命令...



④ 将 cat /etc/sysconfig/network-scripts/ifcfg-ens33 命令的所有用户的别名永久设置为 ens33
[root@localhost ~]# vim /etc/bashrc
alias catens33='cat /etc/sysconfig/network-scripts/ifcfg-ens33'
[root@localhost ~]# source /etc/bashrc
[root@localhost ~]# catens33
[root@localhost ~]# su m
[m@localhost root]$ catens33



11. 硬链接与软链接
格式:
| 类型 | 命令格式 |
|---|---|
| 硬链接 | ln 源文件路径 目标文件路径 |
| 软连接 | ln -s 源文件或源目录路径 目标文件或目标目录路径 |
(1)对比
| 对比项 | 硬链接 | 软链接 |
|---|---|---|
| 本质 | 与原文件是同一个文件 | 不是同一个文件 |
| inode号 | 相同 | 不同 |
| 链接数 | 增删硬链接,链接数会改变 | 增删软链接,链接数不会改变 |
| 支持文件类型 | 普通文件 | 普通文件和目录 |
| 删除源文件 | 链接数减1,链接文件不受影响 | 无法访问链接文件 |
| 链接文件类型 | 与源文件相同 | 与源文件无关 |
| 文件大小 | 和源文件大小相同(都指向硬盘同一个地方) | 源文件路径的长度大小 |
(2)实操
在 /data 目录中 创建 file1文件的硬链接 file1.1 到 dir1,创建 file1文件的软链接 file1.2 到 dir1
[root@localhost ~]# cd /data
[root@localhost data]# ln file1 dir1/file1.1
[root@localhost data]# ln -s file1 dir1/file1.2

12. find 查找文件
格式:
find [查找路径] [查找条件] [处理动作]
(1)查找类型说明
| 查找类型 | 关键字 | 说明 |
|---|---|---|
| 按名称查找 | -name | 根据目标文件的名称查找(允许使用通配符 * 和 ?) |
| 按文件大小查找 | -size | 根据目标文件所占用的空间大小来查找,小于用 - 表示,大于用 + 表示,单位 k(k是小写)、MB、GB |
| 按文件的属主查找 | -user | 根据文件的拥有者查找 |
| 按文件类型查找 | -type | 根据文件的类型查找,f 普通文件、d 目录、b 块设备、c 字符设备文件 |
| 按inode号查找 | -inum | 根据文件的inode号查找 |
| 按权限查找 | -perm | 按文件的权限查找,r 可读、w可写、x 可执行 |
| 按时间查找 | -atime -mtime -ctime | 按最近访问时间 -atime 按最近更改时间 -mtime 按最近改变属性时间 -ctime |
| 按最大深度查找 | -maxdepthlevel | 将文件分级,查找相应等级数以内的文件 |
| 按最小搜索目录深度 | -mindepthlevel | 同上 |
(2)实操
① 在 /data 目录下查找开头为 f 的文件
[root@localhost data]# find /data -name 'f*'

② 将 /data 目录下占用空间小于2kB的普通文件复制到/data/dir1目录下
[root@localhost data]# find /data -type f -size -2k -exec cp {} /data/dir1 \;

13. 查看硬件信息
(1)查看CPU信息
第一种:
[root@localhost ~]# lscpu

第二种:
[root@localhost ~]# cat /proc/cpuinfo
#### (2)查看内存大小
第一种:
[root@localhost ~]# free -h

第二种:
[root@localhost ~]# cat /proc/meminfo
MemTotal: 2031888 kB
MemFree: 1372044 kB
MemAvailable: 1534364 kB
Buffers: 2116 kB
Cached: 285288 kB
SwapCached: 0 kB
Active: 244084 kB
Inactive: 246512 kB
Active(anon): 204068 kB
Inactive(anon): 8436 kB
Active(file): 40016 kB
Inactive(file): 238076 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 4882428 kB
SwapFree: 4882428 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 203224 kB
Mapped: 89168 kB
Shmem: 9312 kB
Slab: 77720 kB
SReclaimable: 31964 kB
SUnreclaim: 45756 kB
KernelStack: 5584 kB
PageTables: 12932 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 5898372 kB
Committed_AS: 1276648 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 183284 kB
VmallocChunk: 34359310332 kB
HardwareCorrupted: 0 kB
AnonHugePages: 47104 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 81792 kB
DirectMap2M: 2015232 kB
DirectMap1G: 0 kB
(3)查看磁盘分区情况
[root@localhost ~]# lsblk

(4)查看机器架构
[root@localhost ~]# arch

(5) 查看系统时间
格式:
date [选项]
| 选项 | 含义 |
|---|---|
| -d | 表示几天前的时间,例 -d ’-1 day ‘ 表示一天前的时间、-d ’1 day‘ 表示一天后的时间 |
| %F | 完整日期格式,%Y-%m-%d |
| %T | 24小时制,hh:mm:ss |
实操
① 显示时间
[root@localhost ~]# date

② 显示两天前和两天后时间
[root@localhost ~]# date -d '-2 day'
[root@localhost ~]# date -d '+2 day'

③ 只显示年月日
[root@localhost ~]# date +%F

④ 只显示24小时制时间
[root@localhost ~]# date +%T






