Linux 基本操作命令

发布时间 2023-05-04 05:29:53作者: m_zhuang

一、基础知识

[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 的数字
匹配 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