ls | cat -n > out.txt 给输出的信息加行号并导出到out.txt 利用shell生成一个独立的进程 pwd; (cd /bin; ls); pwd; 开启一个子shell,不会影响到当前shell的路径: 1.从输入读取n个字符存入变量variable_name read -n numer_of_chars variable_name ex: read -n 3 var echo $var (2)用无回显的方式读取密码 read -s var (3)显示提示信息 read -…
shell脚本常用技巧 1.获取随机字符串或数字 ~]#echo $RANDOM | md5sum | cut -c 1-6 ~]#openssl rand -base64 4 | cut -c 1-6 ~]#uuidgen | cut -c 1-6 2.获取随机数 ~]#echo $RANDOM | cksum | cut -c 1-6 ~]#openssl rand -base64 4 | chsum | cut -c 1-6 ~]#date +%N | cut -c 1-6 3.自定义颜色…
shell脚本中判断上一个命令是否执行成功 shell中使用符号“$?”来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败.结合if-else语句实现判断上一个命令是否执行成功. 示例如下: if [ $? -ne 0 ]; then echo "failed" else echo "succeed" fi 或者: if [ $? -eq 0 ]; then echo "succeed" else echo "faile…
shell脚本中判断上一个命令是否执行成功  shell中使用符号“$?”来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败.结合if-else语句实现判断上一个命令是否执行成功. 场景:如果clone项目成功,才进行打包工作 示例脚本: echo "clone命令" git clone -b <branchName> <gitAddress> ]; then echo "faild" else echo "succ…
Windows下有软件FindDupFile,可以搜索指定目录及其下子目录,列出所有内容完全相同的文件(文件名可能不同),然后由用户选择删除重复的文件. 然而shell脚本却可以使用几行的命令完成与此相同的工作,借助windows下的shell脚本工具Cygwin,可以实现扫描Windows下的目录,原理简述如下: 1.首先借助find命令扫描文件夹下类型为普通文件的所有文件,find命令的输出是一行一个文件 2.对find找到的所有文件进行MD5校验,校验命令为md5sum files,输出文…
1.使用-x,开启shell脚本的跟踪调试功能 ex:bash -x script.sh or sh -x script.sh 2.使用set -x 和 set +x对脚本进行部分调试(输入中间的内容) #!/bin/bash #filename:debug.sh ..}; do set -x echo $i set +x done echo "script executed" 3.固定格式生成调试信息 注:符号:告诉shell不要进行任何操作 #!/bin/bash function…
shell脚本调试之工具——bashdb http://www.cnblogs.com/itcomputer/p/5011845.html…
情况如下: 我在ubuntu server 14.04 上面安装了gitlab,来托管项目代码.然后想通过gitlab的web hook 功能来做测试服务器代码自动化更新代码功能.现在遇到一个问题:就是我客户端在master分支上面push代码的时候,我测试服务器的代码目录并没有自动更新.我的shell脚本如下: !/bin/bash echo 'haha:::==' >> /tmp/wtz.log cd /srv/www/bfar-ng echo 'my name is gitlab'>…
1. 测试脚本 在当前目录下创建 h1 h2两个文件夹 2. 在脚本所在目录执行脚本 在当前目录下创建了h1 h2两个目录 3. 在其他目录爱=下执行脚本 在其他目录下执行脚本时,在执行脚本所在的目录下创建了 h1 h2两个目录: 脚本所在目录没有创建目录: 4. 建议 脚本中尽量写绝对路径…
邮件相关 发送邮件: #!/usr/bin/python import sys; import smtplib; from email.MIMEText import MIMEText mail_host = sys.argv[] mail_user = sys.argv[] mail_pass = sys.argv[] mail_from = sys.argv[] mail_to = sys.argv[] mail_to_list = mail_to.split(';') mail_subje…
脚本很简单,直接上功能介绍及脚本,可以做模板使用: 记录日志,记录脚本开始执行时间.结束时间 usage 函数,脚本需接参数执行,避免误执行,告诉用户,这个脚本的使用方法 加锁,创建锁文件,脚本不允许多人同时执行,或脚本未执行结束又开始执行,尤其计划任务或数据库备份,避免这种问题 #!/bin/bash ####################################################### # $Version: v1. # $Function: Shell Templa…
文本终端的颜色可以使用“ANSI非常规字符序列”来生成.举例: echo -e "\033[44;37;5m ME \033[0m COOL" 以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符“ME”,然后重新设置屏幕到缺省设置,输出字符 “COOL”.“e”是命令 echo 的一个可选项,它用于激活特殊字符的解析器.“\033”引导非常规字符序列.“m”意味着设置属性然后结束非常规字符序列,这个例子里真正有效的字符是 “44;37;5” 和“0”. 修改“44;37;5”可以生…
输入参数错误时,退格会出现^H,这个时候只要在脚本顶部加一条语句:stty erase ^h就可以了 #!/bin/sh stty erase ^h…
1.使用python快速搭建一个web服务器 访问端口8000 python -m SimpleHTTPServer 2.获取文件大小 stat -c %s $file stat --printf='%s\n' $file wc -c $file 3.多进程管理工具 yum install supervisor -y 4.linux多线程下载工具 yum install axel -y 5.read命令退格问题 #在read命令前使用这个就好了 stty erase ^H…
#!/bin/bash #filename:ifs.sh data="name,sex,rollon,location" oldIFS=$IFS IFS=, for item in $data; do echo Item: $item done #IFS=$oldIFS 设置IFS为,号分隔符 #!/bin/bash #filename:fenge.sh line="root:x:0:0:root:/root:bin/bash" oldIFS=$IFS IFS=&q…
0--stdin标准输入 1--stdout标准输出 2--stderr标准错误 重定向 echo "this is a good idea " > temp.txt temp.txt内容会被首先清空后再输入“this is a good idea” 追加 echo "this is a bad idea " >> temp.txt cat temp.txt 打印退出状态:echo $? ls + 2>out.txt 2输入错误时候,输出到o…
文本aaaaabbbbbcccccddddeeeeefffffkkkkkvvvvnnnnnggggg 希望得到的结果如下:aaaaa|bbbbb|ccccc|ddddeeeee|fffff|kkkkk|vvvvnnnnn|ggggg 匹配要求:希望每5个字符之间插入一个"|",如果该行的字符数量正好是5的倍数,行末就不插入"|"了. 解题如下:[root@localhost zuoye2]# cat fileaaaaabbbbbcccccddddeeeeefffff…
文本aaaaabbbbbcccccdddd eeeeefffffkkkkkvvvv nnnnnggggg 希望得到的结果如下: aaaaa|bbbbb|ccccc|dddd eeeee|fffff|kkkkk|vvvv nnnnn|ggggg 匹配要求:希望每5个字符之间插入一个"|",如果该行的字符数量正好是5的倍数,行末就不插入"|"了. 解题如下: [root@localhost zuoye2]# cat fileaaaaabbbbbcccccddddeeee…
第一种方法用while实现按读取文件.[root@localhost wyb]# cat a.txt 第一行 aaaaaa 第二行 bbbbbb 第三行 cccccc 第四行 dddddd 第五行 eeeeee [root@localhost wyb]# cat anhang.sh #!/bin/bash cat a.txt| while read line do echo $line done [root@localhost wyb]# bash anhang.sh 第一行 aaaaaa 第二…
#!/bin/bash #!当前文件夹下,删除内容相同的重复文件,只保留重复文件中的一个. ls -lS --time-style=long-iso | awk 'BEGIN{ getline;getline; name1=$8;size=$5 } { name2=$8; if( size==$5 ) { "md5sum " name1 | getline;csum1=$1; "md5sum " name2 | getline;csum2=$2; if( csum1…
cat是单词concatenate缩写 echo 'text through stdin' | cat - file.txt 输出:text throgh stdin 和file.txt中的内容: cat -s file:压缩空白行 cat -T file:标记处文件中所有的制表符为^| cat -n line.txt :输出的内容添加行号(不会改变文件的内容的)…
定义函数 function fname() { statements; } 或者 fname() { statements; } 传递参数给函数: fname arg1 arg2; ex: 函数参数定义: fname() { echo $1, $2; echo "$@"; echo "$*"; return 0; } 检测命令是否成功执行 #!/bin/bash #filename:success_test.sh cmd="ls" $cmd ];…
脚本1:需要机器之间免密 ssh-copy-id [-i [identity_file]] [user@]machine #!/bin/bash # ------------------------------------------------------------------------------- # Author: Loya.Chen # Description: Execute commands on multiple remote hosts at the same time.…
在日常系统管理工作中,需要编写脚本来完成特定的功能,编写shell脚本是一个基本功了!在编写的过程中,掌握一些常用的技巧和语法就可以完成大部分功能了,也就是2/8原则 1. 单引号和双引号的区别 单引号与双引号的最大不同在于双引号仍然可以引用变量的内容,但单引号内仅是普通字符,不会作变量的引用,直接输出字符窜.请看如下例子: [root@linux ~]# name=HaHa [root@linux ~]# echo $name HaHa [root@linux ~]# myname="$nam…
常用shell脚本命令 1.显示包含文字aaa的下一行的内容: sed -n '/aaa/{n;p;}' filename 2.删除当前行与下一行的内容: sed -i '/aaa/{N;d;}' filename 3. 删除当前行与下两行的内容: sed -i '/aaa/{N;N;d;}' filename 依次类推,删除三行,则为{N;N;N;d;},分析知:N为next 4.得出以空格为分割的字符串中单词的个数,即统计个数: awk ' { print NF } ' 如显示字符串VALU…
1.命令替换:`` 反向单引号,也称重音符.键盘上和~键在一起的那个键呦,千万不要敲成单引号. A. 使用了``后,shell首先替换输出中``括起来的date命令,然后执行整个输出命令. B.命令替换还可以用于在变量中存储命令输出,如下: 变量ctr将包含当前目录中名字以.txt结尾的文件的计数. 2.expr 大部分shell不支持数字变量,所有变量会被作为字符串.如var=25,变量var中包含的是字符2和字符5组成的字符串,而不是数字25. Expr命令用来评估算术表达式,命令的输出发送…
1 Shell脚本是什么.它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令.作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务. 2 什么是默认登录shell,如何改变指定用户的登录shell 答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的.使用chsh命令可以改变默认的shell.示例如下所示: 3 可以在shell脚本中使用哪些类型的变量?…
[1]交互方式.非交互方式.Shell脚本是什么? 经常与linux打交道,肯定对shell这个词不陌生.不明白shell意思的,可以自行翻译:外壳.去壳. 这个翻译结果怎么可以与计算机系统联系起来呢?看不懂? 为了帮助理解shell这个词,请看下图: 计算机系统,最内层(本质)的是硬件,然后硬件会被系统核心层包住,而在系统核心外层的就是所谓的shell,再然后shell外层的就是我们接触最多且最容易理解的应用程序. shell其实是一个命令解释器,作用是解释用户输入的命令和程序,命令和程序可以…
用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]thenecho "start process....."elseecho "runing....."fi#####processString 表示进程特征字符串,能够查询到唯一进程的特征字符串0表示存在的$? -ne 0 不存在,$? -eq 0 存在 ---------…
⒈为什么要学习Shell编程 1)Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理 2)对于JavaEE和Python程序员来说,有些工作需要编写一些Shell脚本进行程序或者是服务器的维护,例如编写一个定时备份数据库的脚本. 3)对于大多数程序员来说,需要编写Shell程序来管理集群. ⒉Shell是什么? Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止程序,甚至是编…