Shell

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#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt{file##/}:删掉最后一个 / 及其左边的字符串:my.file.txt
{file#*.}:删掉第一个 . 及其左边的字符串:file.txt{file##
.}:删掉最后一个 . 及其左边的字符串:txt
{file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3{file%%/}:删掉第一个 / 及其右边的字符串:(空值)
{file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.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 yesterday +%Y-%m-%d) 或者(date -d last-day +%Y-%m-%d)或者
$(date -d "1 days ago" +%Y-%m-%d)

8、Shell数值、字符串比较

整数比较
-eq 等于,如:if [ "a" -eq "b" ]

9、# Linux查看文件编码格式及文件编码转换

10、sed

  1. Sed简介
    sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。
  2. 定址
    可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如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 <<EOF与cat <<-EOF的区别]https://blog.csdn.net/apache0554/article/details/45508631?utm_source=blogxgwz5

22、## [shell中的cat和文件分界符(<<EOF)
https://www.cnblogs.com/jinjiangongzuoshi/p/3679098.html

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=(date "+%Y%m%d%H%M%S") echotime2

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/WebBakNameWEB_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 SQL_PATH/aaa.sql >&LOG_DIR/aaa.log

39、# 判断输入shell脚本的日期格式是否正确

if echo 1 | grep -Eq "[0-9]{4}-[0-9]{2}-[0-9]{2}" && date -d1 +%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) sleep 1 end_time=(date +%s)
cost_time=[end_time-start_time ] echo "time is((cost_time/60))min(($cost_time%60))s"

51、linux shell之数字加减(https://blog.csdn.net/CodeHouse/article/details/78336165
NUM=10
let NUM++
echo {NUM} NUM1=20 let NUM2=NUM+NUM1 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 [[ line =~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=({string//,/ }) for var in{array[@]}
do
echo $var
done

57、获取数组元素
n=${nums[2]}

58、Shell数组追加元素的技巧
https://blog.csdn.net/weixin_44901564/article/details/104552834

输出数组全部元素:echo "{arr[*]}" 数组变量长度:{#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=( ( for el in "{arr[@]}"
do
echo "el" done | sort) )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 2}'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={part01}{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 "i" target_date=(date -d "-""i"" day" +%Y-%m-%d) # 字符串拼接 echo "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 "i" target_date=(date -d "-""i"" day" +%Y-%m-%d) # 字符串拼接 echo "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=(date -d "-""i"" day" +%Y-%m-%d) # 字符串拼接

echo "target_date" /home/aaron/anaconda3/envs/polish/bin/python /home/aaron/polish_main/main_collect.py h12 "target_date"
done

74、

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352

推荐阅读更多精彩内容