Linux 基本操作命令
一、基础知识
[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 的数字 | |
{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