当前位置:首页>Linux>Linux操作系统-shell编程之基础命令

Linux操作系统-shell编程之基础命令

  • 2026-10-11 06:24:29
Linux操作系统-shell编程之基础命令

一、SHELL简介

Linux Shell种类非常多,常见的SHELL如下:

  1. Bourne Shell(/usr/bin/sh或/bin/sh)
  2. Bourne Again Shell(/bin/bash)
  3. C Shell(/usr/bin/csh)
  4. K Shell(/usr/bin/ksh)
  5. Shell for Root(/sbin/sh)

不同的Shell语言的语法有所不同,最常用的shell是Bash,也就是Bourne Again Shell。我们为什么需要shell呢?用户需要操作硬件,硬件是通过内核驱动的,但用户是不能操作内核的,这时shell就起到一个用户和内核之间沟通的桥梁作用。用户可以输入shell命令执行,又可以利用 Shell脚本编程去运行。

Bash架构

二、命令类型

在Linux系统中,命令可以分为两类:内建命令(Built-in Commands)和外部命令(External Commands)。内建命令是由shell本身提供的,而外部命令则是独立的程序,通常存储在文件系统的某个目录下,比如/bin、/usr/bin等。内建命令的执行速度通常比外部命令快,因为它们不需要加载独立的程序。

type: 查询是否为内建命令

示例: type [指令]

三、变量定义

在 Linux Shell 中,变量的本质是字符串。定义变量时,等号两边不能有空格;引用变量时,需要在变量名前加上 变量名称"累加内容,或变量名 或 echo 1、$2…$n 形式表示,其中 $0 为脚本名,$# 为参数个数。特殊变量:由 Shell 内置,不可手动赋值,例如 $$(当前进程 PID)、$?(上一条命令的退出状态)、$* 和 $@(所有参数)。

1、环境变量

常用的环境变量有PATH、HOME、USER、PS1等

PS1: 提示字符的设定

  • \d 日期
  • \H 完整主机名
  • \h 主机名第一段
  • \t 24小时,时分秒
  • \T 12小时,时分秒
  • \A 24小时,时分
  • \@ 12小时,am/pm
  • \u 用户
  • \V bash版本
  • \w 完整工作目录
  • \W 工作目录
  • \# 第几条指令
  • \$ 提示字符

HOME: 用户的家目录

PATH: 命令的查找路径,从前往后查找,如果没有找到,输出“command not found”

USER: 当前用户

2、特殊变量

  • $: 本shell的PID
  • ?: 上一个命令执行的回传值
  • export: 环境变量,示例: export 变量名称

如上图

echo $?  #上一条命令的执行结果成功显示0,非0则表示失败;

echo $0: 表示脚本名称shell.sh;

   $1:表示脚本执行的第一个参数;

   $2:表示脚本执行的第二个参数;

    。。。。。。

 $#: 表示为参数个数;

    $@: 表示所有参数,每个参数是独立的;

    $*:    表示所有参数,所有参数作为一个整体。

    六、变量的输入、数组和声明

    read [-pt] variable

    示例: read -p "please enter yes/no:" -t 30 test

    -p: 给出提示信息

    -t: 设置超时时间

    declare: declare [-aixr] variable

    示例: declare -i sum=100+50+50

    echo ${sum}

    数组: Var[index]=content

    示例:

    var[0]="aa"

    var[1]="bb"

    var[2]="cc"

    echo "{var[1]},: 变量读取

    • &
      : 进程变成后台运行
    • !
      : 逻辑运算非
    • /
      : 目录符号
    • >, >>
      : 输出,>表示覆盖,>>表示追加
    • <, <<
      : 输入
    • ''
      : 单引号内为纯文字
    • ""
      : 双引号内可有变量功能
    • ``
      : 先执行命令
    • ()
      : 子shell起始与结束的组合
    • {}
      : 中间为命令区块的组合
    • 十二、重定向

      实例:

      十三、连续执行多条命令

      十四、管道命令

      |: 前一个命令的输出作为后面命令的输入

      十五、截取命令

            -d:指定分割符号

            -f:指定需要选取的字段

      十六、排序命令

      sort命令用于对文本文件内容进行排序

      -r:逆序排序(降序)。

      -n:按数值进行排序。

      -k 字段:按指定的字段进行排序。该参数可指定多个字段,使用逗号分隔。默认字段分隔符为制表符或空格。

      -t 分隔符:指定字段的分隔符。

      -u:去除重复行,仅保留第一次出现的行。

      -f:忽略大小写进行排序。

      -b:忽略行首的空白字符进行排序。

      -c:检查文件是否已经排好序,如果未排序则输出第一个不符合排序顺序的行。

      -f:忽略大小写进行排序。例如,sort -f file.txt 将忽略行首字母的大小写进行排序。

      -b:忽略行首的空白字符进行排序。

      -c:检查文件是否已经排好序,如果未排序则输出第一个不符合排序顺序的行。

      uniq是Linux中专门用来处理重复行的命令

      -c:在每行前面添加该行在文件中出现的次数;

      -d:仅显示有重复的行;

      -u:仅显示没有重复的行;

      -i:在比较行时忽略字符大小写。

      wc命令用于统计文件中的字节数、字数、行数等

      -l:选项表示只统计行数

      -w:统计单词数

      -c:统计字节数

      举例:统计地址列表中重复次数最多的前10个地址

      十七、其他命令

      本节介绍了一些shell命令的用法,是shell编程的基础,下一节将介绍shell文本处理“四剑客”之一:grep与正则表达式。欢迎关注留言交流。

      • 双向重定向: tee -a file 输出到文件和屏幕

      • 字符转换命令: tr/col/join/paste/expand

      • 分割命令: split

      • cut -d '分隔字符' -f fields filename
      • ;
        : 连续下达多条指令
      • &&
        : 前一条指令执行成功,才能执行后一条指令
      • ||
        : 前一条指令没有执行成功才能执行后一条指令
      • >, >>    # 输出重定向,>表示覆盖,>>表示追加。
      • <, <<    # 输入重定向,< 将‌现有文件的内容‌作为命令的标准输入(stdin),替代键盘输入; <<在命令行中直接定义‌多行文本块‌作为命令的输入,直到遇到指定的结束标记(如 EOF)。
      • 2>, 2>> #2>‌(覆盖模式):将命令执行产生的‌错误信息‌重定向到指定文件。如果文件已存在,会‌清空原内容并覆盖‌;如果文件不存在,则创建新文件; 2>>‌(追加模式):将命令执行产生的‌错误信息‌重定向到指定文件的‌末尾‌。如果文件已存在,内容会‌累加‌而不覆盖;如果文件不存在,则创建新文件。

    最新文章

    随机文章