LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: KornLee

【shell技巧交流区】:[把你的shell技巧贴出来,让我们分享]

[复制链接]
发表于 2003-5-29 09:50:57 | 显示全部楼层
如果是bash还有一种更简单的方法:
echo -n "ress any key to continue..."
read -n 1 foo
 楼主| 发表于 2003-5-29 14:59:42 | 显示全部楼层
都是讨论如何使程序继续的,那么怎么实现按一个键暂停呢?
如:
#!/bin/ksh
#这是我写的一个显示系统随机数的脚本
#的例子
##
  1. (($#!=1)) && { print "Usage:random number[Enter]";exit 1;}
  2. print "\n\n\n"
  3. msg="Creating Random Numbers..."
  4. n=1
  5. while (($n<=$1))
  6. do
  7. print -n "\t\t\t$msg$(print $RANDOM)\r"
  8. ((n+=1))
  9. done
  10. print "\n"
  11. exit 0
复制代码
当运行的时候,屏幕显示
Creating Random Numbers...20102
他的数字不断变化,那我想用任何一个键使它暂停,再按一个键让它继续,(当然用CTRL+S/CTRL+Q也可以实现,)
请问:如何实现?,
 楼主| 发表于 2003-6-8 12:35:33 | 显示全部楼层

shell变量传递给sed,awk,grep简单方法

有时候在脚本编写中,需要往诸如awk等工具中传递shell的变量,举个简单的例子,如:
ps -aux|sed -n 1p
read input?"please field number your want to see:"
ps -aux|awk '{print $"'${input}'"}'
read enter?"please line number your want to see:"
ps -aux|sed -n ${enter}p
read user?"please username your want to see:"
ps -aux|grep $user
注:上述文件无实际意义,只为说明而已.
 楼主| 发表于 2003-6-8 18:46:50 | 显示全部楼层

开启小键盘数字灯的方法

在man setleds的描述中,有一段设置字符控制台数字灯的脚本:
  1. INITTY=/dev/tty[1-8]
  2. for tty in $INITTY
  3. do
  4. setleds -D +num < $tty
  5. done
复制代码
把它放在/etc/rc.d/rc.local文件中即可!这样就可以像WIN一样一启动系统,它的小键盘的数字灯总是打开的!
在字符模式下,也可以这样:
setleds -D +num/+caps/+scroll
 楼主| 发表于 2003-6-9 14:06:56 | 显示全部楼层

技巧:把输入的密码变成*号的方法

注:此贴转自:WWW.CHINAUNIX.NET
  1. #!/bin/sh
  2. getchar() {
  3.     stty cbreak -echo
  4.     dd if=/dev/tty bs=1 count=1 2> /dev/null
  5.     stty -cbreak echo
  6. }
  7. printf "Please input your passwd: "
  8. while : ; do
  9.     ret=`getchar`
  10.     if [ -z $ret ]; then
  11.         echo
  12.         break
  13.     fi
  14.     str="$str$ret"
  15.     printf "*"
  16. done
  17. echo "Your password is: $str"
复制代码
 楼主| 发表于 2003-6-11 02:58:17 | 显示全部楼层

技巧:数值转换

  1. #!/bin/bash
  2. #scriptname:conver
  3. #在BASH下简单实现十进制到二进制和十六进制的转换
  4. cat<<info
  5. 1]  10=>2       2]  10=>16
  6. info
  7. read input?"please enter your choice:"
  8. case $input in
  9. 1)      echo -n "please a dec number:";read i1
  10.         echo "$i1==$(echo "obase=2;$i1"|bc)" ;;
  11. 2)      echo -n "please a dec number:";read i2
  12.         echo "$i2==$(echo "obase=16;$i2"|bc)" ;;
  13. *)      echo "wrong choice!"
  14.         exit 1 ;;
  15. esac
复制代码
是不是很方便
 楼主| 发表于 2003-6-19 00:36:31 | 显示全部楼层

技巧:利用perl显示unix实践戳

perl -e 'print time,"\n"'
 楼主| 发表于 2003-6-22 20:43:54 | 显示全部楼层

技巧:统计文本中单词数量的方法

有些单词在一篇文章中经常会出现很多次,怎么统计这个单词的个数呢?!
如:文件kshfile,统计shell这个单词的个数,
$cat kshfile
ksh
The "Korn" shell, written by David Korn of AT&T Bell Labs (now Lucent). Written as a major upgrade to "sh", it is compatible with it, but has many more internal commands for the most frequently used functions. It also incorporates most of the same features from tcsh which enhance interactive use (command line history recall etc.). This shell is now available on most systems. It was slow
to gain acceptance because earlier versions were encumbered by AT&T licensing.
$cat kshfile|tr " " "\n"|grep -wc shell
2
 楼主| 发表于 2003-6-23 01:10:19 | 显示全部楼层

技巧:显示文本奇数偶数的方法

[javalee//home/javalee/myshell]cat tmp
aaaaaa
dddddd
kasdkfkk
djhasdjf
dfddf
kjsdfklkls
asdfjklkas
#显示文件tmp的奇数行的内容:
[javalee//home/javalee/myshell]sed -n '1,$p;n' tmp
aaaaaa
kasdkfkk
dfddf
asdfjklkas
#显示文件tmp的偶数行的内容:
[javalee//home/javalee/myshell]sed -n '1,$n;p' tmp
dddddd
djhasdjf
kjsdfklkls
发表于 2003-6-27 22:38:16 | 显示全部楼层
#比较两个数的大小
#! /bin/bash
max=$1
while [ $2 ]; do
[ $max -lt $2 ] && max=$2
shift
done
echo $max
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表