Shell

作者: 无量儿 | 来源:发表于2021-12-06 17:09 被阅读0次

    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、

    相关文章

      网友评论

          本文标题:Shell

          本文链接:https://www.haomeiwen.com/subject/lloknhtx.html