1、字符编码转换 iconv命令
https://blog.csdn.net/weixin_42425141/article/details/80940069
2、ftp 上传下载脚本(亲测成功) ---简版
https://blog.csdn.net/yuchunhai321/article/details/82351089
3、 字符串截取,Shell中的${}、##和%%使用范例
file=/dir1/dir2/dir3/my.file.txt
可以用${ }分别替换得到不同的值:
{file##/}:删掉最后一个 / 及其左边的字符串:my.file.txt
{file##.}:删掉最后一个 . 及其左边的字符串:txt
{file%%/}:删掉第一个 / 及其右边的字符串:(空值)
{file%%.}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
4、ls -l | awk '/^d/ {print $NF}'
打印出当前目录下所包含的文件夹。
ls -l /home/etluser | awk '/^d/ {print $NF}'
可以添加路径
5、## linux shell脚本如果不存在创建文件夹
6、linux shell 中的sleep命令
在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小时)
sleep 1 睡眠1秒
sleep 1s 睡眠1秒
sleep 1m 睡眠1分
sleep 1h 睡眠1小时
7、# [shell脚本实现取当前时间]
2018.09.30
!bin/bash
time4=$(date "+%Y.%m.%d")
echo $time4
前一天时间
(date -d last-day +%Y-%m-%d)或者
$(date -d "1 days ago" +%Y-%m-%d)
8、Shell数值、字符串比较
整数比较
-eq 等于,如:if [ "b" ]
9、# Linux查看文件编码格式及文件编码转换
10、sed
- Sed简介
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。 - 定址
可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定 。
https://www.cnblogs.com/ctaixw/p/5860221.html
11、文件转码
https://www.cnblogs.com/hnrainll/archive/2011/07/22/2113557.html
https://blog.csdn.net/eroswang/article/details/3847304
12、# linux 搜索文件内容并输出命令 grep、-i、-v ^#
grep /bin/grep
grep -iv [指定字条串] [文件]
在文件中搜索字符串匹配的行并输出
-i 不区分大小写 -v 排除指定字符串
grep -i java /etc/profile
grep -v ^# /etc/profile
不显示以#开头的行
13、sed 's/[0-9]//g'是什么意思
去除文本中的所有数字
[0-9]匹配一个数字,
s/A/B/ 将A替换为B
g表示全局替换
14、awk默认分隔符是空格(输出第3列)
awk -F '分隔符' '{print $3 }' 文件名
awk命令之指定多个字符串或特殊符号为分隔符
https://www.imzcy.cn/2040.html
15、深入理解sed中的-n选项和-p选项的用法
https://blog.csdn.net/qq_44714603/article/details/88222931
16、# sed -i命令详解
-i :直接修改读取的文件内容,而不是输出到终端。
17、shell-if表达式(-f,-d,-s,-r,-w,-x,-eq,-ne,-ge,-gt,-le,-lt )
https://blog.csdn.net/liyyzz33/article/details/84836255
文件表达式
if [ -f file ] 如果文件存在
if [ -d … ] 如果目录存在
if [ -s file ] 如果文件存在且非空
if [ -r file ] 如果文件存在且可读
if [ -w file ] 如果文件存在且可写
if [ -x file ] 如果文件存在且可执行
-h filename 如果文件是软链接,则为真
18、# 【Shell】按行读取文件内容
!/bin/bash
while read line
do
echo $line
done < filename(待读取的文件)
19、## shell脚本字符串截取的8种方法
20、# shell脚本中关于日期的操作
21、### [cat <
22、## [shell中的cat和文件分界符(<
https://www.jianshu.com/p/df07d8498fa5
23、在linux下shell脚本中if中用到or怎么写
https://blog.csdn.net/tumblerman/article/details/90385340
-o = or , -a = and
24、# shell脚本----if(数字条件,字符串条件,字符串为空)
25、查看当前文件夹下有多少个文件
ls -l |wc -l
26、# shell脚本实现取当前时间
20180930155515
!bin/bash
time2=time2
27、Shell exit命令:退出当前进程
一般情况下,退出状态为 0 表示成功,退出状态为非 0 表示执行失败(出错)了。
exit 退出状态只能是一个介于 0~255 之间的整数,其中只有 0 表示成功,其它值都表示失败。
28、# Linux shell if [ -n ] 正确使用方法
if [ ! -n "$1" ];then
echo "Missing parameter."
exit 1
else
.....
fi
29、shell逻辑运算的执行规则:
-a、-o、!等同于&&、||、!----------->与、或、非
30、Linux shell中&,&&,|,||的用法
https://www.cnblogs.com/unknown404/p/10355705.html
cmd1 操作符 cmd2 操作符 cmd3 ......
&:除了最后一个cmd,前面的cmd均已后台方式静默执行,执行结果显示在终端上,个别的cmd错误不影响整个命令的执行,全部的cmd同时执行
&&:从左到右顺序执行cmd,个别cmd错误不产生影响
|:各个cmd同时在前台被执行,但是除最后的cmd之外,其余的执行结果不会被显示在终端上
||:从左到右顺序执行cmd,只有左侧的cmd执行出错,右边的cmd才会被执行,同时一旦有cmd被成功执行,整个命令就会结束,返回终端
31、shell 脚本中&和&&的区别
a & b 表示a和b同时运行
a && b表示 a运行成功后再运行b
32、bash shell 清空文件的方法
https://blog.csdn.net/a506681571/article/details/77941982
cat /dev/null > /var/logs/msg.log
或
echo "" > /var/logs/msg.log
33、# vim中跳到第一行和最后一行
gg跳到第一行
shift+g跳到文件最后一行
34、tar打包及打包并压缩
https://blog.51cto.com/13503302/2066430
https://blog.csdn.net/weixin_41649786/article/details/81268819
35、“tar: Removing leading `/’ from member names”的错误
https://blog.csdn.net/liuxiao723846/article/details/53104509
https://blog.csdn.net/qq_43413788/article/details/104545008
压缩:tar -zcPf /backup/WEB_DATA
解压:tar -xzvPf /a/b/x.gz
36、Linux shell脚本自动输入sudo密码
echo "admin" | sudo -S xxx
37、字符串切分
echo ${var:0:5}
38、shell脚本运行hive -f "XXX.sql" 或者impala-shell保存全部运行日志到指定文件
hive -f LOG_DIR/aaa.log
39、# 判断输入shell脚本的日期格式是否正确
if echo 1 +%Y%m%d > /dev/null 2>&1
then :;
else
echo "输入的日期格式不正确,应为yyyy-mm-dd";
exit 1
fi
40、Shell中获取字符串长度的七种方法
https://blog.csdn.net/Jerry_1126/article/details/51835119
利用${#str}来获取字符串的长度
41、Linux Shell日期比较,数值比较和字符串比较及相关
https://blog.csdn.net/helloxiaozhe/article/details/81280095
42、shell脚本中判断上一个命令是否执行成功
if [ $? -ne 0 ]; then
echo "failed"
else
echo "succeed"
fi
43、if [ -z "sss" ]; then
[ -z STRING ] “STRING” 的长度为零则为真。 字符串为空即NULL时为真。
44、Linux常用命令简述--dirname与basename
https://blog.51cto.com/2937761/2090137
[root@liang ~]# dirname /etc/httpd/
/etc
[root@liang ~]# dirname /etc/
/
[root@liang ~]# dirname /etc/httpd/conf/httpd.conf
/etc/httpd/conf
45、# Shell test命令(Shell [])详解,附带所有选项及说明
test 是 Shell 内置命令,用来检测某个条件是否成立。test 通常和 if 语句一起使用,并且大部分 if 语句都依赖 test。
test 命令有很多选项,可以进行数值、字符串和文件三个方面的检测。
Shell test 命令的用法为:
test expression
当 test 判断 expression 成立时,退出状态为 0,否则为非 0 值。
test 命令也可以简写为[]
,它的用法为:
[ expression ]
注意[]
和expression
之间的空格,这两个空格是必须的,否则会导致语法错误。[]
的写法更加简洁,比 test 使用频率高。
46、## shell脚本中小数点的问题
在shell脚本中看到这一行 . ./network-functions ,如果只有一个小数点我是理解的,但在第二个小数据点的前面多了一个空格,然后又出现一个小数点,求学习。谢谢。
格式是这样的 . ./network-functions 小数点 空格 小数点 路径
第一点相当于source 引用,第二个./xxx 表示当前目录下xxx文件,两个点 ../xx 表示父目录
47、Linux Vim 撤销和恢复撤销快捷键
u(小写) undo 的第 1 个字母,功能是撤销最近一次对文本做的修改操作。
Ctrl+R Redo 的第 1 个字母,功能是恢复最近一次所做的撤销操作。
U(大写) 第一次会撤销对一行文本(光标所在行)做过的全部操作,第二次使用该命令会恢复对该行文本做过的所有操作。
48、command-v,判断一个命令是否存在
http://blog.sina.com.cn/s/blog_d9809c3d0102xet2.html
command -v foo >/dev/null 2>&1 || { echo >&2 "I require foo but it's not installed. Aborting."; exit 1; }
49、Shell中冒号的几个作用
https://blog.csdn.net/pahys/article/details/54897856
50、# shell脚本对代码执行时间的计时
start_time=(date +%s)
cost_time=end_time-(((($cost_time%60))s"
51、linux shell之数字加减(https://blog.csdn.net/CodeHouse/article/details/78336165)
NUM=10
let NUM++
echo {NUM2}
52、Perl字符串比较和整数比较的区别详解
https://www.jb51.net/article/122833.htm
字符串比较操作符
操作符 描述
lt 小于
gt 大于
eq 等于
le 小于等于
ge 大于等于
ne 不等于
对比记忆:Shell if 条件判断(https://blog.csdn.net/zhan570556752/article/details/80399154)
字符串判断
[ STRING1 = STRING2 ] 如果两个字符串相同则为真 ;
[ STRING1 != STRING2 ] 如果字符串不相同则为真 ;
53、shell 正则
https://www.jb51.net/article/94354.htm
54、## Shell遍历文件,对每行进行正则匹配
pattern="HeartBeat"
tail -n 5 /home/test/log/log_20150205.log | while read line
do
if [[ pattern ]]
then
echo "Match"
else
echo "No match"
fi
echo $line
done
55、# shell如何取得sql执行的返回值
return_value=$(mysql -u用 -p密码 -h主机 -e "select count(*) from A;")
56、字符串切分
(https://blog.csdn.net/u010003835/article/details/80750003)
string="hello,shell,split,test"
array=({array[@]}
do
echo $var
done
57、获取数组元素
n=${nums[2]}
58、Shell数组追加元素的技巧
https://blog.csdn.net/weixin_44901564/article/details/104552834
输出数组全部元素:echo "{#arr[]}
追加元素:arr[${#arr[]}]=b
59、# shell中echo输出换行的方法
[~]#echo "Hello world.\nHello sea"
Hello world.\nHello sea
[~]#echo -e "Hello world.\nHello sea"
Hello world.
Hello sea
60、按空格切分字符串
str="a b c d e"
arr=($str)
arr[0] is a, arr[1] is b, etc. arr is now an array
61、数组 – 在shell脚本中排序
https://www.jb51.cc/bash/383870.html
arr=( x11 y12 x21 y22 x31 y32)
arr2=( {arr[@]}"
do
echo "echo "${arr2[@]}"
62、sed -i 就是直接对文本文件进行操作的。
(https://www.cnblogs.com/hxing/p/12008354.html)
sed -i 's/原字符串/新字符串/' /home/1.txt
sed -i 's/原字符串/新字符串/g' /home/1.txt
63、Linux shell中2>&1的含义解释
https://blog.csdn.net/zhaominpro/article/details/82630528
64、 grep -i "test" test.txt 搜索出含有“test” 字符串(-i:不区分大小)
https://www.cnblogs.com/lemon-feng/p/11249461.html
65、awk '{print $2}' 这个命令
https://blog.csdn.net/qq_32649581/article/details/85285600
$2:表示第二个字段
print $2 : 打印第二个字段
awk '{print fileName : 一行一行的读取指定的文件, 以空格作为分隔符,打印第二个字段
66、[^0-9]正则的意思
https://zhidao.baidu.com/question/142118234263291525.html
^是匹配字符串bai开始的意思,【0-9】意du思就是只要是zhi范围0-9里的东dao西都要,或者说只要不是数字都不要~
67、深入理解sed中的-n选项和-p选项的用法
https://blog.csdn.net/qq_44714603/article/details/88222931
68、linux 字符串拼接,Shell 字符串拼接的实现示例(https://blog.csdn.net/weixin_28784019/article/details/116634028)
part01="part01"
part02="part02"
str03={part02}
echo ${str03}
69、shell编程中for循环常见三种用法(1-100求和示例)(https://blog.csdn.net/weixin_46329748/article/details/117513841)
!/bin/bash
for ((i = 100; i >= 0; i--)); do
sleep 3s
echo "(date -d "-""target_date"
/home/aaron/anaconda3/envs/polish/bin/python /home/aaron/polish_main/main_process.py "$target_date"
done
70、执行shell脚本出现“let:not found”错误以及解决办法(https://blog.csdn.net/wangruifengrr/article/details/122556049)
https://blog.csdn.net/weixin_47957229/article/details/121544960
71、Linux脚本输出当前时间(https://blog.csdn.net/weixin_44540934/article/details/126935768)
echo $(date +%F)
72、输出当前日期前N天的日期(https://blog.csdn.net/weixin_39756445/article/details/116601729)
for ((i = 100; i >= 0; i--)); do
sleep 3s
echo "(date -d "-""target_date"
/home/aaron/anaconda3/envs/polish/bin/python /home/aaron/polish_main/main_process.py "$target_date"
done
date-d "+1 day" +%Y%m%d //显示前一天的日期
date-d "-1 day" +%Y%m%d //显示后一天的日期
date-d "-1 month" +%Y%m%d //显示上一月的日期
date-d "+1 month" +%Y%m%d //显示下一月的日期
date-d "-1 year" +%Y%m%d //显示前一年的日期
date-d "+1 year" +%Y%m%d //显示下一年的日期
73、字符串转日期,指定日期减一天(https://blog.csdn.net/xiaoping_1988/article/details/78915411)
https://blog.csdn.net/Linuxprobe18/article/details/95449496
!/bin/bash
for ((i = 120; i >= 0; i--)); do
sleep 3s
echo "$i"
dat=date -d "2023-01-01" +%F
target_date=date -d"$i day ago 2022-11-13" +%Y-%m-%d
target_date=i"" day" +%Y-%m-%d) # 字符串拼接
echo "target_date"
done
74、