目录
命令格式
ls命令
cd命令
pwd命令
mkdir命令
touch命令
cat命令
more命令
head命令
tail命令
echo命令
cp命令
mv命令
rm命令
which 命令
find 命令
grep 命令
wc命令
| 管道命令
用户相关命令
切换用户和借调权限
用户组相关操作
权限相关图解
常用的快捷键
控制服务的开启关闭
软连接和硬链接
日期和时间
主机名和ip相关
网络相关命令
进程管理
系统资源
文件的上传和下载
压缩和解压缩
#格式
command [-options] [parameter]
#格式解释
命令名 [-选项] [参数]
#细节: 中括号中的内容是可选项.
#来源于 list(列表), 用于查看当前目录下 所有的子级.
ls #相当于 ls ./ 即: 查看当前目录下所有的子级(不包括隐藏)
ls -l #相当于 ll, 以行的方式展示当前目录下的子级
ls -a #显示当前目录下所有的子级(包括隐藏)
ls -al #以行的方式显示当前目录下所有的子级(包括隐藏)
ls -alh #以行的方式, 人性化的显示当前目录下所有的子级(包括隐藏)
ls #指定目录 # 查看指定路径下的子级.
ll #是 ls -l的简写形式, 即: 语法糖.
#来源于 change directory, 改变目录
cd #回到用户主目录
cd test #切换到当前目录下的test目录(相对路径)
cd /root/test #切换到指定目录(绝对路径)
cd .. #回到上一级目录
cd ../.. #回到上上一级目录
cd ../dir #回到上一级的dir目录
cd - #在最后两次目录之间切换
#来源于print work directory, 打印当前的工作目录.
pwd # 打印当前所在的目录路径
#来源于 make directory, 制作目录(文件夹)
mkdir [-p] 目录 #不加-p只能创建单级目录, 如果写了-p可以创建多级目录.
mkdir dir #创建单级目录
mkdir -p aaa/bbb/ccc #创建多级目录
#制作文件
touch a.txt b.txt #在当前目录,一次创建两个文件
touch /root/a.txt #在/root目录创建文件a.txt
#查看文件内容
cat 文件路径 # 一次性显示文件所有内容.
#查看文件内容, 支持翻页查看.
more 文件路径 # 空格: 下一页, enter: 下一行. b(back): 上一页, d(down): 下一页.
#查看文件(前边)内容, 格式为: head -n 数字 文件路径
head -n 3 1.txt # 查看1.txt文件的前3行.
head 1.txt # 默认查看前10行.
查看文件(后边)内容, 格式为: tail -nf 文件路径 n表示数字.
tail -3 1.txt # 查看文件后3行
tail 1.txt # 默认查看文件后10行.
tail -100f 1.txt # 动态查看文件后100行, 一般用于查看: 日志信息.
#把结果输出到控制台上, 类似于Python的 print()语句.
echo 'hello world'
# 重定向, > 覆盖, >> 追加
echo 'hello world' > 1.txt # 用hello world这个字符串, 覆盖1.txt文件中所有的内容.
#来源于copy, 拷贝的意思.
cp 1.txt 2.txt # 拷贝1.txt的内容到2.txt中.
cp -r 目录路径A 目录路径B # 拷贝文件夹. recursive(递归)
#来源于move, 剪切的意思,该命令用来实现移动或者重命名
#移动
mv a.txt dir #如果a.txt 存在,dir是一个目录,则就是将a.txt移动到dir目录
mv dir1 dir2 #如果dir1存在,是一个目录,dir也是一个目录存在,则就是将dir1目录已移动到dir2目录
#重命名
mv a.txt a2.txt #如果a.txt存在,a2.txt不存在,则就是将a.txt重名为a2.txt
mv dir1 dir11 #如果dir1存在,是一个目录,dir11不存在,则就是将dir1重名为dir11
#来源于remove, 删除的意思.删除文件或目录
rm -f a.txt #强制删除文件
rm -fr dir #强制删除目录
rm -fr dir/*.txt #删除dir下的所有.txt文件
rm -fr ./* #删除当前目录下的所有内容
#结论
rm -rf 文件/文件夹
#查找二进制脚本所在的目录.
which ls # /usr/bin
which ifconfig # /usr/sbin
#查找命令, 主要是根据条件查找文件的.
# 格式: find 目录路径 -size +数字K|M|G 根据大小筛选文件
find / -size +100M # 查找所有大于100M的文件
# 格式: find 目录路径 -name 文件名 根据文件名进行查找
find / -name 'abc*' # 查找所有以abc开头的文件
find / -name abc* # 上述格式可以省略最后的引号,因为路径不涉及到特殊字符, 例如: 空格等.
#去文件中筛选出包含指定内容的所有行.
# 格式: grep [-n] 关键字 文件路径
grep 'hello' 1.txt # 去1.txt文件中找所有包含hello的行.
grep -n 'hello' 1.txt # 去1.txt文件中找所有包含hello的行, 并显示行号.
#来源于word count单词, 做: 词频统计的.
# 格式: wc [-c -m -l -w] 文件路径.
# 格式解释:
-c 统计字节数
-m 统计字符数
-l 统计行数, line
-w 统计单词数, word
#可以把前边命令的执行结果, 当做后边命令的数据源来处理.
cat 1.txt # 查看1.txt文件内容.
cat 1.txt | grep hello # 查看1.txt文件内容, 并过滤出包含hello的行.
grep hello 1.txt # 效果同上.
# 背景
Linux系统和Mac系统, windows系统一样, 也是支持多用户管理的.
为了更好的管理多用户, 就有了 用户组 和 用户的概念.
Linux系统中, root账号拥有最高权限.
# 用户相关命令
# 增, 新增用户
useradd 用户名 # root用户在/root目录下, 普通用户在 /home/用户名下.
# 创建用户的时候, 如果不指定分组, 则默认会创建1个和该用户名一模一样的组.
# 然后把该用户放到这个组中...
# 改, 修改用户的密码
passwd 用户名 # 来源于: password单词
# 删
userdel [-r] 用户名 # 除了删除用户外, 还会删除 /home目录下, 该用户所有的内容.
# 如果该用户的主组是随着用户一起创建的, 则删除用户时, 该组也会被同步删除.
# 查, 即: 查询所有的用户.
cat /etc/passwd
getent passwd # 效果同上, 来源于: get environment, 获取环境
# 查看用户信息, 格式如下:
zhangsan:x:1000:1000::/home/zhangsan:/bin/bash
# 格式解释:
用户名:密码(无):用户组id:用户id:描述信息(无):账号的家目录:使用何种Shell解析器
# 切换用户
su 用户名 # 切换到指定的用户, 如果是root => 其它账号, 无需输入密码, 否则都需要录入密码.
# 登出, 例如: root => zhangsan, 登出后, 就又回到了 root账号
ctrl + d # 快捷键
# (临时. 默认5分钟)借调权限
sudo 你要指定的命令
# 增, 新增用户组
groupadd 用户组名
# 删
groupdel 用户组名 # 删除用户组, 细节: 如果没有用户用该组作为主组, 就可以删除该组.
# 查, 即: 查询所有的用户组.
cat /etc/group
getent group # 效果同上, 来源于: get environment, 获取环境
# 查看用户组信息, 格式如下:
zhangsan:x:1000
# 格式解释:
用户组名:无密码:组id
# 查看用户的具体信息
id 用户名
# 创建新用户的时候, 直接指定分组
useradd 用户名 -g 组名 # 新增用户, 并添加到指定的组.
# 设置已经存在的账号到指定的分组中.
usermod -aG 用户组名 用户名 # modify: 修改, append group: 添加分组
# 设置权限
chmod 777 1.txt # 万金油命令, 满权限.
chmod +x 1.txt # 给所有用户设置 执行权.
chmod u=rx,g=w,o=x # 设置属主权限为:读,可执行, 属组权限为:只写, 其它用户权限为:可执行.
# 注意多个权限之间, 没有空格. user(属主), group(属组), other(其它)
chmod [-R] 777 目录路径 # 设置目录及其所有的子级为满权限.
# 设置拥有者, 即: 属主, 属组
chown [-R] [用户][:][用户组] 文件或者目录路径 # owner: 拥有者
chown zhangsan 1.txt # 改变1.txt文件的 属主为: zhangsan
chown itcast 1.txt # 改变1.txt文件的 属主为: itcast
chown :itcast 1.txt # 改变1.txt文件的 属组为: itcast
chown lisi:itcast 1.txt # 改变1.txt文件的 属主lisi, 属组为: itcast
# 清屏
ctrl + 字母l 或者 clear
# 结束执行
ctrl + c
# 登出
ctrl + d
# 回到行首
ctrl + a
# 回到行尾
ctrl + e
# 命令格式, 来源于: system control, 系统控制
systemctl status | start | stop | restart | enable | disable 服务名
# 常用的服务
NetWorkManager 主网络服务
network 副网络服务
firewalld 防火墙
sshd 远程连接服务(协议)
# 示例
systemctl restart network # 重启网络服务.
# 格式:
ln -s 要被连接的文件或者目录路径 软连接方式 # 加-s是软连接, 相当于创建了快捷方式.
# 示例
ln -s /etc/sysconfig/network-scripts/ifcfg-ens33 ip
# 细节(扩展提高): 如果不加 -s 创建出来的是 硬链接, 目的: 提高容错率.
ln 1.txt 2.txt # 两个硬链接文件, 内容会自动同步.
# date命令, 查看时间.
date [-d] [+日期格式]
# 指定时间格式 %Y 4位数字的年, 例如: 2024 %y: 2位数字的年, 例如: 24
# %m 月 %d 日 %H 小时 %M 分钟 %S 秒
date '+%Y-%m-%d'
# 修改时间.
date -d '1 day' '+%Y/%m/%d' # 正数往后加, 负数往前推. 今天时间, 往后加一天.
date -d '-1 day' '+%Y/%m/%d' # 正数往后加, 负数往前推. 今天时间, 往后加一天.
date -d '1 days ago' '+%Y/%m/%d' # 效果同上.
date -d '1 year ago' '+%Y/%m/%d' # 往前推1年
date -d '-1 day ago' '+%y-%m-%d' # 负负得正, 往后推一天, 了解即可, 没人写.
# 查看本机ip地址
ifconfig
# 查看本机主机名
hostname
# 修改主机名
hostnamectl set-hostname 主机名 # 立即修改.
vim /etc/hostname # 改完之后记得重启虚拟机生效.
# 如何修改虚拟机固定的ip
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none" # 改成static 或者 none, 不要dhcp(动态分配)
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="de94af21-8a97-48f0-bb1d-e6dcf21789bb"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.88.161" # IP地址
PREFIX="24" # 子网掩码: 255.255.255.0
GATEWAY="192.168.88.2" # 网关
DNS1="8.8.8.8" # DNS服务器1
DNS2="114.114.114.114" # DNS服务器2
IPV6_PRIVACY="no
# ping命令, 测试网络是否通畅.
ping [-c 数字] 目标ip # 循环发包, 测试网络连接, 不指定次数, 就一直发送.
# wget 命令, 文件下载器, 可以根据URL下载数据
wget https://pic4.zhimg.com/v2-1d05d325d397080b921de6306dcf46d5_1440w.jpg
# curl 命令, 模拟浏览器, 向URL发出请求, 获取响应信息(html页面)
curl https://python.itcast.cn/?pythonzly # 结果打印到终端.
curl https://python.itcast.cn/?pythonzly >> my.txt # 结果保存到文件
# IP介绍: 设备在网络中的唯一标识.
# 端口号介绍: 程序在设备上的唯一标识. 范围: 0 ~ 65535, 其中0~1023已经被用作保留端口了, 尽量规避.
# 协议: 通信规则.
netstat -anp | grep 具体的端口号 # all network port, 所有网络端口
# 查看本机运行的所有进程
ps -ef
# 查看指定的进程信息
ps -ef | grep ssh
# 强制关闭指定的进程
kill -9 进程的pid
# 进程解释: 指的是可执行程序, 文件, 例如: *.exe
# 查看内存使用情况
free -h # -h 人性化的方式展示
# 查看磁盘使用情况
df -h # 来源于: disk free
# 前提, 安装 lrzsz插件.
yum -y install lrzsz
# 上传
rz 然后敲回车, 选中要上传的文件即可.
# 下载
sz 要下载的文件名
# 区分压缩协议好与坏的标准, 参考:
维度1: 压缩时间(写)
维度2: 解压时间(读)
维度3: 压缩比(压缩后文件大小)
# Linux中常用的压缩有: tar(tarball, 归档), zip
# 方式1: tar命令
# 压缩格式: tar [-zcvf] 压缩包名.tar.gz 要被压缩的文件...
# 解压格式: tar [-zxvf] 压缩包名.tar.gz [-C] 要解压到的路径
# 参数解释:
z 使用gzip协议, 压缩出来的文件较小.
c create, 表示: 新建, 压缩.
x 表示解压
v verbose, 显示具体压缩或者解压的过程.
f file, 表示文件
# 方式2: zip
# 压缩格式: zip [-r] 压缩包名.zip 要被压缩的文件 文件夹... # -r表示递归, 压缩是有文件夹必须写.
# 解压格式: unzip 压缩包名.zip -d 要解压到的路径 # 这个-d等价于tar的-C