此文收集工作中用到的Shell备忘,随用随机:

1.比较

  1. -eq       等于,如:if [ "$a" -eq "$b" ]
  2. -ne       不等于,如:if [ "$a" -ne "$b" ]
  3. -gt       大于,如:if [ "$a" -gt "$b" ]
  4. -ge       大于等于,如:if [ "$a" -ge "$b" ]
  5. -lt       小于,如:if [ "$a" -lt "$b" ]
  6. -le       小于等于,如:if [ "$a" -le "$b" ]

-z       字符串为"null".就是长度为0. if [ -z "$a" ]

-n       字符串不为"null" if [ -n "$a" ]

2.检测变量类型

  1. # check value type
  2. function check(){
  3.         local a="$1"
  4.         printf "%d" "$a" &>/dev/null && echo "integer" && return
  5.         printf "%d" "$(echo $a|sed 's/^[+-]\?0\+//')" &>/dev/null && echo "integer" && return
  6.         printf "%f" "$a" &>/dev/null && echo "number" && return
  7.         [ ${#a} -eq ] && echo "char" && return
  8.         echo "string"
  9. }

3. 计算文件行数

  1. max_count=$(wc -l ./host.list |awk '{ print $1 }')

4.for 循环读文件

  1. for ip in $(head -n ./host.list)
  2. do
  3. echo $ip
  4. ssh $ip 'hostname'
  5. done;

5.用密码自动登录

  1. auto_login_ssh () {
  2.     expect -c "set timeout -1;
  3.                 spawn -noecho ssh -o StrictHostKeyChecking=no $ ${@:};
  4.                 expect *assword:*;
  5.                 send -- $\r;
  6.                 interact;";
  7. }
    auto_login_ssh password root@10.10.10.10
  8.  

6.执行远程机器命令,如查找文件

  1.     fr=$(echo `ssh root@$ip "find / -name $1"`)

if [ "$fr" == "" ]

then

echo "Not Found "

else

echo "Found it: $fr"

fi

7.while 遍历文件

  1. while read line
  2. do
  3. echo $line
  4. done < ./host.list

8.输入隐藏并验证密码,echo 不换行

  1. while [ -z $bigpass ] || [ "$bigpass" != "$bigpass2" ]
  2. do
  3. if [ -n "$bigpass" ]
  4. then
  5. echo "Sorry, passwords do not match. pls retry"
  6. fi
  7. echo -n "Password:"
  8. stty -echo
  9. echo ""
  10. read bigpass
  11. stty echo
  12. echo -n "Confirm password:"
  13. stty -echo
  14. read bigpass2
  15. stty echo
  16. echo ""
  17. done

9.输出本地格式日期

  1. echo "$(date +%Y%m%d%H%M%S).old"

10.算术运算

  1. 运算符号依旧是 + - * /
  2. 不过使用时候要注意:
  3.  
  4. r=`expr + `
  5. r=$(( + ))
  6. r=$[ + ]
  7. let r= +
  8.  
  9. r=`expr \* `
  10. r=$(( * ))
  11. r=$[  * ]
  12. let r= *
  13.  
  14. r=`expr / `
  15. r=$(( / ))
  16. r=$[ / ]
  17. let r=/
  18.  
  19. 乘幂 (如 次方)
  20. r=$(( ** ))
  21. r=$[ ** ]
  22. expr 沒有乘幂

11. Eclipse 的Shell 编辑插件ShellEd

http://sourceforge.net/apps/trac/shelled/wiki/Documentation/InstallGuide

12. 输出彩色字符

  1. #!/bin/sh
  2. NORMAL=$(tput sgr0)
  3. GREEN=$(tput setaf ; tput bold)
  4. YELLOW=$(tput setaf )
  5. RED=$(tput setaf )
  6.  
  7. function red() {
  8. echo -e "$RED$*$NORMAL"
  9. }
  10.  
  11. function green() {
  12. echo -e "$GREEN$*$NORMAL"
  13. }
  14.  
  15. function yellow() {
  16. echo -e "$YELLOW$*$NORMAL"
  17. }
  18.  
  19. # To print success
  20. green "Task has been completed"
  21.  
  22. # To print error
  23. red "The configuration file does not exist"
  24.  
  25. # To print warning
  26. yellow "You have to use higher version."

13. Shell 中的特殊变量

  1. $:当前脚本的文件名
  2.  
  3. $numnum为从1开始的数字,$1是第一个参数,$2是第二个参数,${}是第十个参数
  4.  
  5. $#:传入脚本的参数的个数
  6.  
  7. $*:所有的位置参数(作为单个字符串)
  8.  
  9. $@:所有的位置参数(每个都作为独立的字符串)。
  10.  
  11. $?:当前shell进程中,上一个命令的返回值,如果上一个命令成功执行则$?的值为0,否则为其他非零值,常用做if语句条件
  12.  
  13. $$:当前shell进程的pid
  14.  
  15. $!:后台运行的最后一个进程的pid
  16.  
  17. $-:显示shell使用的当前选项
  18.  
  19. $_:之前命令的最后一个参数

14. 删除文件中的某一行

  1. 比如:在1.txt里有以下内容:
  2. HELLO=
  3. NI=
  4. WORLD=
  5. I Love China.
  6. Love all
  7. ....
  8.  
  9. 如果是要删除第三行:
  10. sed -i '3d' .txt
  11.  
  12. 如果删除以Love开头的行
  13. sed -i '/^Love/d' .txt
  14.  
  15. 删除包含Love的行
  16. sed -i '/Love/d' .txt

Shell 备忘录的更多相关文章

  1. 反弹shell备忘录

    反弹shell备忘录 简单理解,通常是我们主动发起请求,去访问服务器(某个IP的某个端口),比如我们常访问的web服务器:http(https)://ip:80,这是因为在服务器上面开启了80端口的监 ...

  2. shell学习总结之自定义函数

    shell学习总结之自定义函数 Myfun (){ echo -n "now i is $i " ! [ "$i" ] && exit ; ec ...

  3. linux备忘录-shell脚本

    知识 shell执行方式 shell执行方式有 通过source或. 在现在的bash环境中执行脚本 变量等会保持 通过bash shell.sh或sh shell.sh 使用一个新的bash环境执行 ...

  4. 「功能笔记」Linux常用Shell命令(终端命令)备忘录

    长期更新,空置.缺漏的部分会逐渐补上.未指明时,均为GNU版本. 文件命令 基础操作 ls 默认显示非隐藏文件.以文件名进行排序.文件名有颜色(蓝色文件夹.白色一般文件.绿色可执行文件). Cheat ...

  5. Linux - Shell - 常用方法 - 备忘录

    $? 上一个指令的返回值 =成功,=失败 dmesg 检测系统开机启动信息 $() 对命令的替换,同`` ${} 对变量的替换,同$var $(()) 对内部内容进行整数运算 i= grep AAA ...

  6. linux常用命令大全(linux基础命令入门到精通+命令备忘录+面试复习+实例)

    作者:蓝藻(罗蓝国度) 创建时间:2018.7.3 编辑时间:2019.4.29 前言 本文特点 授之以渔:了解命令学习方法.用途:不再死记硬背,拒绝漫无目的: 准确无误:所有命令执行通过(环境为ce ...

  7. linux备忘录-基本命令

    基本命令 将命令分类为获取信息类,文件管理类,目录管理类,文本处理类,系统类,工具类. 获取信息类 uname # 输出所有信息 # 一行输出,空格分割 uname -a # 输出内核名称 uname ...

  8. 第一部分:MongoDB备忘录

    一.NoSQL 简介 Nosql的全称是Not Only Sql,这个概念早起就有人提出,在09年的时候比较火.Nosql指的是非关系型数据库,而我们常用的都是关系型数据库.就像我们常用的mysql, ...

  9. [转帖]linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)

    linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习) https://www.cnblogs.com/caozy/p/9261224.html 总结的挺好的 ...

随机推荐

  1. Python Ogre Blender(转载)

    http://www.cppblog.com/Charlib/archive/2010/05/31/python_ogre_blender_1.html PyOgre入门以及如何使用Blender制作 ...

  2. salt-ssh安装及简单使用

    需要 salt-master 0.17以上版本支持 1.安装 相关依赖包可查看requirements.txt Jinja2 M2Crypto msgpack-python pycrypto PyYA ...

  3. opengl基础学习专题 (二) 点直线和多边形

    题外话 随着学习的增长,越来越觉得自己很水.关于上一篇博文中推荐用一个 学习opengl的 基于VS2015的 simplec框架.存在 一些问题. 1.这个框架基于VS 的Debug 模式下,没有考 ...

  4. SQL基础学习篇--字符函数

    字符函数可与SELECT,UPDATE,DELETE RIGHT()----从右侧开始选择  SELECT RIGHT(列,字符数量) FROM 表 LEFT()----从左侧开始选择  SUBSTR ...

  5. sftp

    SFTP 为 SSH的一部分,是一种传输档案至 Blogger 伺服器的安全方式.其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文 ...

  6. 九度oj 1528 最长回文子串

    原题链接:http://ac.jobdu.com/problem.php?pid=1528 小白书上的做法,不过这个还要简单些... #include<algorithm> #includ ...

  7. 在JAVA中使用JSONObject生成json

    JSON是一种轻量级的数据交换格式,在现在的web开发中,是非常常见的.在没有方便的工具之前,我们或许会使用拼字符串的形式来生成json数组,今天我们使用一个json-lib.jar包来为我们实现生成 ...

  8. iOS8 蓝牙设备的重连接(retrieve) Swift实现

    今天App写到了蓝牙重连的阶段,以前针对sdk 6.0写的代码,蓝牙设备的回复是通过 - (void)retrievePeripherals:(NSArray *)peripheralUUIDs 然后 ...

  9. .net(C#)操作文件的几种方法汇总

    .net(C#)操作文件的几种方法汇总 System.IO命名空间下类的用法:在System.IO名称空间中包含了用于文件输入输出的主要类.File:实用类,提供许多静态方法,用于移动.复制和删除文件 ...

  10. 3-附1 ->和*的区别

    问题: c++ .和 ->有什么区别? 还有什么是继承什么是派生?-------------------------------------------------------------- 比 ...