shell 杂记

1 制作和挂载iso文件

$ mkisofs -o filename.iso -x excludedir -v includedir

$ mount -o loop filename.iso mount_dir


2 history 命令显示执行时间

在执行history命令前设置HISTTIMEFORMAT

HISTTIMEFORMAT=“%F %T ”
history


3 date 命令 日期时间与unix时间戳互转

#将当前时间以unix时间戳表示
date +%s
#指定日期转换为unix时间戳
date -d '2015-03-02 14:38' +%s
#将unix时间戳转换为日期时间
date -d @1425278378
#将unix时间戳转为指定格式的日期时间
date -d @1425278378 +"%F %T"


4 字符串处理

#字符串 str 长度
${#str}
expr length "$str"

#子串 substr 出现位置,找不到返回 0
expr index "$str" "$substr"

#子串 substr 开头匹配,找不到返回 0
expr match "$str" "$substr"

#字符串 str 抽取左起位置 pos 后 长度 len 的子串
${str:$pos}
${str:$pos:$len}
expr substr "$str" $pos $len

#字符串 str 抽取右起位置 pos 前的子串
${str: -pos}
${str:(pos)}

#正则 pat 抽取字符串 str 开头子串
expr match "$str" "\($pat\)"
expr "$str" : "\($pat\)"

#正则 pat 抽取字符串 str 结尾子串
expr match "$str" ".*\($pat\)"
expr "$str" : ".*\($pat\)"

#删除字符串 str 开头的最短子串 sub
${str#$sub}

#删除字符串 str 开头的最长子串 sub
${str##$sub}

#删除字符串 str 结尾的最短子串 sub
${str%$sub}

#删除字符串 str 结尾的最长子串 sub
${str%%$sub}

#替换字符串 str 第一个子串 sub 为字符串 rep
${str/"$sub"/"$rep"}

#替换字符串 str 所有子串 sub 为字符串 rep
${str//"$sub"/"$rep"}

#替换字符串 str 开头的子串 sub 为字符串 rep
${str/#"$sub"/"$rep"}

#替换字符串 str 结尾的子串 sub 为字符串 rep
${str/%"$sub"/"$rep"}

#var为空或没有设置,代入word,否则代入var值
${var:-word}

#如果var已经被设置且不为空,则代入它的值,否则代入word,并且在后面var始终为word的值。位置参量不能用这种方式赋值。
${variable:=word}

#如果变量var已被设置且值为非空,代入word值,否则什么也不代入
${variable:+word}

#如果变量var已被设置值且为非空,就代入它的值,否则输出word并从shell中退出,如果有省略了word,就会显示信息:parameter null or not set.
${var:?word}


5  解析迅雷链接

echo 迅雷专用地址(去掉头 thunder://)|base64 -d

去掉头部 AA 和尾部 ZZ


6 expect 自动输入密码

expect<-END
    spawn ssh $DEST_HOST "REMOTE_COMMAND"
    expect {
        "*yes/no*" { send "yes\r"; exp_continue }
        "*assword*" { send "password\r" }
    }
    expect eof 
END


7 bash数组

#定义数组
array=()

#打印数组第一个元素
echo ${array[0]}

#打印数组所有元素
echo ${array[@]}

#打印数组所有索引
echo ${!array[@]}

#移除数组中索引为2的元素 
unset array[2]

#添加id为3的元素
array[3]=""


8 shell 操作OracleDB

sqlplus user/password@host:port<<EOF
select table_name from user_tables;;
commit;
quit;
EOF


9 Linux 安装完成后grub没有安装

ubuntu live 启动机器,挂载/boot分区或/分区及其所在磁盘设备/dev/sd?,执行

grub(2)-install --boot-directory=/boot_partition /dev/sd?


10 shell 中的 $ 参数

$$    #shell 本身 PID
$!    #shell 最后执行的后台PID
$?    #shell 结束代码
"$*"    #参数列表 "$1 $2 ... $n"
"$@"    #参数列表 "$1" "$2" ... "$n"
$#    #参数个数
$0    #shell 脚本名
$1 ... $n    #shell 位置参数


11 ubuntu14.04 挂载 smb 共享

#安装smb文件系统
sudo apt-get install cifs-utils
#查看smb服务器共享的目录
smbclient -L smb_server_ip
#挂载smb共享目录
mount -t cifs //smb_server_ip/public_path/ /mnt/smb/ -o username=smb_user,password=smb_password


你可能感兴趣的:(shell 杂记)