shell
_Black铁木真
闻道有先后术业有专攻如是而已
展开
-
git bash configration .minttyrc
BoldAsFont=-1FontHeight=12Font=ConsolasLanguage=en_USTerm=xterm-256colorCursorType=blockBackgroundColour=0,43,54原创 2018-02-28 22:42:30 · 1060 阅读 · 0 评论 -
authorized_keys和authorized_keys2有什么不同?
authorized_keys和authorized_keys2有什么不同?SSHprotocols1.3和1.5使用 $HOME/.ssh/authorized_keysfile,SSHprotocol2.0使用 $HOME/.ssh/authorized_keys2file。在 OpenSSH version3以后,已经不赞成使用authorized_keys2了(虽然仍能用)。所有的公钥都应转载 2014-02-19 12:28:01 · 2790 阅读 · 0 评论 -
date命令相关的时间标准
今天在总结date命令的时候,看到一篇博客上介绍的时间标准。 首先我们了解一下时间的相关概念,以及之间的区别,需要了解的时间概念有: 本地时间(locale time LT) 格林威治时间(Greenwich Mean Time GMT) 世界协调时间 (Universal Time Coordinated UTC) 本地时间,显而易见不用解释了原创 2013-12-24 15:20:50 · 1102 阅读 · 0 评论 -
shell中用下划线把变量串成串
Test=`hostname`echo $Testatca19-0-0-1test=`echo $Test | awk -F "-" '{print $1}'`echo $testatca19result1="Fs_fs_fs_$Test_$test_fd_fs"echo $result1Fs_fs_fs_result2=Fs_fs_fs原创 2013-12-27 14:36:41 · 5223 阅读 · 0 评论 -
shell中的进制转换
修改脚本时,想直接用10进制转换为16进制的方法,在网上搜了搜,结果是找到了,可惜所用系统中没有对应的指令,还是用不成,最后就用了一个比较笨一点的方法。既然有需要,就把搜到感觉有用的进制转换函数或指令都贴在这里,便于以后应用。shell可以在不调用第3方命令,表示不同进制数据。这里总结以下表示方法。shell 脚本默认数值是由10 进制数处理,除非这个数字某种特殊的标记法或前缀开头转载 2014-01-07 09:32:29 · 2570 阅读 · 0 评论 -
测试单反斜杠``和$()在shell中的区别
测试单反斜杠``和$()在shell中的区别:a="Te st"b=`echo "$a" | sed 's/ /\\ /g'`echo $b结果:Te st c=$(echo "$a" | sed 's/ /\\ /g') echo $c结果:Te\ st原创 2013-12-19 09:29:18 · 1139 阅读 · 0 评论 -
shell中插入expect脚本的执行,注意EOF后面的空格
#!/bin/sh/usr/bin/expect <<\EOF#set port $pspawn telnet localhost 30112sleep 1send "root\r"sleep 1send "r00t\r"sleep 1send "trace\r"sleep 1send "quit\r"interactEOFif [ $? -ne 0 ];then原创 2013-08-19 09:02:44 · 15633 阅读 · 1 评论 -
遇到的一个关于IFS的问题
machine=`hostname` process=`cat trace_$$.out | grep Trace | cut -d "-" -f 1 | sort | uniq` str=(${process[@]}) len=${#str[*]} if [ "$len" -ne 0 ];then原创 2013-08-22 14:30:02 · 694 阅读 · 0 评论 -
printf command in shell script
printf命令模仿C程序库(library)里的printf()库程序(library routine)。它几乎复制了该函数的所有功能。不过在Shell层级的版本上,会有些差异。由于printf的行为是由POSIX标准所定义,因此使用printf的脚本比使用echo移植性好。如同echo命令,printf命令可以输出简单的字符串:[root@master ~]#print转载 2013-08-22 10:24:13 · 796 阅读 · 0 评论 -
bash 15分钟进阶
这里的技术技巧最初是来自谷歌的“Testing on the Toilet” (TOTT)。这里是一个修订和扩增版本。脚本安全我的所有bash脚本都以下面几句为开场白:#!/bin/bashset -o nounsetset -o errexit这样做会避免两种常见的问题:引用未定义的变量(缺省值为“”)执行失败的命令被忽略需要注意的是,有些Linux命令的某些参数转载 2014-05-02 21:17:43 · 493 阅读 · 0 评论 -
在本路径和其子路径下查找文件中包含关键字的文件
find . -type f -exec grep -nH -i ping {} \; | cut -d ':' -f 1 | sort -u原创 2014-01-23 16:00:31 · 609 阅读 · 0 评论 -
eclipse下搭建shell脚本编辑器--安装开发shell的eclipse插件shelled
1、安装“man-page viewer”插件(ShellEd需要,有的机器不需要,先装上)安装地址:http://download.eclipse.org/technology/linuxtools/updates-nightly/2、安装“shelled”插件在http://sourceforge.net/projects/shelled/files/latest/download转载 2017-08-30 11:18:34 · 3186 阅读 · 0 评论 -
sed
1. Sed简介sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序转载 2013-12-12 14:32:50 · 456 阅读 · 0 评论 -
gpackcore tool
#! /bin/shif test $# -ne 1; then echo "Usage: `basename $0 .sh` " 2>&1 exit 1fiif [ $# -eq 1 -a ! -f $1 ]; then echo "Core file not found." 2>&1 exit 2fiCOREFILE=$1CURRENT_DI原创 2017-09-04 14:24:03 · 300 阅读 · 0 评论 -
bash 统计文件行数
现在有一个a文件,共有55行第一种:# awk '{print NR}' a|tail -n1第二种: # awk 'END{print NR}' a第三种: # grep -n "" a|awk -F: '{print '}|tail -n1第四种:# sed -n '$=' a第五种 # wc -l a|awk '{print }'第六种 #cat a |wc -l用Linux的转载 2017-03-07 11:06:53 · 6464 阅读 · 0 评论 -
bash数组和字典
#!/bin/bashecho "shell定义字典"#必须先声明declare -A dicdic=([key1]="value1" [key2]="value2" [key3]="value3")#打印指定key的valueecho ${dic["key1"]}#打印所有key值echo ${!dic[*]}#打印所有valueecho ${dic[*]}#遍历ke转载 2017-03-02 10:48:21 · 5159 阅读 · 1 评论 -
Linux中profile、bashrc、bash_profile之间的区别和联系
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.英文描述为:# /etc/profile# System wide environment and startup programs, for login setup# Functions and aliases转载 2016-02-02 18:11:29 · 319 阅读 · 0 评论 -
flock in shell
当多个进程可能会对同样的数据执行操作时,这些进程需要保证其它进程没有也在操作,以免损坏数据。通常,这样的进程会使用一个「锁文件」,也就是建立一个文件来告诉别的进程自己在运行,如果检测到那个文件存在则认为有操作同样数据的进程在工作。这样的问题是,进程不小心意外死亡了,没有清理掉那个锁文件,那么只能由用户手动来清理了。像 pacman 或者 apt-get 一些数据库服务经常在意外关闭时留下锁转载 2014-11-25 10:26:25 · 775 阅读 · 0 评论 -
trap in shell
一. trap捕捉到信号之后,可以有三种反应方式: (1)执行一段程序来处理这一信号 (2)接受信号的默认操作 (3)忽视这一信号 二. trap对上面三种方式提供了三种基本形式: 第一种形式的trap命令在shell接收到signal list清单中数值相同的信号时,将执行双 引号中的命令串。 trap 'commands'转载 2014-11-25 10:04:05 · 511 阅读 · 0 评论 -
shift in shell
位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。非常有用的 Unix 命令:shift。我们知道,对于位置变量或命令行参数,其个数必须是确定的,或者当 Shell 程序不知道其个数时,可以把所有参数一起赋值给变量$*。若用户要求 Shell转载 2014-11-25 10:36:31 · 403 阅读 · 0 评论 -
shell数字和字符串比较
Shell中字符串、数值的比较二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别. 整数比较 -eq 等于,如:if [ "$a" -eq "$b" ] -ne 不等于,如:if [ "$a" -ne "$b" ] -gt 大于,如:if [ "$a" -gt "$b" ] -ge 大于等于,如:转载 2013-08-20 10:39:15 · 781 阅读 · 0 评论 -
shell的for循环中嵌入expect的测试
#!/bin/shtest(){ expect -c " log_user 0; set timeout 10; spawn echo $1; interact;"}n=(30111 30112)length=${#n[*]}echo "$length"for((i=0;i<$length;i++))原创 2013-08-19 17:13:48 · 4863 阅读 · 1 评论 -
shell中嵌入expect脚本
#!/bin/shtest(){ expect -c " log_user 0; set timeout 10; spawn telnet localhost $1; sleep 1; expect login:; send root\r; sleep 1;原创 2013-08-19 13:31:31 · 3132 阅读 · 0 评论 -
利用sed 命令去掉windows下回车符及空白符
windows下的回车符为 \r\n 而unix下的回车符是 \n1.去掉所有行的空格sed -i 's/ //g' df.txt2.去掉所有行的空格sed -e 's/ //g' df.txt >cwm.txt3.将每一行拖尾的“空白字符”(空格,制表符)删除sed 's/ *$//' df.txt >cwm.txt4.将每一行中的前导转载 2013-05-13 12:55:43 · 1746 阅读 · 0 评论 -
字符串比较
#!/bin/bashstr1=$1str2=$2if [ $str1 \> $str2 ];thenecho "string1 bigger than string2"elseecho "string1 smaller than string2"fi./test.sh abc acg./test.sh 20原创 2013-05-27 13:49:41 · 473 阅读 · 0 评论 -
shell的if与c语言if的功能上的区别
shell if c语言if0为真,走then 正好相反,非0走then 不支持整数变量直接if必须:if [ i –ne 0 ]但支持字符串变量直接ifif [ str ] 如果字符串非0 支持变量直接ifif (i )转载 2013-05-13 15:37:12 · 688 阅读 · 0 评论 -
liux文件的每行末尾^M$ 和$
问题:之前在linux下写了个shell脚本,然后发给一个同事帮我修改(他用的是windows的系统),修改好了之后又发给了我,我直接就覆盖了原来的文件,但是在脚本执行的时候遇到了个问题:manage_dir=`cat sdm_cristel_external_server.cfg | grep "MANAGE_DIRECTORY" | awk -F "=" '{print $2}原创 2013-05-13 12:54:11 · 3954 阅读 · 0 评论 -
ssh到远端执行命令
ssh login@server_ip "comand1;command2;...."对于上述命令的理解总是习惯性的认为是先ssh到远端server上,然后再在该server上执行引号里面的command。其实这种理解是错误的,所有的命令都是在本地server上传到远端server上,然后才执行的example:test=`ssh login@server_ip "ls -原创 2013-05-21 17:21:26 · 734 阅读 · 0 评论 -
shell script的执行方式比较
bash shell的命令分为两类:外部命令和内部命令。外部命令是通过系统调用或独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。fork是linux的系统调用,用来创建子进程(child process)。子进程是父进程(parent process)的一个副本,从父进程那里获得一定的资源分配以及继承父进程的环境。子进原创 2013-04-28 14:57:44 · 555 阅读 · 0 评论 -
管道命令
1. cutcut -d '分隔字符' -f fieldscut -c 字符范围参数:-d:后面接分隔字符,与-f一起使用-f : 依据-d的分隔字符将一段信息切割成数段,用-f取出第几段的意思-c: 以字符(characters)的单位取出固定字符区间例子:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/原创 2013-04-28 12:21:47 · 547 阅读 · 0 评论 -
shell环境变量
”环境变量“和”自定义变量“:子进程仅会继承父进程的环境变量,而不会继承父进程的自定义变量,所以,你原本bash中的自定义变量在进入了子进程后就会消失不见,一直到你离开子进程并回到原本的父进程之后,这个变量才会出现。1. 用env查看默认的环境变量及其说明(export也可查看,但是输出的内容比env多)2. 用export + ”变量名字“:使自定义变量转变为环境变量3. set原创 2013-04-28 14:48:42 · 661 阅读 · 0 评论 -
shell expect spawn、linux expect 用法小记
使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄、收藏。可是为什么要这么写却不知其然。本文用一个最短的例子说明脚本的原理。 脚本代码如下: ############################################## #!/usr/bin/expect set timeout 30 spawn ssh -l use转载 2013-04-28 15:03:23 · 920 阅读 · 0 评论 -
shell 中for的测试脚本
#!/bin/bashstr1=$1str2=$2if [ $str1 \> $str2 ];thenecho "string1 bigger than string2"elseecho "string1 smaller than string2"fic=hellob=mmmmif [ $c \> $b ];thenecho "$原创 2013-05-29 13:29:07 · 427 阅读 · 0 评论 -
shell中引号的用法
今天遇到个基本的问题,导致block了,测试script如下:#!/bin/bashNRG1=3BE1=4m=*_2013-05-27_11-55-10.tarn=`echo "$m" | sed 's/*/backup_DB_recovery_"NRG1"_"BE1"/g'`(不对)echo "$n"执行后输出的结果为:backup_DB_recove原创 2013-05-30 16:02:37 · 1148 阅读 · 0 评论 -
shell中数组的使用
shell中数组的下标默认是从0开始的1。将字符串放在数组中,获取其长度#!/bin/bashstr="a b --n d"array=($str)length=${#array[@]}echo $lengthfor ((i=0; ido echo ${array[$i]}done执行结果:[oracle@99bill-as转载 2013-08-05 14:53:09 · 930 阅读 · 0 评论 -
expect example
#!/usr/bin/expect -flog_user 0set timeout 10send_user "Are you sure you want to use backdoor?(Y/N)"expect {"Y*" {spawn fw bdsleep 1send "root\r"sleep 1send "r00t\r"sleep 1send "trace\r"s原创 2013-07-23 12:28:18 · 597 阅读 · 0 评论 -
shell编程常识
Shell脚本编程的常识(这些往往是经常用到,但是各种网络上的材料都语焉不详的东西,个人认为比较有用)七种文件类型d 目录 l 符号链接s 套接字文件转载 2013-06-28 16:07:19 · 601 阅读 · 0 评论 -
shell 中typeset 的用法
typeset用于设置变量属性,如大小写,宽度,左右对齐等都可以用typeset来控制, 当用typeset改变一个变量的属性时,这种改变是永久的,下面以ksh为例,演示typeset的几种典型用法2:typeset的-u选项可以将一个变量的字符变成大写/home/lee#typeset -u var=abc/home/lee#echo $varABC3:typeset的-转载 2013-07-09 14:08:19 · 6910 阅读 · 1 评论 -
cat << EOF ............................EOF
测试下:1. cat <<- !EOF tehisfskljflkj\fslfjsklf fsjlfjklsjsfslfjssfljl!EOF输出:tehisfskljflkjfslfjsklffsjlfjklsjsfslfjssfljl2. cat << !EOF tehisfskljflkj\fslfjsklf fsjlfjklsjs原创 2013-07-09 14:25:59 · 982 阅读 · 0 评论 -
在shell脚本执行的时候,禁止Ctrl+c的操作
将下面的语句写在脚本的开头:trap "" INT QUIT TSTP这样就可以屏蔽掉ctrl+c操作原创 2013-06-07 10:34:26 · 3995 阅读 · 0 评论