乐愚社区Beta

 linux  >  Linux学习笔记-入门基础教程

Linux学习笔记-入门基础教程

旁观者  L21  • 2021-07-12 • 回复 4 • 查看 515 • 收藏 16 • 只看楼主举报    

学习网站:

linux入门到精通,零基础入门

linux入门到精通(下部分)

一、常用操作系统

  • Windows,微软,闭源,包括用户操作系统,服务器操作系统
  • Mac, 苹果,闭源,借鉴OpenBSD
  • Linux, 开源, 市场占有率最多的服务器操作系统,常见的分支:乌班图, Centos, RedHat, SUSE, Debian最大的分支是安卓(谷歌研发的Linux分支)

二、Linux发展史

1、 诞生

  • Multics项目,MIT、Bell实验室
  • 1970年(Unix元年),Unix诞生,在Multics基础上开发,使用汇编,时间戳(从1970-1-1 00:00:00 至今的秒数)
  • 1973,汇编对于计算机硬件过于依赖,移植性不好,用C重写了Unix
  • 1991, Linux之父:李纳斯,0.0.1版本

2、系统特点

  • 开放性(开源)
  • 多用户, 允许同时登录多个用户
  • 多任务,允许用户同时进行多个操作任务
  • 良好的用户界面
  • 优异的性能与稳定性

3、Linux分支

乌班图ubuntu, Centos, RedHat, SUSE, Debian最大的分支是安卓(谷歌研发的Linux分支)

三、Linux系统安装

1、虚拟机软件

​ 模拟真实的电脑环境,两个比较出名的产品:Vmware出品的VMware workstation, Oracle出品的virtual Box

保姆式安装教程:黑马程序员linux入门到精通(上部分)_哔哩哔哩_bilibili

2、Linux系统的文件

Linux一切皆文件

目录结构:

  • bin: 全称binary(二进制),该目录存储的都是一些二进制文件,文件都是可以被运行的
  • dev,主要存放外界设备,例如盘、其他的光盘等。在其中的外接设备是不能直接被使用的,需要挂载(类似Windows下分配盘符)
  • etc:主要存储一些配置文件
  • home:表示除了root用户以外,其他用户的家目录,(类似Windows下的user/用户目录)
  • proc:process,表示进程,该目录存储的是Linux运行时的进程
  • root:root用户自己的家目录
  • sbin:全称:super binary, 该目录也是存储可执行的二进制文件,但是只有super权限的用户才能执行
  • tmp:当系统运行时产生的临时文件会在这个目录中
  • usr:存放的是用户自己安装的软件(类似windows 下的program files目录)
  • var:存放程序/系统日志文件的目录
  • mnt:外接设备需要挂载的时候,就需要挂载到该目录

四、Linux基本指令

1、什么是指令

​ 在Linux终端(命令行)输入的内容,一个完整的指令的标准格式:

指令主题 [选项] [操作对象]

​ 一个指令可以包含多个选项,多个对象

2、 基础指令

ls (list):列出指定目录(默认当前)下的所有文件和目录的名称

  • ls

  • ls /root

  • ls -l // 等价于ll

  • ls -la // 显示包括隐藏文件(以点开头的文件/目录)

  • ls -lh // 以可读性较高的形式列出文件和目录

pwd:打印当前工作目录

cd:切换目录

  • cd ~ // 快速切换到当前用户的家目录

mkdir:创建目录,

  • mkdir 路径(可以是文件夹名称,也可以是包含名称的完整路径)
  • mkdir -p 路径 // 创建路径中的所有文件夹
  • mkdir 路径1 路径2 … // 创建多个

touch:创建文件

  • touch 文件路径
  •  

cp:复制文件/文件夹到指定位置

  • cp 被复制的文档目录 目的文档目录 // 复制过程中,可以对文件重命名
  • 进行文件夹复制时,需要条件 -r 选项 : cp -r ./a/ /home (-r:表示递归复制)

mv:移动文档到新的位置(剪切)

  • mv 需要移动的文档路径 目的路径
  • 重命名

rm:移送/删除文档

  • rm [选项] 需要移除的文档

    -f :强制删除

    -r:递归删除

vim:文本编辑

  • vim 文件路径 // 文件不存在则创建

输出重定向:一般命令的输入都会显示在终端,需要将一些命令的执行结果保存到文件中,则需要使用到输出重定向

>: 覆盖输出,会覆盖掉原先的文件内容

>>:追加输出,不会覆盖原始文件内容,

  • ls -lh > ls.txt // ls.txt文件可以不存在

cat:

  • 直接打开文件

  • 合并文件:cat 待合并的文件路径1 待合并的文件路径2 … > 合并之后的文件路径 // 合并文件

3、进阶指令

df:查看磁盘空间

  • df -h

free:查看内存使用情况

  • free -m // 以Mb为单位进行查看

Swap:用于临时内存,当系统真实内存不够用时,可以临时使用磁盘空间来充当内存

head:查看文s件的前n行,如果不指定n,默认显示10行

  • head -n 文件路径 // n表示数字,表示显示几行

tail:查看文件的末几行

  • tail -n 文件路径 // n为数字,表示显示几行
  • tail -f 文件路径 // 查看文件的动态变化

less:以较少的内容进行输出,按辅助功能键(数字+回车、空格键(翻页)+上下方向键)查看更多,按q键退出

wc:统计文件内容信息(包含行数、单词数、字节数)

  • swc -lwc 需要统计的文件路径 // lwc // 分别表示行数、单词数、字节数

date:表示操作时间日期(读取,设置),CST(当地时间),UCT,GMT

  • date //
  • date +%F // 2021-6-28,等价于date “+%Y-%m-%d”
  • date “+%F %T” // 2021-06-28 21:18:40,等价于:date “+%Y-%m-%d %H:%M:%S”
  • date -d “-1 day” // 一天前的时间,单位:day/year/month/

cal:操作日历

  • cal // 输入当前月份日历
  • cal -3 // 输入上月+ 本月+下月
  • cal -y 年份 // 输入指定年份日历

clear/ctrl + L :清除终端中已经存在的信息, ctrl+L是快捷键方式

管道(|):配合指令使用,用于:过滤、

  • 过滤:
    • ls | grep a // 过滤出当前目录下包含a的目录,grep主要用于过滤
  • 扩展处理
    • ls | wc -l // 统计当前目录下的文档数量

4、高级指令

hostname :操作服务的主机名(读取,操作(使用hostname指令操作是临时的))

  • hostname // 输入完整主机名
  • hostname -f // 输出当前主机名中的FQDN(全限定域名)

id:查看一个用户的一些基本信息(用户id,用户组id,附加组id),如果不指定用户则默认当前用户

用户信息:/etc/passwd, 用户组信息: /etc/group

  • id
  • id 用户名

whoami :显示当前登录用户名,一般用于shell脚本

ps -ef:主要用于查看服务器的进程信息

  • -e :列出全部进程
  • -f:显示全部的列

ps -ef | grep 进程名称

  • UID:该进程执行的用户
  • PID:进程id
  • PPID:父级进程ID,如果一个进程的父级进程找不到,则该程序的进程称之为僵尸进程
  • C:cpu的占用率
  • STIME:进行的启动时间
  • TTY:终端设备,发起该进程的设备识别符号,如果显示"?",则表示该进程并不是由终端设备发起
  • CMD:该进程的名称或者对应的路径

top:查看服务器的进程占用的资源

  • top // 动态显示,按q键退出
    • M:按内存(MEM)从高到低进行排序
    • P:按CPU使用率
    • 1:当服务器拥有多个cpu的时,切换展示各个菜谱的详细信息

  • PID:进程id
  • USER:该进程对应的用户
  • PR:优先级
  • VIRT:虚拟内存
  • RES:常驻内存
  • SHR:共享内存, 进程实际使用内存=常驻内存-共享内存
  • S:表示进程的状态 S/R
  • %CPU:cpu占用百分比
  • %MEM:内存占用百分比
  • TIME+: 执行的时间
  • COMMAND:进程的名称或路径

du [-sh] :查看目录的真实大小

选项含义:

  • -s:只显示汇总的大小
  • -h:表示以高可读性的形式显示

find:用于查找文件

  • find 路径 选项 选项的值

    • 选项: -name(按文档名称模糊搜索), -type(按文档类型 (f/d: 文件/文件夹))
  • find ./ -name *conf | wc -l // 统计当前目录下以conf结束的文件个数

  • find ./ -type f // 查找当前目录下的所有文件

service:用于控制一些软件的服务启动/停止/重启

  • service 服务名 start/stop/restart

kill:杀死进程

  • kill 进程id // 需与ps配合使用
  • killall 进程名称

ifconfig:操作网卡相关信息,inet是网卡的IP地址

reboot:重启计算机

  • reboot
  • reboot -w //模拟重启,但是不重启,写关机与开机的日志信息(用于测试日志配置)

shutdown

  • shutdown -h now // 立即关机
  • shutdown -h 15:25 “关机提示语” //定时关机
  • halt // 立即关机
  • init 0 // 立即关机
  • poweroff // 立即关机

uptime:输出计算机的持续在线时间(从开机到现在的运行时间)

uname:获取操作系统的相关信息

  • uname // 操作系统的类型
  • uname -a

netstat -tnlp:查看网络连接状态

  • -t:列出tcp协议的连接
  • -n:将地址从字母组合转化成IP地址(如localhost -> 127.0.0.1),将协议转化成端口号来显示
  • -l:过滤出state字段的值为LISTEN(监听)的连接
  • -p:发起连接的进程pid和进程名称

man:手册(manual),包含了Linux中全部命令手册

删除光标前后的内容:

  • 前:ctrl+u
  • 后:ctrl+k

5、vim编辑器

5.1 三种模式

  • 命令模式

    • 不能直接编辑,可以输入快捷键进行一些操作(删除行,复制行,移动光标,粘贴。。)

    • 光标操作 按键
      光标移动到行首 shift + 6 (^)
      光标移动到行尾 shift + 4 ($)
      光标移动到首行 gg
      光标移动到末行 G
      翻屏(向上) ctrl + b /pageUp
      翻屏(向下) ctrl + f / pageDown
    • 复制操作 按键 备注
      复制光标所在行() yy 在粘贴的地方按"p"
      以光标所在行为准(包含当前),向下复制指定行 数字yy 在粘贴的地方按"p"
      可视化复制,按 ctrl + v 进入可视化选择   在粘贴的地方按"p"
    • dd: 剪切(删除): // 删除光标所有行, 删除之后下一行上移

      数字dd: // 删除光标所在行为准(包含当前行),向下删除指定行,删除后下一行上移

      D: // 删除之后当前行空白,即下一行不上移

    • :u : //撤销 ,直接输入“u" 也可以 (undo)

      ctrl + r : // 取消之前的操作

    • 将光标移动到指定行: 数字G / :数字

      下移/上移指定行数: 数字 ↓ / 数字↑

  • 编辑模式

    • 可编辑

    • ctrl + R : // 计算器使用

  • 末行模式

    • 搜索、替换、保存、退出、撤销、高亮…

    • 保存: :w

      另存: :w 路径

      退出::q

      强制: !

      搜索/查找: /关键词

      在搜索结果中切换: 上一个/下一个: N/n

      取消高亮: :nohl / :noh

      替换:

      ​ :s/搜索的关键词/新的内容 // 替换光标所在行的第一处符合条件的内容

      ​ :s/搜索的关键词/新的内容/g // 替换光标所在行的全部符合条件的内容

      ​ :%s/搜索的关键词/新的内容 // 替换整个文档的第一处符合条件的内容

      ​ :%s/搜索的关键词/新的内容/g // 替换整个文档的全部符合条件的内容

      显示行号(临时显示)/取消行号: :set nu / set nonu

      着色: :syntax on/off

    • 调用外部命令: : ! 外部命令

5.2 切换模式

5.3打开文件的方式

  • vim 文件路径 // 打开指定文件

  • vim +数字 文件路径 //将光标移动到指定行(不要省略符号"+") vim +3 /etc/passwd

  • vim +/关键词 文件路径 // 高亮显示关键词(不要省略符号"+") vim +/login /etc/passwd

  • vim 文件路径1 文件路径2… // 同时打开多个文件

    • %a:当前正被打开的文件

      #:上一个打开的文件

      :open 文件名: 切换到指定文件

      :bn : 切换到下一个文件

      :bp: 切换到上一个文件

5.4 扩展

  • vim的配置

    • 临时

      • 末行模式输入的配置
    • 个人

      • ~/.vimrc (如果没有可自行创建)
    • 全局

      • /etc/vimrc
  • 异常退出

    终端关闭、服务器断电等

    解决方法:将交换文件删除即可, 文件名.swp

  • 别名机制

依靠一个别名映射文件:; ~/.bashrc

  • 退出方式

:x // 保存退出,如果文件没有被修改,使用x退出,文件的修改时间不会被修改,而:wq则会

五、Linux自有服务

操作系统内置的服务

1、运行模式(运行级别)

  • init 进程,进程id是1,该进程对应的配置文件:/etc/inittab

  • 0:关机级别
  • 1:单用户模式
  • 2:多用户模式,不带NFS(network file system)
  • 3:完整的多用户模式,不带桌面
  • 4:保留模式
  • 5:完成的图形化界面模式
  • 6:重启阶级别

不要把运行级别设置成0和6

与级别相关的几个命令:

  • init 0 // 关机

  • init 3 // 切换到不带桌面的模式,需要超级管理员权限(临时切换,重启之后复原)

    • systemctl set-default multi-user.target  #设置成上述模式3
      systemctl set-default graphical.target  #设置成上述模式5
      
  • init 6 // 重启

2、用户与用户组

  • 多用户多任务操作系统
  • 向系统管理员申请账号,账号可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统的访问

三个文件:

/etc/passwd //存储用户关键信息

/etc/group // 存储用户组关键信息

/etc/shadow // 存储用户的密码信息

2.1 用户管理

2.1.1 添加用户
useradd 选项 用户名
  • 常用选项:
    • -g:指定用户的用户主组,可以是用户组id/组名
    • -G:指定用户的用户附加组,可以是用户组id/组名
    • -u:uid(用户的标识符),系统默认从500之后按顺序分配uid
    • -c:添加注释,可解释用户的用途

用户名:密码(占位):用户id:用户组id(主组):注释:家目录:解释器shell

  • 解释器shell:等待用户进入系统,输入指令后,该解释器会收集用户输入的指令传递给内核处理

/etc/group文件: 上图中为用户所属附加组

2.1.2 修改用户
usermod 选项 用户名
  • 常用选项
    • -g:指定用户的用户主组,可以是用户组id/组名
    • -G:指定用户的用户附加组,可以是用户组id/组名
    • -u:uid(用户的标识符),系统默认从500之后按顺序分配uid
    • -l: 修改用户名
      • usermod -l 新用户名 旧用户名
    • -s:设置用户解释器shell,例如:usermod -s /sbin/nologin test(设置用户test不允许登录系统)
2.1.3 设置密码

创建用户未色湖之密码前都处于锁定状态

passwd 用户名

su [用户名] (switch user): 切换用户, 不指定则切换到root

2.14 删除用户
userdel 选项 用户名
  • 常用选项
    • -r: 删除用户的同时,删除其家目录

== 除passwd外, 其他命令都需root权限

2.2 用户组管理

  • 每个用户都有一个用户组
  • 用户组在创建用户时同时创建, 如果不指定用户的用户组, 则默认用户组与用户同名,

用户组名: 密码(占位): 用户组id: 组内用户名

  • 组内用户名: 表示附加组是该组的用户名称
2.2.1 用户组添加
groupadd 选项 用户组名
  • 常用选项
    • -g: 设置用户组id, 默认从500开始递增
2.2.2用户组修改
groupmod 选项 用户组名
  • 常用选项
    • -g: 设置用户组id, 默认从500开始递增
    • -n: 修改用户组名称
      • groupmod -n 新名字 旧名字
2.2.3 用户组删除
groupdel 用户组名

如果组是某个用户的主组, 则不允许删除组

3 网络设置

  • **网卡配置文件路径: **
/etc/sysconfig/network-scripts/

ONBOOT: 是否开机启动

BOOTPROTO: IP地址分配方式, DHCP表示动态主机分配协议, static表示静态地址

HWADDR: MAC地址

  • 网卡重启
service network restart   # 有些Linux分支可能没有
  • /etc/init.d: 服务的快捷方式目录
/etc/init.d/network restart 

扩展1:

  • 创建文件的快捷链接(软链接)
ln -s 文档目录 目的  #例: ln -s /etc/sysconfig/networ-scripts/ ~/

扩展2:

  • 停止单个网卡: ifdown 网卡名
  • 开启单个网卡: ifup 网卡名

扩展3:

  • pscp远程文件传输
    • 下载: pscp 选项 用户名@主机地址:资源目录 windows本地路径
    • 上传: pscp 选项 资源路径 用户名@主机地址:远程路径

4 设置主机名

  • 临时设置主机名, 需切换用户后生效
hostname tmp 
  • 永久设置, /etc/sysconfig/network , centos7在/etc/hostname

5 chkconfig

开启启动项管理服务

  • 查询

    chkconfig --list
    

0-6表示运行级别

  • 删除服务
chkconfig --del 服务名
  • 添加开机启动服务
chkconfig --add 服务名
  • 设置服务在某个级别下开机启动/不启动
chkconfig --level 运行级别 服务名 on/off

6 ntp服务

对计算机的时间同步管理

  • 一次性同步(手动同步)
ntpdate 时间服务器的域名或地址
  • 设置时间同步服务, 服务名: ntpd

7 防火墙

防范网络攻击, 软件防火墙 硬件防火墙

iptables: 7之下

firewalld: centos7.x

  • iptables
    • service iptables status (iptables -L -n)

prot : 协议

  • 设置防火墙规则

-A : add, 添加规则

INPUT: 进站请求

OUTPUT: 出站请求

-p : 协议

–dport: 端口号

-j: accept/reject

/etc/init.d/iptables save

8、rpm管理

类似于Windows上的"软件管家"产品,主要作用是对Linux服务器上的软件包进行管理操作,查询、卸载、安装。

  • 查询某个软件的安装情况
rpm -qa | grep 软件名  # -q: query,  -a: all
  • 卸载软件
rpm -e 软件名 
rpm -e 软件名 --nodeps  // 当存在依赖关系时,可强制卸载
  • 安装

软件包的获取方式:

  • 官网下载
  • 从光盘(镜像文件)中读取
    • 查看块状(光盘、U盘等与磁盘有关的设备)设备的信息:
      • lsblk (list block devices)

name:名称

size:盘大小

type:类型

mountpoint:挂载点(类似windows下的盘符)

扩展:光盘的挂载和解挂:

  • 解挂

    umount 当前设备的挂载点(mountpoint)  # 相当于U盘在Windows上弹出了但是没有拔出
    
  • 挂载

    mount 设备的原始地址 要挂载的位置路径
    # 原始地址:统一都在/dev下,根据命令:lsblk列出的大小确定具体的name值,组成原始地址,例如上图中:/dev/sr0
    # 挂载的位置路径:挂载的目录一般都在/mnt下
    
rpm -ivh 软件包
#-i: install
#-v: 显示进度条
#-h: 表示以”#“号形式显示进度条
rpm -Uvh 软件包   # 更新
rpm -qf 文件路径   #查询文件属于那个软件包

9 cron/crontab计划任务

指定时间点执行任务(定时任务)

crontab 选项
#选项:
#-l :list,列出指定用户的计划任务列表
#-e : edit,编辑指定用户的计划任务列表
#-u : user, 指定用户,不指定表示当前用户
#-r : remove
  • 编辑计划任务

语法格式规则,以行为单位,一行则为一个计划:

(0~59) (0~23) (1~31) (1~12) (0~7,0和7表示周日) 需要执行的命令例如: 0 0 * * * reboot // 每天0点0分重启服务器

  • 四个符号:
    • *:区间类的任意值
    • -:连续区间表达式,例如:1号到7号: 1-7
    • /:每多少个,例如:每10分钟: */10
    • ,:多个取值,例如:1点,4点,5点: 1,4,5

crontab权限问题

  • 超管可以配置某些用户不允许设置计划任务(黑名单),配置文件:/etc/cron.deny,将用户配置在此配置文件中即可

  • 白名单,配置文件/etc/cron.allow (文件本身不存在,需自行创建)

六、Linux权限管理

3个身份: owner、group、others

  • owner:文件所有者,默认为文档的创建者
  • group:与文件所有者同组的用户
  • others:其他人(相对于所有者)
  • root:超级用户(神)

3种权限: read、write、execute

1、Linux的权限介绍

文件类型 : 常见取值: d:文件夹, -:文件, l:软链接

2、权限设置

chmod 选项 权限模式 文档

  • 常用选项:
    • -R:递归设置权限(当文档是文件夹时可能需用到)
  • 权限模式:该文档需要设置的权限信息
  • 文档:操作者可以是root用户或文档的所有者

提权漏洞

2.1 形式

  • 字母形式:

如果在设置权限时不指定给谁设置,则默认给所有用户设置

=:将权限设置成具体的值

例如:

chmod u+x,g+rx,o+r aaa.txt
chmod u=rwx,g=rx,o=r aaa.txt
  • 数字形式

rwx : 421

删除或改变(重命名、移动位置)一个文件,不是看文件有没有对应的权限,而是看文件所在的目录有无写权限,如果有才可以删除

3、属主与属组设置

属主:所属的用户

属组:所属的用户组

  • chown

更改文档的所属用户

chown -R username 文档路径
# -R 递归更改
  • chgrp

更改文档的所属用户组

chgrp -R groupname 文档路径

扩展

  • 通过chown也可以更改文档所属组

    chown -R username:groupname 文档路径
    

4、sudo

switch user do,sudo可以让管理员(root)定义某些特殊命令谁可以执行

  • 默认sudo中是没有除了root之外用户的规则
  • 配置文件:/etc/sudoers

/etc/sudoers使用root用户打开只读,使用命令visudo(此命令为系统自带)打开此文件

root:用户名;如果时用户组,写成:%组名

ALL:表示允许登录的主机(地址白名单)

(ALL):表示以谁的身份区执行

ALL:表示当前用户可以执行的命令,多个命令可以使用英文 ","分割

  • 添加sudo规则

添加sudo规则时,写命令的完整路径,路径使用命令which查看,添加规则需使用

  • test ALL=(ALL) /user/sbin/useradd,/user/sbin/passwd,!/user/sbin/passwd root // test用户可以添加用户,修改密码(但是不允许修改root用户的密码:!/user/sbin/passwd root
  • **添加好规则后,命令前加上sudo即可执行命令

$ sudo useradd test0708 //此时需要输入的是登录用户的密码,而不是root的密码

  • sudo -l // 查看自己拥有的特殊权限

七、Linux网络基础

  • 网络分类

  • 局域网(local area network LAN)

  • 城域网(meterpolitan area network MAN)

  • 广域网(wide area network WAN)

  • 所有者

  • 公文接入方式:计算机的IP地址是Internet上的非保留地址

  • 私网接入方式

1、IP地址

internet protocol,计算机网络相互连接进行通信而涉及的协议

分类:

  • 公有地址

由inter NIC(internet network information center)负责分配,通过它直接访问因特网

  • 私有地址

机构内部使用

A类:10.0.0.0—10.255.255.255

B类:172.16.0.0—172.31.255.255

C类:192.1680.0—192.168.255.255

2、网络相关命令

  • ping

检测当前主机与目标主机之间的连通性(有些服务器禁ping,所以不是100%准确)

  • netstat

查看网络的连接信息,

  • netstat -tnlp
  • netstat -an // 列出全部
  • traceroute

查找当前主机与目标主机之间的所有网关(路由器,会给沿途各个路由器发送icmp数据包,路由器可能会不给相应)

该命令不是内置命令,需安装

扩展:在Windows下类似的命令:tracert

  • arp

地址解析协议(address resolution),根据IP地址获取MAC地址的协议

  • 首先查看本机mac地址缓存中有没有目标主机的mac地址,有就使用,没有就发出一个广播包,拥有该IP地址的主机的回应信息包括mac地址;如果目标主机不在本地子网中,arp解析到的mac地址是默认网关的mac地址
    • arp -a // 查看本地缓存
    • arp -d 目标主机 // 删除本地缓存

arp攻击(arp欺骗)

  • tcpdump

抓包,抓取数据表

  • tcpdump 协议 port 端口
  • tcpdump 协议 port 端口 host 地址
  • tcpdump -l 网卡设备名

八、项目上线

1、服务器

真实服务器

云服务器

  • 阿里云
  • 腾讯云
  • 知道创宇(加速乐)
  • 华为云
  • 盛大云
  • 新浪云
  • 亚马逊云

2、域名解析

将域名绑定到一个服务器地址的操作

DNS:domain name server,用于将域名转化成IP地址的服务器

九、Shell基础

Shell(外壳)是一个用c语言编写的程序,它是用户使用Linux的桥梁,既是一种命令语言,又是一种程序设计语言。

脚本:文字命令,常见的脚本:JavaScript,vbscript,asp,jsp,php,sql,lua,python,ruby,javafx,shell,perl

shell种类:

  • linux内置的脚本
  • ash、bash、ksh、csh、zsh

1、shell入门

  • 编写规范

代码规范:

  • #!/bin/bash // 告知系统当前脚本要使用的解释器

文件命名规范:

  • 文件名.sh // .sh是Linux下bash shell的默认后缀

使用流程:

  • 创建.sh文件 // touch/vim

  • 编写shell代码 //

  • 执行shell脚本 // 需有执行权限

# echo,输出内容如果包含字母和符号(不包含变量),需要用引号括起来,纯数字可以不包

2、shell进阶

2.1 变量

定义形式:变量名=变量值(等号左右不能有空格), 如count=2

使用形式:$变量名,如:echo $count

双引号能识别变量,如echo “名字是:$str”,也能实现转移,如要乘号(*)

单引号不能识别,原样输出,单引号不能转义

在脚本中需要执行一些指令,并把执行的值赋值给变量时,需要使用”反引号“将执行包括,如:

  • 只读变量

readonly 变量名

  • 接受用户输入

read -p 提示信息 变量名

  • 删除变量

unset 变量名

2.2 条件判断语句

  • 语法1:

    if condition 
    
    then
    
    command..
    
    fi
    

    语法2:

    if condition
    then
    command1
    else
    command2
    fi
    

    语法3:

    if condition
    then
    command1
    elif condition2
    then
    command2
    else 
    command3
    fi
    

2.3 运算符

  • 算数运算符

原生bash不支持算数运算,可以通过其他命令来实现,例如: awkexpr

expr :能完成表达式的求值运算,例如:

  • val=expr 2 + 2

注意:

  • 运算符之间要有空格,例如2+2是错的,要写成:2 + 2
  • 完整表达式要被``包含(上面的例子被markdown语法覆盖了)
  • 关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字

-gt:great than

-lt:less than

-ge:great than or equal

-le: less than or equal

  • 逻辑运算符

  • 字符串运算符

  • 文件测试运算符

检测Linux文件的各种属性

扩展

Linux shell中如何处理tail -100 access.log命令选项

  • 调用tail指令
  • 系统内核把后续选项传递给tail
  • tail打开指定文件
  • 取出最后10行

自己写的shell向内置命令一样传递一些选项,如./test.sh a b c

  • 在脚本中使用$1表示a(第一个选项), $2表示b,以此类推

扩展2:

解压:

  • tar -zxvf *.tar.gz -C 指定解压目录 压缩包中指定的文件
    • 选项:
      • -z:通过gzip指令处理文件,–gzip或–ungzip
      • -x:从文件中还原文件,即解压
      • -v:显示操作过程
      • -f:指定一个文件,必填
      • -j:支持bzip2解压文件,*.tar.bz2

压缩:

  • tar -zcvf *.tar.gz
    • 选项:
      • -c 建立压缩

只查看解压:

  • tar -ztvf *.tar.gz

十、软件安装

  • 源码包安装

配置(config/configure/bootstrap)→ 编译(make/bootstrapd) → 安装 (make/bootstrapd install)

  • 配置:指定软件安装目录,依赖路径,不需要可选依赖,配置文件路径,通用数据存储路径等
    • 指定安装路径:–prefix=路径
    • 需要依赖的路径:–with-PACKAGE名=包所在的路径(源码包路径)
    • 不需要依赖:–without-PACKAGE名
  • 二进制包(rpm)

rpm -ivh 软件包

  • yum等傻瓜式安装

简单快捷,但不能自定义,需要联网

yum list [installed]  # 列出所有[已安装的]
yum search  #搜索指定关键词的包
yum [-y] install 包名
# -y: 表示安装过程过不需要确认
yum [-y] update [包名]    # 不指定包,更新所有
yum [-y] remove 包名
  • 联网下载软件包命令:wget

wget 线上下载链接地址

  • mysql数据备份(这是Linux命令,不是MySQL的

-A:表示全部数据库

  • mysql数据还原
  • 还原全部数据库

  • mysql命令行source方法

    • source 备份的文件路径
  • 系统命令行

    • mysql -uroot -p123456 < 备份的文件路径
  • 还原单个数据库

  • mysql命令行source方法

    • 选择数据库:use 库名
    • source 备份的文件路径
  • 系统命令行

    • mysql -uroot -p123456 库名 < 备份的文件路径

来源:https://blog.csdn.net/ex_tang/article/details/118642226

声明:本文系转载文章,仅供学习交流使用,侵权请联系删除


4条回帖
大智若愚cwt  L0  评论于
(0)  回复(2) 1#
有没有学习的一套资料啊
旁观者 楼主 :这个不就是学习笔记嘛,你要视频教程?
发表在2021-07-21 回复
大智若愚cwt :有视频类教程吗
发表在2021-07-21 回复
  
:)
还没想好d  L0  评论于
(0)  回复(0) 2#
。。插眼
还没注册帐号?快来注册社区帐号,和我们一起嗨起来!
关于本社区

集各类兴趣爱好于一身的轻量化交流社区,在此您可以和他人一起分享交流您觉得有价值的内容,社区鼓励大家发表原创内容,为社区添砖加瓦!

创建版块 → 社区版规 → 招聘版主 →
推荐版块
扫描二维码下载社区APP
回到顶部