shell学习1

news2024/11/26 9:06:51

目录

一、echo

1.1 echo 

 1.2  打印彩色文本

1.3 打印彩色背景

二、printf

三、变量和环境变量

3.1 查看某个进程的环境变量

 3.2给变量赋值。var=value

3.3 给环境变量赋值

3.4 获取变量的长度

3.5 识别当前所使用的shell

3.6 检查是否为超级用户

四、数学运算

4.1 let 相加运算

4.2  [] 相加运算

4.3  (())相加运算

4.4 expr 相加运算

4.5 bc工具

五、文件描述符和重定向

六、数组和关联数组

七、使用别名

八、获取终端信息

九、日期和延时

 十、函数

十一、测试


 一、echo

1.1 echo 

echo "welcome to chongqing"
echo 'welcome to chongqing'
echo welcome to chongqing
echo -e "1\t2\t3"  # 可以翻译转义字符
echo -n "1\t2\t3"  # -n 来忽略结尾的换行符

 1.2  打印彩色文本

echo -e "\e[1;31m This is red text \e[0m"
echo -e "\e[1;32m This is 绿色 text \e[0m"

\e[1;31 将颜色设为红色, \e[0m 将颜色重新置回。只需要将 31 替换成想要的颜色码就可以了

 每种颜色都有对应的颜色码。比如:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝
色=34,洋红=35,青色=36,白色=37。

1.3 打印彩色背景

echo -e "\e[1;42m Green Background \e[0m"
echo -e "\e[1;41m red Background \e[0m"

  

要设置彩色背景,经常使用的颜色码是:重置=0,黑色=40,红色=41,绿色=42,黄色=43,
蓝色=44,洋红=45,青色=46,白色=47。 


二、printf

[root@localhost ~]# printf "%-5s %-10s %-4.2f\n" 1 Sarath 80.3456


三、变量和环境变量

3.1 查看某个进程的环境变量

cat /proc/2765/environ

cat /proc/2765/environ | tr '\0' '\n' # 实现每一行显示一组,tr 命令将 \0 替换成 \n

 3.2给变量赋值。var=value

name=xm
echo $name
name=xx
echo $name
echo ${name}

如果 value 不包含任何空白字符(例如空格),那么它就不需要使用引号进行引用,否则必须使用单引号或双引号。
注意, var = value 不同于 var=value 。把 var=value 写成 var = value 是一个常见的错误,
但var=value是赋值操作,var = value则是相等操作。

3.3 给环境变量赋值

export PATH="$PATH:/home/user/bin"
echo $PATH

export 命令用来设置环境变量。 PATH 通常定义在/etc/environment或/etc/profile或~/.bashrc
中。还有一些众所周知的环境变量: HOME 、 PWD 、 USER 、 UID 、 SHELL 等

3.4 获取变量的长度

echo ${#name}

3.5 识别当前所使用的shell

echo $SHELL
echo $0

3.6 检查是否为超级用户

echo $UID

 root用户的 UID 是0


四、数学运算

4.1 let 相加运算

no1=4
no2=5
let result=no1+no2
echo $result

# 无let时候
result1=no1+no2
echo $result1
let result1=no1+no2
echo $result1


4.2  [] 相加运算

result2=$[ no1 + no2 ]

 

4.3  (())相加运算

result3=$(( no1 + 1))

4.4 expr 相加运算

注意:有空格 

以上这些方法只能用于整数运算,而不支持浮点数

4.5 bc工具

bc 是一个用于数学运算的高级工具,这个精密计算器包含了大量的选项。我们可以
借助它执行浮点数运算并应用一些高级函数:

设置精度:

 参数 scale=2 将小数位个数设置为2。因此,bc 将会输出包含两个小数位的数值。

转换进制:

计算平方根和平方:


五、文件描述符和重定向

把错误放到文件中

 2是标准错误。

0 —— stdin (标准输入)。

1 —— stdout (标准输出)。
2 —— stderr (标准错误)。

>  会覆盖

>> 追加


六、数组和关联数组

数组:普通数组只能使用整数作为数组索引

关联数组:

在关联数组中,我们可以用任意的文本作为数组索引


七、使用别名

设置 别名:

alias rm='rm -i' 

alias 命令的作用只是暂时的。一旦关闭当前终端,所有设置过的别名就失效了。为了使别名设置一直保持作用,可以将它放入 ~/.bashrc 文件中。因为每当一个新的shell进程生成时,都会执行 ~/.bashrc 中的命令。

如果需要删除别名,只用将其对应的语句(如果有的话)从 ~/.bashrc 中删除,或者使用 unalias 命令。或者使用 alias example= ,这会取消名为 example的别名。


八、获取终端信息

 获取终端的行数和列数:
tput cols
tput lines
 打印出当前终端名:
tput longname
 将光标移动到坐标(100,100)处:
tput cup 100 100 


九、日期和延时

date # 读取日期

date +%s # 打印纪元时

date --date "Thu Nov 18 08:07:21 IST 2010" +%s #将日期串转换成纪元

date --date "Feb 12 2023" +%A  #获知给定的日期是星期几

date "+%d %B %Y" # 按照你的选择打印出对应格式的日期

纪元时被定义为从世界标准时间1970年1月1日0时0分0秒起至当前时刻的总秒数,不包括闰秒 。当计算两个日期或两段时间的差值时,纪元时很有用处。你可以得出两个特定时间戳的纪元时间,并计算出两者之间的差值,由此就能知道两个日期之间相隔了多少秒。 

 


 十、函数


十一、测试

文件系统测试:

 

 

字符串比较:

 

 

 中括号可以用test代替:

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

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

相关文章

PHP新特性集合

php8新特性命名参数function foo(string $a, string $b, ?string $c null, ?string $d null) { /* … */ }你可以通过下面的方式传入参数进行调用foo(b: value b, a: value a, d: value d, );联合类型php7class Number {/** var int|float */private $number;/*** param f…

Vue|事件处理

事件处理1. 事件使用1.1 事件绑定1.2 事件参数2. 事件修饰符2.1 阻止默认事件2.2 阻止事件冒泡2.3 事件只允许触发一次2.4 事件捕获2.5 操作当前元素2.6 行为立即执行无需等待回调3. 键盘事件4. 本章小结4.1 事件使用小结4.2 事件修饰符小结4.3 键盘事件小结1. 事件使用 1.1 事…

C++STL剖析(八)—— unordered_set和unordered_multiset的概念和使用

文章目录前言1. unordered_set的介绍和使用🍑 unordered_set的构造🍑 unordered_set的使用🍅 insert🍅 find🍅 erase🍅 size🍅 empty🍅 clear🍅 swap🍅 count…

安全多方计算系列笔记1——前世今生

这一系列笔记参考了绿盟科技研究通讯的安全多方计算文章,及其他。 首先看定义:在不泄露参与方原始输入数据的前提下,允许分布式参与方合作计算任意函数,输出准确的计算结果。 起源 安全多方计算问题及解首先由姚期智&#xff08…

用大白话给你科普,到底什么是 API(应用程序编程接口)?

何为API?如果你在百度百科上搜索,你会得到如下结果:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组…

Linux 安装Python3

python3 下载地址 python3 下载地址 https://www.python.org/downloads/ 选择自己需要的版本、 此文中选择3.10.9 下载源码压缩包 可下载到本地后上传至Linux服务器也可以复制下载地址 wget https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tgzpython3 安装 yum…

python练习——简化路径

项目场景: 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 /开头),请你将其转化为更加简洁的规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本…

新库上线 | CnOpenData中国地方政府债券信息数据

中国地方政府债券信息数据 一、数据简介 地方政府债券 指某一国家中有财政收入的地方政府地方公共机构发行的债券。地方政府债券一般用于交通、通讯、住宅、教育、医院和污水处理系统等地方性公共设施的建设。地方政府债券一般也是以当地政府的税收能力作为还本付息的担保。地…

【电源专题】案例:用电子负载模拟电池测试充电芯片

最近在做有关充电芯片的选型,所以需要测试充电芯片中的很多参数。如涓流充电电流、快速充电电流、截止电流等等。 如下所示为某充电IC充电过程中的电流电压变化曲线。可以看出其中存在多个电流如Ishort/Iterm/Iprechg/Ichgerg等等。电压点也有Vshortz/Vbatlow/Vbatreg等。这些…

VTK- vtkStripper

前言:本博文主要研究接口vtkStripper的实现原理及主要的应用场景,希望对各位小伙伴有所帮助。 描述:vtkStripper是一个过滤器,用于从输入多边形、三角形带和线中生成三角形带和/或折线。输入多边形仅当它们是三角形时才被组装成三…

【Linux】-- 进程信号(处理、内核)

上篇:【Linux】-- 进程信号(认识、应用)_川入的博客-CSDN博客 目录 信号其他相关常见概念 pending handler block 信号处理的过程 sigset_t sigset_t使用 系统接口 sigpending sigprocmask 捕捉方法 sigaction struct sigactio …

小白入门模拟IC设计,如何快速学习?

众所周知,模拟电路很难学。以最普遍的晶体管来说,我们分析它的时候必须首先分析直流偏置,其次在分析交流输出电压。可以说,确定工作点就是一项相当麻烦的工作(实际中来说),晶体管的参数多、参数…

JavaScript 计时事件

JavaScript 计时事件 通过使用 JavaScript,我们有能力做到在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行。我们称之为计时事件。 在 JavaScript 中使用计时事件是很容易的,两个关键方法是: setInterval() - 间隔指定的…

【CNN记录】tensorflow中depth_to_space

功能把depth维的数据移到space上,与spacetodepth刚好是相反的操作,depth对应channel,space对应height和width,而该操作是把depth上的数据分给height和width上,所以对应有一个参数block_size,要求原tensor的…

CSDN竞赛28期参赛体验

1、小Q的鲜榨柠檬汁 1、题目名称:小Q的鲜榨柠檬汁 团建活动是大家所想要的。 小Q给大家准备了鲜橙汁。 现在有n个朋友买回了k瓶饮料,每瓶有l毫升的饮料,同时还买回 了c个柠檬, 每个柠檬可以切成d片,p克盐。 已知每个朋…

Python基础学习笔记 —— 数据结构与算法

数据结构与算法1 数据结构基础1.1 数组1.2 链表1.3 队列1.4 栈1.5 二叉树2 排序算法2.1 冒泡排序2.2 快速排序2.3 (简单)选择排序2.4 堆排序2.5 (直接)插入排序3 查找3.1 二分查找1 数据结构基础 本章所需相关基础知识&#xff1a…

第七届蓝桥杯省赛——1有奖猜谜

题目: 小明很喜欢猜谜语。 最近,他被邀请参加了X星球的猜谜活动。 每位选手开始的时候都被发给777个电子币。 规则是:猜对了,手里的电子币数目翻倍, 猜错了,扣除555个电子币, 扣完为止。 小明一共猜了15…

入门深度学习——基于全连接神经网络的手写数字识别案例(python代码实现)

入门深度学习——基于全连接神经网络的手写数字识别案例(python代码实现) 一、网络构建 1.1 问题导入 如图所示,数字五的图片作为输入,layer01层为输入层,layer02层为隐藏层,找出每列最大值对应索引为输…

云原生周刊 | 开源领导者应该如何应对碎片化挑战?

Linux Fundation 发布了一份关于开源开发中的碎片化问题的报告《实现全球协作:开源领导者如何应对碎片化挑战》,该报告由华为在美国的研发部门 Futurewei 赞助。报告指出,虽然开源社区越来越国际化,但美国对开源共享和开发进行了过…

源码项目中常见设计模式及实现

原文https://mp.weixin.qq.com/s/K8yesHkTCerRhS0HfB0LeA 单例模式 单例模式是指一个类在一个进程中只有一个实例对象(但也不一定,比如Spring中的Bean的单例是指在一个容器中是单例的) 单例模式创建分为饿汉式和懒汉式,总共大概…