Shell命令和基础学习

Shell的作用:

  •  解释执行用户输入的命令或程序等
  • 用户输入一条命令,shell就解释一条
  • 键盘输入命令,Linux就给出响应的方式,称为交互式

外层应用程序 -> shell解释器 -> 操作系统核心 -> 机器硬件

shell脚本:

        windows中存在".bat"批处理脚本

        linux 中常用".sh"脚本文件

SheBang:

        计算机程序中,shebang指的是出现在文本文件第一行前两个字符:   #!

        在Unix系统中,程序会分析shebang后面的内容,作为解释器的指令,例如:

  • 以 #! /bin/bash 或 #! /bin/sh 开头的文件,程序在执行的时候会调用/bin/sh,也就是bash解释器
  • 以 #! /usr/bin/python 开头的文件,代表指定python解释器执行
  • 以 #! /usr/bin/env 开头的文件,是一种在不同平台上都能正确找到解释器的办法

sh和bash一样的。

执行shell

  • sh hello.sh
  • hello.sh(PATH里没有)
  • ./hello.sh(权限不够,添加权限:  chmod +x hello.sh)
  • /bin/bash ./hello.sh  或 /bin/sh ./hello.sh

bash/sh ,文件本身没权限执行,没x权限,则使用的方法,或脚本未指定shebang,重点推荐的方法

使用 绝对/相对 路径执行脚本,需要文件含有x权限

source script.sh / . script.sh 代表当前会话执行,bash/sh 生成一个子sh执行

少见的用法:sh < script.sh 

定义

        shell语言定义的变量,数据类型默认都是字符串,弱类型语言

作用域

  • 环境变量(全局变量):eg:$PATH
  • 局部变量,针对 shell函数 或 shell脚本 的参数

脚本:

特殊状态
# 上一次命令执行状态返回值, 0正确,非0失败
$?

# 当前shell脚本的进程号
$$

# 上一次后台进程的PID
$!

# 上次执行的命令,最后一个参数
$_

# 获取参数个数
$#

# 获取参数第几个
#1 #2 #3 ...

# 执行脚本名称
#0
变量
#支持的shell
cat /etc/shells

#定义变量,变量和值直接不能有空格,只能包括数字、字母、下划线,不能以数字开头,严格区分大小写
name="hello"

# '' 不识别特殊符号,""识别特殊符号,""里变量的{}不能省略
nane1='${name}'        # '${name}'
name2="${name}"        # hello

echo ${name} = echo $name

# 生成子shell,退出 exit
sh

#上一条命令是否成功: 0代表成功,否则失败
$?
历史命令
# 查看历史命令
history

#保留用户命令的个数
echo $HISTSIZE

#查看历史文件
echo $HISTFILE #/root/.bash_history
cat /root/.bash_history

#清空历史命令
history -c

#恢复历史命令
history -r

#执行命令
!550

#执行上一个命令
!!
简单执行
[ $# -lt 2 ] && {
  echo "<2个参数"
  exit 119
}
echo ">=2个参数"


# 参数个数小于2个输出 "<2个参数" ,否则输出">=2个参数"
bash一些基础的内置命令
echo
    -n	do not append a newline
        不换行输出
    -e	enable interpretation of the following backslash escapes
        启用下划线转义字符: 能够识别特殊字符
    -E	explicitly suppress interpretation of backslash escapes
        不启用反斜线转义的解释(默认)
  使用选项-e时,如果在字符串中键入以下字符,程序不用将它当一般字符输出,而是使用转义功能
    \a 发出一个警告
    \b 删除前一个字符
    \c 最后不加换行符,并抑制字符后输出
    \f 换行,但光标仍停留原来的位置
    \n 换行,光标移到行首
    \r 光标移到行首,但不换行
    \t 水平制表符
    \v 垂直制表符
    \\ 插入\字符
    \0nnn 插入nnn(八进制)所代表的ASCII字符,nnn代表0-3位八进制数字
    \xHH 插入HH(十六进制)所代表的ASCII字符,HH代表1-2位十六进制数字

[root@192_168_52_88 test]# echo "Today is sunny"
Today is sunny

[root@192_168_52_88 test]# echo -e "Today \bis \bsunny"
Todayissunny

[root@192_168_52_88 test]# echo -e "Today is \csunny"
#Today is [root@192_168_52_88 test]# 

[root@192_168_52_88 test]# echo -e "Today is sunny\nlo"
Today is sunny
lo

[root@192_168_52_88 test]# echo -e "Today \ris sunny"
is sunny
#回车,光标移到首位,但不换行




eval

exec
export
read
shift
字符串
截取字符串:
    # 截取左边的
    % 截取右边的字符串
    # 左边匹配第一个;## 右边匹配第一个
    % 右边匹配第一个;%% 左边匹配第一个

file=/dir1/dir2/dir3/my.file.txt
# 长度
${#file}
# 删掉第一个/及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file#*/}  
# 删掉最后一个/及其左边的字符串:my.file.txt
${file##*/} 
# 删掉第一个.及其左边的字符串:file.txt
${file#*.}  
# 删掉最后一个.及其左边的字符串:txt
${file##*.} 
# 删掉最后一个/及其右边的字符串:/dir1/dir2/dir3
${file%/*}  
# 删掉第一个/及其右边的字符串:(空值)
${file%%/*} 
# 删掉最后一个.及其右边的字符串:/dir1/dir2/dir3/my.file
${file%.*}  
# 删掉第一个.及其右边的字符串:/dir1/dir2/dir3/my 
${file%%.*} 

# 对比,少一个/ 引起是否匹配问题
# /dir2/dir3/my.file.txt
echo ${file#/d*1}
# /dir1/dir2/dir3/my.file.txt
echo ${file#d*1}

# ${var:start:length}
# 提取最左边的5个字节:/dir1
${file:0:5} 
# 提取最后5个字节(注意-5前有空格):e.txt
${file: -5} 
# 去掉头部5字节、尾部5个字节:/dir2/dir3/my.fil
${file:5: -5} 
# 先取最后11个字节,再去掉最后4个字节:my.file
${file: -11: -4}

字符串替换,不写入原变量
# ${var/ / }    ${var//  / }

# 将第一个dir替换为path:/path1/dir2/dir3/my.file.txt
${file/dir/path}
# 将全部dir替换为path:/path1/path2/path3/my.file.txt
${file//dir/path}

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

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

相关文章

NXP i.MX8系列平台开发讲解 - 1.1 导读前言

专栏文章目录传送门&#xff1a;返回专栏目录 文章目录 目录 1. 本专辑介绍 2. 学习本专辑作用 3.关于作者 1. 本专辑介绍 本专辑将会介绍Linux 驱动开发&#xff0c;Android BSP 驱动涉及HAL层调试&#xff0c;适用于嵌入式软件开发人员&#xff0c;和有兴趣向该方向发展…

怎么制作地图位置二维码?扫码获取地图信息的方法

随着互联网的不断发展&#xff0c;二维码在工作和生活中的应用不断的增多&#xff0c;可以针对不同的用途展示内容。比如现在很多的商家或者店铺会将定位定制生成二维码&#xff0c;印刷到传单或者宣传海报上&#xff0c;就可以让用户通过扫码获取位置&#xff0c;方便精准定位…

(论文阅读-分析引擎)Modin

一、简介 目标是在不改变的Dataframe语义的情况下支持可扩展的dataframe操作。 什么是机会主义评价&#xff1f;Opportunistic Evaluation&#xff1f; Exploratory data analysis&#xff08;EDA&#xff09;&#xff1a;总结、理解并从数据集中获取价值的过程。 MPI&#…

如何使用dockerfile文件将项目打包成镜像

要根据Dockerfile文件来打包一个Docker镜像&#xff0c;你需要遵循以下步骤。这里假设你已经安装了Docker环境。 1. 准备Dockerfile 确保你的Dockerfile文件已经准备就绪&#xff0c;并且位于你希望构建上下文的目录中。Dockerfile是一个文本文件&#xff0c;包含了用户可以调…

Omnity 进展月报 | 2024.4.1-4.30

Omnity 大事摘要 1、Octopus 官宣升级为 Omnity。 2、Omnity 4月28号正式上线&#xff0c;实现BTC 和 ICP 之间跨链转账 Runes 资产。 3、为庆祝上线&#xff0c;以符文 HOPE•YOU•GET•RICH 为资产&#xff0c;发红包快速触达大量用户&#xff0c;体验跨链服务。 4、Omni…

layui的treeTable组件,多层级上传按钮失效的问题解决

现象描述: layui的treeTable 的上传按钮在一层能用&#xff0c;展开后其他按钮正常点击&#xff0c;上传按钮无效。 具体原因没有深究&#xff0c;大概率是展开的子菜单没有被渲染treeTable的done管理到&#xff0c;导致没有重绘上传按钮。 解决方案: 不使用layu的上传组件方法…

深入解析:企业级OV SSL证书的技术价值与应用实践

JoySSL官网 注册码230918 在互联网安全日益受到重视的今天&#xff0c;SSL证书已成为保护网站数据传输安全的基石。其中&#xff0c;企业级OV&#xff08;Organization Validation&#xff09;SSL证书凭借其增强的安全特性和对企业身份的严格验证&#xff0c;在众多类型的SSL证…

Phi-3:手机上就能运行的强力语言模型

导语 phi-系列模型是微软研究团队推出的轻量级人工智能模型&#xff0c;旨在实现“小而精”的目标&#xff0c;能够实现在低功耗设备上例如智能手机和平板电脑上部署运行。截止目前&#xff0c;已经发布到了phi-3模型&#xff0c;本系列博客将沿着最初的phi-1到phi-1.5&#x…

HarmonyOS实战开发-如何通过Text实现部分文本高亮和超链接。

介绍 本示例通过自定义Span类型&#xff0c;在Text组件中使用ForEach遍历&#xff0c;根据不同的Span类型生成不同样式和功能的Span组件&#xff0c;实现部分文本高亮和超链接。 效果图预览 使用说明 点击超链接&#xff0c;根据链接类型出现相应提示弹窗。长按消息卡片出现…

不必追求深度,浅尝辄止为宜

近日笔者撰文称&#xff0c;有幸应《百度-百家号》相邀&#xff0c;在其发起的《征文任务》栏目中写作深度文章&#xff0c;便试着开头写了一篇《万科有“活下去”的可能性吗&#xff1f;》的时评文章&#xff0c;于5月3日发表&#xff0c;舆情反映不错&#xff0c;不到三天时间…

重生奇迹mu套装大全

1.战士 汉斯的皮套装&#xff1a;冰之指环,皮护腿,皮盔,皮护手,皮靴,皮铠,流星槌 汉斯的青铜套装&#xff1a;青铜护腿,青铜靴,青铜铠 汉斯的翡翠套装&#xff1a;雷之项链,翡翠护腿,翡翠盔,翡翠铠,远古之盾 汉斯的黄金套装&#xff1a;火之项链,黄金护腿,黄金护手,黄金靴,…

(双指针) 有效三角形的个数 和为s的两个数字 三数之和 四数之和

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 一、有效三角形的个数&#xff08;medium&#xff09; 1.1、题目 1.2、讲解算法原理 1.3、编写代码 二、和为s的两个数字 2.1、题目 2.2、讲解算…

动手开发基于Springboot的基础开发框架-01

本系列专题虽然是按教学的深度来定稿的&#xff0c;但在项目结构和代码组织方面是按生产系统的要求来书定的。在本章中主要介绍下基础开发框架的内容。后续所有章节的项目全是在本基础框架的基础上演进的。 工程结构介绍 SpringbootSeries&#xff1a;父工程&#xff0c;定义一…

【信息熵理论-01】最大熵的分布

文章目录 一、说明二、如何认识所谓的“熵”三、熵最大化问题3.1 设置最大化3.2 利用变分微积分 四、更广泛的影响和见解 一、说明 我觉得用最大熵来获取概率分布的方法很给力。您采用一些已知或约束&#xff0c;然后在这些条件下最大化信息熵&#xff0c;瞧&#xff01;你有一…

前端基础学习html(2)

目录 表格标签&#xff1a; 列表标签&#xff1a; 表格标签&#xff1a; <!-- 表格基本架构 --><!-- tr表示一行&#xff0c;td表示一行内单元格 --><!--th为第一行表头加粗居中显示 --><table border"1"><thead><tr><th&g…

【Linux】17. 进程间通信 --- 管道

1. 什么是进程间通信(进程间通信的目的) 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 资源共享&#xff1a;多个进程之间共享同样的资源。 通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了…

sqlmodel实现唯一性校验3,检查多列同时重复

之前的方案虽然能够解决重复性问题&#xff0c;但是没有覆盖到多列同时重复的情况。 比如&#xff0c;我们可以认为用户名是可以重复的。但是用户名和年龄不能同时重复&#xff0c;那么这种情况该怎么解决呢&#xff1f; 之前的代码如下&#xff1a; from sqlalchemy import…

python直接发布到网站wordpress之三批量发布图片

在前面的文章中&#xff0c;实现了使用python操作wordpress发布文字内容和图片内容。 python直接发布到网站wordpress之一只发布文字-CSDN博客 python直接发布到网站wordpress之二发布图片-CSDN博客 不过&#xff0c;此时发布图片的数量只能是一张图片。但在实际应用中&…

效率跨越式提升的工农业对机器人专业的需求

需求 需要用人的地方一定会逐步收缩。 原来需要人的地方也会逐步被机器人取代。 机器人这个专业最强的悖论就是可以部分取代人。 此处&#xff1a;用人的地方是指“工农业”&#xff0c;包括工业和农业。 机器人工程行业算制造业吗 机器人工程终身学习和工作计划 趋势 工匠…

1077 互评成绩计算

solution 总成绩 &#xff08;老师成绩 同学去掉最高分去掉最低分的平均分&#xff09;/2&#xff0c;其中总成绩四舍五入取整 #include<iostream> #include<algorithm> using namespace std; int main(){int n, m, worst, better, sum, g, x, cnt;scanf("…
最新文章