三十分钟学会Shell(上)

shell从入门到精通(只需要这篇就够了) 在Unix-like系统中,Shell 是用户与操作系统内核之间的一个重要接口,它允许用户通过命令行或脚本与系统进行交互和控制。Shell 变量是 Shell 编程中的基础概念之一,它们允许我们存储和操作数据,是编写灵活脚本和命令行操作的关键。Shell 变量是用来存储数据的命名位置。每个变量都有一个名称(标识符)和一个对应的值。在 Shell 中,变量可以存储字符串、数字或任何有效的数据类型。 阅读详情

Shell

img

​ Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,是用户和Linux文件系统之间的桥梁。Shell 有自己的特殊性,就是开机立马启动,并呈现在用户面前;用户通过 Shell 来使用 Linux,不启动 Shell 的话,用户就没办法使用Linux。

1. shell的基础概念

​ Shell是一种解释性的命令行界面(CLI),它为用户提供了与操作系统内核进行交互的方式。在Linux和UNIX系统中,Shell是一种基本的用户界面工具,用于执行命令、管理文件系统、启动程序等。

​ 常见的Shell有Bourne Shell(sh)、Bash(Bourne Again SHell)、C Shell(csh)和Korn Shell(ksh)等。其中,Bash是最常用的Shell,也是许多Linux发行版的默认Shell。

以下是Shell的一些主要特点和功能:

  1. 命令执行:Shell允许用户在命令行中输入命令,并将其传递给操作系统执行。用户可以执行各种任务,如文件操作、进程管理、软件安装等。
  2. 脚本编程:Shell还提供了脚本编程的功能,用户可以编写一系列的Shell命令并保存为脚本文件。这个脚本文件可以被执行,从而自动完成一系列的操作,提高效率和自动化任务。
  3. 变量和环境:Shell中可以定义和使用变量,用于存储数据和结果。用户可以通过变量来传递参数、存储临时数据等。此外,Shell还提供了环境变量,用于存储系统级别的配置信息,如路径、用户设置等。
  4. 通配符和通道:Shell支持通配符(如*、?)来匹配文件名和路径,从而方便进行文件操作。同时,Shell还支持管道(|)操作符,允许将一个命令的输出作为另一个命令的输入,实现数据流的传递和处理。
  5. 控制结构和循环:Shell提供了条件语句(如if-else)、循环语句(如for、while)等控制结构,使得用户可以根据条件执行不同的命令块或重复执行一系列的命令。
  6. 命令历史和自动补全:Shell会保存用户输入的命令历史记录,方便用户查找和重复执行之前执行过的命令。此外,Shell还支持自动补全,当用户输入命令或文件路径时,可以通过按下Tab键来自动完成。

Shell是Linux系统中强大且灵活的工具,它为用户提供了直接与操作系统交互的方式,可以根据用户需求执行各种任务和操作。通过学习和熟悉Shell,用户可以更好地管理和控制他们的系统。

1.1 Shell分类

​ Shell 是提供与内核沟通接口的命令解释器程序,但实际上 Shell 是这种解释器的统称,Linux 系统的 Shell 种类很多,包括 Bourne Shell(简称 sh)、Bourne Again Shell(简称 bash)、C Shell(简称 csh)、K shell(简称 ksh)等等。如下图:
在这里插入图片描述

​ 也就是说 sh 和 bash 都是 Linux 系统 Shell 的一种,其中 bash 命令是 sh 命令的超集,大多数 sh 脚本都可以在 bash 下运行。Linux 系统中预设默认使用的就是 bash。

1.2 She Bang

She Bang是Shell脚本的第一行:#!/bin/bash,通常是用来指定要运行的脚本的解释器。

  • #! 就是告诉系统解释此脚本文件的 Shell 程序在哪(其后路径所指定的程序)
  • /bin/bash是解释器的路径。

所以 She Bang的格式重要,格式不正确会导致命令工作不正常。其中大家要记住的是:

  • She Bang应在脚本的第一行。
  • 在 #! 和解释器的路径之间, # 之前不应有任何空格。

1.3 运行脚本的方式

  • sh和bash
    • 开启一个新进程运行脚本
    • 变量不能共享
  • source和.
    • 在当前进程中运行脚本(所以环境变量要使用source,不然新进程中访问不到)
    • 变量可以共享
    • .代表带路径运行
  • 带路径运行
    • 运行的脚本必须有执行权限

1.4 脚本

​ 在计算机编程中,脚本是用于适当的运行时环境的一组命令,这些命令用于自动执行任务。

我们经常说的 Shell 脚本,其实就是利用 Shell 的功能,编写能够直接运行的脚本文件。

2. Shell 基础

2.1 注释

: '
	这就是注释
 '

<< EOF
 用分界符注释
 不是EOF也可以,但是EOF是规范
EOF 

2.2 变量

在Shell中,变量是用来存储数据的一种方式。它们可以是数字、字符串或任何其他类型的数据。

Shell中的变量名是以美元符号($)开头的字符串,其后跟着变量名。不能在变量名中使用空格或标点符号(除了下划线),也不能以数字开头。变量名区分大小写。

下面是一些常见的Shell变量:

  1. 环境变量:这些变量包含了有关系统和用户环境的信息。例如,PATH变量定义了Shell在哪些目录中查找可执行文件。
  2. 用户定义变量:这些变量由用户自己定义,用于存储特定的数据。例如,可以定义一个变量来存储一个目录的路径名。
  3. 位置参数变量:这些变量用于存储命令行参数。例如,$0表示命令本身的名称,$1、$2等表示命令行中的第一个、第二个参数等。
  4. 预定义变量:这些变量由Shell预先定义,用于存储有关Shell状态和配置的信息。例如,$HOME变量存储当前用户的主目录路径。

Shell中使用等号(=)来给变量赋值,例如:

MY_VAR="Hello, world!"

在Shell中,可以使用echo命令来显示变量的值,例如:

echo $MY_VAR

输出结果为:

Hello, world!

可以使用unset命令来删除一个变量,例如:

unset MY_VAR

以上就是Shell中的变量的基本知识。掌握了变量的使用方法,可以更加灵活地编写Shell脚本。

2.3 引号

在Shell中,引号用于将字符串括起来。引号可以是单引号、双引号或反引号。

  1. 单引号:单引号内的所有字符都被视为普通字符,也可以原样输出,包括变量和命令替换。例如:
echo 'Hello $USER'

输出结果为:

Hello $USER
  1. 双引号:双引号内的变量和命令将会被展开。例如:
echo "Hello $USER"

输出结果为:

Hello username
  1. 反引号:反引号用于执行命令并将其输出作为字符串。例如:
echo "The date is `date`"

输出结果为:

The date is Wed Nov 24 04:27:38 UTC 2021

需要注意的是,在使用双引号时,如果想要将某些特殊字符视为普通字符而不进行转义,可以使用反斜杠(\)对其进行转义。例如:

echo "Hello \$USER"

输出结果为:

Hello $USER

在一些情况下,引号的使用可以影响变量的展开和命令的执行结果。因此,在编写Shell脚本时,需要根据具体情况来选择合适的引号。

2.4 位置参数

Shell中的位置参数指的是命令行上给定的参数,它们按照出现的顺序被依次编号为$1、$2等。其中,$0表示命令本身的名称。

例如,假设有一个名为test.sh的脚本,可以这样在命令行上给其传递参数:

./test.sh arg1 arg2 arg3

在test.sh脚本中,可以使用位置参数来获取这些参数值:

echo "第一个参数为:$1"
echo "第二个参数为:$2"
echo "第三个参数为:$3"

输出结果为:

第一个参数为:arg1
第二个参数为:arg2
第三个参数为:arg3

如果需要获取所有的位置参数,可以使用 @ 或 @或 @或*来表示。这两个变量都表示所有的位置参数,不同之处在于如果将它们放在引号内, ∗ 会将所有参数解释成一个字符串,而 *会将所有参数解释成一个字符串,而 ∗会将所有参数解释成一个字符串,而@则会将每个参数解释成一个独立的字符串。

例如:

#!/bin/bash
echo "所有的参数为:$*"
echo "所有的参数为:$@"

执行命令:

./test.sh arg1 arg2 arg3

输出结果为:

所有的参数为:arg1 arg2 arg3
所有的参数为:arg1 arg2 arg3

需要注意的是,如果参数中包含空格等特殊字符,需要用引号将其括起来以避免解释错误。例如:

./test.sh "arg1 with space" arg2 "arg3 with space"

在脚本中使用位置参数时,也可以通过shift命令将参数左移一位,以便获取下一个参数。例如:

#!/bin/bash
echo "第一个参数为:$1"
shift
echo "第二个参数为:$1"

执行命令:

./test.sh arg1 arg2 arg3

输出结果为:

第一个参数为:arg1
第二个参数为:arg2

这就是Shell中的位置参数。通过它们,可以让Shell脚本处理多个参数,并根据具体需求对其进行处理。

2.5 特殊变量

Shell中有一些特殊变量,它们具有特定的含义和功能。以下是一些常见的Shell特殊变量:

在这里插入图片描述

  1. $0

这个变量保存了当前脚本或命令的名称。例如,在一个名为myscript.sh的Shell脚本中,$0将会是myscript.sh。

#!/bin/bash

echo "The name of this script is: $0"

执行上述脚本,输出结果为:

The name of this script is: myscript.sh
  1. $1, $2, …

这些变量用来表示位置参数,即命令行上给定的参数。例如,在执行脚本时,可以使用$1来获取第一个参数,使用$2来获取第二个参数,以此类推。

#!/bin/bash

echo "The first argument is: $1"
echo "The second argument is: $2"

执行上述脚本并传递两个参数,输出结果为:

The first argument is: arg1
The second argument is: arg2
  1. $@

这个变量表示所有的位置参数。它将所有传递给脚本或命令的参数看作一个整体,可以使用循环来遍历所有参数。

#!/bin/bash

echo "All arguments are: $@"

执行上述脚本并传递三个参数,输出结果为:

All arguments are: arg1 arg2 arg3

可以将$@用于循环中,以便遍历所有位置参数:

#!/bin/bash

for arg in "$@"
do
    echo "Argument: $arg"
done

执行上述脚本并传递三个参数,输出结果为:

Argument: arg1
Argument: arg2
Argument: arg3
  1. $#

这个变量表示位置参数的个数,不包括脚本或命令本身的名称。

#!/bin/bash

echo "The number of arguments is: $#"

执行上述脚本并传递三个参数,输出结果为:

The number of arguments is: 3
  1. $?

这个变量表示上一个命令的退出状态码。如果命令执行成功,则其值为0;如果命令执行失败,则其值为非零。

#!/bin/bash

ls /notexist
echo "The exit status of the previous command is: $?"

执行上述脚本,由于ls /notexist命令找不到指定目录,其退出状态码为1,因此输出结果为:

ls: cannot access '/notexist': No such file or directory
The exit status of the previous command is: 1
  1. $$

这个变量表示当前脚本或命令的进程ID(PID)。它在脚本中可以用来标识当前进程的唯一性。

#!/bin/bash

echo "The PID of this script is: $$"

执行上述脚本,输出结果为:

The PID of this script is: 1234
  1. $!

这个变量表示最后一个在后台运行的命令的进程ID。可以用来获取最后一个后台任务的PID。

#!/bin/bash

sleep 5 &
echo "The PID of the last background command is: $!"

执行上述脚本,由于sleep 5 &命令被放到后台运行,其PID为1234,因此输出结果为:

The PID of the last background command is: 1234
  1. $*

这个变量表示所有的位置参数作为单个字符串。它将所有参数解释成一个字符串,而不是一个数组。可以使用引号将其括起来,以保留参数之间的空格。

#!/bin/bash

echo "All arguments as a single string: $*"

执行上述脚本并传递三个参数,输出结果为:

All arguments as a single string: arg1 arg2 arg3
  1. $IFS

这个变量表示内部字段分隔符(Internal Field Separator)。它定义了Shell将输入拆分成字段(或单词)的分隔符,默认情况下,它包含空格、制表符和换行符。

#!/bin/bash

echo "The default value of IFS is: '$IFS'"

IFS=":"
echo "After changing IFS to ':', it is: '$IFS'"

执行上述脚本,输出结果为:

The default value of IFS is: ' 	
'
After changing IFS to ':', it is: ':'
  1. $HOME

这个变量表示当前用户的主目录。

#!/bin/bash

echo "The home directory of the current user is: $HOME"

执行上述脚本,输出结果为:

The home directory of the current user is: /home/user
  1. $PWD

这个变量表示当前工作目录的路径。

#!/bin/bash

echo "The current working directory is: $PWD"

执行上述脚本,输出结果为:

The current working directory is: /home/user

这些特殊变量可以在Shell脚本中使用,让你可以获取和处理各种信息,以及控制脚本的行为。通过利用这些变量,你可以编写更灵活、可配置的Shell脚本。

2.6 字符串

在Shell编程中,字符串是一个由字符组成的序列。Shell提供了多种方式来处理字符串,包括字符串拼接、提取子串、替换等操作。

  1. 字符串的定义

    • 单引号:使用单引号'可以定义一个单行字符串,其中的内容会被原样输出,不会进行变量替换和转义字符的解释。

      str='Hello, World!'
      
    • 双引号:使用双引号"可以定义一个单行字符串,其中的内容可以包含变量、转义字符和命令替换。

      name='Alice'
      str="Hello, $name!"
      
    • Here文档:使用Here文档可以定义包含多行内容的字符串,可以使用任意的定界符。

      str=$(cat <<EOF
      Hello,
      World!
      EOF
      )
      
  2. 字符串拼接
    使用连接操作符.可以将两个字符串拼接在一起。

    str1='Hello,'
    str2=' World!'
    result=$str1$str2
    echo $result  # 输出:Hello, World!
    
  3. 字符串长度
    使用${#string}可以获取字符串的长度。

    str='Hello, World!'
    len=${#str}
    echo $len  # 输出:13
    
  4. 子串提取

    • 从左边开始提取指定长度的子串:${string:start:length}

      str='Hello, World!'
      sub=${str:0:5}
      echo $sub  # 输出:Hello
      
    • 从右边开始提取指定长度的子串:${string:start-length}

      str='Hello, World!'
      sub=${str:7-5:5}
      echo $sub  # 输出:World
      
  5. 字符串替换

    • 替换第一个匹配的子串:${string/substring/replacement}

      str='Hello, World!'
      new_str=${str/World/China}
      echo $new_str  # 输出:Hello, China!
      
    • 替换所有匹配的子串:${string//substring/replacement}

      str='Hello, World!'
      new_str=${str//o/O}
      echo $new_str  # 输出:HellO, WOrld!
      
  6. 字符串切割为数组
    使用IFS(内部字段分隔符)将字符串切割为数组。

    str='apple,banana,cherry'
    IFS=',' read -ra arr <<< "$str"
    echo ${arr[1]}  # 输出:banana
    
  7. 字符串比较
    使用=、!=、>、<等符号进行字符串比较。

    str1='apple'
    str2='banana'
    if [[ $str1 == $str2 ]]; then
      echo 'Equal'
    else
      echo 'Not equal'  # 输出:Not equal
    fi
    
  8. 在Shell中,#*和%*是用于字符串处理的特殊符号,用于匹配和删除字符串中的特定模式。

    1. #*:

      • 语法:${variable#*pattern}

      • 功能:从变量${variable}的开头开始,删除第一个匹配pattern的字符串及其左边的内容,返回剩余的部分。

      • 示例:

        str="Hello, World!"
        echo ${str#*o}  # 输出:llo, World!
        

      在这个示例中,${str#*o}会删除str变量中第一个匹配字母o及其左边的所有字符,返回剩余的部分llo, World!。

    2. %*:

      • 语法:${variable%pattern*}

      • 功能:从变量${variable}的结尾开始,删除最后一个匹配pattern的字符串及其右边的内容,返回剩余的部分。

      • 示例:

        str="Hello, World!"
        echo ${str%o*}  # 输出:Hello, W
        

      在这个示例中,${str%o*}会删除str变量中最后一个匹配字母o及其右边的所有字符,返回剩余的部分Hello, W。

这些是Shell中处理字符串的一些常用操作和技巧。通过灵活运用这些操作,可以对字符串进行各种处理和转换,从而实现复杂的逻辑和功能。

2.7 数组

在Shell脚本中,数组是一种特殊的变量类型,用于存储一组相关的值。Shell支持一维数组,即只能存储一列值。

  1. 声明数组:

    • 语法:array_name=(value1 value2 ... valuen)

    • 示例:

      fruits=("apple" "banana" "orange")
      

    在这个示例中,我们声明了一个名为fruits的数组,并初始化了三个元素"apple"、"banana"和"orange"。

  2. 读取数组元素:

    • 语法:${array_name[index]}

    • 示例:

      echo ${fruits[0]}  # 输出:apple
      

    数组元素可以通过索引(从0开始)来访问。${fruits[0]}表示fruits数组中的第一个元素。

  3. 修改数组元素:

    • 语法:array_name[index]=new_value

    • 示例:

      fruits[1]="grape"
      echo ${fruits[1]}  # 输出:grape
      

    fruits[1]="grape"将fruits数组中索引为1的元素修改为"grape"。

  4. 获取数组长度:

    • 语法:${#array_name[@]}

    • 示例:

      length=${#fruits[@]}
      echo $length  # 输出:3
      

    ${#fruits[@]}返回fruits数组的长度,即元素的个数。

  5. 遍历数组:

    • 示例:

      for fruit in ${fruits[@]}; do
          echo $fruit
      done
      

    这个示例中,通过for循环遍历fruits数组的所有元素,并逐个输出。

  6. 添加新元素到数组:

    • 示例:

      shell复制代码fruits+=("pear")
      echo ${fruits[@]}  # 输出:apple banana orange grape pear
      

    通过使用+=操作符,可以向数组末尾添加新的元素。

  7. 删除数组元素:

    • 示例:

      shell复制代码unset fruits[1]
      echo ${fruits[@]}  # 输出:apple orange grape
      

​ 使用unset命令可以删除数组中指定索引位置的元素。

  1. 切片数组:

    • 示例:

      shell复制代码echo ${fruits[@]:1:2}  # 输出:orange grape
      

​ ${fruits[@]:1:2}表示从索引为1的位置开始,取2个元素,形成切片数组。

数组在Shell脚本中用于存储多个相关的值,可以方便地进行数据的组织和处理。通过索引访问、修改元素,获取数组长度以及遍历数组等操作,可以灵活地操作和处理数组中的数据。

下半部分请见三十分钟学会Shell(下)

【阿里云大模型高级工程师ACP习题集】2.1 用大模型构建新人答疑机器人 【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配! 阅读详情

相关推荐

DELPHI11 利用Android手机实现条码扫描功能

好了,整个过程全部结束,当然这只是最简单的例子,只是演示一下如何识别条码,更多的条码处理功能,比如优化,提速等需要在后面继续。安装过程中所有提示框全部按OK就可以,直到提示安装成功,那么ZXing库就成功完成了安装。点击红框标识的文件夹图标,将下载的ZXing库文件路径加入进来后,点ADD。第三步:选择下载的ZXing库路径,并按Ctrl + A进行全选,并导入。至此为止,我们的库才算是全部安装完成,可以在DELPHI 中正常引用了。2.打开相机,识别条码,并将条码内容显示在MEMO1中。

1531

Shell 一个月时间让你从小白到实战【万字笔记建议收藏方便学习】

Shell是一种用户使用的解释型程序,它是操作系统的一部分,派生自多种不同的系统。它是一种命令解释器,它可以读取用户的输入,解释该输入,并执行相应的命令。 Linux的Shell有很多种,如bash,csh,ksh等。当前常用的为bash

li175325的博客 7077

Kafka 系列 —(17)Kafka 流式处理:Kafka Streams架构、使用场景、框架选择

本文介绍了KafkaStreams的架构特点、应用场景及与其他流处理框架的比较。KafkaStreams作为嵌入式分布式流处理库,其核心架构包含流处理器、任务、拓扑和本地状态存储,具备自动容错和伸缩能力。适用于实时监控、ETL、聚合、Join、物化视图等低延迟场景。与Flink、Spark相比,KafkaStreams适合简单架构和微服务,而Flink适合大规模处理,Spark更适合批处理。选择框架需根据具体场景需求,如微服务推荐KafkaStreams,大规模处理推荐Flink。

moton2017的博客 1631

一天学会shell语言,shell教程,shell简单入门,shell中文文档

    shell语言是一门linux系统下的工具语言,主要用于写一些linux系统下的操作命令,实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。或者直接理解为shell命令是可以执行多个linux命令的脚本。    shell并不复杂,有编程基础的话,简单入门两三个小时就可以入门,可以尝试把目前一些重复操作的linux命令写成shell脚本来执行一下。    本片文章...

Haloby的博客 7374

从零构建HFSS连接器仿真模型:以SMP接口的精准复现为例

本文详细介绍了如何从零构建HFSS连接器仿真模型,以SMP接口的精准复现为例。通过获取官方模型、导入技巧、信号路径提取和介质结构复现等步骤,帮助工程师避免常见错误,提升高频电路仿真的准确性。文章特别强调了模型精度对仿真结果的影响,并提供了实用的调试和管理建议。

weixin_29041767的博客 429

从流体力学到深度学习:手把手教你用PINN预测涡流场(基于TensorFlow2.10+GPU)

本文详细介绍了如何利用物理信息神经网络(PINN)结合TensorFlow 2.10和GPU加速,预测Navier-Stokes方程的涡流场。通过核心原理讲解、实战环境配置、网络架构设计及物理约束实现,帮助读者掌握从流体力学到深度学习的跨学科技术应用,特别适合处理复杂流体问题和非定常流动场景。

weixin_29048309的博客 212

shell script学习需要几天?

#后面的故事$0 功能:指脚本本身,并且如果执行时带脚本路径,路径也会被包括进来 $n n=1,2,3,4..{10} 取脚本的参数,将第一个名的参数给$1,依次类推 $# 传参的个数 $? 获取上一个任务的返回值,是上个exit的参数。如果是函数用retrun 0等。 返回值 说明 0 命令执行正确 2 权限拒绝 1~125 找到了命令,但运行失败 126

liangmoren的博客 1460

【Java 实战】通过Redis实现购物车功能

以上就是今天要讲的内容,本文仅仅简单介绍了如何通过Redis实现购物车功能,以上方法亲测有效,希望能给大家一个参考。

~~~~~~~BUG FLY~~~~~~~~~ 9970

两天高效学会Shell基础编程(赞赞赞)

前言 所有的题都不用,tail、cat、grep、awk这种命令直接执行得出结果,全用逻辑bash shell语句编程

小样yx的博客 1058

功能安全实战系列12-英飞凌TC3xx锁步核及其自检开发

本文介绍了英飞凌Tricore系列芯片的锁步核(Lockstep Core)功能及其故障注入自检机制。锁步核通过主核和检查核同步执行指令,并比较输出结果来检测硬件故障。文章详细阐述了锁步核的工作原理、使能配置方法以及故障注入自检的实现过程。故障注入测试通过专用寄存器LCLTEST触发,系统会定期自动测试比较器节点,验证锁步核的故障检测能力。当检测到异常时,会触发SMU模块的警报机制。该技术为汽车电子系统提供了重要的功能安全保障。

initiallizer的博客 921

【CAN总线测试】——通讯相关诊断测试

本章主要介绍通讯相关诊断测试用例设计

LOVE135149的博客 1815

三十分钟学会Shell(下)

函数体内执行的代码块# 可以包含变量、命令、流程控制语句等或者# 函数体内执行的代码块# 可以包含变量、命令、流程控制语句等。

diskindom的博客 388

Vue3 - 超详细最新 wangEditor V5 富文本编辑器安装引入及使用教程,提供工具栏配置、基础富文本功能、API使用示例教程等(新手小白快速引入并植入到项目中)

vue3,wangEditorv5富文本编辑器,wangEditorv5官方文档,vue3最新安装wangEditorv5富文本详细使用教程,vue3使用wangEditorv5编辑器示例代码,vue3网站网页安装植入富文本编辑器教程,vue3wangEditor使用api,vue3安装富文本控制台出现报错如何解决,vue3wangEditor-v5工具栏配置,vue3中使用富文本编译器wangEditor5的方法,wangeditor5在vue3中的全使用过程,vue3超详细最新wangedi

🏆 前端领域优质创作者 4253

三十分钟学会shell

本篇文章,你可以把它当做shell的入门教程来学习,你也可以把它当做shell学习的大纲,对应这里的每一个知识点进行更深入的学习(查资料或者看书),对于不是专业的Linux运维人员来说&lt;&lt;Linux shell 脚本攻略&gt;&gt;和&lt;&lt;Linux 命令行大全&gt;&gt;这两本书足够应付日常使用Linux的大部分问题.在这里附上学习shell时的小例子:https:...

newbietao的博客 624

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Shell脚本编程30分钟入门

在bash里,source和.是等效的,他们都是读入function.sh的内容并执行其内容(类似PHP里的include),为了更好的可移植性,推荐使用第二种写法。如果function.sh是用户传入的参数,如何获得它的绝对路径呢?real_path=`readlink - f $1 `# $1 是用户输入的参数,如 function . sh . $real_path。...

Add小兵的博客 380

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

三十分钟学会AWK

转载至:https://www.shiyanlou.com/questions/11255 转载请注明原文出处 -------------------------------------------------------------------------------------------------------------------- 三十分钟学会AWK 实验楼管理...

liuwei0376的专栏 443

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【linux】三十分钟学会AWK

本文大部分内容翻译自我开始学习AWK时看到的一篇英文文章AWK Tutorial,觉得对AWK入门非常有帮助,所以对其进行了粗略的翻译,并对其中部分内容进行了删减或者补充,希望能为对AWK感兴趣的小伙伴提供一份快速入门的教程,帮助小伙伴们快速掌握AWK的基本使用方式,当然,我也是刚开始学习AWK,本文在翻译或者补充的过程中肯定会有很多疏漏或者错误,希望大家能够帮忙指正。 本文将会持...

a84480766的博客 317

shell 编程

i

实践出真理,接毕设/课设项目开发指导 286

Shell脚本:date命令

有关Shell脚本的一篇文章。

3y先生的博客 912

linux shell脚本编程 自动化脚本 awk sed grep find 文本分析 LinuxShell命令行及脚本编程实例详解

linux shell脚本编程 自动化脚本 awk sed grep find 文本分析 LinuxShell命令行及脚本编程实例详解 本文github window 下 从零开始——PowerShell应用入门(全例子入门讲解) 各种逗比脚本参考 参考代码1 参考代码2 Linux-Shell脚本编程书籍代码 把平时有用的手动操作做成脚本,这样可以便捷的使用 awk 与 sed 学习,包括了...

万有文的博客 1962

Shell实现监控MySQL Slave状态并通过邮件告警

SHELL实现监控mysql Slave 状态并通过邮件告警 实现思路: 1.使用直接查看mysql status获取Slave相关参数值,进行判断; 2.当延迟超过一定时间就发邮件进行告警; 3.Crontab里面,每三十分钟跑一次 详细代码如下: #!/bin/bash #crontab time :every minutes once #author : hzsnone@163.com #d...

qq625281334的专栏 545

Scrapy 爬取新闻

使用scrapy爬取新闻 #Item class AifranItem(scrapy.Item): # define the fields for your item here like: img = scrapy.Field() title = scrapy.Field() url = scrapy.Field() date = scrapy.Field(...

cc2415的博客 407

Vim三十分钟入门教程 前篇

这篇教程希望可以在短期内给希望使用Vim做处理,以及对Vim基础的一些命令不是很了解的使用者一个尽量简短的入门教程。 Vim是...? Vim(Vi iMprove)是从vi("Visual"的不正规缩写)发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。 (来源wiki)

CloudCraft的专栏 1487

【树莓派Zero入门】-第四章:写脚本执行拍照并上传到云+定时每三十分钟执行一次

1、在/home/pi目录下新建脚本:image.sh,并编辑如下内容: #!/bin/bash fswebcam -d /dev/video0 --no-banner -r 1280x720 -S 10 /home/pi/image.jpg curl -H "Expect:" -F 'file=@image.jpg' http://云接口路径 添加权限:chmod +x ./image.sh 查看执行结果: ./image.sh 2、添加定时任务: 安装:apt-get install.

小达哥的博客 865

如何三十分钟彻底解决魔兽世界字体乱码问题:字体合并工具完整指南

还在为魔兽世界聊天框里的中文方块字而烦恼吗?组队时队友发的中文消息变成一堆问号,任务说明里的特殊符号显示异常,这些字体乱码问题不仅影响游戏体验,更可能让你错过关键的游戏信息。今天,我将为你介绍一款能够彻底解决这些问题的专业工具——Warcraft Font Merger(魔兽世界字体合并工具),它通过智能的字体合并技术,让多语言文字在游戏中完美显示。 ## 第一部分:游戏字体问题的根源与解决方案

gitblog_00897的博客 662

shell 相关优秀文章汇总,持续更新。。。

三十分钟学会awk:   http://blog.jobbole.com/109089/ 三十分钟学会sed:    http://blog.jobbole.com/109088/#toc_39正则表达式30分钟入门教程: http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html...

zhngcho的博客 201
上一篇: Spark的通用运行流程与Spark YARN Cluster 模式的运行流程
下一篇: 三十分钟学会Shell(下)
地球魔
博客等级 码龄6年 317粉丝 56原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值