精华内容
下载资源
问答
  • 主要介绍了Linux Shell脚本系列教程(二):终端打印命令详解,本文着重讲解了echo终端打印、printf终端打印两个打印出输出命令,需要的朋友可以参考下
  • 在编写脚本函数时,我们有时候会用到很多特殊的命令,但有时我们不确定这些命令是否存在,所以这就需要我们在使用这些命令时先判断这些命令是否存在,在linux里面,which命令可以判断一个可执行命令是否存在,如果...

    Linux shell脚本判断命令是否存在

    在编写脚本函数时,我们有时候会用到很多特殊的命令,但有时我们不确定这些命令是否存在,所以这就需要我们在使用这些命令时先判断这些命令是否存在,在linux里面,which命令可以判断一个可执行命令是否存在,如果存在它将会打印出可执行命令的绝对路径,不存在啥也不会打印。

    在Linux Shell中有几个特殊的变量,其中$?表示上次命令的执行结果,通常上次命令执行成功返回0,失败返回1。

    我们可以在脚本函数里面使用下面的代码片段:

      which kkk
      if [ "$?" -ne 0 ]; then
        echo"kkk command not found."
      fi
    

    上面的代码片段判断命令kkk是否存在,不存在可以直接结束脚本或者安装命令,存在继续下面的操作。这样就可以在脚本函数里面判断命令是否存在。

    展开全文
  • 打印第n行到最后一行的内容sed -n ‘1673523, $p’ bs.gi.log > /home/work/qhl/bs.gi.log 打印匹配abc的行到最后一行的内容。sed -n ‘/abc/,$p’ file.txt注意是单引号 匹配特定字符串1echo $line | sed 's/...

    sed用法

    1. 打印第n行到最后一行的内容
      sed -n ‘1673523, $p’ bs.gi.log > /home/work/qhl/bs.gi.log

    2. 打印匹配abc的行到最后一行的内容。
      sed -n ‘/abc/,$p’ file.txt
      注意是单引号

    3. 匹配特定字符串
      1
      echo $line | sed 's/pattern//g'

    eg

    1
    echo 'DB_TYPE_ARR1: rts-weibo:0.80, dnews-weibo:0.80' |grep DB_TYPE_ARR | sed 's/DB_TYPE_ARR//' | sed 's/:[0-9].[0-9]\+//g'

    注意,g是全部替换的意思

    1. 替换换行
      1
      sed ':a;N;$!ba;s/\n/ /g'

    示例追加:

    1
    2
    $ echo -e "1\n2" | sed ':a;N;$!ba;s/\n/ /g'
    1 2

    1. 替换某个字符串
      将某个文件中的jack字符串替换为tom

      1
      sed -i "s/jack/tom/g" test.txt
    2. 如果替换字符串中有”/“的替换
      要使用#来替换

      1
      sed -i 's#origin/string#newstring#g'file_name

    eg 如果一个路径是data/path/abc,现在要将此路径换成一个字符串cde

    1
    sed -i 's#data/path/abc#cde#g' file_name

    shell 10进制转16进制

    1
    echo 10 | awk '{printf ("%x\n", $0)}'

    tar 用法

    1. 打包排除某些文件或文件夹
      tar -zcvf test.tar.gz -X exclude.list test/
      其中exclude.list里面包含了那些你不想要的文件或是文件夹
      tar排除某些文件或文件夹

    字符串前面补0

    start=printf "%02d" "$i"

    shell for循环

    for ((i=0; i<60; i++));
    do
    echo $i;
    done

    vim配置

    vim配置显示中文

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    syntax on
    filetype indent plugin on
    set modeline
    set tabstop=4
    set expandtab
    set softtabstop=4
    set shiftwidth=4
    set nonumber
    set cmdheight=1
    set laststatus=2
    set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1
    set enc=utf8
    set fencs=utf8,gbk,gb2312,gb18030
    map <F4> <Esc>:%!python -m json.tool<CR>
    set number
    set expandtab ts=4 sw=4 sts=4 tw=100

    copy文件

    1
    rsync -avnL twemproxy --exclude=twemproxy/log work@host.com:/home/work/scp_tmp

    -avnL: 显示哪些要被copy,但是实际上并未执行copy,-avL是真的copy

    随机数生成

    使用系统的 $RANDOM 变量

    1
    echo $RANDOM

    $RANDOM 的范围是 [0, 32767]

    • 想生成2~10范围之间的随机数
      1
      echo $(($RANDOM%9+2))

    获取函数的返回值

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/bash
    function test() {
    RET_VALUE=15
    res=17
    return 1
    }

    function test1() {
    test
    echo ${RET_VALUE}
    echo ${res}
    }

    test1

    如上代码会输出 15,17. 即通过全局变量的方式来获取函数的返回值

    统计文件的大小

    1
    du * -csh

    awk用法

    awk 分割之后打印所有的列

    1
    awk 'BEGIN{RS=""}{for(a=1;a<=NF;a++) print $a}' connext.txt

    查看进程系统运行时间

    1
    ps -eo pid,lstart,etime,cmd | grep nginx

    杀进程吐core

    1
    kill -4 pid

    kill -l 可以列出所有的数字信号代表的含义。

    nc 命令

    nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具

    nc的作用

    • (1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口

    • (2)端口的扫描,nc可以作为client发起TCP或UDP连接

    • (3)机器之间传输文件

    • (4)机器之间网络测速

    eg:开启http服务监听12345端口

    1
    nc -l -p 12345

    挂在分区,mount,umount分区

    1. 查看已挂载分区和文件系统类型
      1
      df -T

    Filesystem Type 1K-blocks Used Available Use% Mounted on
    /dev/sda1 ext4 20642428 3698868 15894984 19% /
    tmpfs tmpfs 32947160 0 32947160 0% /dev/shm

    1. 格式化分区

      1
      sudo mkfs -t ext4 /dev/sde1
    2. 挂载分区

      1
      sudo mount -t ext4 /dev/sde1 /home/ssd1/

    grep 命令

    grep 正则某些字段,并且把其输出为同一行

    有如下数据

    1
    2
    3
    4
    id=13 name=xiaoming age=35
    id=15 name=zhangsan age=33
    id=17 name=lisi age=31
    id=45 name=wangwu age=25

    1. 把grep出的两行合并为1行
      1
      grep -oP "(id=\d+)|(name=.+? )" info.txt

    输出如下

    1
    2
    3
    4
    5
    6
    7
    8
    id=13
    name=xiaoming
    id=15
    name=zhangsan
    id=17
    name=lisi
    id=45
    name=wangwu

    如下命令可以让其输出为一行数据

    1
    grep -oP "(id=\d+)|(name=.+? )" info.txt | sed 'N; s/\n/ /g'

    输出如下

    1
    2
    3
    4
    id=13 name=xiaoming
    id=15 name=zhangsan
    id=17 name=lisi
    id=45 name=wangwu

    1. 把grep出的三行合并为1行
      命令
      1
      grep -oP "(id=\d+)|(name=.+? )|(age=\d+)" info.txt

    输出

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    id=13
    name=xiaoming
    age=35
    id=15
    name=zhangsan
    age=33
    id=17
    name=lisi
    age=31
    id=45
    name=wangwu
    age=25

    命令

    1
    grep -oP "(id=\d+)|(name=.+? )|(age=\d+)" info.txt | sed 'N;N;s/\n/ /g'

    输出

    1
    2
    3
    4
    id=13 name=xiaoming  age=35
    id=15 name=zhangsan age=33
    id=17 name=lisi age=31
    id=45 name=wangwu age=2

    也可以用 ‘\t’ 来替换

    1
    grep -oP "(id=\d+)|(name=.+? )|(age=\d+)" info.txt | sed 'N;N;s/\n/\t/g

    取出某个字符串后面的字符

    Can grep output only specified groupings that match?
    假设有如下文件,想取出foobar后面的字符串

    1
    2
    3
    4
    5
    # file: 'test.txt'
    foobar bash 1
    bash
    foobar happy
    foobar

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    sed -n "s/^.*foobar\s*\(\S*\).*$/\1/p"

    -n suppress printing
    s substitute
    ^.* anything before foobar
    foobar initial search match
    \s* any white space character (space)
    \( start capture group
    \S* capture any non-white space character (word)
    \) end capture group
    .*$ anything after the capture group
    \1 substitute everything with the 1st capture group
    p print it

    好的参考资料

    展开全文
  • -v一边执行脚本,一边将执行过的脚本命令打印到标准输出端 -x提供跟踪执行信息,将执行的每一条命令和结果一次打印出来 这应该就像C语言的gdb一样有用吧,有助于检查错误 使用这些选项有三种方法 1.在命令行提供参数...

    shell脚本的三种调试方法
    -n 读一遍脚本中的命令但不执行,用来检查脚本中的语法错误
    -v 一边执行脚本,一边将执行过的脚本命令打印到标准输出端
    -x 提供跟踪执行信息,将执行的每一条命令和结果一次打印出来
    这应该就像C语言的gdb一样有用吧,有助于检查错误
    使用这些选项有三种方法
    1.在命令行提供参数:$sh -x script.sh
    2.脚本开头提供参数:#!/bin/sh -x
    3.在脚本中用set命令启用or禁用参数:其中set -x表启用,set +x表禁用

    另:在写脚本的时候,需特别注意添加空格或换行或分号
    eg   text命令:  $[ 5 -lt 10 ]左方括号后须有空格,右方括号前也须有空格
            shell脚本中函数定义: foo() {后须有空格或换行
            shell脚本中,若同一行内写有两条命令须加分号
    与C语言不同的是,shell脚本中,返回值0表真,1表假

    展开全文
  • linux shell脚本打印当前执行的命令

    千次阅读 2012-08-15 17:19:32
    http://serverfault.com/questions/16204/how-to-make-bash-scripts-print-out-every-command-before-it-executes   很简单,如下脚本: #!/bin/bash set x ... 即可完成所执行命令打印。...

    http://serverfault.com/questions/16204/how-to-make-bash-scripts-print-out-every-command-before-it-executes

     

    很简单,如下脚本:

    #!/bin/bash
    set x
    ls

     即可完成所执行命令的打印。

    展开全文
  • linux shell常用命令

    2012-05-25 14:29:27
     虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令。这些命令通常是用来进行文件和文字操作的。  常用命令语法及功能  echo "some text": 将文字内容打印在屏幕上 ...
  • 3、在使用ls 命令时,用八进制形式显示非打印字符应使用参数( ls -b ) 。 4、在Linux 系统中,用来存放系统所需要的配置文件和子目录的目录是( 根目录)。 5、在Linux 系统中,压缩文件后生成后缀为.gz 文件的命令...
  • linux shell 命令

    千次阅读 2014-05-19 19:28:48
    linux shell 命令 ...Shell 脚本语言加上linux 命令语句就构成了shell程序。优点在于批量处理、不用用户每次手动输入。 bash是shell程序解释器的一种。   常用命令 pwd:print working directory,打印
  • linux/unix shell l脚本调试方法 Shell提供了一些用于调试脚本的选项,如下所示: -n 读一遍脚本中的命令但不执行,用于检查脚本中的语法错误 -v 一边执行脚本,一边将执行过的脚本命令打印到标准错误输出 -x 提供...
  • Linux内建命令 - Shell脚本编程实践

    千次阅读 2020-06-14 23:10:19
    Linux内建命令1.如何确定内建命令:type2.执行程序:“.”(点号)3.别名:aliasalias4.删除别名:unalias5.任务前后台切换:bg、fg、jobs6.改变目录:cd7.声明变量:declare、typeset8.打印字符:echo9.跳出循环:...
  • shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本)。 示例1:依次读取输入的参数并打印参数个数: run.sh: #!/bin/...
  • Linux shell命令

    2015-07-16 20:34:39
    很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类UNIX系统中,日期...
  • grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 Unix的grep家族包括grep...
  • 1、问题我们一般很多时候会需要在ubuntu终端上打印当前运行app的日志,我们一般常见的做法是1)、获取包名打开当前运行的app,然后输入如下命令,然后在第一行TASK后面的就可以看到包名adb shell dumpsys activity top2...
  • 介绍 一句话说明shell脚本是个啥 shell脚本就是将多个shell指令汇集...右边就是最简单的一个shell脚本 , 功能是打印出"Hello World 左边就是它对应的一个程序结构 ,依次是 shell版本声明 注释部分声明 环境变量声明 ...
  • 打印单个文件的内容: $ cat file.txt This is a line inside file.txt This is the second line inside file.txt 打印多个文件的内容: $ cat one.txt two.txt This is line from one.txt This is line from two.....
  • awk -F :’{print $1,$4}’ :使用‘:’来分割这一行,把这一行的第一第四个域打印出来 。 详细介绍: AWK命令介绍 awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行...
  • Shell 脚本是包含一系列命令的文本本当;读取执行该文本文档就可以执行文档里面的命令; 常用于执行批量事务处理、重复性操作、自动化运维、定时执行任务等 编写一个简单 Shell 脚本 1、创建 Shell 脚本文档 vi ...
  • Linux Shell脚本编程--grep命令详解

    万次阅读 2013-08-07 00:39:18
    grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 Unix的grep家族包括grep、...
  • :使用‘:’来分割这一行,把这一行的第一第四个域打印出来 。 &nbsp; &nbsp; 详细介绍: AWK命令介绍 &nbsp; awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,a...
  • Linux shell脚本中shift

    2019-10-07 18:36:58
    Linux shell脚本中shift的用法说明 shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本)。 示例1:依次读取...
  • 一.三角形正方形练习1.打印三角形,方法一,正则表达式方法二,循环嵌套i控制行j控制打印符号2....查找前10自己常用的命令三.批量创建用户脚本使用选取8位随机数做密码,完成后将帐号密码存入us...
  • Linux Shell脚本入门--grep命令详解

    千次阅读 2016-11-09 10:44:06
    grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 Unix的grep家族包括...
  • 当要查看上千行的大文件时,我们可不会用cat命令把整个文件内容给打印出来,相反,我们可能只需要看文件的一小部分地内容(例如文件的前十行和后十行),我们也有可能需要打印出来前n行或后n行,也有可能打印除了前n行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 493
精华内容 197
关键字:

linuxshell打印命令脚本

linux 订阅