三十分钟学会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(下)

RouterOS网桥VLAN实战:从零构建安全隔离的二层虚拟网络 本文详细讲解了如何在RouterOS上利用网桥和VLAN功能,从零开始构建安全隔离的二层虚拟网络。通过分步实战演示,涵盖核心概念、网桥创建、PVID设置、VLAN规则配置及安全过滤,帮助网络管理员实现办公、访客与服务器网络的逻辑隔离与灵活管理,提升网络安全性。 阅读详情

相关推荐

UniApp实战:从文件下载到本地保存与预览的一站式解决方案

本文深入解析了UniApp开发中文件下载、保存与预览的完整流程,提供了基于uni.downloadFile、uni.saveFile和uni.openDocument API的一站式实战解决方案。文章详细拆解了核心API的使用方法、多平台(App、H5)的兼容性处理、常见坑点(如文件路径、权限、格式支持)以及进阶优化技巧(如进度提示、文件管理),旨在帮助开发者构建健壮、用户体验良好的跨平台文件处理功能。

d3e4f的博客 614

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

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

li175325的博客 7077

Unity物理驱动3D汽车实现:从刚体控制到参数调优

在游戏开发中,刚体物理是实现真实物体运动与交互的核心技术。通过Unity的物理引擎,开发者可以模拟重力、碰撞、摩擦力等物理行为,为游戏世界注入真实感。其技术价值在于能够以符合物理规律的方式驱动游戏对象,避免穿墙、无视惯性等问题,从而提升游戏体验的真实性和沉浸感。这一原理广泛应用于角色控制、车辆模拟、物体破坏等场景。本文以3D小汽车为例,详细解析了如何通过Rigidbody组件施加力与扭矩,并利用C#脚本实现玩家输入逻辑,完成一辆可操控、能碰撞的物理驱动汽车。文中重点探讨了AddForce与角速度控制两种方案

weixin_34380948的博客 501

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

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

Haloby的博客 7374

Globus数据下载全攻略:从零配置到批量下载大文件(附常见问题解决)

本文详细介绍了Globus数据下载的全流程,从零配置到批量下载大文件的实用技巧,包括环境准备、高级传输策略、性能优化及常见问题解决方案。Globus作为科研数据的高效传输工具,通过并行流传输和自动校验技术,显著提升大规模数据传输的效率和可靠性。

u9v0w的博客 663

数理金融学笔记 Chap2 二叉树模型Binomial

2 二叉树模型与期权定价 Binomial Model and Option Pricing 文章目录2 二叉树模型与期权定价 Binomial Model and Option Pricing单期二叉树模型 One-step Binomial Model风险与无风险资产单期二叉树模型与无套利条件无套利定价 No Arbitrage Pricing风险中性定价 Risk Neutral PricingDelta套期保值 Delta Hedging两期二叉树模型 Two-Step Binomial Model

weixin_66831131的博客 2387

shell script学习需要几天?

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

liangmoren的博客 1460

QTabWidget动态标签页管理:从代码创建到UI设计的实战指南

本文深入探讨了QTabWidget动态标签页管理的实战技巧,涵盖从纯代码创建到UI设计器布局的两种核心方法。详细讲解了如何动态添加、插入、关闭标签页,并管理其内容与生命周期。文章还提供了标签页精细化控制、界面优化(如设置图标、样式表)以及构建简易多文档编辑器的进阶实战案例,帮助开发者灵活应对数据监控、多文档编辑等复杂界面需求。

omega的博客 866

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

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

小样yx的博客 1058

组合预测 | Python实现LSTM-XGBoost长短期记忆网络组合极限梯度提升树股票价格预测

组合预测 | Python实现LSTM-XGBoost长短期记忆网络和极限梯度提升树股票价格预测

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 2353

C++实现复制粘贴文本功能

要实现这个功能,我们需要使用操作系统提供的函数来操作剪贴板。在Windows操作系统中,我们可以使用Windows API函数来访问剪贴板。总结起来,使用C++实现复制和粘贴文本功能涉及使用操作系统提供的API函数来操作剪贴板。在本篇文章中,我将向您展示如何使用C++编程语言实现复制和粘贴文本的功能。我们将使用操作系统提供的API来进行剪贴板操作,并编写相应的代码来完成这个任务。如果您使用的是Linux操作系统,您需要使用适当的库和函数来访问剪贴板。函数中,我们首先将一个字符串复制到剪贴板中,然后使用。

PixelDyno的博客 1233

三十分钟学会Shell(下)

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

diskindom的博客 388

嵌入式工程师必学(9):USB 3.0协议理解

USB3.0和USB2.0相比,在线缆上从4根线(Vbus、GND、D+、D-)变为了8根线(Vbus、GND、D+、D-、SSRX+\SSRX-\SSTX+\SSTX-),可见增加的4根线都是和超速相关的,新增加的超速有两类,分别为:超速Gen1(5.0Gbps),超速+Gen2(10Gbps),还兼容USB2.0的3类速率:low-speed(1.5Mbps),full-speed(12Mbps),andhigh-speed(480Mbps)。从设计可以看出,USB3....

码农17年的博客 1万+

三十分钟学会shell

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

newbietao的博客 624

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

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

Shell脚本编程30分钟入门

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

Add小兵的博客 380

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

三十分钟学会AWK

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

liuwei0376的专栏 443

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【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、付费专栏及课程。

余额充值