1、Linux基础学习笔记
千里之行,始于足下
正文
Linux主要的发行版本:
Ubuntu(乌班图)、RedHat(红帽)、CentOS、Debain[蝶变]、Fedora、SuSE、OpenSUSE、红旗Linux(国产)
开启SSH的22端口实现远程登入:
Linux的远程操作工具:Xshell、Xftp
Linux主要目录(层级式目录结构):
[root@localhost ~]# tree -L 1 /
/ 根目录
├── bin 可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等
├── boot 系统引导程序启动目录
├── dev 存放设备文件目录
├── etc 软件配置和启动程序目录
├── home 普通用户的家目录
├── lib 库文件目录(命令 软件)
├── lib64 64位操作系统库文件目录(命令 软件)
├── mnt 设备临时挂载目录
├── opt 可选项的,额外安装的第三方软件目录
├── proc 记录操作系统进程和内核信息的目录
├── root 超级管理员的家目录
├── sbin 超级管理员命令存放目录
├── tmp 回收站,临时文件目录
├── usr 用户或软件应用程序目录
├──selinux 系统安全目录
└── var 日志文件存放目录
基本指令(Tab键自动补全)
Linux系统操作命令:
1、立刻进行关机:
shutdown now
2、定时关机:
shudown -h [时间]
3、立刻重启:
shutdown –r now
reboot: 现在重新启动计算机
sync: 把内存的数据同步到磁盘
Linux用户管理命令:
Linux系统是一个多用户多任务的操作系统,root用户是系统默认创建的管理员账号。
1、添加用户:
useradd [选项] 用户名
(1)、useradd zhangsan
创建一个账号叫zhangsan,此时会创建账号、默认创建一个组zhangsan并且把zhangsan分到此组中、还会在/home下创建一个目录叫zhangsan作为新创建用户的根目录。
(2)、useradd -d /home/ls lisi
创建一个账号叫lisi,并且给lisi指定家目录/ls。
2、给用户名设置密码:
passwd 用户名
3、删除用户:
userdel [选项] 用户名
(1)、userdel zhangsan
删除用户zhangsan,保留zhangsan的主目录。
(2)、userdel –r lisi
删除用户lisi,并且把lisi的主目录也删除。
4、查询用户信息:
id 用户名
5、切换用户:
su 用户名
注意:从高权限用户切换到低权限用户时,不需要输密码;否则,需要输密码。
另:exit命令可以回到原来的用户。
Linux组管理命令:
组管理系统实现对有共性的多个用户进行统一的管理。每一个用户都至少属于一个组,创建用户时如果不指定组,会默认创建一个跟用户名相同的组;
在文件或目录看来,Linux系统将所有的用户分为三类:所有者、同组用户、其它组用户
1、创建组:
groupadd 组名
2、删除组:
groupdel 组名
3、添加用户时指定其组:
useradd –g 组名 用户名
4、将用户添加到组/从组中移除:
gpasswd –a/-d 用户名 组名
(1)、添加到test组
gpasswd –a zhangsan test
(2)、从test组中移除
gpasswd –d zhangsan test
5、修改文件或目录的所有者:
chown 新的所有者 文件名或目录名
chown 新的所有者 :新的组 文件名或目录名
(1)、chown Iven : dev t1.txt
将t1.txt文件的所有者修改为Iven,并添加到dev组
(2)、chown -R Iven : dev t1
递归修改目录
6、修改文件或目录的所在组:
chgrp 新的组 文件名或者目录名
(1)、chgrp dev t1.txt
(2)、chgrp -R dev t1
Linux帮助命令:
1、帮助指令 man
man [命令或配置文件]
功能描述:获得帮助手册上的信息
注:分屏显示,按回车翻一行,按空格翻一页,按q退出查看
2、帮助指令 help
help [命令]
功能描述:获得命令内置的帮助信息
3、清屏指令
clear
Linux文件/目录操作命令:
1、显示当前目录的路径:
pwd
2、显示当前文件或目录信息:
ls [选项] [目录或是文件]
常用选项
(1)、-a:(ls -a)
显示当前目录所有的文件和目录,包括隐藏的。
(2)、-l: (ls -l)
以列表的方式显示信息
3、切换到指定目录:
cd [参数]
绝对路径(以/开头的目录)和相对路径(以目录名开头的目录,从当前目录下开始查找)
(1)、cd /
回到根目录
(2)、cd ~
回到用户主目录
(3)、cd .
当前目录
(4)、cd ..
回到当前目录的上一级目录
4、创建的目录:
mkdir [选项] 要创建的目录
常用选项
(1)、-p :(mkdir –p test01/test02)
创建多级目录
5、删除一个空目录:
rmdir 目录
6、创建一个或多个空文件:
touch 文件名称列表
7、复制文件或目录:
cp [选项] source(源) dest(目标)
常用选项:
(1)、-r :递归复制整个文件夹
(2)cp t1.txt text
将t1.txt文件复制到text目录中
8、删除的文件或目录
rm [选项] 要删除的文件或目录
常用选项:
(1)、-r :递归删除整个文件夹
(2)、-f :强制删除不提示
9、移动目录或者文件(可重命名)
mv source(源) dest(目标)
(1)、mv t1.txt t1_new.txt
10、查看的文件中的内容
cat [选项] 要查看的文件名
常用选项
(1)、-n :(cat -n a.txt)显示行号
11、分页查看文件内容
(1)、more 文件名
一次加载文件所有内容,分页显示
(2)、less 文件名
分页加载文件所有内容,分页显示
(按回车翻一行,按空格翻一页,按q退出查看)
12、查看文件的头/尾的几行:
(1)、查看文件头的前几行
head [选项] 文件名
(head -n 5 文件名(查看文件头5行内容,5可以是任意行数))
(2)、查看文件尾的后几行
tail [选项] 文件名
(tail -n 5 文件名(查看文件尾5行内容,5可以是任意行数))
13、内容输出定向:
(1)、>指令:输出重定向,将原来的文件内容覆盖;
(ls –l > a.txt (将ls –l查到的列表内容覆盖写入文件a.txt中(a.txt不存在会创建)))
(2)、>>指令:不会覆盖原来文件的内容,而使追加到文件的尾部;
(ls –l >> a.txt (将ls –l查到的列表内容追加到文件a.txt末尾中(a.txt不存在会创建)))
14、输出内容到控制台:
echo [选项] [输出内容]
(1)、输出path路径到控制台:echo $PATH
15、查看历史执行过的指令:
history
Linux的文本编辑器命令
1、vi和vim的使用:
(1)、一般模式:
使用vi或vim命令打开文件(vim text.txt),进入一般模式
(可以查看文件内容,但不能够编辑文件内容)
(2)、编辑模式:
在一般模式下,按i键或者a键,进入编辑模式
(可以编辑内容,但不能保存;按ESC键,可以返回到一般模式)
(3)、命令行模式:
在一般模式下,按:键,进入命令行模式
输入:
1)、q!——不保存强制退出编辑器
2)、wq——保存并且退出编辑器
3)、q——只是退出编辑器
2、vi和vim常用快捷键
(1)、一般模式下:
1)、拷贝当前行,输入(yy),
2)、拷贝当前行(包括当前行)向下的5行,输入(5yy),
3)、并粘贴,输入(p)。
(2)、一般模式下:
1)、删除当前行,输入(dd),
2)、删除当前行向下的5行,输入(5dd)。
(3)、一般模式或命令行模式下,
1)、在文件中查找关键字,输入(/关键字或?关键字),
2)、回车查找, 输入(n),表示光标查找下一个关键字。
(4)、一般模式下,
1)、使用快捷键到达文档的最首行,输入(gg)
2)、到达文档最末行,输入(G)。
(5)、一般模式下,
1)、在一个文件中输入"xxxx" ,然后又撤销这个动作,输入(u)。
(6、)命令行模式下,
1)、设置文件的行号,输入(: set nu)
2)、取消文件的行号,输入(:set nonu)
Linux时间日期命令:
1、查看或设置系统的日期或时间
date(查看系统当前完整的日期和时间)
(1)、date +%Y(显示当前年份)
(2)、date +%m(显示当前月份)
(3)、date +%d(显示当前日期)
(4)、date "+%Y-%m-%d %H:%M:%S"(显示年月日时分秒)
(5)、date -s 字符串时间(设置日期)
2、查看日历
cal [选项](不加选项,显示本月日历)
Linux中关于搜索文件或者目录的命令:
1、find [搜索范围] [搜索标准] 关键字
搜索标准:
(1)、-name:按名称查找,支持通配符(*)。
(2)、-user:按用户名查找
(3)、-size:按文件大小查找
2、locate 要搜索的文件名
在目录树结构中搜索文件或目录,根据名称搜索,效率高,但新数据不能及时更新
使用:
updatadb
locate 要搜索的文件名
3、过滤命令grep:(重)
grep过滤查找,管道符:“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
使用:
搜索命令 | grep [选项] 过滤条件
查找命令 | grep [选项] 过滤条件
常用选项:
(1)、-n:显示匹配行和行号
(2)、-i:忽略大小写
例:find *.txt | grep new (所有包含new条件的.txt文件)
Linux压缩解压命令
1、zip/unzip指令(.zip)
(1)、压缩命令:
zip [选项] 目标压缩包名称(通常打包成.zip压缩包) 文件或目录列表
选项说明:
-r:递归压缩,即压缩目录
(2)、解压命令:
unzip [选项] 压缩包名称(.zip) 解压的目录名
常用选项:
-d 目录:指定解压后文件的存放目录
2、tar指令(.tar.gz)
(1)、压缩命令:
tar [选项] 目标压缩包名称(XXX.tar.gz) 文件或目录列表
tar -zcvf xxx.tar.gz 文件或目录列表
(2)、解压命令:
tar [选项] 压缩包名称(XXX.tar.gz) -C 解压到目录名
tar -zxvf xxx.tar.gz -C 解压到目录名
3、选项说明:
(1)、-c:产生.tar.gz 打包文件(compression)
(2)、-v:显示详细信息(view)
(3)、-f:指定压缩后的文件名
(4)、-z:打包同时压缩
(5)、-x:解压.tar.gz 文件
(6)、-C: 指定解压到哪个目录
Linux文件或目录的权限控制(重)
在linux中,任何文件或目录都有三种权限:读(Read)、写(Write)、执行(Execute)
1、对文件而言:
(1)、读(r): 可以读取,查看文件内容 ,比如cat、more、less、head、tail...
(2)、写(w): 可以修改文件内容,比如vi/vim
(2)、执行(x): 如果该文件是可执行文件(.sh),可直接运行
2、对目录而言:
(1)、读(r): 可以读取,ls 查看目录内容
(2)、写(w): 可以修改,目录内创建+删除+重命名目录
(3)、执行(x): 可以进入该目录
3、rwx 可用数字表示:
r=4(即 2²),w=2(即 2¹),x=1(即 2º)
4、文件或目录的权限控制:
(1)、在linux中,任何一个文件或目录都有三部分权限:
所有者权限——同组用户权限——其它组用户权限
(rwx)————(rwx)————(rwx) ------第二位开始看
(2)、查看文件或目录的权限:
1)、ls –aul
2)、ls -l
(3)、修改文件或目录的权限(chmod):
1)、用r、w、x分别表示读、写、执行的权限
2)、用u、g、o、a分别代表文件所有者、文件所在组用户、其它组用户、所有用户
3)、=、+、-分别代表设置权限、增加权限、去掉权限
例:chmod u=rwx,g=rx,o=x 文件目录名
(4)、使用数字的方式修改文件或目录的权限
r=4、w=2、x=1、rwx=4+2+1=7
例:chmod 777 文件目录名 <=> chmod u=rwx,g=rwx,o=rwx 文件目录名
Linux网络管理命令
1、查看IP地址
ifconfig
hostname -I
2、配置linux网络
vim /etc/sysconfig/network-scripts/ifcfg-eth33
Linux进程管理命令
进程:一个应用程序;线程:一个应用程序的执行单元
1、查看进程
(1)、只会显示应用进程:ps
(2)、显示当前终端下的所有进程信息:ps –a
(3)、以用户的格式显示进程信息:ps –u
(4)、显示后台进程运行的参数:ps –x
(5)、以全格式的形式显示所有进程信息:ps –ef
2、关闭进程
(1)、使用ps命令查看进程的PID
(2)、kill 选项 进程PID值
选项说明:
-9:表示强迫进程立即停止
(kill -9 PID值)
Linux服务管理命令:
1、服务:守护进程,比如sshd、防火墙等
2、操作
systemctl [start、stop、restart、reload、status、enable] 服务名称
(1)、查看防火墙运行状态:systemctl status firewalld
(2)、关闭防火墙:systemctl stop firewalld
(3)、开启防火墙:systemctl start firewalld
(4)、设置防火墙开机启动:systemctl enable firewalld
Linux开放指定端口命令:
#查看防火墙列表 firewall-cmd --list-all #打开防火墙,开放指定端口 #例:firewall-cmd --add-port=8080/tcp --permanent firewall-cmd --add-port=要开放的端口/tcp --permanent #刷新防火墙 firewall-cmd --reload #查看开放的端口 firewall-cmd --list-ports #查询某端口是否开放 firewall-cmd --query-port=端口号/tcp #移除某端口端口 firewall-cmd --permanent --remove-port=端口号/tcp
Linux文本编辑中快速定位关键字命令:
一般模式或命令行模式下, 1、在文件中查找关键字,输入(/关键字或?关键字), 2、回车查找, 输入(n),表示光标查找下一个关键字。
Linux-SFTP文件传输操作命令:
# 连接到远程服务器,username是登录用户名,hostname是服务器的主机名或IP地址:
sftp username@hostname
# 显示当前工作目录:
pwd
# 退出SFTP会话:
exit
Linux中软件安装包的管理:
1、RPM包管理(Ubuntu采用deb)
RPM:一种linux的软件包的打包和安装工具(以.rpm结尾)
(1)、查询所安装的所有软件包:rpm –qa
(2)、分页查询所安装的所有软件包:rpm –qa|more
(3)、过滤查询安装的指定软件包:rmp –qa|grep xxx
2、YUM包管理
基于RPM的软件安装包管理工具,可自动处理软件包之间的依赖关系
(1)、查看:yum list installed | grep xx
(2)、卸载:yum remove xx
(3)、安装:yum installed xx
crontab定时任务的调度:
1、概述:
在Linux系统的实际使用中,可能会经常碰到让系统在某个特定时间执行某些任务的情况,比如定时采集服务器的状态信息、负载状况;定时执行某些任务/脚本来对远端进行数据采集等。
2、简单使用:
cd / cd etc crontab –e 输入任务到调度文件中并保存(ctrl+s与ctrl+x),如: */1 * * * * ls -l >> /demo/a.txt #每分钟执行ls -l >> /demo/a.txt命令
3、crontab命令:
crontab [ -u 用户 ] { -e | -l | -r } (1)、crontab -e :编辑 crontab 的工作内容 (2)、crontab -l :查阅 crontab 的工作内容 (3)、crontab -r :移除所有的crontab的工作内容,若仅要移除一项,请用-e去编辑
4、crontab语法格式说明:
Linux下的任务调度分为两类:系统任务调度和用户任务调度。Linux系统任务是由 cron (crond) 这个系统服务来控制的,这个系统服务是默认启动的。用户自己设置的计划任务则使用crontab 命令。
特殊符号 |
含义 |
* |
表示任何时间。比如第一个“*”表示一小时每一分钟执行一次; |
, |
表示不连续时间。比如“0 8,12 * * * 命令”表达每天8点0分,12点0分都执行一次命令; |
- |
表示连续时间范围。比如“0 8 * * 1-5 命令”表示周一到周五的8点0分执行命令; |
*/n |
表达每隔多久执行一次。比如“*/15 * * * * 命令”表达每隔15分钟执行一次命令; |
5、案例:
(1)、每一分钟执行一次 /bin/ls:
* * * * * /bin/ls
(2)每小时的第3和第15分钟执行command
3,15 * * * * command
shell脚本编程入门
1、shell是命令行编译器,用户通过这个界面访问操作系统内核的服务。
2、脚本格式要求:
(1)、脚本以#!/bin/bash开头
(2)、脚本需要可执行权限
3、入门:
创建一个shell脚本(demo.sh),输出hello (1)、vim demo.sh (2)、输入: #!/bin/bash echo "hello" (3)、保存、并赋予执行(x)权限 chmod 744 demo.sh (4)、执行 ./demo.sh
4、shell变量:
(1)、系统变量:$HOME、$PWD、$SHELL、$USER等
echo $HOME
(2)、用户变量:
1)、自定义变量:
注:可撤销变量: unset 变量
A=10 echo "A=$A" unset A echo "A=$A"
2)、静态变量:
注:使用readonly声明变量,不能使用unset撤销
readonly A=10
echo "A=$A"
5、变量命名规则:
(1)、由字母、数字和下划线组成,不能以数字开头
(2)、等号两侧不能有空格
(3)、变量名一般大写
6、注释:
(1)、单行注释:#
(2)、多行注释:
:<<符号
注释内容...
注释内容...
注释内容...
符号
注:符号必须一致
7、基本语法:
#1、A=`ls -l`(反引号)等价于A=$(ls -l) #2、将shell变量输出设为环境变量: #export 变量名=变量值 #3、让修改的配置信息生效: #source 配置文件 #4、查询变量值: #echo $变量名 #5、获取输入参数(执行时:./demo 参数一 参数二...) #(1)、$n:n为数字,$0表示命令本身,$1-9表示参数一到九,十以上用${n}表示: #echo "$0 $1 $2" #(2)、$*:表示命令行中所有参数(看为一个整体): #echo "$*" #(3)、$@:表示命令行中所有参数(区分开来): #echo "$@" #(4)、$#:表示命令行中所有参数的个数: #echo "参数个数=$#" #6、查询当前进程的PID: #echo "当前进程号=$$" #7、后台运行的最后一个进程的PID: #echo "最后的进程号=$!" #8、显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误: #echo "退出状态=$?"
8、运算符、数组、流程控制、函数
9、备份数据库案例:
获取:链接 提取码:b87f
(1)、在/opt/text下编写mysql_db_backup.sh脚本:
#!/bin/bash #完成数据库的定时备份 #备份的路径 BACKUP=/data/db #当前的时间作为文件名 DATETIME=$(date +%Y_%m_%d_%H%M%S) #可以输出变量调试 #echo ${DATETIME} echo "=======开始备份========" echo "=======备份的路径是 $BACKUP/$DATETIME.tar.gz" #主机 HOST=localhost #用户名 DB_USER=root #密码 DB_PWD=root #备份数据库名 DATABASE=IvenDB #创建备份的路径 #若备份的路径文件夹不存在则创建 [ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME" #执行mysql的备份数据库的指令 mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz #打包备份文件 cd $BACKUP tar -zcvf $DATETIME.tar.gz $DATETIME #删除临时目录 rm -rf $BACKUP/$DATETIME #删除10天前的备份文件 find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \; echo "=====备份文件成功==========="
(2)、使用crontab定时调度
cd / cd etc crontab –e #输入任务到调度文件中并保存(ctrl+s与ctrl+x): 0 1 * * * /opt/text/mysql_db_backup.sh #每天一点执行mysql_db_backup.sh脚本进行备份
Ubuntu系统安装JDK教程:
Ubuntu系统安装MySQL教程:
Ubuntu系统安装Nginx教程:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人