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

1.比较

-eq       等于,如:if [ "$a" -eq "$b" ]
-ne       不等于,如:if [ "$a" -ne "$b" ]
-gt       大于,如:if [ "$a" -gt "$b" ]
-ge       大于等于,如:if [ "$a" -ge "$b" ]
-lt       小于,如:if [ "$a" -lt "$b" ]
-le       小于等于,如:if [ "$a" -le "$b" ]

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

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

2.检测变量类型

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

3. 计算文件行数

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

4.for 循环读文件

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

5.用密码自动登录

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

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

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

if [ "$fr" == "" ]

then

echo "Not Found "

else

echo "Found it: $fr"

fi

7.while 遍历文件

while read line
do
echo $line
done < ./host.list

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

while [ -z $bigpass ] || [ "$bigpass" !=  "$bigpass2" ]
do
if [ -n "$bigpass" ]
then
echo "Sorry, passwords do not match. pls retry"
fi
echo -n "Password:"
stty -echo
echo ""
read bigpass
stty echo
echo -n "Confirm password:"
stty -echo
read bigpass2
stty echo
echo ""
done

9.输出本地格式日期

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

10.算术运算

运算符号依旧是 + - * /
不过使用时候要注意: r=`expr + `
r=$(( + ))
r=$[ + ]
let r= + r=`expr \* `
r=$(( * ))
r=$[  * ]
let r= * r=`expr / `
r=$(( / ))
r=$[ / ]
let r=/ 乘幂 (如 的 次方)
r=$(( ** ))
r=$[ ** ]
expr 沒有乘幂

11. Eclipse 的Shell 编辑插件ShellEd

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

12. 输出彩色字符

#!/bin/sh
NORMAL=$(tput sgr0)
GREEN=$(tput setaf ; tput bold)
YELLOW=$(tput setaf )
RED=$(tput setaf ) function red() {
echo -e "$RED$*$NORMAL"
} function green() {
echo -e "$GREEN$*$NORMAL"
} function yellow() {
echo -e "$YELLOW$*$NORMAL"
} # To print success
green "Task has been completed" # To print error
red "The configuration file does not exist" # To print warning
yellow "You have to use higher version."

13. Shell 中的特殊变量

$:当前脚本的文件名

$num:num为从1开始的数字,$1是第一个参数,$2是第二个参数,${}是第十个参数

$#:传入脚本的参数的个数

$*:所有的位置参数(作为单个字符串)

$@:所有的位置参数(每个都作为独立的字符串)。

$?:当前shell进程中,上一个命令的返回值,如果上一个命令成功执行则$?的值为0,否则为其他非零值,常用做if语句条件

$$:当前shell进程的pid

$!:后台运行的最后一个进程的pid

$-:显示shell使用的当前选项

$_:之前命令的最后一个参数

14. 删除文件中的某一行

比如:在1.txt里有以下内容:
HELLO=
NI=
WORLD=
I Love China.
Love all
.... 如果是要删除第三行:
sed -i '3d' .txt 如果删除以Love开头的行
sed -i '/^Love/d' .txt 删除包含Love的行
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. Node.js学习笔记 01 搭建静态服务器

    希望这篇文章能解决你这样一个问题:“我现在已经了解了一些Node.Js基本概念了,怎么搭一台静态服务器呢?” 请参考一下博主的前两篇文章: 完全面向于初学者的Node.js指南 Node.Js的Mod ...

  2. C 几种异常机制简单讲述

    引言 这是关于C中如何使用异常机制的讨论.顺带讲一讲C中魔法函数的setjmp内部机制.通过它实现高级的异常try...catch. 允许我先扯一段面试题. 对于计算机面试题. 算法题等.觉得还是有意 ...

  3. EXCEL处理数据小技巧

    1.EXCEL 中如何获得4*8这个数字中,*号前面的数字 输入  =LEFT(AC2,FIND("*",AC2)-1) 获得*右边的数字 输入 =RIGHT(AC2,FIND(& ...

  4. My First Django Project (2)

    1. 接下来是比较重要的VIEWS.py,您将会比较多的时间在这.有点想.net里面的aspx的cs概念,而aspx就是和接下来要创建的template html相似! 下面是我创建的一个view d ...

  5. 最近对python颇有兴趣

    因为最近租的房子到期了,于是在豆瓣小组找房子,萌生利用python爬虫去抓取小组的房源信息. 最近2个小玩意准备做一下,mark 一下 1.豆瓣租房小组Python爬虫抓取 2.51job 职位抓取

  6. Labview实现脉波调制( PPM )

    Labview实现脉波调制( PPM ) 根据定义为脉冲宽度调制 生成一个正弦信号,得到其幅值输入给一个方波信号的偏移量 由于方波信号的偏移量里面含有正弦信号的信息 因此通过对方波信号的上升沿或下降沿 ...

  7. Java类初始化顺序问题

    main -> (静态变量.静态代码块) ->main函数体 -> (类变量.初始化块.实例化引用的类) -> 构造函数 初始化块与实例化引用的类 的调用顺序 按程序的编写上下 ...

  8. mozilla css developer center

    https://developer.mozilla.org/en-US/docs/Web/CSS

  9. pagebar

    public static string GetPageBarStr(int pageIndex, int pageSize, int pageCount, int recordCount)     ...

  10. Visual Studio 2012 [ADO.NET 实体数据模型]丢失没有的解决方法

    首先打开控制面板,看是否已经安装EF,如果已经安装,先卸载,然后,首先打开安装包,找到/packages/EFTools目录下的EFTools.msi,将它们复制自己计算机的某一目录下,例如:C:\t ...