目录
一、命令格式
格式:command [-options] [parameter]
解释:命令名 [-选项] [参数]
注:中括号中的内容是可选择的
二、常用命令
1. ls 命令
解释:ls 来源于list(列表),用于查看当前目录下所有的子集
用法:
ls # 相当于ls ./ 即:查看当前目录下的所有的子级(不包括隐藏)
ls -l # 相当于ll 以行的方式展示当前目录下的子集详细信息
ll # ls -l的简写形式,即:语法糖形式,结果如上
# 语法糖:指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便
# 使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
ls -a # 显示当前目录下所有的子级(包括隐藏)
ls -al # 以行的方式显示当前目录下所有的子级(包括隐藏)
ls -alh # 以行的方式,人性化的现实显示当前目录下所有子级(包括隐藏)
# 人性化:ls -al 命令显示的文件大小为字节数
# ls -alh 命令显示的文件大小不足1KB显示字节,超过会自动转换单位
ls 指定目录 # 查看制定路径下的子级
2. cd 命令
解释:cd 命令来源于change directory,改变目录
用法:
cd 指定目录 # 切换到指定目录下
cd ~ # 返回家目录(登录用户所在的目录)
cd ../ # 返回上一级
cd - # 在最近的两个目录之间进行切换
3. pwd 命令
解释:来源于print work directory,打印当前工作目录
用法:
pwd # 打印当前所在的目录路径
4. mkdir 命令
解释:来源于make directory,制作目录(文件夹)
用法:
mkdir [-p] 目录 # 不加-p只能创建单级目录,如果写-p可以创建多级目录
5. touch 命令
解释:当文件不存在时,会创建新文件;当文件存在时,会修改文件的时间属性
用法:
touch 文件1 文件2 …… # 在当前目录一次创建几个文件,文件名之间用空格分隔
touch 目录路径/文件1 目录路径/文件2 # 在制定路径创建文件
touch 已存在的文件名 # 会修改文件的时间属性
6. 查看文件内容命令
6.1 cat 命令
解释:直接查看文件所有内容
用法:
cat 文件路径 # 一次性显示所有文件内容
6.2 more 命令
解释:支持翻页查看文件内容
用法:
more 文件路径 # 空格:下一页;b(back):上一页
# enter:下一行;= :输出当前行数;q:退出
6.3 head 命令
解释:查看文件前面的内容
用法:
head -n 数字 文件路径 # 查看文件的前n(n为数字的值)行
head 文件路径 # 默认查看前10行
6.4 tail 命令
解释:查看文件后面的内容
用法:
tail -n 文件路径 # 查看文件后n(n为数字)行
tail -nf 文件路径 # 动态查看文件后n行,一般用于查看日志信息
tail 文件路径 # 默认查看文件后10行
7. echo 命令
解释:在屏幕上显示文字,也可以直接在文件中写入
用法:
echo 'hello world' # 输出hello world在屏幕上
echo 'hello world' > 1.txt # 用hello world这个字符串覆盖1.txt文件中所有内容
# 如果1.txt不存在将直接创建文件,然后将内容写入
echo 'hello world' >> 1.txt # 将hello world追加在1.txt文件内容最后面
# 如果1.txt不存在将直接创建文件,然后将内容写入
8. cp 命令
解释:来源于copy,拷贝
用法:
cp 文件1 文件2 # 将文件1复制为文件2,用空格连接
cp -r 目录路径A 目录路径B # 拷贝文件夹,r(recursive 递归)
9. mv 命令
解释:来源于move,剪切
用法:
mv 文件名1 文件名2 # 改名
mv 文件名 目标路径 # 将文件剪切到目标路径下
10. rm 命令
解释:来源于remove,删除
用法:
rm -rf 文件或者目录路径 # 删除,r -> recursive 递归,f -> force 强制
# 如果不加f,再删除是会提示是否删除
# 如果不加r,将无法删除文件夹
11. which 命令
解释:查找二进制脚本所在的目录
用法:
which ls # /usr/bin/ls
which ifconfig # /usr/sbin/ifconfig
12. find 命令
解释:查找命名,主要是根据条件查找文件的
用法:
find 目录路径 -size +数字K/M/G # 根据大小筛选文件
find / -size +100M # 查找所有大于100M的文件
find 目录路径 -name 文件名 # 根据文件名进行查找
find / -name 'abc*' # 查找所有以abc开头的文件
find / -name abc* # 上诉格式可以省略最后的引号,因为路径不涉及到特殊符号,例:空格
13. grep 命令
解释:去文件中筛选出包含指定内容的所在行的全部内容
用法:
grep [-n] 关键字 文件路径
grep 'hello' 1.txt # 去1.txt中找所有包含hello的行,并在屏幕显示出行内容
grep -n 'hello' 1.txt # 去1.txt中找所有包含hello行,在屏幕显示内容的同时标记行数
14. wc 命令
解释:来源于word count单词,词频统计
用法:
wc [-c -m -l -m] 文件路径
格式解释:
-c 统计字节数(包含换行符'\n')
中文字符使用utf-8时,3个字符;使用GBK时,2个字符
-m 统计字符数
-l 统计行数,line
-w 统计单词数,word
15. | 命令(管道命令)
解释:管道命令,可以把前面命令的执行结果当做后边命令的数据源来处理
用法:
cat 1.txt # 查看1.txt文件内容
cat 1.txt | grep hello # 查看1.txt文件内容,并过滤出包含hello的行
grep hello # 效果同上
16. systemctl 命令
解释:来源于system control,系统控制
用法:
systemctl status | start | stop | restart | enable | disable 服务名
# 状态 开启 停止 重启 开启开机自启动 关闭开机自启动
# 常用服务:NetworkManager 主网络服务
# netword 副网络服务
# firewalld 防火墙
# sshd 远程连接服务(协议)
17. ln 命令
解释:来源于link files,建立链接
用法:
# 软连接:相当于创建了快捷方式
# 格式:ln -s 要被连接的文件或者目录路径 快捷方式名 (软连接方式)
ln -s /etc/sysconfig/network-scripts/ifcfg-ens33 ip
# 硬链接:提高容错率
ln 文件名1 文件名2 # 两个硬链接文件,内容会自动同步,删除其中一个,另一个会被保留
三、用户相关命令
1. 背景
Linux系统和Mac系统、Windows系统一样,支持多用户登录。为了更好的管理多用户,就有了用户组和用户的概念,Linux中,root账号有最高权限。
2. useradd 命令
解释:新增用户
用法:
useradd 用户名 # root用户在/root目录下,普通用户在/home/用户名 下
# 创建用户是,如果不能指定分组,会默认创建一个和该用户名一模一样的组
# 然后把该用户放到这个组里
3. passwd 命令
解释:来源于password,修改用户的密码
用法:
passwd 用户名 # 回车之后修改会要求输入密码
4. userdel 命令
解释:来源于delete,删除用户
用法:
userdel [-r] 用户名 # 如果该用户的主组是随着用户一起创建,则删除用户时,会同时删除该组
5. getent 命令
解释:来源于get environment,获取
用法:
getent passwd # 查询用户信息
cat /etc/passwd # 效果同上
# 用户信息格式与解释
# 格式:zhangsan:X:1000:1000::/home/zhangsan:/bin/bash
# 解释:用户名:密码(无):用户组id:用户id:详细信息(无):账号的家目录:使用何种shell解析器
getent group # 查询所有用户组
cat /etc/group # 效果同上
# 注:
# 查看用户组信息,格式如下:
# zhangsan:X:1000
# 解释:
# 用户组名:无密码:组id
6. su命令
解释:切换用户
用法:
su 用户名 # 切换到指定的用户,如果是root -> 其他账号,无需输入密码,否则都需要输入密码
7. sudo 命令
解释:借调权限(临时,默认5分钟)
用法:
sudo -i # 列出目前权限
sudo -u 用户名 vi 要编辑的文件 # 以用户名身份编辑目录下中的文件
8. groupadd 命令
解释:新增用户组
用法:
groupadd 用户组名 # 新增用户组格式
9. groupdel 命令
解释:删除用户组
用法:
groupdel 用户组名 # 删除用户组
# 注:如果没有用户用该组作为主组,就可以删除组
10. id 命令
解释:查看用户的具体信息
用法:
id 用户名 # 查看用户的具体信息格式
11. usermod 命令
解释:来源于user modify,添加分组
用法:
usermod -aG 用户组名 用户名 # aG:append Group:添加分组
# 设置已经存在的账号到指定的分组中
# -G 修改用户所属的附加群组。
useradd 用户组 -g 组名 # 新增用户,并添加到指定的组
# 创建新用户的时候,直接分组
# -g 修改用户所属的群组
12. chmod 命令
解释:设置权限
用法:
chmod [-R] 777 目录路径 # 设置目录及其所有子级位满权限
chmod 777 1.txt # 开满权限
chmod +x 1.txt # 给所有用户设置执行权
chmod u=rx,g=w,o=x 1.txt # 注意多个权限之间,没有空格
# user(属主)、group(属组)、other(其他)
13. chown 命令
解释:设置拥有者
用法:
# 格式:chown [-R] [用户] [:] [用户组] 文件或者目录路径
chown zhangsan 1.txt # 改1.txt属主为:zhangsan
chown :genus_group 1.txt # 改1.txt属组为:genus_group
chown zhangsan:genus_group 1.txt # 属主为zhangsan,属组为genus_group
四、日期和时间命令
date 命令
解释:查看时间
# 格式:date [-d] [+日期格式]
date '+%Y-%m-%d %H:%M:%S'
# %Y:4位数的年 例:2024 %y:2位数的年 例:24
# %m:月 %d:日 %H:时 %M:分 %S:秒
date -d '1 day' '+%Y-%m-%d' # 正数往后加,负数往前推
五、主机名、ip和网络相关命令
1. ifconfig 命令
解释:查看本机ip地址
用法:直接输入回车
2. hostname 命令
解释:查看本机主机名
用法:直接输入回车
3. hostnamectl 命令
解释:修改主机名
用法:
# 方式1
hostnamectl set-hostname 主机名 # 立即修改
# 方式2
vim /etc/hostname # 改完需要重启
4. ping 命令
解释:测试网络是否通畅
用法:
ping [-c 数字] 目标ip # 循环发包,测试网络连接,不指定次数,就一直发送
5. wger 命令
解释:文件下载器,可以根据URL下载数据
用法:
wget 文件下载网址
6. curl 命令
解释:模拟浏览器,向URL发出请求,获取响应信息(html页面)
用法:
curl 网页 # 结果打印到终端
curl 网页 >> my.txt # 结果保存到文件中
7. netstat 命令
解释:显示网络状态
用法:
netstat -anp # all network port 所有网络接口
netstat -anp | grep 具体的端口号 # 查询具体端口号
8. IP、端口号、协议介绍
- IP:设备在网络中的唯一标识
- 端口号介绍:程序在设备上的唯一标识,范围:0~65535,其中0~1023已经被用作保留端口,尽量规避
- 协议:通信规划
六、进程管理和系统资源命令
1. ps 命令
解释:显示当前进程的状态
用法:
ps -ef # 查看本机运行的所有进程
ps -ef | grep ssh # 查看ssh进程的信息
2. kill 命令
解释:强制关闭进程
用法:
kill -9 进程的pid # 强制关闭指定的进程
# 进程的解释:指的是可执行程序文件,例如:*.exe
3. free 命令
解释:查看内存使用情况
用法:
free -h # 查看内存使用情况,-h 人性化展示
4. df 命令
解释:来源于:disk free,查看磁盘使用情况
用法:
df -h # 查看磁盘使用情况,-h 人性化展示
七、文件上传下载命令
1. 前提:
在Windows端使用Secure CRT、Xshell等SSH连接工具,输入命令
需要安装lrzsz插件
输入:yum -y install lrzsz
2. rz 命令
解释:从Windows上传
用法:
rz # 回车,选中要上传的文件即可
3. sz 命令
解释:下载到Windows
用法:
sz # 要下载的文件名
八、压缩命令
1. tar 命令
解释:来源于 tarball,归档
用法:
# 压缩
tar [-zcvf] 压缩包名.tar.gz 要被压缩的文件
# 解压
tar [-zxcf] 压缩包名.tar [-c] 要压缩的路径
/*
参数解释:
z 使用gzip格式,压缩出来的文件较小
c create 表示:新建,压缩
x 表示解压
v verbase 显示具体压缩或者解压的过程
f file 表示文件
*/
2. zip 命令
解释:常用压缩格式
用法:
# 压缩
zip [-r] 压缩包名.zip 要被压缩的文件 文件夹... # -r表示递归, 压缩是有文件
# 解压
unzip 压缩包.zip -d 要解压的路径 # 这个-d等价于tar的-C