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 30echo "$(cal)"September 2017
Su Mo Tu We Th Fr Sa1  23  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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s 处理namespace删除一直处于Terminating —— 筑梦之路

问题现象 k8s集群要清理某个名空间,把该名空间下的资源全部删除后,删除名空间,一直处于Terminating状态,无法完全清理掉。 如何处理 为什么要记录下这个处理的步骤,经过查询资料,网上也有各种各样的方法&…

Spring Boot应用开发:从入门到精通

Spring Boot应用开发:从入门到精通 Spring Boot是Spring框架的一个子项目,旨在简化Spring应用的初始搭建和开发过程。通过自动配置和约定大于配置的原则,Spring Boot使开发者能够快速构建独立的、生产级别的Spring应用。本文将深入探讨Sprin…

CSS实现文字渐变效果

效果图: 代码: h1 {font-size: 100px;color:linear-gradient(gold,deeppink);background-image:linear-gradient( -gold, deeppink); /*春意盎然*///背景被裁剪成文字的前景色。background-clip:text;/*兼容内核版本较低的浏览器*/-webkit-background-c…

ai外呼机器人的作用有哪些?

ai外呼机器人具有极高的工作效率。日拨打成千上万通不是问题,同时,机器人还可以快速筛选潜在客户,将更多精力集中在有价值的客户身上,进一步提升营销效果。183-3601-7550 ai外呼机器人的作用: 1、搭建系统&#xff0c…

【LeetCode】【算法】236. 二叉树最近公共祖先

LeetCode 236. 二叉树最近公共祖先 题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 思路 思路:后序遍历(左右中),如果在左/右侧树上找到了该节点则返回对应节点,其公共节点就为中,否…

大厂面试真题-说说redis的分片方式

Redis的分片机制是其实现数据分布式存储和处理的关键,它允许将数据拆分存放在不同的Redis实例上,每个Redis实例只包含所有键的子集,从而提高了系统的性能和可扩展性。以下是Redis常用的分片方式: 一、按照范围分片 这种方式相对…

DOM操作和事件监听综合练习——轮播图

下面制作一个如下图所示的轮播图&#xff08;按Enter键可以控制轮播的开启和关闭&#xff0c;或者点击按钮“第几张”即可跳转到第几张&#xff09;&#xff1a; 下面是其HTML和CSS代码&#xff08;还没有设置轮播&#xff09;&#xff1a; <!DOCTYPE html> <html …

[全网最细数据结构完整版]第七篇:3分钟带你吃透队列

目录 1->队列的概念及结构 2->队列的实现 2.1定义队列基本结构 struct QueueNode 和 struct Queue 2.2队列初始化函数 QueueInit 函数 2.3队列销毁函数 QueueDestroy 函数 2.4队列插入数据函数 QueuePush 函数 2.5判断队列是否为空,空返回true,非空返回false 2.6队列删…

力扣动态规划基础版(矩阵型)

62.不同路径&#xff08;唯一路径问题&#xff09; 62. 不同路径https://leetcode.cn/problems/unique-paths/ 方法一&#xff1a;动态规划 找状态转移方程&#xff0c;也就是说它从左上角走到右下角&#xff0c;只能往右或者往下走&#xff0c;那么设置一个位置为&#xff…

Hive 实现查询用户连续三天登录记录

标题&#xff1a;Hive 实现查询用户连续三天登录记录 在数据分析和处理中&#xff0c;经常会遇到需要查询特定条件数据的情况。本文将介绍如何使用 Hive 来查询用户连续三天登录的所有数据记录。 一、问题背景 我们有一个用户登录记录表&#xff0c;其中包含用户的登录日期信…

算法(第一周)

一周周五&#xff0c;总结一下本周的算法学习&#xff0c;从本周开始重新学习许久未见的算法&#xff0c;当然不同于大一时使用的 C 语言以及做过的简单题&#xff0c;现在是每天一题 C 和 JavaScript&#xff08;还在学&#xff0c;目前只写了一题&#xff09; 题单是代码随想…

08 反射与注解

目录 1.Java类加载机制 类加载器 双亲委派模型 工作流程 优点 2.反射 基本概念 常见用法 1. 获取 Class 对象 2.获取构造方法 3.获取成员方法 4.获取成员变量 3.注解 注解的基本概念 定义和使用注解 定义注解 使用注解 解释 元注解详解 常见内置注解 总结…

【Linux第八课-进程间通信】管道、共享内存、消息队列、信号量、信号、可重入函数、volatile

目录 进程间通信为什么&#xff1f;是什么&#xff1f;怎么办&#xff1f;一般规律具体做法 匿名管道原理代码 命名管道原理代码 system V共享内存消息队列信号量信号量的接口 信号概念为什么&#xff1f;怎么办&#xff1f;准备信号的产生信号的保存概念三张表匹配的操作和系统…

Android 应用插件化及其进程关系梳理

插件应用的AndroidManifest.xml <manifest xmlns:android"http://schemas.android.com/apk/res/android"coreApp"true"package"com.demo.phone"android:sharedUserId"android.uid.phone"><uses-sdk android:minSdkVersion&q…

C# 集合与泛型

文章目录 前言1.什么是集合&#xff1f;2.非泛型集合&#xff08;了解即可&#xff09;2.1常见的非泛型集合 3.泛型的概念4.常用的泛型集合4.1 List < T > <T> <T>4.2 Dictionary<TKey, TValue>4.3 Queue < T > <T> <T>4.4 S t a c…

sql单表查询练习题

1. 查看course表结构的SQL命令是什么&#xff1f; A. SELECT * FROM exam.course; B. \d exam.course; C. \d exam.course; D. DESCRIBE exam.course; 答案&#xff1a;C 2. 使用哪个SQL命令可以查看exam.course表中的所有数据&#xff1f; A. SELECT * FROM e…

京东商品详情API接口获取(jd.item_get)和展示

获取京东商品详情 API 接口主要有以下步骤&#xff1a; 一、注册成为开发者&#xff1a; 注册账号获取key和secret&#xff0c;这是获取 API 访问权限的基础。在京东开放平台中创建一个应用&#xff0c;并填写相关信息&#xff0c;如应用程序名称、应用描述等。 二、申请 API…

数据分析-41-时间序列预测之机器学习方法XGBoost

文章目录 1 时间序列1.1 时间序列特点1.1.1 原始信号1.1.2 趋势1.1.3 季节性和周期性1.1.4 噪声1.2 时间序列预测方法1.2.1 统计方法1.2.2 机器学习方法1.2.3 深度学习方法2 XGBoost2.1 模拟数据2.2 生成滞后特征2.3 切分训练集和测试集2.4 封装专用格式2.5 模型训练和预测3 参…

【LeetCode】【算法】209. 课程表

LeetCode 209. 课程表 题目描述 你这个学期必须选修numCourses门课程&#xff0c;记为0到numCourses- 1 。 在选修某些课程之前需要一些先修课程。先修课程按数组prerequisites给出&#xff0c;其中 prerequisites[i] [a_i,b_i] &#xff0c;表示如果要学习课程a_i则必须先学…

基于大语言模型的规划

文章目录 整体框架方案生成反馈获取虽然上下文学习和思维链提示方法形式上较为简洁且较为通用,但是在面对诸如几何数学求解、游戏、代码编程以及日常生活任务等复杂任务时仍然表现不佳。为了解决这类复杂任务,可以使用基于大语言模型的规划(Planning)。该方法的核心思想在于…