当前路径
CURR_DIR=$(cd "$(dirname $0)"; pwd)
{str}应用
{str#*/}
echo ${str#*/} 删除第一个/及其左边的数据
{str##*/}
echo ${str##*/} 删除最后一个/及其左边的数据
{str%/*}
echo ${str%/*} 删除最后一个/及其右边的数据
{str%%/*}
echo ${str%%/*} 删除第一个/及其右边的
记忆方法
键盘上#在$之前,%在$之后,所有,#表示左边,%表示右边,
单个*表示最少匹配,**表示最多匹配
{str:n1:n2}
${str:0:5} 从第0个字符之后取5个
${str:5:6} 从第5个字符之后取6个
{str/cisco/h3c}
${str/cisco/h3c} 将第一个cisco替换为h3c
${str//:/-} 将所有的:替换为-
{#str}
${#str} 计算str的长度
{!}的功能
#例子:
#!/bin/sh
a=123
b=a
echo ${b}
echo ${!b}
取awk中的最后一个域
ls `pwd`/csv/* | awk -F '/' '{print $NF}'
awk中的if语句
语法:
awk -F ' ' '{if(NR==1) {cols=$1} else{cols=cols","$1}} END{print cols}
例子:
cat cols_info | awk -F ' ' '{if(NR==1) {cols=$1} else{cols=cols","$1}} END{print cols}
awk中传递shell变量
## '${xy}'是变量
echo $item | awk -F ',' '{print "'${xy}' "$0}'
传递转义字符
echo $item | awk -F ',' '{print "\t\t"$0}'
sed传递shell变量
语法:
sed -i 's/需替换内容/'"${变量名}"'/g' pgExpInsertSql.tmp
注意: 替换的变量写法规范 单引号+双引号+tab+双引号+单引号
例子:
sed -i 's/pg_insert_sql/'"${tab}"'/g' pgExpInsertSql.tmp
sed匹配任意字符
匹配任意字母,后跟任意字母的0次或多次重复,并以ing结尾,模式为/ . * ing/。可以使用 这个模式查询以ing结尾的任意单词。
sed -n '/.*ing/'p quote.txt
tr替换 [ 或 ]
语法:
echo ‘ | tr '[' '+'
例子:
echo $item | tr '[' '+' | sed 's/+//g'
查看物理内存的信息
查看总值
free -m | grep Mem | awk '{print $2}'
查看已使用的值
free -m | grep Mem | awk '{print $3}'
查看文件夹的大小
du –sh 全路径文件夹的名字
查看各个分区的使用情况
df –h
列出分区
fdisk –l
别名的使用
定义
alias 别名='命令语句'
例子
alias mkdir_day='mkdir `date +%Y%m%d`'
alias cd_day='cd `date +%Y%m%d`'
使用
和ls一样的使用方法
取消别名
unalias 别名
修改系统时间
修改年月日
Date –s 20150808
修改具体时间
Date –s 08:15:00
修改年月日时分秒
date -s "20150928 16:14:00"
获取格式化时间
date +"%Y%m%d %H:%M:%S"
{}的运用
创建log,ctl,etc三个文件夹
mkdir /home/gploader/{log,ctl,etc}/
split的运用
语法:
split -a 10 -d -l 100000 原始文件名 目标文件的前半部分(后半部分会自动生成)
解释:
-a 10 表示后缀长度为10
-d 表示后缀用数字表示
-l 10000 表示将文件按每10000行记录切分成n个文件
例子:
split -a 10 -d -l 100000 bs.bcp INDEXLEVEL_1_1_STATICSITE_1_
判断文件是否存在
tmp=”文件的路径”
if [ -f $tmp ];then
echo "存在"
else
echo "不存在!!"
exit;
fi
判断字符串是否相等
if [ "${res}" == "${res2}" ];then
echo "相等"
else
echo "不相等"
exit
fi
显示指定字符串的颜色
语法:
echo –e "\e[1;31m test \e[0m"
参数说明:
重置0,黑色30,红色31,绿色32,黄色33,蓝色34,洋红35,青色36,白色37
函数的传参
函数定义:
function func()
{
echo $1
echo $2
…
}
函数调用:
func 参数1 参数2 …
显示结果:
Nihao
遍历文件
while read item
do
echo "$item begin "
done < 文件
FOR循环使用
for((i=0;i<10000;i++));do
cat mode.bcp >> 1_1_1_trappers_1_1.bcp;
done;
if分支中and和or的使用
if分支中and的使用
if [ "$area1"x == "create--table"x -a "$area3"x == "("x ]
then
echo "hello"
fi
if分支中or的使用
if [ "$area1"x == "create--table"x -o "$area3"x == "("x ]
then
echo "hello"
fi
if中字符串的比较
字符串相等为真
if [ $str = $str2 ];then
echo "hello"
fi
字符串不等为真
if [ $str != $str2 ];then
echo "hello"
fi
字符串长度大于0时为真
if [ -n $str];then
echo "hello"
fi
字符串长度为0时为真
if [ -z $str ];then
echo "hello"
fi
字符串非空时为真
if[ $str ];then
echo "hello"
fi
if中数字的比较
数字相等时为真
if[ $int1 –eq $int2 ];then
echo "hello"
fi
数字不等时为真
if[ $int1 –ne $int2 ];then
echo "hello"
fi
# int1大于int2时为真
if[ $int1 –gt $int2 ];then
echo "hello"
fi
# int1大于等于int2时为真
if[ $int1 –ge $int2 ];then
echo "hello"
fi
# int1小于int2时为真
if[ $int1 –lt $int2 ];then
echo "hello"
fi
# int1小于等于int2时为真
if[ $int1 –le $int2 ];then
echo "hello"
fi
if中文件的比较
文件可读时为真
if[ -r $file ];then
echo "hello"
fi
文件可写时为真
if[ -w $file ];then
echo "hello"
fi
文件可执行时为真
if[ -x $file ];then
echo "hello"
fi
文件为正规文件时为真
if[ -f $file ];then
echo "hello"
fi
文件为目录时为真
if[ -d $file ];then
echo "hello"
fi
文件大小非0时为真
if[ -s $file ];then
echo "hello"
fi
数字的加法减法
expr方法
h=`expr $a - 1`
或
h=$(expr 1 + 2)
let方法(“+”中间不能有空格)
let l=$a+1
tar
解压(将delete.tar.gz解压当前的目录下)
tar zxvf delete.tar.gz ./
压缩(将当前目录下的txt压缩成delete.tar.gz)
tar zcvf delete.tar.gz ./*.txt
LINUX退格^H
实现步骤
1.备份
cp ~/.bash_profile ~/.bash_profile.bak
2.将指令写入.bash_profile
echo 'stty erase ^H' >> ~/.bash_profile
3.使文件在系统中生效
source ~/.bash_profile
查找文件或目录
语法:
locate 查找内容
注意:
*表示任意字符
?表示一个字符
实现逻辑:
在一个保存了硬盘上目录结构及文件名的数据库中查找,也是因为这个原因对于刚新增,修改,删除的文件和目录,locate可能无法查到,这时需要使用updatedb更新数据库后,就可以查找了
find查找命令
查找/share目录以及子目录下以”D”和”M”开头的文件或目录,”-o”表示前后两个条件中满足一个就显示
find /share –name D* -o M*
查找/boot目录以及子目录中所有以”.conf”结尾的文件,并把这些文件复制到/tmp目录
find /boot –name *.conf –exec cp {} /tmp \;
查看文件的行数
cat 文件名 | wc –l
查看文件的大小
du –sh 文件名
模糊匹配出文件,并打包成tar包
方法
tar zcvf 名字.tar.gz $(grep -l "模糊匹配内容" 模糊匹配的文件)
例子
tar zcvf tr.tar.gz $(grep -l "#" *)
vim配置文件(vimrc)设定
描述
vimrc文件是vim环境设置文件。整体的vim设置在/etc/vimrc文件中。不建议修改/etc/vimrc文件,每个用户可以在用户根目录中设置vim,新建~/.vimrc
常用配置:
:set all 查看所有选项
:set nu/nonu 显示行数
:set wrap/nowrap 是否换行
:set hlsearch/nohlsearch 搜索是否高亮显示
:set autoindent/noautoindent 是否自动缩排
:syntax on
:syntax off 程序语法开关
:set bg=dark 显示颜色色调
:set bg=light 显示颜色色调
:set tabstop=4 tab为4个空格
tee命令
描述:
正确的和错误的执行打印在控制台的信息追加一份到文件中
命令:
[command] 2>&1 | tee -a [file]
例子:
echo hello 2>&1 | tee -a 1.log
linux下字符编码的转换
将gbk格式的文件转成utf-8格式
iconv -f gbk -t utf-8 "源文件" -o "目标文件"
将utf-8格式的文件转成gbk格式
iconv -f gbk -t utf-8 "源文件" -o "目标文件"
文档信息
- 本文作者:fei
- 本文链接:https://ayee1616166.github.io/2020/09/07/shell-FAQ/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)