Linux基础及shell脚本基础

目录

Linux基础--------了解熟悉

1.什么是linux

2.linux系统体系结构

2.shell

3.文件系统

shell脚本(shell编程)


Linux基础--------了解熟悉

1.什么是linux

内核:能够让计算机硬件进行工作,能够运行最核心的功能组合,计算机跑起来,就叫做内核。

llnux内核:由linus和linux社区的人员一起开发出来的内核

linux内核基础上,在加上各个厂商匹配内核开发网络管理、左面系统、快捷功能等、形成完整的操作系统

操作系统:

ubuntu

debiao

red hat

centos stream

linux操作系统

linux内核是免费的开源的内核程序

2.linux系统体系结构

linux 内核

shell(壳):通过shell提供内核的功能

文件系统

应用程序

 

1.linux内核

内核是linux系统中最底层,提供系统中核心功能并允许有有序访问硬件资源管理:

输入输出设备、进程执行情况、文件系统操作、内存资源管理

linux内核支持:

多任务、多用户

2.shell

shell叫做命令解释器,壳-----保护内核

当执行程序时,把程序的各种操作指令进行解释执行,通过命令解释器就让内核执行对应的操作

作用:

提供一个方式,可以让用户与内核(操作系统)进行交换

3.文件系统

文件系统就是用于组织和管理计算机存储设备上的大量文件

在windows系统使用NTFS格式文件系统

在linux中目前一般使用ext4格式文件

文件夹----------linux中叫做目录

文件系统逻辑结构(linux目录结构):

linux中文件系统是把文件组织为倒置的树,每一个文件夹当作数的分支,每个文件当做数的树叶

文件系统只有一个起点(相当于数的根位置):

/--------------根文件夹(整个磁盘起点)

linux文件系统就是一个树型的目录结构:

将根(/)作为整个文件系统的起点,其他所有目录都是从根开始

从根开始就是文件系统(磁盘的存储)

目录结构:存储结构

/:根目录

/bin:存放系统最常用的可执行程序(命令)

/boot:存放linux和系统启动文件

/dev:存放系统中的设备文件,包括磁盘,鼠标,键盘灯设备

/etc:存放系统的配置文件,如passwd存放用户信息

/home:用户目录的默认位置

/lib:存放共享库

/lib32:存放32位共享库

/lib64:存放64位共享库

/media:存放cd、软盘、usb临时读入的文件

/mnt:挂载文件系统挂载点

/proc:作为进程(当前执行的程序)的文件存放目录

/opt:作为可选程序和文件存放目录

/root:系统管理员用户的目录(root用户)

/sbin:作为扩展的、更多的为禁止程序存放的目录

/user:标准库、第三方库存放目录

/sys:系统运行时的文件存放目录

/tmp:用于存放临时文件

linux把一切都看做是文件(一切皆为文件)

4.shell命令

shell就是完成用户与内核之间的交互

shell命令:

让系统内核帮助完成一些具体的一些功能

shell就是命令解释器,将用户的命令(程序)解析称操作系统 能够理解的指令,实现用户与内核的交互。

shell命令的输入,在终端提示符,标识命令的输入位置。

 

用户:当前打开终端的用户是谁

主机名:我们电脑的名字

工作路径:当前是在哪个目录下输入命令执行

用户识别:$普通用户 #:管理员用户root

特殊的路径说明:

~:在当前的用户的家目录(用户目录)

. : 表示当前目录文件

.. :表示当前工作目录的上一层目录文件

命令格式:

command + [option] +[argment]

命令 选项 参数

不写表示使用默认选项、默认参数

命令:shell要解析的指令内容,要执行的内容

选项:改变命令执行动作的类型(命令功能选择), 选项用 -选项 表示 可以有多个选项:

选项1选项2..-选项1 - 选项2 ..

参数:命令要作用的目标是谁

如果需要在一行终端命令提示符写多个命令用;隔开,如果一行写不完\(续行)符号 表示命令未输入结束

有时命令不会携带选项或参数,不写就是默认选线、默认参数

man command :查看手册命令中说明帮助

2.路径表示

在命令中如何表示一个文件(或一个目录文件)

在认识linux文件系统是一颗倒置的树,分层的文件组织结构,表示一个文件,只需要确定文件在哪个目录下以及叫什么文件名,在不同的存储位置,可以确定唯一的一个文件,

路径:文件是在哪个目录下

  • 绝对路径

对于linux文件系统,只有一个根目录位置(/),表示文件系统的开始位置(所有内容都储存在/里面),以根为起点来表示一个文件的路径,文件在文件系统中准确位置。

如:(名单的绝对路径)

/home/ubuntu/code/221101/名单.png

  • 相对路径

默认从当前的用户的工作路径位置开始,找到对应文件或目录的位置。

如:(名单的相对路径)

code/221101/名单.png

3.常用的shell命令

pwd

用于显示在文件系统中当前工作绝对路径

如:~

pwd

/home/ubuntu

ls

显示对应的目录中的信息(有哪些文件)

ls------列出当前工作目录有哪些文件

ls+选项+参数(目录路径)

 

-i:列出指定目录中文件信息包含inode号,inode就是一个文件的唯一标识

-a:列出的目录的所有文件(包括隐藏文件)

-l:列出目录中的文件的详细信息(文件属性)

-rw------- 1 root root 1964400640 10月 31 22:13 swapfile dr-xr-xr-x 13 root root 0 11月 17 14:15 sys

文件类型文件权限文件硬链接数文件拥有者文件拥有组文件大小最后修改时间文件名
第一个符号2~10、共9个字符数字用户名用户组文件内容所占空间(数字)最后一次修改文件内容的时间文件的名字
-:表示普通文件(二进制、文本)权限值有9个、分为三组可以认为文件备份有几个文件的拥有者文件拥有者所在的组
d:表示目录文件第一组:用户的权限有几份文件完全一致第一组用户权限(创建者)第二组用户权限
p:表示管道文件第二组:用户组的权限
s:表示套接字文件第三组:其他用户权限
c:表示字符设备文件
b:表示块设备文件
l:表示符号链接文件

权限:

第一组第二组第三组
3位、用户权限3位、用户组的权限3位、其他用户权限
第一位:读的权限 、第二位:写的权限、第三位:执行权限第一位:读的权限 、第二位:写的权限、第三位:执行权限第一位:读的权限 、第二位:写的权限、第三位:执行权限

为1表示有权限、为0表示没有权限

在显示权限时:

如果第一位为1表示有读权限------r ;如果第一位为0表示没有读权限显示-

如果第二位为1表示有写权限------w; 如果第二位为0表示没有写权限显示-

如果第三位为1,表示有执行权限---x;如果第三位为0表示没有执行权限显示-

如果是目录:

文件硬链接数,表示目录中的文件个数

文件权限,r读表示能够进入目录查看目录下有什么内容(文件);w写表示能够在目录下创建,删除文件;x执行表示能够访问目录

cd

改变当前的工作目录

cd 参数(工作路径----------必须存在)

mkdir

创建目录

mkdir+要创建目录的路径

-p: 递归创建文件夹

如果路径中的目录不存在,则依次创建,直到想要创建的目录完成。

 

rm

rm +参数(文件路径)

删除此文件或目录文件

-f:强制删除文件或文件夹,即使文件夹不为空 ​ -r:递归的删除文件或文件夹 ​ -i:删除文件或文件夹前须要确认

 

cat

查看指定文件的内容

cat+文件路径

-E:在每一行结束时在末尾添加$符号

touch

创建一个普通文件

touch + 文件路径(文件路径必须存在)

如果创建的文件存在就会更新修改时间

file

判断文件类型

file+文件路径

cp

将文件(目录)拷贝到另一个路径中

cp+原文件路径+目标路径

 

-r:拷贝目录文件

mv

将源文件(目录)移动到目标目录中(且改名)

mv+源文件+目标目录路径

 

移动到test目录 改为 2.c名字

 

diff

比较两个文件显示出不同的地方

biff +文件路径1+文件路径2

ln

创建链接文件

1.硬链接文件

在文件系统中创建一份和原文件完全一致的文件,创建的新文件和原文件会一直保持一致(修改其中一个文件,其他硬链接文件都会修改)删除一个硬链接对其他硬链接文件没有影响

ln +源文件+ 硬链接

 

2.符号链接文件(软链接)

符号链接也叫软链接,就是对文件创建了一个快捷方式,操作符号链接就是操作源文件,只是符号链接关联上源文件,能看到源文件内容而已,改变源文件,符号链接也随之改变。

符号链接不能单独使用,删除源文件,符号链接也就是随之失效。

ln -s +源文件 +符号链接文件

tar

 

归档与压缩

1.归档文件:把多个文件打包成一个文件

压缩:把一个打包的文件进行压缩(空间变小)

把多个文件合并成一个文件

tar -cvf 归档文件名.tar 文件1 文件2 文件3 ...

2.释放归档文件

把归档个文件中合并打包的文件释放出来

tar -xvf 归档文件名.tar

3.压缩与解压

把多个文件进行打包然后进行压缩,把压缩的文件解压然后把打包的文件释放

1.使用gzip算法进行压缩与解压

压缩:-z 使用gzip算法

tar -czvf +压缩文件名.tar.gz 文件1 文件 2 文件3...

解压:

tar -xzvf 压缩文件名 .tar .gz

2.使用bzip2 算法进行压缩与解压

压缩: -j使用bzip2算法

tar -cvjf压缩文件名tar bz2 文件1 文件2 文件3...

解压:

tar -xvjf 压缩文件名.tar bz2

3.使用zip算法进行压缩解压

压缩:

zip 压缩文件名.zip 文件 1 文件2 文件3 ...

解压:

unzip 压缩文件名.zip

chmod :修改文件权限

执行修改权限需要文件的用户才能执行修改root为最高权限用户也可以修改文件权限

chmod 权限 文件

权限:

u +[r、w、x]在用户权限中添加权限

u-[r、w、x]在用户权限中删除权限

g+[r、w、x]在用户组权限中添加权限

g-[r、w、x]在用户组权限中删除权限

o+[r、w、x]在其他用户中添加权限

o-[r、w、x]在其他用户中删除权限

对于文件有三组权限:每一组权限可以用3个二进制位标志 每一位表示一种权限 :

第一位第二位第三位
rwx
1/01/01/0

权限可以用9位二进制表示:

第一组第二组第三组
用户用户组其他用户

chmod 权限值 文件-----设置文件权限

权限值:使用8进制表示(一位八进制就可以表示一组权限)

进制的表示:

二进制数:在数据前加上0b ;如:0b1010 ----二进制数1010

八进制数:在数据前加上0 ;如0470-------------八进制数470

十进制数:在数据前不加任何表示;如777---十进制777

十六进制数:在数据前加0x;如0x149---------十六进制149

在创建文件时,默认的文件权限为:

(-)普通文件:0664

(d)目录文件:0775

  • chown:改变文件拥有者

    • 要改变拥有者,必须是root管理员用户

    在执行命令时,在命令前加上sudo就表示执行这条命令时提升为root用户身份执行

    chmod 用户名 文件

  • chgrp:改变拥有组

    • 要改变拥有组,必须是root管理员用户

  • 用户管理

    • 修改用户名密码

      passwd 用户名

      但是在当前用户下只能修改当前用户的密码

      如果要修改其他用户名的密码,必须是管理员root身份

      sudo passwd 用户名

    • 切换用户

      su +用户名

      exit退出当前用户

    • 添加用户

      只能root管理员进行添加

      sudo adduser 新用户名

      创建用户不能提升root权限

      如果用户需要使用sudo 执行命令时临时提升为root身份,需要添加到sudoers中

      修改:/etc/sudoers

      在文件最后添加

      用户名 ALL=(ALL:ALL)ALL

    • 删除用户

      sudo userdel -r 用户名

  • 用户组管理

    • 查看用户对应的用户组

      groups用户名

    • 创建用户组

      sudo groupadd+用户组名

      查看配置文件/etc/group 列举出组的信息

    • 删除用户组

      sudo groupdel+用户组名

  • 输出重定向

    echo xxxx

    把xxxx新内容在终端上打印

    重定向符:

    >:输出到某个的内容指定输出到指定的某个位置(会先删除指定位置中的原内容)

    >>:已追加的方式输出到指定位置

  • linux通配符

    使用一些特使符号来代替文件名的字符

    通配符含义例子
    星号(*)匹配任意长度的字符串rm * 表示删除全部文件、rm *.txt 删除文件尾缀是.txt的文件
    问号(?)匹配一个长度的字符用file_?.txt就可以匹配file_1.txt 、file_a.txt等、当不能匹配file_ab.txt的文件
    方括号[...]匹配方括号指定的一个字符rm [1234].txt只能删除1.txt、2.txt、3.txt、4.txt、但不能删除12.txt、123.txt等。
    方括号[^]除了方括号指定的一个字符,其他均可匹配cp [^23].txt.可以匹配1.txt、14.txt、不能匹配2.txt、3.txt 含有2,3的txt文件
    方括号[-]匹配方括号指定的范围的一个字符rm[2-4].txt 能删除2.txt、3.txt、4.txt
  • 软件管理

    • 直接执行二进制程序,打开软件使用

    • 提供安装包,进行安装使用

      安装软件:

      软件存在依赖(需要一些其他的环境才能运行)

      软件包管理:软件以及依赖说明

      debian linux软件包管理机制-----软件后缀.deb

      red hat linux软件包管理机制----软件后缀.rpm

本地软件包管理:

dpkg:离线包管理

dpkg -i:软件包路径-----------安装软件

dpkg-r软件名-------------------卸载软件

在线软件包管理:

在系统中有一个软件源配置文件,文件中列出了从了哪里下载进行安装

etc/apt/sources.list----软件源配置文件

apt-get/apt:用于获取(下载)、安装、卸载、查询为一体的软件包管理工具,去检查安装的软件对应的依赖环境安装没有(没有依赖也会安装)

Ping +地址 查看网络是否连通

apt软件包管理:

apt update

获取软件源地址中有哪些软件的软件列表apt install 软件包名

下载软件并进行安装

apt --reinstall install 软件包名

重新安装

apt remove 软件名

卸载指定的软件(已安装)

apt clear

清除安装包

shell脚本(shell编程)

在shell中命令不是单独存在的,可能需要多条命令结合使用

将shell命令按照一定的逻辑顺序组织在一个文件中,组合成一系列完整的功能命令要求,执行这些文件,就把其中的命令按照定义的逻辑依次执行------这个shell文件就叫做shell脚本(写shell脚本就是shell编程)

shell文件是以.sh做为后缀名

执行shell脚本(文件):

  • 对shell文件添加执行权限,按照执行程序范式执行

chmod u+x xxxxx.sh

./xxx.sh

  • 使用对应的shell解析器来解析执行

  • bash xxxx.sh

shell 语法:在编写Shell脚本时各个Shell命令可以进行关联

1.变量定义

变量=值

2.引用变量

$变量

3.变量的输入

read 变量名1 变量名2 变量名3...

4.变量的输出

echo $变量名1 $变量名2 ...

如果输入的数据超过变量的个数,则最后一个变量存储之后所有数据

5.引号的作用

“ ”----------表示字符串:会解析引号中的变量

' '-----------表示字符串:不会解析引号中的变量

“-----------反引号,表示执行运算指令并得到结果

6.位置变量

$?:获取上一条命令的执行结果(或状态值),若上一条命令执行成功值$?=0,如果不成功为非零

$1,$2,$3...$9:第一个参数,第二个参数,第三个参数......第九个参数

7.条件判断

条件判断:test

字符串:

s1 = s2 -----判断相等

s1 != s2-----判断不相等

-z s1---------判断字符串长度是否为0

-n s1--------判断字符串长度是否不为0

整数:

a -gt b ------判断a是否大于b

a -ge b------判断as是否大于或等于b

a -lt b--------判断是否小于b

a -le b ------判断是否小于或等于b

a -eq b ------判断a是否等于b

a -ne b-------判断是否不等于b

文件测试:

-d filename------判断文件是否是一个目录

-e filename------判断文件是否存在

-f filename -----判断文件是否是普通文件

-L filename-------判断文件是否为符号链接文件

-s filename-------判断文件是否存在且长度不为0

-r filename -------判断文件是否可读

-w filename-------判断文件是否可写

-x filename -------判断文件是否可执行

-c filename--------判断文件是否为字符设备

逻辑运算:

-a :and 逻辑与 多个条件为真,结果为真

-o :or 逻辑或 只要有一个条件为真、结果为真

! :not逻辑非,得到的结果与条件相反

9.流程控制:

1.选择结构:

if[ 条件表达式 ]

then

命令表

fi


if [ 条件b表达式 ](注意左右两边空格)

then

命令表

else

命令表

fi


if [ 条件表达式1 ]

then

命令表

elif[ 条件表达式2 ]

then

命令表

elif[ 条件表达式3 ]

then

命令表

......

elif[ 条件表达式n ]

then

命令表

else

命令表

fi

2.循环结构

while [ 条件表达式 ] (注意空格)-------满足条件就执行循环,不满足就跳出循环

do

命令表

done

break

continue

expr:算术指令

’expr $1 算术运算符 $2‘

for 变量名 in 单词表 --------如果能够从单词表中取出一个值进行赋值,就循环执行一次

do

命令表

done

C语言for 循环格式

for((循环其实语句;循环条件语句;没出执行循环后的改变条件语句))

do

命令表

done

9.函数

函数定义:

函数名()

{

命令集合

}

founction 函数名()

{

命令集合

}

函数调用:执行函数功能

函数名

在函数中如果有参数,只需要在调用时传递参数就行,在定义时不用写

函数名 值1 值2 值3 ...

在函数的定义中,函数会自动使用位置变量($1,$2,$3(不写形参,自动获取))来接收传递的值

函数返回值:

在函数体中,使用echo输出要返回的那内容

在电泳时,如果没有用变量来进行存储赋值,则打印结果,但是如果使用变量进行存储赋值(调用函数时使用``来获取函数的执行结果)则不会打印,叫做返回值存储到变量

如:a=add 1 2

C语言从入门到入土_君民的博客-CSDN博客icon-default.png?t=M85Bhttps://blog.csdn.net/dajk__sd/article/details/128053032?spm=1001.2014.3001.5501

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

君民

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值