LinuxSir.cn,穿越时空的Linuxsir!

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

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

[复制链接]
 楼主| 发表于 2003-6-27 23:26:22 | 显示全部楼层
多谢777的启发;)我也来一个!
比较多个数字的技巧:
#! /bin/bash
echo "max(for i in $(echo $*);do echo $i;done|sort -n|sed -n '$p')"
发表于 2003-6-30 02:13:44 | 显示全部楼层
这是我抄的
比较两个数是这样:
#!/bin/bash
echo "first num:"
read a
echo "second num:"
read b
if [ $a -gt $b ]
then
max=$a;esle max=$b
fi
clear
echo $max

那怎么一个个地读多个数进一个变量
 楼主| 发表于 2003-6-30 11:50:17 | 显示全部楼层
用位置参数比较简单!
cat bj
#! /bin/bash
echo "max(for i in $(echo $*);do echo $i;done|sort -n|sed -n '$p')"

[javalee//home/javalee/myshell]bj 23 45 9 4 3 45 3 3 2 2 1 45
max:45
 楼主| 发表于 2003-7-4 13:48:18 | 显示全部楼层

技巧:倒读文本

例如文章:
$cat -n tmp
1 abcdefgh
2 123234234
3 sjdfk23423
1,行号倒序:
$cat -n tmp|tac #tac和cat很有趣吧~~
3 sjdfk23423
2 123234234
1 abcdefgh
2,每行倒读:
$cat tmp|rev
hgfedcba
432432321
32432kfdjs
3,全部倒过来:
$cat -n tmp|rev|tac
32432kfdjs 3
432432321 2
hgfedcba 1
4,用sed也可以解决要求对sed有足够的理解)
$cat -n tmp|sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
hgfedcba 1
432432321 2
32432kfdjs 3
感谢:idkey兄!;)
 楼主| 发表于 2003-7-4 14:42:04 | 显示全部楼层

技巧:把汉字转换成十六进制和二进制的方法

命令行下,利用perl的unpack函数,可以将汉字巧妙的变成十六进制和二进制,如:
[javalee//home/javalee/myshell]perl -le 'print unpack("B*","中");'        #把汉字"中"转换成二进制
1101011011010000
[javalee//home/javalee/myshell]perl -le 'print unpack("H*","国");'        #把汉字"国"转换成十六进制
b9fa
发表于 2003-7-4 22:26:06 | 显示全部楼层
od 也可以,比如
$ echo '中国' | od -h
0000000 d0d6 fab9 000a
0000005
发表于 2003-7-6 15:37:04 | 显示全部楼层

不用定义函数也可以直接运行自己的脚本

To javalee:
    我按照你的方法将脚本写成函数的形式并且在profile里指明了路径,然后在命令行里执行函数时不输出任何结果,也没有报错.但是将脚本改为原来普通的形式后重启系统,竟然在任何目录下都可以象执行ls命令一样成功地执行了脚本,也就是说不用定义函数也可以直接运行自己的脚本?
 楼主| 发表于 2003-7-6 16:39:28 | 显示全部楼层
我按照你的方法将脚本写成函数的形式并且在profile里指明了路径,然后在命令行里执行函数时不输出任何结果,也没有报错.但是将脚本改为原来普通的形式后重启系统,竟然在任何目录下都可以象执行ls命令一样成功地执行了脚本,也就是说不用定义函数也可以直接运行自己的脚本?
当然!但是直接运行脚本是因为在path中你已经为shell提供了你脚本所在的路径,而一些常用的小脚本,一函数的方法去定义的话,一般来说运行速度要比你每次从磁盘中读取文件要快得多而且占用资源很少!因为函数是在启动之后就已经驻留在内存啦.
发表于 2003-7-10 10:04:54 | 显示全部楼层
#!/bin/sh
if [ $# -ne 1 ]
then
echo "usage: $0 clean-ip"
exit 1
fi

if [ -e .bash_history ]
then
cat /dev/null > .bash_history
echo "history clean ok!"
else
echo "history not found!"
fi

if [ -e /var/log/lastlog ]
then
grep -v $1 /var/log/lastlog > /tmp/a ; mv /tmp/a /var/log/lastlog
echo "/var/log/lastlog clean ok!"
else
echo "/var/log/lastlog not found!"
fi

if [ -e /var/log/messages ]
then
grep -v $1 /var/log/messages > /tmp/a ; mv /tmp/a /var/log/messages
echo "/var/log/messages clean ok!"
else
echo "/var/log/messages not found!"
fi

if [ -e /var/log/wtmp ]
then
grep -v $1 /var/log/wtmp > /tmp/a ; mv /tmp/a /var/log/wtmp
echo "/var/log/wtmp clean ok!"
else
echo "/var/log/wtmp not found!"
fi

if [ -e /var/log/xferlog ]
then
grep -v $1 /var/log/xferlog > /tmp/a && mv /tmp/a /var/log/xferlog
echo "/var/log/xferlog clean ok!"
else
echo "/var/log/xferlog not found!"
fi

if [ -e /etc/utmp ]
then
grep -v $1 /etc/utmp > /tmp/a && mv /tmp/a /etc/utmp
echo "/etc/utmp clean ok!"
else
echo "/etc/utmp not found!"
fi
 楼主| 发表于 2003-7-10 14:28:46 | 显示全部楼层
to badb0y:
最好把说明,注释,用途之类的加上,以便兄弟们阅读!
谢谢~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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