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}"        # helloecho ${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
#回车,光标移到首位,但不换行evalexec
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.mzph.cn/bicheng/8355.shtml

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

相关文章

c++多线程2小时速成

简介 c多线程基础需要掌握这三个标准库的使用&#xff1a;std::thread,std::mutex, andstd::async。 1. Hello, world #include <iostream> #include <thread>void hello() { std::cout << "Hello Concurrent World!\n"; }int main() {std::th…

Web Component fancy-components

css-doodle 组件库 fancy-components 组件库使用 yarn add fancy-components使用&#xff1a; import { FcBubbles } from fancy-components new FcBubbles() //要用哪个就new哪个 new 这里可能会报错eslink,eslintrc.js中处理报错 module.exports {rules: {no-new: off} …

日志审计系统在提高网络安全方面具有哪些重要的作用

随着信息技术的飞速发展&#xff0c;我们正处于一个高度互联、数据驱动的网络时代。在这个时代&#xff0c;日志审计系统作为网络安全和信息管理的重要工具&#xff0c;发挥着至关重要的作用。下面德迅云安全就详细介绍下关于日志审计系统在当今网络时代的重要性。 一、什么是日…

四、Redis五种常用数据类型-List

List是Redis中的列表&#xff0c;按照插入顺序保存数据&#xff0c;插入顺序是什么样的&#xff0c;数据就怎么保存。可以添加一个元素到列表的头部(左边)或者尾部(右边)。一个列表最多可以包含232-1个元素(4294967295&#xff0c;每个列表超过40亿个元素)。是一种双向列表结构…

Redis单机安装

1.编译 cd redis安装目录 makemake install2.修改配置文件redis.conf #端口修改 port 6379 #后台进程启动 yes daemonize yes # daemonize no #注释掉 为了可以远程连接 #bind 127.0.0.1 #设置密码 requirepass pwd3.启动 ./redis-server ../redis.conf查看进程 [rootlocal…

使用Maven对Java独立应用程序进行编译打包

一、 安装Maven 1.解压&#xff0c;移动安装包 sudo tar -zxf ~/apache-maven-3.9.6-bin.tar.gz -C /usr/local/ cd /usr/local/ sudo mv apache-maven-3.9.6/ ./maven-3.9.6 sudo chown -R qiangzi ./maven-3.9.6 二、Java应用程序代码 1.版本信息&#xff1a; Spark-2.1…

Python机器翻译包Translate:多语种翻译利器

Python机器翻译包Translate&#xff1a;多语种翻译&#xff0c;效果卓越&#xff01; 随着全球化的不断深化&#xff0c;跨语言沟通成为人们越来越重要的需求。而如今&#xff0c;Python作为一种功能强大的编程语言&#xff0c;正以其独特的优势和实用性&#xff0c;在机器翻译…

设计软件有哪些?渲染软件篇(1),渲染100邀请码1a12

做设计要用到很多软件&#xff0c;今天我给大家介绍一些渲染方面的&#xff0c;仅供参考。 1、渲染100(http://www.xuanran100.com/?ycode1a12) 渲染100是网渲平台&#xff0c;为设计师提供高性能的渲染服务。通过它设计师可以把本地渲染移到云端进行&#xff0c;速度快价格便…

APP广告变现:自刷的秘密与规则

在移动互联网时代&#xff0c;广告已成为众多APP盈利的主要方式之一。对于开发者和运营者而言&#xff0c;如何通过广告变现提高收益是他们必须关注的问题。然而&#xff0c;在众多的变现方法中&#xff0c;“自刷广告”这一概念可能让一些人感到迷惑。实际上&#xff0c;只要在…

高频SQL 第二高的薪水

题目信息 Employee 表&#xff1a; ------------------- | Column Name | Type | ------------------- | id | int | | salary | int | ------------------- 在 SQL 中&#xff0c;id 是这个表的主键。 表的每一行包含员工的工资信息。查询并返回 Employee 表…

巨资回流,量子投资热潮再起

一股新的信心和资金浪潮正在席卷量子计算产业。 2023年4月30日&#xff0c;澳大利亚联邦政府和昆士兰州政府宣布共同出资9.4亿澳元&#xff08;约合6.2亿美元&#xff09;&#xff0c;支持美国初创企业PsiQuantum在布里斯班附近建设一台大型量子计算机。这项投资是最新的迹象之…

字符串的赋值

因为字符串本质上就是数组&#xff0c;因此它的赋值也具有数组的特点&#xff1a;只能在初始化时用等号。 1&#xff0e;字符串的初始化 方法一&#xff1a;指定大小 char s[6]"Hello"; //指定字符串最大占用6个的char型内存单元 虽然看上去是将整个字符串赋给了…

RT-IoT2022 数据集-扩展数据(自制方法)

数据集官网Discover datasets around the world!https://archive.ics.uci.edu/dataset/942/rt-iot2022RT-IoT2022 是源自实时物联网基础设施的专有数据集&#xff0c;作为集成了各种物联网设备和复杂网络攻击方法的综合资源而引入。该数据集包含正常和对抗性网络行为&#xff0…

modbus协议完整介绍

一、MODBUS通讯协议完整介绍&#xff08;全文10000字以上&#xff09; - 知乎 modbus协议之-01-初次见面_一个寄存器有几个字节-CSDN博客

基于ConvNeXt网络的图像识别

1、前言 ConvNeXt 网络基于传统的卷积神经网络&#xff0c;与当下 transformer当道而言简直是一股清流 ConvNeXt并没有特别复杂或者创新的结构 ConvNeXt 网络有五种大小&#xff0c;可以参考下面 2、项目实现 完整的项目如下&#xff1a; 这里参考了网上的ConvNeXt 模型&…

Springboot+Vue项目-基于Java+MySQL的个人云盘管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

js知识库

script标签的async和defer作用及区别 1&#xff09;都会起到延迟执行js的作用 2&#xff09;defer&#xff1a;先进行html解析&#xff0c;解析过程中会下载js文件&#xff0c;但不会执行&#xff1b;当html完全解析完&#xff0c;才会执行js部分。多个用defer修饰的js是顺序…

速卖通vs亚马逊vs虾皮,三大跨境电商平台详细对比

近几年跨境电商行业可以说是十分火热&#xff0c;跨境电商平台也是非常多&#xff0c;如亚马逊、速卖通、虾皮、lazada等等。今天就给大家分享速卖通、亚马逊和虾皮这三个平台之间的区别&#xff0c;帮助大家快速找到适合自己的平台。 三大跨境电商平台详细对比 速卖通 &#x…

视图地一些笔记

1. 创建视图&#xff08;CREATE VIEW&#xff09;时&#xff0c;通常不会输出任何结果集。它只是一种定义逻辑视图的方式&#xff0c;在数据库中保存一个查询定义。要查看视图中的内容&#xff0c;你需要使用 SELECT 语句查询该视图。例如&#xff0c;如果你创建了名为 new_us…

神经网络的基础:从感知机到复杂网络的进化

文章目录 一、神经网络的例子二、理解神经信号的传递2.1 感知机的结构和功能2.2 优化函数2.3 明确表示偏置 三、理解感知机和激活函数的作用3.1 基础感知机模型3.2 激活函数的引入 一、神经网络的例子 理解感知机 在探索神经网络之前&#xff0c;我们首先回顾了感知机的基本概…