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##/}:删掉最后一个 / 及其左边的字符串: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

  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 <与cat <<-EOF的区别]https://blog.csdn.net/apache0554/article/details/45508631?utm_source=blogxgwz5

22、## [shell中的cat和文件分界符(< 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=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、

你可能感兴趣的:(Shell)