Linux的Shell脚本1

shell启动流程

脚本启动时的home配置文件Linux是:

登录 shell 会话的启动文件

文件 内容
/etc/profile 应用于所有用户的全局配置脚本。

~/.bash_profile 用户私人的启动文件。可以用来扩展或重写全局配置脚本中的设置。

~/.bash_login 如果文件 ~/.bash_profile 没有找到,bash 会尝试读取这个脚本。

~/.profile 如果文件 ~/.bash_profile 或文件

~/.bash_login 都没有找到,bash 会试图读取这个文件。 这是基于 Debian 发行版的默认设置,比方说 Ubuntu。

非登录 shell 会话的启动文件

文件 内容
/etc/bash.bashrc 应用于所有用户的全局配置文件。
~/.bashrc 用户私有的启动文件。可以用来扩展或重写全局配置脚本中的设置。

Echo

echo含义:就是获取输入流并输出输出流。

要记得字符表达模式是最常见的,并且是最好用的,最容易的(但是相对而言也是最难掌握的)
例如 echo .[!..]* 意思就是说让隐藏文件,并且是开头是一个点的那种要被打印出来。

echo实现算术计算:

echo只支持整数的计算

  • 格式echo $((x + y))
  • +
  • -
  • *
  • /
  • % 余数
  • **
echo $(((3 ** 2)*12)
# 可以看出来空格并不是很重要关于shell

但是建议不要加空格,因为shell中空格很容易报错。

alias th = 'node'
# 报错,因为你在th和=中间加了空格这是不对的。

echo进行混合输出

echo 这个东西是 $((12 + 12))

花括号{}

echo 这是{1..12}月。

这是1月 这是2月 这是3月 这是4月 这是5月 这是6月 这是7月 这是8月 这是9月 这是10月 这是11月 这是12月

echo 大叫好我是{托马斯,舒克,贝塔}
# 大家好我是托马斯 大家好我是舒克 大家好我是贝塔

  • 对比[1,2,3]:或者是1,或者是2或者是3

  • {1,2,3}将123全部利用上并不是随机关系。

  • echo a{A{1,2},B{3,4}}b ## aA1b aA2b aB3b aB4b 没错还可以进行嵌套。

小测试

创立从2010到2017年每月每天的文件夹。你们知道怎么用吗?

简述$

接下来的篇章会着重讲述这个$

举例子:

ls -l $(which cp)

## 也就是说 $充当了输入流,将which cp的内容传递给了ls,作为了ls的参数。

讨论 |$

  • | 也可以让前者的输出流作为流给后者但是无法让后者的东西给前者
  • 但是使用$ 就可以很好的避免了这个问题,因为$()就相当于函数的返回值一样,它在哪里都可以。
  • 说真的$的方式是要比流灵活的,但是流这种方式更加简洁更加行云流水只不过需要一些特定的规矩罢了。

""

我们讨论一下双引号
很多功能用法只能单纯的输出了,但是
单词分割,路径名展开, 波浪线展开,和花括号展开都将失效,然而参数展开($USER),算术展开(echo $((1 + 2))),和命令替换(echo $(cal)) 仍然执行

echo “ ( ( 1 + 3 ) ) " e c h o " ((1 + 3))"echo " ((1+3))"echo"((1 + 3))”

其实这个参数展开就是使用 把系统自己设置的变量所表达的意思表达出来,就比如 U S E R 如果没有 把系统自己设置的变量所表达的意思表达出来,就比如USER如果没有 把系统自己设置的变量所表达的意思表达出来,就比如USER如果没有它就是一句话罢了,但是现在有了$所以它就不是一句话了是一个变量了。

如果你遇见 hello world.text文件你是不是很伤脑筋呢?因为当你echo hello world.text时系统会识别成两个文件 hello 和 world.text 所以说当我们使用双引号的时候就没有这个问题了。会忽略单词分割机制

mkdir "dd dd d"
#如果没有双引号就不会忽略单词分割机制就会创立三个文件夹
mkdir dd dd d

但是说实话,我还是觉得使用标准命名法可以省很多事情。切勿玩火装13呀骚年~!

单词分割机制 : 在单词中寻找空格,制表符,和换行符,并把它们看作 单词之间的界定符。这意味着无引用的空格,制表符和换行符都不是文本的一部分, 它们只作为分隔符使用

echo 1 \
> dd
1 dd
这里很明显 \ 就是把末尾的换行符给注释掉了所以这个话就可以换行写。
echo $(cal)
September 2017 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

echo "$(cal)"
   September 2017
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

为什么会有这么大的差别,因为当$把cal的数据输出流给echo的输入流时,没有"“所以说它的参数或者是输入流就不是一个了,就是很多个了,因为没有”"的情况下 空格就不是空格的意思了 是表示分隔符的含义了,然而第二个就不同,这些数据并没有字母分割原理,因为系统识别他们就是一个参数这之间只是单纯的空格和换行罢了,所以就是一个整体的大的输出流被传递给了echo的输入流。

单引号’’

单引号是最厉害的,什么效果都没了

echo '$USER'

$USER

所以在实际中要灵活运用"" ‘’ 和裸奔。

\

两个含义:

  • 转义(例如$ 这种在shell中表达特殊用法的词语)
  • 特殊用途

就如同上文中的\就是注释了末尾的换行符号,比如\\就是让无法输出的特殊符号顺利输出。

特殊用途的话:

  • \a 响铃(”警告”-导致计算机嘟嘟响)
  • \b 退格符
  • \n 新的一行。在类 Unix 系统中,产生换行。
  • \r 回车符
  • \t 制表符

等等。
如果让这个转移符号其效果有两个方式

  • echo -e
  • echo something $‘\a’

资料参考:https://github.com/0voice

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/911376.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python-利用os,tkinter库编写一个伪恶意程序文件(Pro版)

前言:上一期我们简单学习了如何编写一个多次弹窗警告用户的exe伪恶意文件。我们知道了把Python初始文件编译为exe文件后,程序在没有Python环境的情况下也能正常运行。我们上次编写的程序仅仅只是伪造系统正在执行关机命令前的倒计时的假象,实…

大语言模型训练的全过程:预训练、微调、RLHF

一、 大语言模型的训练过程 预训练阶段:PT(Pre training)。使用公开数据经过预训练得到预训练模型,预训练模型具备语言的初步理解;训练周期比较长;微调阶段1:SFT(指令微调/有监督微调…

字节青训-小S的倒排索引

问题描述 小S正在帮助她的朋友们建立一个搜索引擎。为了让用户能够更快地找到他们感兴趣的帖子,小S决定使用倒排索引。倒排索引的工作原理是:每个单词都会关联一个帖子ID的列表,这些帖子包含该单词,且ID按从小到大的顺序排列。 例…

你需要了解的正则表达式相关知识

正则表达式(Regular Expression,简称 regex 或 regexp)是一种用于匹配字符串的模式。它广泛应用于文本查找、替换、验证等场景,尤其是在数据处理、网络爬虫、编程等领域非常有用。下面将详细介绍正则表达式的基本语法、常用元字符…

掌握分布式系统的38个核心概念

天天说分布式分布式,那么我们是否知道什么是分布式,分布式会遇到什么问题,有哪些理论支撑,有哪些经典的应对方案,业界是如何设计并保证分布式系统的高可用呢? 1. 架构设计 这一节将从一些经典的开源系统架…

【C++进阶】智能指针的使用和原理(2)

5. shared_ptr和weak_ptr 5.1 shared_ptr循环引用问题 shared_ptr大多数情况下管理资源⾮常合适,⽀持RAII,也⽀持拷贝。但是在循环引⽤的场景下会导致资源没得到释放内存泄漏,所以我们要认识循环引用的场景和资源没释放的原因,并…

【Uniapp】Uniapp Android原生插件开发指北

前言 在uniapp开发中当HBuilderX中提供的能力无法满足App功能需求,需要通过使用Andorid/iOS原生开发实现时,或者是第三方公司提供的是Android的库,这时候可使用App离线SDK开发原生插件来扩展原生能力。 插件类型有两种,Module模…

linux进程的状态之环境变量

我们在前面了解了进程的状态及相关概念 接下来我们接着上一篇进程的状态接着了解环境变量 进程的状态 文章目录 目录 文章目录 前言 二、环境变量 1、常见环境变量 2、查看环境变量 3、修改PATH 4、HOME 5、PATH ​编辑 6、和环境变量相关的命令 三、环境变量的组织…

揭秘集装箱箱号自动识别原理,箱号识别算法

集装箱箱号自动识别算法是一种高效且实用的软件工具。它利用相机、手机或其他摄像头捕获集装箱箱号图像,并通过深度学习的OCR(光学字符识别)识别技术对集装箱号码进行准确识别。要想进行集装箱箱号识别,需要以下几个基本步骤&…

AndroidLab:一个系统化的Android代理框架,包含操作环境和可复现的基准测试,支持大型语言模型和多模态模型。

2024-10-31,由清华大学和北京大学共同创建的AndroidLab数据集,为安卓自主代理的训练和评估提供了一个包含操作环境、行动空间和可复现基准的系统框架,这对于推动安卓代理技术的发展具有重要意义。 数据集地址:Android Instruct|A…

使用axois自定义基础路径,自动拼接前端服务器地址怎么办

请求路径: http://localhost:5173/http://pcapi-xiaotuxian-front-devtest.itheima.net/home/category/head 很明显多拼接了路径地址 查看基础路径文件发现: //axios基础封装 import axios from axiosconst httpInstance axios.create({baseURL: /h…

Densenet模型花卉图像分类

项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

【Mysql NDB Cluster 集群(CentOS 7)安装笔记一】

Mysql NDB Cluster 集群(CentOS 7)安装笔记 NDB集群核心概念 NDBCLUSTER(也称为NDB)是一个内存存储引擎,提供高可用性和数据保存功能。 NDBCLUSTER存储引擎可以配置一系列故障转移和负载平衡选项,但从集群级别的存储引擎开始是最容易的。NDB集群的NDB存储引擎包含一整套…

Pattern program MPAT 详解

本文为VIP文章,主要介绍Pattern中元素与格式、常用指令、地址&数据产生指令等。 目录 一、pattern概述 二:Pattern构成元素 1、pattern构成元素:MPAT、END 2、pattern构成元素:pattern file name 3、pattern构成元素:SDEF 4、Pattern构成元素:REGISETR 5、Pa…

【通义灵码】AI编码新时代

目录 一.初识灵码,开启新篇 安装 登录 二.灵码相伴,探索新境 实时续写 自然生成 单元测试生成 解释代码 优化建议 快捷键 三.智慧流转,高效开发 驱动移植 LVGL框架 项目总结 四.融合创新,携手同行 一.初识灵码&#…

RabbitMQ客户端应用开发实战

这一章节我们将快速完成RabbitMQ客户端基础功能的开发实战。 一、回顾RabbitMQ基础概念 这个RabbitMQ的核心组件,是进行应用开发的基础。 二、RabbitMQ基础编程模型 RabbitMQ提供了很多种主流编程语言的客户端支持。这里我们只分析Java语言的客户端。 上一章节提…

PySide6百炼成真(2)

文章目录 1.简单的登录页面2.简单的计算器 本篇根据前面所学做两个小demo 制作一个简单的登录页面制作一个计算器 因为还没有学习布局流等,所以就只能拖拉到设计师中. 1.简单的登录页面 下面就到计算器了,在图形界面中计算器就跟我们编程语言的hello,world一样,所以一定要自己…

群控系统服务端开发模式-应用开发-上传工厂开发

现在的文件、图片等上传基本都在使用oss存储。而现在常用的oss存储有阿里云、腾讯云、七牛云、华为云等,但是用的最多的还是前三种。而我主要封装的是本地存储、阿里云存储、腾讯云存储、七牛云存储。废话不多说,直接上传设计图及说明,就一目…

服务器被病毒入侵如何彻底清除?

当服务器遭遇病毒入侵时,彻底清除病毒是确保系统安全和数据完整性的关键步骤。这一过程不仅需要技术上的精准操作,还需要严密的计划、合理的资源调配以及后续的防范措施。以下是一篇关于如何在服务器被病毒入侵时彻底清除病毒的详细指南。 一、初步响应与…

修改 title标题图标

路径 \web\views\webclient_templates.xml \web\static\src\webclient\webclient.js 再升级web模块