LinuxSir.cn,穿越时空的Linuxsir!

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

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

[复制链接]
 楼主| 发表于 2004-9-21 23:30:16 | 显示全部楼层

技巧:如何将后台运行的程序转到前台来?

作者:scopio
Q:如果在一个终端窗口执行一个后台程序后,还可以用jobs看到作业号,然后用fg将他移到前台来。
可是,如果退出这个终端窗口后,又开了另外一个终端窗口,有没有办法将后台的作业转到前台呢?

A:执行程序的时候用screen,他提供一个虚拟的shell?/tty?
这么用
screen program
然后按ctrl + a , d
就退出,
可以执行 screen -x 还原,查看
如果有多个任务,执行screen -list查看任务
用screen -r 任务号 还原

具体手册里面更详细:)
发表于 2004-10-8 16:10:17 | 显示全部楼层
最初由 KornLee 发表
当然!但是直接运行脚本是因为在path中你已经为shell提供了你脚本所在的路径,而一些常用的小脚本,一函数的方法去定义的话,一般来说运行速度要比你每次从磁盘中读取文件要快得多而且占用资源很少!因为函数是在启动之后就已经驻留在内存啦.

感觉这样更简单
PATH=$PATH:.
发表于 2004-10-16 16:45:21 | 显示全部楼层

巧用重定向

相信大家经常会使用管道和grep来查找程序的输出信息,比如
who|grep foo,或者ls|more
但是,有些命令在屏幕上的输出并不是通过标准输出,而是标准错误!不信你试试X --help|more,结果是什么呢?X好像不听你的话
因为X --help的输出并不是写到标准输出的,而是写到标准错误,所以可以把错误重定向到标准输出,如下

X --help 2>&1|more

如果想要把帮助信息重定向到文件中怎么办呢?要这样:
X --help 2>X.help
[注意这里的数字2,表示将标准错误重定向,而不是默认的标准输出]
发表于 2005-1-24 17:18:06 | 显示全部楼层

和tree类似的东东

#!/usr/bin/ksh
dir=${1:-.}
(cd $dir;pwd)
#du $dir| awk '{print $2, "== ("$1/2"kb)"}' |sort -f| \
#       sed -e "s,[^ /]*/\([^ /]*\) ==,|--\1," -e "s,[^ /]*/,| ,g"
du $dir| awk '{print $2, "== ("$1/2"kb)"}' |sort -f| \
       sed -e "s,[^ /]*/\([^ /]*\) ==,|--\1," -e "s,[^ /]*/,\  ,g"
#The End


忘记从哪cp过来了,见凉,觉得好用,共同分享
回复 支持 反对

使用道具 举报

发表于 2005-2-15 12:25:00 | 显示全部楼层
赞!
感觉像八仙过海一样
回复 支持 反对

使用道具 举报

发表于 2005-3-2 17:24:24 | 显示全部楼层

光盘文件收录

收集了不少LINUX光盘,但要安装什么软件,(比如说sendmail),其源文件在那里就要找半天,干脆写个脚本,把每张光盘的目录都记下来,方便以后grep。


umount /mnt/cdrom
eject
echo "输入光盘版本号,放入光盘"
read isotype
mount /dev/cdrom /mnt/cdrom
find /mnt/cdrom > .list
sed "s/^/$isotype/" .list >> .temp
cat .temp >> isolist
rm -f .temp
rm -f .list
umount /mnt/cdrom
cd;eject


输出的文件是isolist
回复 支持 反对

使用道具 举报

发表于 2006-2-23 14:07:42 | 显示全部楼层

I don't think this will work well

Post by KornLee
有些单词在一篇文章中经常会出现很多次,怎么统计这个单词的个数呢?!
如:文件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



to KornLee:


$cat kshfile|tr " " "\n"|grep -wc shell
I don't think this will work well when the delimiter is not space, what if it's tab or just a comma?

ex:
this,this is a ...
回复 支持 反对

使用道具 举报

发表于 2006-10-12 23:00:23 | 显示全部楼层
#!/bin/bash

# 运行次函数时,你将看到一个旋转的射线
# 注意在运行时将次函数放到后台运行,结束时kill掉返回值就行了
rotate ()
{
        COUNT="0"
        INTVALUE=1
        while :
        do
                COUNT=`expr $COUNT + 1`
                case $COUNT in
                1)
                        echo -e '-'"\b\c"
                        sleep $INTVALUE
                        ;;
                2)
                        echo -e '\\'"\b\c"
                        sleep $INTVALUE
                        ;;
                3)
                        echo -e '|'"\b\c"
                        sleep $INTVALUE
                        ;;
                4)       
                        echo -e '/'"\b\c"
                        sleep $INTVALUE
                        ;;
                *)
                        COUNT="0"                # 将计数清零
                esac
        done
}

rotate &
RTPID=$?
# 在这里加入你要运行的脚本,然后等脚本运行完之后kill掉就行了
sleep 10
kill -9 $RTPID
exit 0
回复 支持 反对

使用道具 举报

发表于 2006-11-6 21:11:42 | 显示全部楼层
赞!赞!赞!赞!
回复 支持 反对

使用道具 举报

发表于 2006-11-29 18:37:14 | 显示全部楼层
第17楼:显示unix时间戳

date +%s
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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