type
status
date
slug
summary
tags
category
icon
password
Property
Oct 25, 2022 12:31 AM
本文与 @JinghuiDeng 共同编辑完成

Shell命令

关于 $ 的整理

  • 传递参数
    • 在执行脚本时可以传递参数(类似于C的main函数),格式为 $n 其中 n 为数字,例如 $0 为执行的文件名(包含路径), $1 为传递的第一个参数,以此类推。
  • 变量替换(使用定义过的变量)
    • $变量名 建议加上花括号,用于识别变量的边界,如 ${变量名}
  • 命令替换
    • $( ) 等同于 $` ` 与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行
  • 字符串操作(取路径、文件名、后缀)
    • 首先定义一个文件路径作为例子
      表达式
      作用
      结果
      ${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:0:5}
      提取最左边的 5 个字节
      /dir1
      ${file:5:5}
      提取第五个字节右边的 5 个字节
      /dir2
      ${file/dir/path}
      将第一个 dir换为 path
      /path1/dir2/dir3/my.file.txt
      ${file//dir/path}
      将所有 dir换为 path
      /path1/dir2/dir3/my.file.txt
      根据状态为变量赋值
      ${file-my.file.txt}
      $file 没设定,则使用 my.file.txt 作传回值
      空值及非空值不作处理
      ${file:-my.file.txt}
      $file 没有设定或为空值,则使用 my.file.txt 作传回值
      非空值时不作处理
      ${file+my.file.txt}
      $file 设为空值或非空值,均使用 my.file.txt作传回值
      没设定时不作处理
      ${file:+my.file.txt}
      $file 为非空值,则使用my.file.txt 作传回值
      没设定及空值不作处理
      ${file=txt}
      $file 没设定,则回传 txt ,并将 $file 赋值为 txt
      空值及非空值不作处理
      ${file:=txt}
      $file 没设定或空值,则回传 txt ,将 $file 赋值为 txt
      非空值时不作处理
      ${file?my.file.txt}
      $file 没设定,则将 my.file.txt 输出至 STDERR
      空值及非空值不作处理
      ${file:?my.file.txt}
      $file没设定或空值,则将 my.file.txt输出至STDERR
      非空值时不作处理
       
  • 数组
    • 命令
      解释
      结果
      ${A[@]}
      返回数组全部元素
      a b c def
      ${A[*]}
      同上
      a b c def
      ${A[0]}
      返回数组第一个元素
      a
      ${#A[@]}
      返回数组元素总个数
      4
      ${#A[*]}
      同上
      4
      ${#A[3]}
      返回第四个元素的长度,即def的长度
      3
      A[3]=xzy
      则是将第四个组数重新定义为 xyz
       

Kill命令

Linux kill 命令用于删除执行中的程序或工作。
kill 可将指定的信息送至程序。预设的信息为 SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序。程序或工作的编号可利用 ps 指令或 jobs 指令查看。
  • 语法
    • kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
    • 参数说明
      • l <信息编号> 若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
        s <信息名称或编号> 指定要送出的信息。
        [程序] [程序]可以是程序的PID或是PGID,也可以是工作编号。
使用 kill -l 命令列出所有可用信号。
最常用的信号是:
  • 1 (HUP):重新加载进程。
  • 9 (KILL):杀死一个进程。
  • 15 (TERM):正常停止一个进程。
 

输入输出重定向

重定向命令列表如下:
命令
说明
command > file
将输出重定向到 file。
command < file
将输入重定向到 file。
command >> file
将输出以追加的方式重定向到 file。
n > file
将文件描述符为 n 的文件重定向到 file。
n >> file
将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m
将输出文件 m 和 n 合并。
n <& m
将输入文件 m 和 n 合并。
<< tag
将开始标记 tag 和结束标记 tag 之间的内容作为输入。

Linux命令大全

Windows下WSL系统配置研究方向调研