Linux学习

一、Linux发展

1 .前身为unix
2 .GPL协议:非版权原则,免费开源
3 .GNU计划:开发Linux相关软件计划

二、Linux特点

多用户,多任务

三、Linux安装

1、安装虚拟机

安装VMware虚拟机,虚拟机是模拟硬件的软件
VMware安装链接地址,傻瓜式安装即可

2、在虚拟机上安装Linux

Linux安装及使用
Linux的组成:
在这里插入图片描述
Linux的目录结构(测试常会用到bin二进制文件,etc配置文件,mnt挂载点,root超级管理员,usr应用程序)

3、远程连接

使用Xshell,Xftp等远程连接工具

测试一般不需要自己安装虚拟机,远程连接即可
我工作中使用SSH软件:mobaxterm 点击可查看mobaxterm安装及使用教程

四、Linux命令

Linux命令大全

1、常用快捷键

序号快捷键作用
01tab键命令或者路径提示及补全
02ctrl+c放弃当前输入,终止当前任务或程序
03ctrl+1清屏
04ctrl+insert复制
05鼠标右键粘贴
06alt+c断开连接
07ctrl+shfit+ R新连接
08alt+1/2/3/4/5切换会话窗口
09上下键查找执行行过的命令,或者是history命令

2、终端命令格式

command [-options] [parameter]

说明:
command:命令名,相应功能的英文单词或单词的缩写
[-options]:选项,可用来对命令进行控制,也可以省略
[parameter]:传给命令的参数,可以是零个、一个或者多个

例如:
ls -l
touch abc.txt

3、帮助命令

一个命令有很多可选项,死记硬背肯定不行,可借助手册查阅

命令内容
- -help 帮助信息command --help显示command 命令的帮助信息 例如:ls --help
man 使用手册 man command查询 command 命令的使用手册,包含命令、函数的详细使用说明 例如:man ls

4、其他常用命令

在这里插入图片描述
1)查看目录内容

序号命令作用
01ls -a查看全部内容,包含隐藏文件
02ls -l查看内容的详细信息,效果等同于 ll 命令
03ls -lh以人能读懂的方式显示文件大小
04ls -R输结构显示某文件夹下的所有文件(包括子文件夹)

2)创建,删除

序号命令作用
01mkdir [-p]要创建的目录(可创建多级目录) 例如: mkdir -p aaa/bbb/ccc 创建三级目录
02rmdir要删除的目录 remove 移除 例如: rmdir aaa
03touch创建文件(可创建多个文件) 例如: touch aaa.txt bbb.txt 创建多个文件
04rm [-参数]-f 强制删除,-r 递归删除文件夹必用删除文件 例如:rm -rf *.txt

3)拷贝,剪切

序号命令作用
01cp [-r]可复制文件/文件夹 例如: cp test.txt test1.txt (同目录下复制文件)
cp -r abc /tmp (递归复制整个文件夹)
02mv剪切移动文件/文件夹,自带重命名功能例如:mv aaa1 bbb1(aaa1文件夹改名为bbb1)
mv a1 test(把a1文件夹放到test文件夹内)

4)cat查看文件内容(小)

序号命令作用
01cat [-b]列出行号,非空白行有行号显示,空白行不标行号 例如:cat -b abc.txt
02cat [-E]结尾字节以$显示出来 例如:cat -E abc.txt
03cat [-n]列出行号,空白行也会有行号,与-b的选项不同 例如:cat -n abc.txt
04cat [-T]将【tab】按键以^I显示出来例如:cat -T abc.txt
05cat [-v]列出一些看不出来的特殊字符 例如:cat -v abc.txt
06cat [-A]相当于-vET的整合选项,可列出一些特殊字符而不是空白而已例如:cat -A abc.txt

5)more查看文件内容(可精细操作,大)

序号命令作用
01more 文件名空格键:向下翻动一页
Enter:向下翻动一行
q:离开more这个程序,不再显示该文件内容
Ctrl+F:向下滚动一屛
Ctrl+B:返回上一屏;
= :输出当前行的行号

6)less查看文件内容(可精细操作,大)

序号命令作用
01less 文件名空格键:向下翻动一页
Enter:代表向下翻一行
q:离开less这个程序,不再显示该文件内容
下箭头[pagedown]:向下翻动一页
上箭头[pagedown]:向上翻动一页;
= :输出当前行的行号
/搜索内容:向下搜寻【搜索内容】的功能;n:向下查找,N:向上查找

7)head查看文件内容(只看头几行)

序号命令作用
01head 文件名查看前10行
02head -n 3 文件名查看文件的前3行
03head -c 3 文件名查看文件的前3个字符

8)tail查看文件内容(只看尾巴几行,可实时追踪更新)

序号命令作用
01tail 文件名查看最后10行
02tail -n 3 文件名查看文件的最后3行
03tail -f 文件名实时追踪该文档的所有更新
04tail -5f 文件名实时追踪该文档的最后5行,监听状态

9)打tar包,解tar包(打包之后的大文件需要以.tar 结尾,文件大小不变)
create,verbosely(进度),file(.tar结尾),x(extract提取),-C(更改目录位置)

序号命令作用
01tar -cvf 打包名.tar 被打包的目录将该目录下的文件打包成一个大文件
02tar -cvf 打包名.tar 被打包的文件1 被打包的文件2 被打包的文件3将一系列文件打包成一个大文件
03tar -xvf 打包名.tar将一个打包后的分解成一系列小文件,当前位置
04tar -xvf 打包名.tar -C 解包路径位置将一个打包后的分解成一系列小文件,指定位置

10)gzip,bzip2压缩,解压缩(文件压缩)
z(gzip压缩),j(bzip2压缩)----z,j互换即可

序号命令作用
01tar -zcvf 打包压缩名.tar.gz 被压缩的文件/目录压缩文件
02tar -zxvf 打包文件.tar.gz解压缩文件
03tar -zxvf 打包文件.tar.gz -C 目录路径解压缩到指定路径

11)date时间日期
date 显示当前时间

序号命令作用
01date +%Y显示当前年份
02date +%m显示当前月份
03date +%d显示当前是哪一天
04date +%Y%m%d显示当前年月日各种格式
05date “+%Y-%m-%d %H:%M:%S”,或者单引号也可以显示当前年月日时分秒
06date +%d显示当前是哪一天

date显示非当前时间

序号命令作用
01date -d ‘1 days ago’显示前一天日期
02date -d yesterday +“%Y-%m-%d”显示前一天日期
03date -d next-day +“%Y-%m-%d”显示明天日期
04date -d ‘next monday’显示下周一时间

12)搜索与查找命令find,grep

序号命令按照文件名查找
01find /etc -name yum.conf在/etc目录下文件yum.conf
02find /etc -name ‘yum’使用通配符*(@或者任意多个)。表示在/etc目录下查找文件名中含有字符中’yum’的文件
03find . -name ‘yum*’表示当前目录下查找文件名开头是字符串’yum’的文件
序号命令按照文件特征查找
01find / -atime -2查找在系统中最后48小时访问的文件(AccessTime,文件读取访问时间)
02find / -empty查找在系统中为空的文件或者文件夹
03find / -group susan查找在系统中属于group为susan的文件
04find / -mtime -1查找在系统中最后24小时里修改过的文件(modify time)
05find / -user susan查找在系统中属于susan这个用户的文件
06find / -size +10000c查找出大于10000000字节的文件(C:字节,W:双字,K:KB,M:MB,G:GB)
07find / -size -1000k查找出小于1000KB的文件
序号命令使用混合查找方式查找文件,参数有:!,-and(-a),-or(-o)
01find /tmp/ -size +10c and -mtime +2在/tmp目录下查找大于10字节并在最后48小时内修改的文件
02find / -user root -or -user susan在/目录下查找用户是root或者susan的文件文件
03find /tmp !-user susan在/tmp目录中查找所有不属于susan用户的文件
序号命令grep [options] 范围,grep是根据文本内容进行查找
01grep -c 范围只输出匹配行的计数
02grep -i 范围不区分大小写
03grep -n 范围显示匹配行及行号例如:grep -n name aaa.xml(统计aaa.xml文件内name字符的行号)
04grep -w 范围显示整个单词
05grep -r 范围递归查询

13)vi编辑器

序号命令vim是vi的升级版本,有更多功能 例:vim 文件全名
01:wq退出且保存,:q! 退出且不保存
02vim 文件全名进入文件
03i a o编辑模式,i:光标不动 a:光标到下一个字符 o:另起一行
04Esc键命令行模式

5、组合命令

1)重定向输出>和>>
cat 文件名>a.txt 将输出定向到a.txt中
cat 文件名 >>a.txt 输出并且追加

2)管道“|”
将一个命令的输出作为另一个命令的输入
例如:ps -ef | grep java(查找所有进程中包含java的进程)
例如:ls --help | more(像翻书一样查看ls 的帮助信息)

3)逻辑控制&&
&& 与 连接,左边的成功执行完,右边的才能执行
cp 1.txt 2.txt && cat 2.txt(复制后查看)

4)history查看所敲命令历史
history > 4.txt(把历史内容写到4.txt文件中)

6、系统管理命令

1)useradd添加新用户

序号命令注意:当前用户必须有添加用户的权限
01useradd 用户名添加新用户

2)passwd设置用户密码

序号命令注意:当前用户必须有添加用户的权限
01passwd 用户名设置用户密码

3)id判断用户是否存在

序号命令注意:当前用户必须有添加用户的权限
01id 用户名判断用户是否存在

4)su切换用户

序号命令注意:当前用户必须有添加用户的权限
01su 用户名切换用户,只能获得用户的执行权限,不能获得环境变量
02su - 用户名切换到用户并获得该用户的环境变量及执行权限

5)userdel删除用户

序号命令注意:当前用户必须有添加用户的权限
01userdel 用户名删除用户但保存用户主日录
02userdel -r 用户名用户和用户主目录,都删除

6)who查看登录用户信息

序号命令注意:当前用户必须有添加用户的权限
01whoami显示自身用户名称
02who am i显示登录用户名称
03who看当前有哪些用户登录到了本台机器上

7)设置Linux普通用户具有root权限即sudo的使用

序号命令注意:可使用临时管理员完成添加
01sudo useradd 用户名设置用户名
02sudo passwd 密码设置密码
03sudo reboot立即重启linux计算机

使用临时管理员完成添加的操作:

1.sudo命令—允许系统管理员让普通用户执行一些或者全部的root命令
2.修改配置文件修改 /etc/sudoers文件,找到下面一行,在root下面添加一行
vim/etc/sudoers
在文件里编辑以下内容,添加临时管理员tom:
##Allow root to run any commands anywhere
root ALL=(ALL) ALL
tom ALL=(ALL) ALL
3.使用tom临时管理员权限用户登录,操作管理员命令
sudo useradd 用户名
sudo passwd 密码

8)用户组管理命令

序号命令注意:系统对用户进行集中管理,cat /etc/group查看创建了哪些组
01groupadd 组名新增组
02groupdel 组名删除组
03groupmod -n 新组名 老组名修改组名

9)usermod修改用户

序号命令cat /etc/group查看创建了哪些组
01usermod -g 用户组 用户名修改组内用户,也可添加用户进组
02groupdel 组名删除组
03groupmod -n 新组名 老组名修改组名

10)文件权限(可用ll查看具体权限)
在这里插入图片描述

序号命令文件权限
01chmod 777 1.txt ; chmod +x 1.txt修改文件权限(777,755权限
03chgrp 最终用户组改变文件或目录的所属组

11)系统与进程管理

序号命令pid进程号
01df -h;du -h[目录名称]disk free 显示磁盘剩余空间,disk usage 显示目录下的目录大小(-h人性化展示)
02ps -aux;ps -efps查看系统中所有进程
03toppid进程号,top查看系统健康状态
04kill -9 pid进程号杀死进程

12)网络管理命令

序号命令显示网络统计信息
01netstat [选项]-a(连接和监听端口),-b,-e(以太网统计信息),-n(地址和端口),-o(进程id),-p TCP(显示指定协议的连接)

13)CPU情况查看

序号命令CPU详情
01lscpu查看CPU的详细信息,包括架构、核心数、每个核心的线程数、CPU的频率等
02mpstat查看cpu每个核心使用情况

7、linux安装第三方工具

1)rpm软件包管理器
实现对软件的安装,查询,卸载

序号命令rpm的使用
01rpm -q(查询) -a(所有) -i(信息) -l(所有相关文件) -f(文件对应rpm包)查询已安装的rpm列表
02rpm -e(卸载)rpm -e --nodeps 软件包名称(卸载前跳过依赖检查)
03rpm -ivh(安装)-i(安装) -v(打印提示信息) -h(显示安装进度)

在这里插入图片描述

2)yum软件包管理器(需要联网)
基于rpm,指定路径自动下载,安装,处理依赖关系

序号命令yum的使用(可安装httpd软件)
01yum list显示所有已安装和可以安装的程序包
02yum -y install 需要的软件包下载安装
03yum -y remove 需要卸载的软件包卸载
04yum repolist列出设定yum源信息
05yum clean all清除yum缓存信息

3)软件安装注意事项
1.安装JDK,需卸载openjdk
(1)、切换到root用户并进入user目录:cd/usr
(2)、在usr目录下创建java文件夹:mkdir java
(3)、将jdk-7u71-linux-x64.tar.gz拷贝或上传到java目录下(也可以用工具 )
(4)、进入/usr/java文件夹下:cd/usr/java/
(5)、修改权限,参数”jdk-7u71-linux-x64.tar.gz"为你自己上传的jdk安装文件
chmod 755 jdk-7u71-linux-x64.tar.gz
(6)、解压:tar -zxvf jdk-7u71-linux-x64.tar.gz
(7)、配置环境变量
vi /etc/profile
添加内容:export 主要用来设置环境变量
在这里插入图片描述
(8)、重新编译环境变量
source /etc/profile
(9)、测试
java -version

2.安装tomcat,和安装jdk类似
(1)、创建安装目录,给tomcat文件权限,解压tomcat的tar包
(2)、进入tomcat的bin目录,启动tomcat的web服务
./startup.sh
(3)、查看tomcat日志(显示最后200行内容)
tail -200f /usr/tomcat/apache-tomcat-7.0.57/logs/catalina.out

3.安装Mysql,卸载系统自带Mysql
(1)、查询Mysql,卸载系统自带Mysql
rpm -qa | grep mysql
rpm -e --nodeps 系统mysql全名
(2)、下载安装官网yum源(需要联网),先查看源仓库后下载
ll /etc/yum.repos.d/
wget -p /usr/software http://repo,mysql,com/mysql-community-release-el6-5.noarch.rpm
(3)、解决中文乱码,修改配置文件改为utf8,重启
(4)、Mysql客户端远程连接数据库,需给root授权并刷新权限
#给root授权:既可以本地访问,也可以远程访问
grant all privileges on *.* to 'root'@'%' identified by '123' with grant option;
刷新:flush privileges

五、Linux实战演练

1、多Linux服务器部署操作

1)克隆
关闭当前centos,右击–>管理–>克隆
2)配置
开启虚拟机,vi编辑ifcfg-ens33修改ip地址,重启:systemctl restart network
修改主机名:hostnamectl set-hostname xxx,重启
3)关闭三台虚拟机防火墙
查看防火墙状态:systemctl status firewalld
关闭防火墙:systemctl stop firewalld
设置防火墙开机自关:systemctl disable firewalld
4)关闭安全策略selinux
vi编辑:vi /etc/selinux/config
注释掉selinux=enforcing,添加selinux=disabled
5)三台机器免密登录,ssh协议使用秘钥
方法一:ssh基于密码远程登录:ssh ip地址
vi编辑进入,将ip地址与linux虚拟机名映射:vi /etc/hosts

举例:
192.168.80.100 centos7-1
192.168.80.101 centos7-2
192.168.80 102 centos7-31

修改完保存后,即可通过:ssh centos7-1(虚拟机名)连接
方法二:ssh基于秘钥实现免密登录
在这里插入图片描述
6)三台机器时间同步
date查看本机当前时间,设置时间:date -s ‘2025-04-11 15:58:20’
通过命名和时钟服务器同时间:ntpdate us.pool.ntp.org(未找到需yum下载ntpdate)

2、Linux Shell编程

查看linux里的shell编译器 cat /etc/shells
1)编写脚本
vim hello.sh(编辑一个不存在的文件,编辑后保存,文件自动创建)

#!/bin/bash
echo 'hello lagou'

2)执行shell脚本

# /bin/sh hello.sh(文件得在/bin/sh目录下,用/bin/sh目录下的解析器)
# /bin/bash hello.sh(同理)
# bash hello.sh(用bash解析器)
# sh hello.sh(用bash(sh是bash的快捷方式)解析器)

3)变量

course="java"(定义变量,不能有空格)
hobby="i like ${course}script"
echo $hobby(使用这个变量,$)

readonly 变量名(readyonly命令可以将变量定义为只读变量,使用会报错)

(/etc下目录的文件名循环出来)
for file in 'ls/etc'
for file in $(ls /etc)

删除变量:unset 变量名(不能删除只读变量)

4)字符串
单引号字符串会原样输出,没法在内部使用其他变量
双引号里面有变量,可以出现转义字符

echo ${#hobby}(获取字符串长度)
echo $(hobby:2)(从第二个字符串截取到字符串结束)
echo $(hobby:2:2)(从第二个字符串截取2个字符串)
echo 'expr index "$hobby" o'(在hobby字符串中查找第一个o出现的位置)

5)运算符
使用expr 工具进行计算
echo expr $a + $b(表达式和运算符中间要有空格,表达式外要有``)

6)流程控制

  1. if 语句
if then,fi
if then,else,fi

在这里插入图片描述
在这里插入图片描述

  1. for 语句
for循环
for i in (list); do
    echo $i;
done

在这里插入图片描述
在这里插入图片描述

  1. while 语句
(每过1秒打印当前时间)
while truedo 
   echo `date + "%Y-%m-%d %H:%M:%S"`
   sleep 1
done
  1. case 语句
case 值 in
    模式1)
    模式2)
esac

在这里插入图片描述

  1. 跳出循环
breakcontinue

在这里插入图片描述
6. 函数

#!/bin/bash
fun1(){
    echo "这是我的第一个shell函数!"
}
echo '......函数开始执行......'
fun1
echo '......函数执行完毕......'

3、Linux Shell实战练习

1)统计目录文件
编写一个脚本/root/bin/sumfile.sh,统计/etc,/var,/user目录中共有多少个一级子目录和文件

vim sumfile.sh(执行这条语句)

#!/bin/bash
num1=$(ls -l /etc | wc -l)
num2=$(ls -l /var | wc -l)
num3=$(ls -l /usr | wc -l)
let Num=$num1+$num2+$num3
echo $Num
done

:wq
sh sumfile.sh(执行这条语句)

2)猜数字小游戏
脚本生成一个 100 以内的随机数字,提示用户猜数字,根据用户的输入,提示用户是否猜对,猜大或猜小继续循环猜,猜对跳出循环。

vim demo1.sh(执行这条语句)

#!/bin/bash
num=$[RANDOM%100+1]
while :
do
   read -p "计算机生成一个1-100的随机数” cat
   if [ $cat -eq $num ];then
        echo "猜对了"
        break
   elif [ $cat -le $num ];then
        echo "小了"
   else
        echo "大了"
   fi
done

:wq
sh demo1.sh(执行这条语句)

3)使用case、while和read查看系统信息
编写一个交互脚本,执行脚本时候键盘输入对应的参数,脚本反馈对应信息,当输入为“exit”时候脚本退出。脚本采用 read 捕捉键盘输入信息,然后使用 case 进行条件选择并执行命令,最后使用 while 对 case 语句进行循环。

vim demo2.sh(执行这条语句)

#!/bin/bash
#EOF(End Of File)表示文本结束符。注意:E0F必须顶行写,前面不能用制表符或者空格。
#cat << EOF的意思是以EOF输入字符为标准输入结束,就是当你输入cat<< EOF的时候,你可以随意输入字符,但是当输入EOF#的时候就结束了
cat << EOF
D|d 显示硬盘信息
M|m 显示内存信息
S|s 显示交换分区信息
EOF
read -p"请输入以上对应参数:"CANSHU
while[$CANSHU !="exit"];do
case $CANSHU in
d|D)
    df -h
    ;;
m|M)
    free -m | grep Mem
    ;;
s|S)
    free -m | grep Swap
    ;;
*)
    echo "Unknow"
    ;;
esac
read -p "请确认以上参数" myparam
done

:wq
sh demo2.sh(执行这条语句)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值