实用 shell 命令
2019-06-29 本文已影响0人
风之化身呀
全局变量
- 当前目录和时间
PWD=$(pwd) //当前目录
date=$(date) //当前时间
- 当前文件dirname和basename
dir=$(dirname $0)
base=$(dirname $0)
文件操作
- 判断文件(或者目录)是否存在
if [[ -e file ]] // 是否存在
if [[ -d file ]] // 是否是目录
if [[ -f file ]] // 是否是文件
- 文件内容增删改查 sed
sed [选项] [命令] ,
常用选项:
-n 只有经过sed特殊处理的那一行才输出
-i 直接修改读取的文件内容,而不是输出到终端
-r 支持正则表达式
常用命令:
a 新增行 ,当前行之后
i 插入行,当前行之前
c 整体取代
s 部分替换
d 删除
p 打印
sed -i "" "1,2d" file // 直接删除1-2行,不备份
sed -i ".bak" "1,2d" file // 直接删除1-2行,不备份
sed -i "" '1,3a drink tea' ab.txt // 在第一行到第三行后增加字符串"drink tea",不备份
sed -i "" '1,2c Hi' ab.txt // 把ab.txt的第一行到第二行替换为Hi,不备份
sed -i "" 's/ruby//g' ab.txt // 把全部的ruby替换为空,即删除ruby字符串,不备份
- 查找并遍历文件
file=$(find ./src -name '*.js' ! -name '*.story.js'); // ! 表示排除以.story.js的文件
for loop in $file
do
command
done
- 字符串操作
// 写内容到文件
echo -e "string\n" > file // -e 表示识别字符串中的特殊字符,会覆盖file内容
echo -e "string\n" >> file // -e 表示识别字符串中的特殊字符,不会覆盖file内容,而是追加
// 截取字符串
var='/abc/def/a.js'
echo ${var#*\/} // 从左往右,取第一个/开头的右边部分,结果为:abc/def/a.js
echo ${var##*\/} // 从右往左,取第一个/开头的右边部分,结果为:a.js
echo ${var%\/*} // 从右往左,取第一个/开头的左边部分,结果为:/abc/def
echo ${var%%\/*} // 从左往右,取第一个/开头的左边部分,结果为:
echo ${var:1:3} // 取1,3位,结果为:abc
// 拼接字符串
var='a'
var2='b'
echo "$var:$var2" // a:b
- 命令行快捷操作
ctrl + a // 移动到行首
ctrl + e // 移动到行尾
ctrl + u // 删除鼠标所在位置到行首之间所有内容
ctrl + k // 删除鼠标所在位置到行尾之间所有内容
易错点
- 变量定义不能有空格
name="test" // 等号必须紧邻name,不能有空格
- 条件控制,中括号有空格
if [[ $a ]];then
command
else
command
fi
if [[ ]];then
command
elif [[ ]];then
command
else
command
fi
- 交互读取
read -p "Input Component Dirctory Name: " name
echo "$name"