目录
#格式
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