一文懂shell命令
0一、shell解释器使用优先级别
-
一、显示指定的解释器:
/bin/bash ./first.sh
python -
二、脚本文件首行指定默认:
./first.sh
shell#!/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/