一文读懂shell命令

0一、shell解释器使用优先级别

  • 一、显示指定的解释器: /bin/bash ./first.shpython

  • 二、脚本文件首行指定默认:./first.shshell

    #!/bin/bash
  • 三、系统默认bash

0二、shell脚本运行方式

  • 一、显示指定解释器运行: /bin/bash ./first.sh
  • 二、使用默认解释器:./first.sh
  • 三、使用source.运行
    • source ./first.sh
    • . ./first.sh

0三、变量基本定义

shell脚本语言中,值的类型只有一种——字符串!学习

赋值符号两侧绝对不能有空格!网站

bash解释器,在解释一行代码的时候,是按照空格做为命令的边界!spa

  • name=weiwei
  • name='weiwei'
    • 单引号定义的值内部不会帮助咱们作变量值的替换
  • name="weiwei"
    • 双银号定义的值内容会帮助咱们替换变量值

0四、特殊的变量:命令变量

把一个命令的执行结果,做为一个变量使用!
在这里插入图片描述
code

0五、变量取值

  • $变量名
  • ${变量名}
    • 优势:定义了变量名的范围,避免冲突
  • "${变量名}"

0六、删除一个变量

unset 变量名对象

0七、环境变量(全局变量)

一个环境变量,只做用于当前环境(一个交互终端就是一个独立的环境!)blog

环境变量的意义:为程序运行,提供一些参数;经过环境变量,传递一些参数!图片

定义方式:

# 定义的时候使用export修饰
export name=haige

# 先定义后修饰
name=haige
export name

07-一、变量的默认值

${变量名:-默认值}

  • 变量定义了,则使用定义的值
  • 变量未定义,使用默认值
  • 若是变量定义了,可是值为空,使用默认值

${变量名+默认值}

  • 变量必须定义,才能起效果
  • 变量定义了,可是值为空,则强制使用默认值
  • 即便变量定义且有值,忍让强制使用设置的默认值

0八、表达式

运算符和参与运算的对象,组合而成的一个式子:1+2

shell中判断一个表达式是否正确(成功返回0,失败返回1):

  • test 1 == 2
  • [ 1 == 2 ]

08-一、逻辑表达式:

  • &&: 表示而且,等同于python中的and
  • ||:表示或者,等同于python中的or

08-二、文件表达式:

  • [ -f 文件名 ]:判断是不是一个普通文件
  • [ -d 文件名 ]: 判断是不是一个文件夹
  • [ -x 文件名 ]:判断该文件是否有可执行权限

08-三、数值比较运算:

  • [ 1 -eq 2 ]: 相等比较
  • [ 1 -gt 2]: 大于比较
  • [ 1 -lt 2]: 小于比较
  • [ 1 -ne 2 ]: 不等比较
  • [ 1 -ge 2 ]: 大于等于比较
  • [ 1 -le 2 ]: 小于等于比较

08-四、字符串比较:

  • [ str1 = str2 ]: 字符相等
  • [ str1 == str2 ]:字符相等
  • [ str1 != str2 ]: 字符不等

08-五、运算表达式:

不支持浮点数,只支持整数运算;

  • count=$((运算表达式))
  • let count=运算表达式

0九、Linux经常使用的符号

09-一、输出重定向符号

默认的重定向符号,只把标准输出重定向!

  • >: 把原来输出的数据,以覆盖的方式写入文件中;
  • >>:把原来输出的数据,以追加的方式写入文件中;

一、指定标准输出(正常的打印信息)重定向

env 1> data.txt

二、标准出错(异常报错信息)重定向

env 2> data.txt

三、全部程序输出重定向

env > data.txt 2>&1

09-二、管道

做用:把管道左侧指令的标准输出重定向给管道右侧指令的标准输入!

env | grep 过滤词

09-三、执行命令尾部加上&号: sleep 10 &

快捷键ctrl + z

做用:把当前占用终端的程序,挂起放在后台任务中;

  • fg 后台任务序号: 把后台任务从新调回终端前台运行;
  • jobs:查看当前终端的挂起的全部后台任务;

十、黑洞文件/垃圾桶文件

文件位置:/dev/null

十一、经常使用命令

11-一、grep命令查询/检索文件内容

行为:按行检索文件内容,返回结果为命中的行数据;

格式: grep [-cnvr] [检索词] [文件名]

  • -c: 显示匹配到的总行数
  • -n:显示匹配到的行信息和行号
  • -v:取反
  • -r: 若是被检索的文件是一个文件夹,须要加这个参数,对目标文件夹中的文件遍历检索

11-二、sed命令修改文件内容

格式:sed -i 's/原内容/新内容/' 文件名

  • 指定行修改: sed -i '行号s/原内容/新内容/' 文件名
  • 指定列修改: sed -i 's/原内容/新内容/列号' 文件名;列号为"g"表示全部修改:sed -i 's/原内容/新内容/g' 文件名

额外参数:

  • a参数: 指定行下方插入一行sed -i '行号a\新行内容'
  • i参数: 指定行上方插入一行sed -i '行号i\新行内容'
  • d参数: 指定行删除sed -i '行号d'

11-三、awk命令查看文件

按行检索,按空格划分每一列

  • 查看指定awk '{print $1}' awk.txt
  • 查看全部列awk '{print $0}' awk.txt
  • 显示行号awk '{print NR,$1}' awk.txt
  • 指定没列的分割符号awk -F ':' '{print $1,$7}' linshi.txt
  • 指定输出列的链接符号awk 'BEGIN{OFS=":"} {print NR,$0}' awk.txt

11-四、find命令搜索文件

格式:find [路径] [参数] [关键字]

  • -name 按照文件名查找文件。
  • -perm 按照文件权限来查找文件。
  • -user 按照文件属主来查找文件。
  • -group 按照文件所属的组来查找文件。
  • -type 查找某一类型的文件
    • d文件夹
    • f普通文件
  • -size: 文件大小,单位bcwkMG

十二、零零碎碎的

Linux系统有一个概念:一切皆文件

计算机一个程序,一旦运行起来,会有3个输出/输入的方向!

一、标准输出stdout —— 终端屏幕

二、标准输入stdin —— 键盘

三、标准出错stderr —— 终端屏幕

总结

我的记录,新手入门,多多学习,欢迎你们交流探讨!
我的网站: http://106.54.78.238/
song_of _sea的我的网站 http://106.54.78.238/

相关文章
相关标签/搜索