一文懂shell命令
01、shell解释器使用优先级别
-
1、显示指定的解释器:
/bin/bash ./first.sh -
2、脚本文件首行指定默认:
./first.sh#!/bin/bash -
3、系统默认
02、shell脚本运行方式
- 1、显示指定解释器运行:
/bin/bash ./first.sh - 2、使用默认解释器:
./first.sh - 3、使用
source或.运行source ./first.sh. ./first.sh
03、变量基本定义
shell脚本语言中,值的类型只有一种——字符串!
赋值符号两侧绝对不能有空格!
bash解释器,在解释一行代码的时候,是按照空格作为命令的边界!
name=weiweiname='weiwei'- 单引号定义的值内部不会帮助我们做变量值的替换
name="weiwei"- 双银号定义的值内容会帮助我们替换变量值
04、特殊的变量:命令变量
把一个命令的执行结果,作为一个变量使用!
05、变量取值
$变量名${变量名}- 优点:定义了变量名的范围,避免冲突
"${变量名}"
06、删除一个变量
unset 变量名
07、环境变量(全局变量)
一个环境变量,只作用于当前环境(一个交互终端就是一个独立的环境!)
环境变量的意义:为程序运行,提供一些参数;通过环境变量,传递一些参数!
定义方式:
# 定义的时候使用export修饰
export name=haige
# 先定义后修饰
name=haige
export name
07-1、变量的默认值
${变量名:-默认值}
- 变量定义了,则使用定义的值
- 变量未定义,使用默认值
- 如果变量定义了,但是值为空,使用默认值
${变量名+默认值}
- 变量必须定义,才能起效果
- 变量定义了,但是值为空,则强制使用默认值
- 即使变量定义且有值,忍让强制使用设置的默认值
08、表达式
运算符和参与运算的对象,组合而成的一个式子:1+2
shell中判断一个表达式是否正确(成功返回0,失败返回1):
test 1 == 2[ 1 == 2 ]
08-1、逻辑表达式:
&&: 表示并且,等同于python中的and||:表示或者,等同于python中的or
08-2、文件表达式:
[ -f 文件名 ]:判断是否是一个普通文件[ -d 文件名 ]: 判断是否是一个文件夹[ -x 文件名 ]:判断该文件是否有可执行权限
08-3、数值比较运算:
[ 1 -eq 2 ]: 相等比较[ 1 -gt 2]: 大于比较[ 1 -lt 2]: 小于比较[ 1 -ne 2 ]: 不等比较[ 1 -ge 2 ]: 大于等于比较[ 1 -le 2 ]: 小于等于比较
08-4、字符串比较:
[ str1 = str2 ]: 字符相等[ str1 == str2 ]:字符相等[ str1 != str2 ]: 字符不等
08-5、运算表达式:
不支持浮点数,只支持整数运算;
count=$((运算表达式))let count=运算表达式
09、Linux常用的符号
09-1、输出重定向符号
默认的重定向符号,只把标准输出重定向!
>: 把原来输出的数据,以覆盖的方式写入文件中;>>:把原来输出的数据,以追加的方式写入文件中;
1、指定标准输出(正常的打印信息)重定向
env 1> data.txt
2、标准出错(异常报错信息)重定向
env 2> data.txt
3、所有程序输出重定向
env > data.txt 2>&1
09-2、管道
作用:把管道左侧指令的标准输出重定向给管道右侧指令的标准输入!
env | grep 过滤词
09-3、执行命令尾部加上&号: sleep 10 &
快捷键ctrl + z
作用:把当前占用终端的程序,挂起放在后台任务中;
fg 后台任务序号: 把后台任务重新调回终端前台运行;jobs:查看当前终端的挂起的所有后台任务;
10、黑洞文件/垃圾桶文件
文件位置:/dev/null
11、常用命令
11-1、grep命令查询/检索文件内容
行为:按行检索文件内容,返回结果为命中的行数据;
格式: grep [-cnvr] [检索词] [文件名]
-c: 显示匹配到的总行数-n:显示匹配到的行信息和行号-v:取反-r: 如果被检索的文件是一个文件夹,需要加这个参数,对目标文件夹中的文件遍历检索
11-2、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-3、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-4、find命令搜索文件
格式:find [路径] [参数] [关键字]
-name按照文件名查找文件。-perm按照文件权限来查找文件。-user按照文件属主来查找文件。-group按照文件所属的组来查找文件。-type查找某一类型的文件d文件夹f普通文件
-size: 文件大小,单位bcwkMG
12、零零碎碎的
Linux系统有一个概念:一切皆文件!
计算机一个程序,一旦运行起来,会有3个输出/输入的方向!
1、标准输出stdout —— 终端屏幕
2、标准输入stdin —— 键盘
3、标准出错stderr —— 终端屏幕
总结
个人记录,新手入门,多多学习,欢迎大家交流探讨!
个人网站: http://106.54.78.238/
song_of _sea的个人网站 http://106.54.78.238/
来源:oschina
链接:https://my.oschina.net/u/4392911/blog/4500791