精华内容
下载资源
问答
  • 10小时全掌握Linux下shell编程

    千人学习 2018-07-13 14:50:33
    从没上过课的学渣 学了还不会的学弱 想学懂的学霸 10小时全掌握Linux下shell编程 工作、面试全没问题。
  • linux 下shell中if的“-e,-d,-f”是什么意思

    万次阅读 多人点赞 2015-10-20 11:14:48
    -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真 -L filename 如果 filename为符号链接,则为真 -r filename 如果 filename可读,则...
    
     

    文件表达式
    -e filename 如果 filename存在,则为真
    -d filename 如果 filename为目录,则为真 
    -f filename 如果 filename为常规文件,则为真
    -L filename 如果 filename为符号链接,则为真
    -r filename 如果 filename可读,则为真 
    -w filename 如果 filename可写,则为真 
    -x filename 如果 filename可执行,则为真
    -s filename 如果文件长度不为0,则为真
    -h filename 如果文件是软链接,则为真
    filename1 -nt filename2 如果 filename1比 filename2新,则为真。
    filename1 -ot filename2 如果 filename1比 filename2旧,则为真。


    整数变量表达式
    -eq 等于
    -ne 不等于
    -gt 大于
    -ge 大于等于
    -lt 小于
    -le 小于等于


    字符串变量表达式
    If  [ $a = $b ]                 如果string1等于string2,则为真
                                    字符串允许使用赋值号做等号
    if  [ $string1 !=  $string2 ]   如果string1不等于string2,则为真       
    if  [ -n $string  ]             如果string 非空(非0),返回0(true)  
    if  [ -z $string  ]             如果string 为空,则为真
    if  [ $sting ]                  如果string 非空,返回0 (和-n类似) 


        逻辑非 !                   条件表达式的相反
    if [ ! 表达式 ]
    if [ ! -d $num ]               如果不存在目录$num


        逻辑与 –a                   条件表达式的并列
    if [ 表达式1  –a  表达式2 ]


        逻辑或 -o                   条件表达式的或
    if [ 表达式1  –o 表达式2 ]

     

    展开全文
  • linux下shell编程

    千次阅读 2020-08-23 16:10:31
    shell】: #! /bin/bash //shell脚本第一行以#!开头,指定脚本运行环境 #Display a line //以#开头的行是注释 echo "hello world!" //echo命令把其参数传递给标准输出,它在最后会自动加上一个换行符,每个代码段完...

    【shell】:
    #! /bin/bash         //shell脚本第一行以#!开头,指定脚本运行环境
    #Display a line     //以#开头的行是注释

    echo "hello world!"  //echo命令把其参数传递给标准输出,它在最后会自动加上一个换行符,每个代码段完后,后面没有分号

    变量和运算符:
    #! /bin/bash
    log="monday"    //shell中使用变量不需要事先声明,=两边不能有空格(赋值)
    echo $log       //shell碰到带有$的变量时会自动将其替换为变量的值


    想输出$字符时,就要用到\$转义符号
    shell提供了花括号{}来限定一个变量的开始和结束(紧跟变量输出字母后缀时)
    (shell):
    #! /bin/bash
    word="big"
    echo "\$word is ${word}er""

    bash中的引号:
    双引号:阻止shell对大多数特殊字符(例如#)进行解释。但$ ` "仍保持其特殊的含义
    单引号:阻止shell对所有字符进行解释
    倒引号:当用倒引号括起一个shell命令时,这个命令将会被执行,执行后的输出结果将作为这个表达式的值。倒引号中的特殊字符一般都被解释。
    (shell):
    #! /bin/bash
    log=Saturday

    echo "Today is $log"    //双引号会对其中的$字符进行解释
    echo 'Today is $log'    //单引号不会对特殊字符进行解释
    echo "Today is 'date'"  //倒引号会运行其中的命令,并把命令输出作为最终结果


    脚本执行命令和控制语句:
    if语句(shell):
    #!/bin/bash
    echo "Enter password:"
    read password           //读密码,此行不能掉

    if [ "$password" = "mypassword" ] //注意空格
    then
       echo "welcome!!"
    fi                               //fi为if的结束标志


    case语句:case用于在一系列模式中匹配某个变量的值

    条件测试:
    if判断的依据:if本身并不执行任何判断。它实际上接受一个程序名作为参数,然后执行这个程序,然后判断程序的返回值。其中test和[]可以对表达式进行测试。
    test和[]可以对三类进行测试:字符串比较,文件测试,数字比较.

    循环语句:
    while(shell):
    #! /bin/bash/
    sum=0
    number=1
    while test $number -le 100        //-le是小于等于,test检测条件是否成立
    do
        sum=$[ $num + $number ]
        let number=$number+1
    done                           //结束符
    echo "The summary is $sum"

    until:直到until后面的条件为真才终止循环,while是后面的条件为真才执行循环。
    (shell):
    #! /bin/bash
    sum=0
    munber=1
    until ! test $number -le 100
    do
         sum=$[ $sum + $number ]
         let number=$number+1
    done                          //结束符

    echo "the summary is $sum"

    for(shell):   
    for i in 1 2 3 4 5 6 7 8 9//或for i in `seq`, ``用于执行命令
    do
        echo $i  //输出每个变量
    done                          //结束符

    (shell):
    #! /bin/bash
    count=0
    for file in `ls`
    do
        if ! [ -d $file ]        //-d用于判断一个文件是否是目录
        then
           let count=$count+1
        fi
    done
    echo "There are $count files"
     

    展开全文
  • Linux下shell脚本实现记录日志

    千次阅读 2019-09-22 10:45:48
    Linux下shell脚本实现记录日志   最近写了shell脚本,有个基于jacoco调用的从指定Tomcat中自动生成覆盖报告文件到指定的Nginx目录中的脚本,Tomcat下有多个项目,这个脚本是后台跑的,而且是开了定时任务跑的。想...

    Linux下shell脚本实现记录日志

      最近写了shell脚本,有个基于jacoco调用的从指定Tomcat中自动生成覆盖报告文件到指定的Nginx目录中的脚本,Tomcat下有多个项目,这个脚本是后台跑的,而且是开了定时任务跑的。想着记录一些日志,方便知道脚本的运行状态,也方便排查。

    shell记录日志的代码

    #!/bin/bash
    #定义日志的根目录
    logDir=/var/log/
    echo $logDir
    #日志路径和文件
    logFileName="$logDir/log.out"  
    #文件大小这里以行数来计算
    fsize=2000000     
    
    #log函数,接收两个参数:level 日志级别,content 日志内容
    #level: INFO ,WARN,ERROR
    #content: log info
    function log(){
      #judge the params,it must 2 params;
       if [ 2 -gt $# ]
       then
         echo  "WARN parameter not correct in log function"
         return;
       fi
       #如果日志的根目录不存在,则应该先创建
       if [ ! -d $logDir ];then
          mkdir -p $logDir
       fi
       #判断日志文件是否存在,不存在则创建
       if [ ! -e "$logFileName" ];then
         touch $logFileName
       fi
       #日志时间
       local curtime
       curtime=`date +"%Y%m%d%H%M%S"`
       #判断日志的大小,然后如果对于指定的行数,则应该备份旧的日志文件,然后创建新的日志文件
       local cursize
       if [ ! -e "$logFileName" ];then
         echo "There is no log file!Not record log to file!"
         return
       fi
       # 计算现有的日志文件的行数
       cursize=`cat $logFileName | wc -c`
       if [ $fsize -lt $cursize ];then
         echo "backup old log file"
         # 备份文件名为:日期.log
         mv $logFileName $curtime".log"
         # 创建新的日志文件
         touch $logFileName
       fi  
       # 打印控制台日志和记录日志到文件
       echo "$curtime $*"
       echo "$curtime $*" | tee -a $logFileName
    }
    
    

    总结

      这个日志文件主要是记录我们在脚本中自己主动输出的日志,对于我们调用其他脚本的日志的错误和信息,该怎么写入到我们自定的日志文件中是个问题。例如:在我们的脚本中执行指定Tomcat的sh startup.sh,启动tomcat时startup.sh报的错,那该怎么打印到我们指定的日志文件了。如果有错误,欢迎大家指正。

    展开全文
  • Linux下Shell重定向

    万次阅读 2012-08-02 16:15:57
    Linux下Shell重定向 分类: Linux系统编程2010-12-24 11:24 795人阅读 评论(0) 收藏 举报 1. 标准输入,标准输出与标准错误输出 Linux下系统打开3个文件,标准输入,标准输出,标准错误输出。 标准...
     

    Linux下Shell重定向

    分类: Linux系统编程 795人阅读 评论(0) 收藏 举报

    1. 标准输入,标准输出与标准错误输出

    Linux下系统打开3个文件,标准输入,标准输出,标准错误输出。

    标准输入:从键盘输入数据,即从键盘读入数据。

    标准输出:把数据输出到终端上。

    标准错误输出:把标准错误输出到终端上。

    默认的标准输入指的是键盘,默认的标准输出与标准错误输出指的是屏幕或者是终端。

    系统为这三个文件分配了文件标识符fd(file descripter).

    在Linux系统下,一切皆是文件,对文件的操作,一般要用到文件标识符。它们的文件标识符,分别为0,1,2.

     

    2. 重定向

    重定向分为输入重定向与输出重定向。

    所谓的输入重定向即输入不从键盘读入,而是从文件输入或其它。

    所谓的输出重定向即不输出到终端上,而是输出到文件中去或其它。

     

    ""<"表示输入重定向运算符,">"表示输出重定向t运算符。

    "<<"这种输入告诉Shell,当前标准输入来自命令行的一对分隔号的中间内容。

    ">>",用">"输出时,如果文件不存在会自动建立一个文件,如果第二次输入时,会覆盖前一次的输入内容,而">>"表示把第二次的输出内容追加到文件中去,而不是覆盖。

     

    3. 下面看一下几个例子

     

    (1)输入重定向

     [root@localhost ~]# wc</etc/inittab
    53 229 1666

     

    wc统计行数,单词数, 字符数

    其中wc的输入来自 /etc/inittab

     


    [root@localhost ~]# wc <<aa
    > 1
    > 11
    > 111
    > aa
    3 3 9

    wc统计分隔符aa之间的内容。

     

    (2)输出重定向

     

     [root@localhost ~]# ps -ef >a.txt   //把进程的信息输出重定向到a.txt文件中去

     [root@localhost ~]# ps -ef> >a.txt //进程信息追加到a.txt的文件中去

     

     

    其实,所谓的输入输出重定向就是不从键盘输入和屏输出。

     

     

    4. Linux下输出重定向的典型分析

     

    (1) a.out > outfile 2>&1
    (2) a.out 2> &1 >outfile

     

    分析:

    0代表标准输入,1代表标准输出,2代表标准错误输出。其中1(即>=1>)可以省略,默认为标准输出。

    (1)首先把a.out重定向到outfile文件中去。然后把 2>&1把标准错误输出重定向到标准输出中去。此时的标准输出已经重定向了,相当于把标准输出与标准错误输出都一起重定向到outfile中去。 &1代表的是标准输出的文件描述符。1一般放在左边表示标准输出重定向到什么位置,而1放在右边是重定向到标准输出中,所以用&区分一下,表示标准输出的文件描述符。2>1表示把标准错误重定向到文件1中去,2>&1则表示标准错误重定向到标准输出中去。

    (2)首先把标准错误输出重定向到标准输出中,此时标准输出还在终端。因此标准错误也在终端。然后标准输出到outfile中去了。而标准错误还是在终端。

     

    因此,(1)表示标准输出与标准错误都到outfile中去了。

             (2)表示标准输出到outfile,但标准错误输出仍然在终端。

     

     

    ls 1>/dev/null 2>/dev/null

    ls >/dev/null  2>&1

     

    /dev/null是一个垃圾箱,是一个无底洞,表示的含义为不显示。

    即标准输出与标准错误输出不显示。

    以上两个命令表示的含义是相同的。

     

    以上是关于Linux下的重定向问题,一定要深刻理解原理。

    展开全文
  • Linux下shell脚本启动jar包

    千次阅读 2019-06-23 16:40:44
    Linux下shell脚本启动jar包 不说废话,直接上图。 这是整个目录结构。直接看脚本。 上面是完整的脚本代码,原理不多说,百度Google都可以。需要注意的地方是以下几点: 第4行的MAIN_CLASS="ls.gatetest....
  • linux下shell脚本实现文件的批量处理

    千次阅读 2019-04-25 14:47:48
    linux下shell脚本实现文件的批量处理说明:1、shell文件创建2、文件编辑注意:3、执行shell文件4、停止正在执行shell文件 说明: 在使用linux虚拟机处理数据的过程中,由于需要处理的文件量较大,并且有大量重复的...
  • Linux下shell脚本中的read命令

    千次阅读 2016-09-01 10:27:09
    Linux下shell脚本中的read命令的作用是从标准输入中读取一行,并把输入行的每个字段的值指定给shell变量,在shell脚本中使用read命令时可以带多个不同的参数。
  • linux下shell 脚本 中windows换行符换成linux换行符 sed -i 's/\r//' filename window下默认是 \r\n linux下是\n unix下是\r posted @ 2018-11-20 15:25 书书数数 ...
  • Linux 下Shell脚本回滚删除数据

    千次阅读 2017-01-05 16:10:57
    Linux 下Shell脚本回滚删除数据 近期公司一直在做一些OA系统的开发,我在里面主要协助帮忙搭建及维护测试环境,由于环境的特殊性,我几乎每天需要对数据进行备份及还原,所以就应用到了一些shell脚本,但是在由于...
  • Linux 下shell的编程详解

    千次阅读 2014-01-22 15:53:07
    由于unix系统的安全性和稳定性,很多ATE 设备都是unix...Linux 下shell的编程详解 *Shell是什么?  任何发明都具有供用户使用的界面。UNIX供用户使用的界面就是Shell(DOS的command熟悉吧,但UNIX的要强大的多)。
  • linux下shell编程总结

    千次阅读 2017-04-30 16:28:27
    linuxshell、bash
  • linux shell 截取字符串的方法总结

    千次阅读 2014-10-27 20:37:58
    总结下linux下shell截取字符串的fangfa
  • 之前用Java写了个在Windows Server服务器上面扫描指定目录下的所有Tomcat服务器并定时...由于Linux下有Shell脚本可以实现此效果,就没有考虑用Java代码写了,下面是Linux下shell脚本监控Tomcat的状态并实现自动启...
  • Linux下Shell编程

    千次阅读 2014-06-05 00:51:49
    Linuxshell编程  1、什么是shell? 当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shell(外壳)的程序。 shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便...
  • Linux 下shell编程

    千次阅读 2015-12-17 18:35:07
    Shell是一个命令解析器,是介于Linux操作系统的内核(kernel)与用户之间的一个绝缘层。shell脚本就是讲各类命令预先放入其中,方便一次性执行的一个程序文件,主要用于方便管理员进行设置或者管理。  序员的角度来看...
  • Linux下Shell脚本的调试

    千次阅读 2017-01-18 23:35:56
    这篇博文是对Debugging Shell Scripts in Linux的翻译,希望能帮助到在Linux下Shell脚本的童鞋。大多数编程语言都有可用的调试工具,调试工具可用在执行程序或脚本的时候让你检查其内部是如何进行的。对于Shell...
  • 如何在linux下shell编写脚本中模拟键盘输入做Docker构建镜像的练习,写了下面这个 Dockerfile 文件,其中 yum install tomcat 执行过程中需要用键盘输入两次字符”y”以便确认选项,Dockerfile 脚本命令如下:FROM ...
  • 最近几天做了一项window下的打包工作,因为每天都要制作安装包,所以要设置一下时间戳,为此研究了一下Windows下bat脚本获取时间和Linux下shell脚本获取时间。 1、Windows下bat脚本获取时间 (1)windows下DOS窗口...
  • linux下shell命令解析器

    千次阅读 2018-11-05 16:35:33
    用户在提示符输入的命令都由shell先解释然后传给linux核心。 当普通用户成功登陆,系统将执行一个称为shell的程序,shell进程提供了命令行的提示符,对普通用户用”$”作提示符,超级用户用”#”作提示符。一旦...
  • Linux下Shell从入门到精通完整版

    千人学习 2017-03-03 13:47:09
    本套课程适用于初学者以及各类运维人员,我们可以通过本次的编程技术学习,明白并掌握企业里面的运维编程脚本,同时掌握企业运维到底要求会什么东西,有哪些是我们必须要掌握的知识。
  • Linux下shell编程示例

    千次阅读 2016-09-30 16:50:25
    Shell是一个命令解析器,是介于Linux操作系统的内核(kernel)与用户之间的一个绝缘层。shell脚本就是讲各类命令预先放入其中,方便一次性执行的一个程序文件,主要用于方便管理员进行系统设置或者管理。  从管理员的...
  • linux下shell命令ls取反

    2020-05-23 22:25:32
    linux下,有时候我们只想保留某个文件中的一个文件,其余的都想删除,怎么快速做到呢? 比如下面的这条。 删除当前目录下所有文件,但要保留文件kahn.bak ls |grep -v 'kahn.bak' |xargs rm -rf
  • Linux下shell命令:ps

    千次阅读 2018-06-21 16:18:34
    最近整理了一下linux下shell命令,为什么要整理呢?因为在十几年的IT工作中总遇到要查看某个命令的用法的问题,早先的处理方式是去百度一下,后来感觉百度查到的内容不太准确和完整,后来就直接去官网查手册,但是...
  • linux下shell脚本学习

    千次阅读 2016-03-25 10:42:24
    Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,...
  • LINUX下SHELL GPIO点灯

    2018-12-18 14:54:44
    摸索一下linux的点灯。 我的代码 #!/bin/sh echo "led run!" echo 36 &gt; /sys/class/gpio/unexport echo 37 &gt; /sys/class/gpio/unexport echo 36 &gt; /sys/class/gpio/export echo...
  • Linux下shell命令:top

    千次阅读 2018-06-28 23:14:53
    最近整理了一下linux下shell命令,为什么要整理呢?因为在十几年的IT工作中总遇到要查看某个命令的用法的问题,早先的处理方式是去百度一下,后来感觉百度查到的内容不太准确和完整,后来就直接去官网查手册,但是...
  • linux下shell的简单实现

    千次阅读 2017-05-11 10:02:50
    我们知道shelllinux下的系统的用户界面,提供了用户与内核实现交互操作的一种接口。它接收用户输入的命令,并把收入到的命令交给内核去执行。也就是说:shell是一个命令解释器,shell还有自己的编程语言用于对命令...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,255
精华内容 12,102
关键字:

linux下shell

linux 订阅