C语言——shell

server/2025/2/27 3:42:39/

目录

一、什么是shell

1.什么是shell

2.shell的功能

3.语言分类

二、创建shell脚本

1.shell脚本:使用文件***.sh

2.补全脚本文件

3.使用shell

三、认识解析器

1.查看解析器

2.认识相关解析器

3.运行一个脚本文件

四、环境变量

  4.1 查看环境变量

  4.2 如何修改PATH路径

    4.2.1 只对当前终端有效

    4.2.2 对当前用户有效~/.bashrc

    4.2.3 对所有用户有效

    4.2.4 对所有用户有效

五、shell的变量

  5.1 shell变量的格式

  5.2 shell变量的初始化

  5.3 引用shell的变量的值

  5.4 位置变量

 

六、输出

  6.1 echo


一、什么是shell

1.什么是shell

                shell: 贝壳,本质是指针的集合,但是在使用时需要满足一定的逻辑

2.shell的功能

                shell是用于用户和操作系统的交互核心接口

3.语言分类

                c:属于编译型语言,需要使用gcc进行编译,当文件不改变时,不需要重新编译,直接连接即可,执行速度快

                shell:属于解释性语言,使用解析器bash,无论文件是否改变,每次都需要重新解析,相对来说效率低

二、创建shell脚本

1.shell脚本:使用文件***.sh

                vim ***.sh

2.补全脚本文件

                #! 后面敲一个tab键

                #!/bin/bash ---->表示使用的时bash解析器

                #! ---->表示这是一个脚本文件

                /bin/bash --->表示使用的解析器的路径

3.使用shell

bash">1.单行注释#    ---》单行注释
2.shell不存在多行注释,但是可以使用指令模拟多行注释,注意在使用过程中有可能出现报错<<CONMENDCOMMENDCOMMEND:类似标识符

三、认识解析器

1.查看解析器

1.echo $SHELL -->打印SHELL变量的值

2.cat /etc/shells

2.认识相关解析器

bash: 在Linux\debian默认使用的就是 bash

sh :最早期的解析器,交互性差

dash:是轻量级的sh,类似sh

csh:类似C语言

ksh:兼容sh csh

3.运行一个脚本文件

bash">1.执行脚本文件bash ****.sh        默认在当前终端下的子终端运行,把运行结果返回到当前终端
2.执行脚本文件,具备可执行权限chmod 777 ***.sh      默认在当前终端下的子终端运行,把运行结果返回到当前终端./***.sh    
3.执行脚本文件source ***.sh  直接在当前终端运行

四、环境变量

  4.1 查看环境变量

env

环境变量:系统已经定义的变量,并表示一定的含义

bash">SHELL=/bin/bash
LOGNAME=ubuntu
HOME=/home/ubuntu
USERNAME=ubuntu
USER=ubuntu
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/

如果文件类似指令执行,那么就需要把文件的路径添加到PATH环境变量里面

  4.2 如何修改PATH路径

    4.2.1 只对当前终端有效

bash">1.修改PATH里面的值,export PATH=$PATH:/home/ubuntu/24121C高级/day2/|        |    |           ||        |    |     需要添加的文件路径|        |  展开PATH的值|     环境变量的路径类似extern,导出环境变量注意可以使用echo $PATH查看PATH里面的内容
2.给文件添加可执行权限chmod 777 ***.sh
3.执行使用文件名执行脚本即可****.sh

    4.2.2 对当前用户有效~/.bashrc

bash">1.打开vim ~/.bashrc文件,在最后添加以下语句export PATH=$PATH:/home/ubuntu/24121C高级/day2/|        |    |           ||        |    |     需要添加的文件路径|        |  展开PATH的值|     环境变量的路径类似extern,导出环境变量
2.使文件生效source ~/.bashrc   或者 重启
3.给文件添加可执行权限chmod 777 ***.sh
4.执行使用文件名执行脚本即可****.sh

    4.2.3 对所有用户有效

bash">1.打开sudo vim /etc/bash.bashrc文件,在最后添加以下语句export PATH=$PATH:/home/ubuntu/24121C高级/day2/|        |    |           ||        |    |     需要添加的文件路径|        |  展开PATH的值|     环境变量的路径类似extern,导出环境变量
2.使文件生效source /etc/bash.bashrc   或者 重启
3.给文件添加可执行权限chmod 777 ***.sh
4.执行使用文件名执行脚本即可****.sh

    4.2.4 对所有用户有效

bash">1.打开sudo vim /etc/environment文件,在最后添加路径
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ubuntu/24121C高级/day2/"2.使文件生效source /etc/environment   或者 重启
3.给文件添加可执行权限chmod 777 ***.sh
4.执行使用文件名执行脚本即可****.sh

五、shell的变量

  5.1 shell变量的格式

        1,shell的不变量不存在类型,默认都是字符串

        2.shell的变量默认都是全局变量

bash">1.shell变量的格式变量       error,因为shell认为是指令类似ls变量=        定义了变量值为空变量=初始化的值
2.例如a            errora=            √a=hello       √

  5.2 shell变量的初始化

        1.shell初始化时等号的左右两端不允许存在空格

        2.shell中不需要加分号

        a = hello ---> ls -l -h 1.sh

bash">1.格式变量=初始化的值变量='初始化的值'变量="初始化的值"
2.当初始化的值不存在空格时var=hellovar='hello'var="hello"
3.当初始化的值存在空格var=hello world    errorvar='hello world'  √var="hello world"
4.当一个变量给另一个变量赋值的时候a=hellob=$a        --->b=hellob='$a'      --->b=$ab="$a"      ---b=helloc=$aworld   -->认为aworld是一个变量,得不到helloworldc=${a}world -->c=helloworld    
5.变量的连接a=hellob=worldc=$a$b        -->c=helloworldc='$a$b'      --->c=$a$bc="$a$b"      --->c=helloworld练习:定义a赋值 b赋值,实现ab的交换

  5.3 引用shell的变量的值

bash">方式1:$变量名     ---》echo $SHELL
方式2:${变量}

  5.4 位置变量

        1.位置变量类似C语言的argc argv

        2.位置变量多用于shell中的函数传参

bash">$0    终端输入的文件名
$1    终端输入的第一个字符串
$2    终端输入的第二个字符串
$3    终端输入的第三个字符串
...
$10   终端输入的第一个字符串后面加0
${10} 终端输入的第10个字符串
$n    终端输入的第n个字符串

六、输出

  6.1 echo

        注意:在shell中使用变量时不建议使用'',原因时因为单引号引起来以后不会展开结果

bash">echo 字符串        ---》echo hello
echo '字符串'       ---->echo 'hello'
echo "字符串"      ---->echo "hello"输出变量:a=1b=2c=3echo a=$a    --->a=1echo a=$a b=$b c=$c -->a=1 b=2 c=3echo 'a=$a b=$b c=$c' -->a=$a b=$b c=$cecho "a=$a b=$b c=$c" -->a=1 b=2 c=$3


http://www.ppmy.cn/server/170926.html

相关文章

GitHub 入门指南(2025最新版)

大家好&#xff0c;今日分享“GitHub 入门指南&#xff08;2025最新版&#xff09;” 一、账号与基础环境搭建 1. 注册账号 注册页面&#xff0c;如下所示&#xff1a; 访问https://github.com/&#xff0c;点击"Sign up"填写用户名、邮箱、密码完成注册&#xff…

cline通过硅基流动平台接入DeepSeek-R1模型接入指南

为帮助您更高效、安全地通过硅基流动平台接入DeepSeek-R1模型&#xff0c;以下为优化后的接入方案&#xff1a; DeepSeek-R1硅基流动平台接入指南 &#x1f4cc; 核心优势 成本低廉&#xff1a;注册即送2000万Tokens&#xff08;价值约14元&#xff09;高可用性&#xff1a;规…

Win11更新系统c盘爆满处理

1.打开磁盘管理 2.右击c盘选择属性&#xff0c;进行磁盘管理&#xff0c;选择详细信息。 3.选择以前安装的文件删除即可释放c盘空间。

Pytorch实现之混合成员GAN训练自己的数据集

简介 简介:提出一种新的MMGAN架构,使用常见生成器分布的混合对每个数据分布进行建模。由于生成器在多个真实数据分布之间共享,高度共享的生成器(通过混合权重反映)捕获分布的公共方面,而非共享的生成器捕获独特方面。 论文题目:MIXED MEMBERSHIP GENERATIVE ADVERSARI…

MCU Bootloader具备什么条件才能跳转到APP程序

在MCU系统中&#xff0c;BootLoader&#xff08;Boot&#xff09;跳转到应用程序&#xff08;APP&#xff09;的条件通常由硬件和软件协同控制&#xff0c;核心逻辑是确保APP的完整性和合法性。以下是关键条件及流程&#xff1a; 1. 硬件启动模式选择 BOOT引脚电平&#xff1a…

计算机网络复习

目录 1. 前言 2.五层模型 1.应用层 2 传输层 3.网络层 4. 数据链路层 ​编辑5. 物理层 3.UDP/TCP协议 UDP协议 TCP协议 4. HTTP/HTTPS协议 1. 前言 博主目前大四, 备战春招, 复习一下计网, 大家也可以看看我的文章. 共同学习, 如有不足之处欢迎指正. 2.五层模型 在计…

Android 常用命令和工具解析之存储相关

1 基本概念 2 命令解读 2.1 adb shell df df 命令主要用于需要检查文件系统上已使用和可用的磁盘空间的数量。如果没有指定文件名&#xff0c;则显示在当前所有挂载的文件系统上可用的空间。其原理是从proc/mounts 或 /etc/mtab 中检索磁盘信息。 注意&#xff1a;df命令并…

网络基础知识-2

N个节点完全互联的网型网即N个节点的无向完全图&#xff0c;无向完全图的边数计算如下&#xff1a;每个节点都要指向其他N-1个节点&#xff0c;但是因为无向两个节点之间的边会重复&#xff0c;因此有N(N-1)/2条边HDLC&#xff08;高级数据链路控制协议&#xff09;是一种面向比…