I am LAZY bones? AN ancient AND boring SITE

2007年 10月 的归档

awk手册 简体中文版

原文:应该是 http://phi.sinica.edu.tw/aspac/reports/94/94011/ 但是原文很乱.

说明:之前也是对awk几乎一无所知,无意中看到这篇文章,网上一搜,居然没有像样的简体中文版.有的也是不怎么完整,或者错误一大堆的.于是就顺手整理了下这篇文章.通过整理这篇文章,自己也渐渐掌握了awk的种种用法.

原文可能比较老,有些目前已经不适用的命令有所改动,文中所有命令均在ubuntu7.04下调试通过,用的awk是mawk.

由于本人能力有限,错误和不妥之处在所难免,欢迎多多指正.

html版:
http://linuxfire.com.cn/~lily/awk.html
http://bones.3322.org/awk.html (偶尔)

========20090729 update========
linuxfire的服务器也挂了,上面的地址都不能用了,只能传到本站给链接了…

winSCP 一个Windows环境下使用SSH的开源图形化SFTP客户端。

WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。

中文官方主页: http://winscp.net/eng/docs/lang:chs

特性

* 图形用户界面
* 多语言
* 与Windows完美集成(拖拽, URL, 快捷方式)
* 支持所有常用文件操作
* 支持基于SSH-1、SSH-2的SFTP和SCP协议
* 支持批处理脚本和命令行方式
* 多种半自动、自动的目录同步方式
* 内置文本编辑器
* 支持SSH密码、键盘交互、公钥和Kerberos(GSS) 验证
* 通过与Pageant(PuTTY Agent)集成支持各种类型公钥验证
* 提供Windows Explorer与Norton Commander界面
* 可选地存储会话信息
* 可将配置文件存于注册表,适合在移动介质上操作

文件操作

WinSCP可以执行所有基本的文件操作,例如下载和上传。同时允许为文件和目录重命名、改变属性、建立符号链接和快捷方式。

两种可选界面允许用户管理远程或本地的文件。

截图:


免费的顶级域名

可以访问 http://www.tk 进行申请.

例如这里的顶级域名是 http://bones7456.tk/

新的百度mp3下载脚本

老版本在这里,由于百度改了代码,不能下载了,所以修改了下脚本.
由于这里不能传附件,只能帖上代码了…

代码:
#!/bin/bash
#Copyright (c) 2006 bones7456 (bones7456@gmail.com)
#License: GPLv2
#非常感谢ubuntu社区和oneleaf老兄
#强烈建议安装axel(多线程下载工具)和mid3v2(包含在python-mutagen里,用于修改歌曲的id3信息)#mp3的地址
SOURCE=”http://list.mp3.baidu.com/list/newhits.html”
#SOURCE=”http://list.mp3.baidu.com/topso/mp3topsong.html” 改成这个地址可以下载歌曲top500

#保存mp3的目录
SAVE=”${HOME}/baidump3″

#下载重试次数
TRYCOUNT=2

#用axel下载时的线程数
AXELNUM=7

#临时目录
TMP=”/tmp/baidump3-${USER}”

#是否需要暂停
PAUSE=0

if [ x`which axel` = x”” ];then
PAUSE=1
cat << EOF
您的系统中没有安装axel多线程下载工具,这将导致只能使用wget进行单线程下载,将会影响下载速度。
如果是ubuntu用户,可以直接使用 sudo apt-get install axel 进行安装,其他系统请访问axel主页:http://wilmer.gaast.net/main.php/axel.html 进行下载、安装。

EOF
fi
if [ x`which mid3v2` = x”” ];then
PAUSE=1
cat << EOF
您的系统中没有安装mid3v2工具,使用该工具可以修改mp3歌曲的标签信息(如歌手、歌名等),并去掉可能包含于其中的广告信息。
如果是ubuntu用户,可以直接使用 sudo apt-get install python-mutagen 进行安装,其他系统请访问其主页:http://www.sacredchao.net/quodlibet/wiki/Development/Mutagen 进行下载、安装。

EOF
fi
if [ “$PAUSE” = 1 ];then
echo “是否继续(y|n)?”
read KEYVAR
case “$KEYVAR” in
“Y” | “y” )
echo 略过。
;;
* )
exit 0
;;
esac
fi

#创建下载目录
if [ ! -d “${SAVE}” ];then
mkdir -p “${SAVE}”
fi

#创建临时下载目录
if [ -d “${TMP}” ];then
rm -rf “${TMP}”
fi
mkdir -p “${TMP}”

echo “开始下载百度最新100首歌曲列表”
wget -O ${TMP}/mp3.html ${SOURCE}
echo “下载百度最新100首歌曲列表完成。”

#转换网页编码
iconv -f gbk -t utf8 ${TMP}/mp3.html |\

grep ” href=\”http://mp3.baidu.com/m” |\

#将mp3list.txt所有开头的空格去掉
sed -e ‘s/ *//’ |\

#将mp3list.txt所有开头的tab去掉
sed -e ‘s/\t*//’ |\

#将mp3list.txt所有全角空格去掉
sed -e ‘s/ //g’ |\

#将所有的回车符去掉
sed ‘:a;N;$!ba;s/\n/,/g’ |\

#在td>,后面加上回车符,一行表示一个mp3文件。
sed -e ‘s/,<td/\n<td/g’ |\
sed -e ‘s/td>,/td>\n/g’ |\

#删除<td width=”30%”> <td> </td> <td…FFFFFF”> <p> </p>
sed -e ‘s/<td width=”30%”>//g’ |\
sed -e ‘s/<td>//g’ |\
sed -e ‘s/<\/td>//g’ |\
sed -e ‘s/<p>//g’ |\
sed -e ‘s/<\/p>//g’ |\
sed -e ‘s/<td.*”border”>//g’ |\

#删除</a>…”_blank”>
sed -e ‘s/<\/A>\/<A.*_blank>/、/g’ |\
sed -e ‘s/<\/A>/<\/a>/g’ |\
sed -e ‘s/<\/a>.*_blank>/-/g’ |\
#sed -e ‘s/<\/a>.*_blank”>/-/g’ |\
#删除)
sed -e ‘s/<\/a>)/<\/a>/g’ |\

#删除&
sed -e ‘s/\&\;/\//g’ >${TMP}/mp3list.txt

#得到:<a href=”http://mp3.baidu.com/m?tn=baidump3&ct=134217728&lm=-1&li=2&word=Baby%20Baby%20tell%20me%20%CD%F5%D0%C4%C1%E8″ target=”_blank”>Baby ,Baby tell me-王心凌</a>

#取得行号,循环
line=$(awk ‘END{print NR}’ ${TMP}/mp3list.txt)
i=1;
while((i<=line));do
downed=0;
mpline=`awk ‘NR=='”$i”” ${TMP}/mp3list.txt`
url=`echo $mpline | sed -e ‘s/<a href=”//g’ | sed ‘s/\ target.*//g’ | sed ‘s/”//g’ | cat`
name=`echo $mpline | sed -e ‘s/.*_blank”>//g’ | sed -e ‘s/.*_blank>//g’ | sed -e ‘s/<\/b>//g’ |sed -e ‘s/<b>//g’ |\
sed -e ‘s/<\/a>//g’ | sed -e ‘s/\//-/g’ | sed -e ‘s/:/-/g’ | sed -e ‘s/”/’\”/g’ | cat`
title=`echo $name | sed -e ‘s/-.*//g’`

#检查是否已经下载过这首歌,如果下载过,放弃
if [ -e “${SAVE}/${name}.mp3” ] || [ -e “${SAVE}/${name}.wma” ]; then
echo -e “\e[1;6m\e[1;31m发现 ${name} 下载过,忽略,继续下一首。\e[1;6m\e[00m”
((i++))
continue;
fi

echo “开始通过 $url 下载 $name”;
wget -O ${TMP}/down.html $url
echo “获取 $name 下载列表完成。”;

#down.txt为有效的下载地址
iconv -f gbk -t utf8 -c ${TMP}/down.html | grep “onclick=\”return ow(event,this)\”” |\
sed -e ‘s/.*<a href=”//g’ | sed -e ‘s/” target=”_blank”.*//g’ > ${TMP}/down.txt

#size.txt为有效的下载文件大小
iconv -f gbk -t utf8 -c ${TMP}/down.html | grep “M<\/td>” |\
sed -e ‘s/<td>//g’ | sed -e ‘s/ M<\/td>//g’ > ${TMP}/size.txt

#down.txt与size.txt合并而在的down_size.txt文件中字段之间以”`”作为分隔符
paste -d ‘`’ ${TMP}/size.txt ${TMP}/down.txt > ${TMP}/down_size.txt

#排序
sort -n -r ${TMP}/down_size.txt > ${TMP}/down_size_sort.txt

#去掉后面的尺寸
sed ‘s/.*`//’ ${TMP}/down_size_sort.txt > ${TMP}/temp.txt

##### 析取出mp3 的下载地址或 wma的下载地址 ##############
grep -i “word=mp3” ${TMP}/temp.txt | grep “$title” > ${TMP}/down_mp3.txt
grep -i “word=wma” ${TMP}/temp.txt | grep “$title” > ${TMP}/down_wma.txt

downline_mp3=$(awk ‘END{print NR}’ ${TMP}/down_mp3.txt);
downline_wma=$(awk ‘END{print NR}’ ${TMP}/down_wma.txt);
echo -e “\e[1;6m\e[1;31m发现 ${downline_mp3} 个名为 ${name}.mp3 下载地址。\e[1;6m\e[00m”
echo -e “\e[1;6m\e[1;31m发现 ${downline_wma} 个名为 ${name}.wma 下载地址。\e[1;6m\e[00m”
# 初始化计数器
j=1;
# 优先下载mp3格式的歌曲
while((j<=downline_mp3)); do
mp3=`awk ‘NR=='”$j”” ${TMP}/down_mp3.txt | sed -e ‘s/ /\\ /g’`
echo -e “\e[1;6m\e[1;31m正在下载${name}.mp3\e[1;6m\e[00m”
#echo -e “\e[1;6m\e[1;31m中转页面地址为${mp3}\e[1;6m\e[00m”
wget -O “${TMP}/transit.html” “$mp3”
realURL=`iconv -f gbk -t utf8 -c ${TMP}/transit.html | grep “<li class=\”li\” style=\”margin-right:10px;\”>” | sed ‘s/.*href=”//’ | sed ‘s/” target=”_blank”>.*//’`
#echo -e “\e[1;6m\e[1;31m真实下载地址为${realURL}\e[1;6m\e[00m”
if [ x`which axel` != x”” ];then
axel -n $AXELNUM -a -o “${TMP}/${name}.mp3” “${realURL}”
else
#wget太慢了。但是如果没有安装axel,可以把上面一行注释掉,用下面一行代替
wget -c –tries=$TRYCOUNT $realURL -O “${TMP}/${name}.mp3”
fi
if [ “$?” = 0 ]; then
if [ `file -ib “${TMP}/${name}.mp3” | sed -e ‘s/\/.*//g’` = “audio” ]; then
if [ x`which mid3v2` != x”” ];then
title=`echo $name | sed -e ‘s/-.*//g’`
artist=`echo $name | sed -e ‘s/.*-//g’ | sed -e ‘s/.mp3//g’ | sed -e ‘s/.wma//g’`
mid3v2 -D “${TMP}/${name}.mp3”
mid3v2 -t “${title}” -a “${artist}” “${TMP}/${name}.mp3”
fi
mv “${TMP}/${name}.mp3” “${SAVE}/${name}.mp3”
downed=1;
break;
else
echo -e “\e[1;6m\e[1;31m下载 ${name}.mp3 文件无效,正在删除重新下载\e[1;6m\e[00m”
rm “${TMP}/${name}.mp3”;
((j++))
fi
else
echo -e “\e[1;6m\e[1;31m下载 ${name}.mp3 文件无效,正在删除重新下载\e[1;6m\e[00m”
rm “${TMP}/${name}.mp3”;
((j++))
fi
done

#如果下载成功继续下其余的歌
#continue用于跳过循环体中的后续命令
if [ “$downed” = 1 ] ; then
((i++))
echo -e “\e[1;7m\e[1;41m下载 $name 成功\e[1;7m\e[00m”
continue;
fi

# 如果没有mp3格式的则下载wma格式的歌
j=1;
while((j<=downline_wma)); do
wma=`awk ‘NR=='”$j”” ${TMP}/down_wma.txt`
echo -e “\e[1;6m\e[1;31m正在下载${name}.wma\e[1;6m\e[00m”

#echo -e “\e[1;6m\e[1;31m中转页面地址为${mp3}\e[1;6m\e[00m”
wget -O “${TMP}/transit.html” “$wma”
realURL=`iconv -f gbk -t utf8 -c ${TMP}/transit.html | grep “<li class=\”li\” style=\”margin-right:10px;\”>” | sed ‘s/.*href=”//’ | sed ‘s/” target=”_blank”>.*//’`
#echo -e “\e[1;6m\e[1;31m真实下载地址为${realURL}\e[1;6m\e[00m”
if [ x`which axel` != x”” ];then
axel -n $AXELNUM -a -o “${TMP}/${name}.wma” “${realURL}”
else
#wget太慢了。但是如果没有安装axel,可以把上面一行注释掉,用下面一行代替
wget -c –tries=$TRYCOUNT $realURL -O “${TMP}/${name}.wma”
fi
if [ “$?” = 0 ]; then
if [ `file -ib “${TMP}/${name}.wma” | sed -e ‘s/\/.*//g’` = “application” ]; then
#title=`echo $name | sed -e ‘s/-.*//g’`
#artist=`echo $name | sed -e ‘s/.*-//g’ | sed -e ‘s/.mp3//g’ | sed -e ‘s/.wma//g’`
#mid3v2 -D “${TMP}/${name}.wma”
#mid3v2 -t “${title}” -a “${artist}” “${TMP}/${name}.wma”
mv “${TMP}/${name}.wma” “${SAVE}/${name}.wma”
downed=1;
break;
else
echo -e “\e[1;6m\e[1;31m下载 ${name}.wma 文件无效,正在删除重新下载\e[1;6m\e[00m”
rm “${TMP}/${name}.wma”;
((j++))
fi
else
echo -e “\e[1;6m\e[1;31m下载 ${name}.wma 文件无效,正在删除重新下载\e[1;6m\e[00m”
rm “${TMP}/${name}.wma”;
((j++))
fi
done

((i++))
if [ “$downed” = 1 ] ; then
echo -e “\e[1;7m\e[1;41m下载 $name 成功\e[1;7m\e[00m”
else
echo -e “\e[1;7m\e[1;41m下载 $name 失败\e[1;7m\e[00m”
fi
done
rm -fr ${TMP}
exit 0

又一个小linux: DSL

linuxsir上看到的.
主页: http://www.damnsmalllinux.org/

由于DSL采用的是knoppix的技术,不用安装,直接就启动进入图形界面
感觉虽然只有50MB的大小,但其功能确很强大,

1。具有knoppix识别硬件能力强的特点,网络设置容易
2。安装过程没有那么多的问题,(如果可以的话,请测试)
3。启动后的界面干净整洁。
4。占用内存资源非常之小,比arch还小(我的arch下开的服务也很少)
5。硬盘空间占用也很低,它只有50MB。

还是贴图吧,这是我在VBox下刚启动的图:

命令行的聊天工具 finch / gaim-text

以前在命令行下,提到聊天估计也就想到irssi上上irc,MSN什么的都没想过吧.
现在用 finch / gaim-text 就完全可以实现MSN/Gtalk之类的聊天了,至于QQ,还不知道,估计部分没有验证码的”正常”QQ应该可以上吧.
而且,如果以前用过 pidgin / gaim 的话,界面一点都不会陌生哦~差不多就是和gaim一样的.

至于安装,就不要说了,因为装好pidgin / gaim 之后就自然有了 :lol: 

值得注意的是一下快捷键的用法,详见: http://developer.pidgin.im/wiki/Using%20Finch

放个图:

at命令的用法

顺便也在这里记录一下吧.

法一:
命令行输入:
at 17:20 tomorrow 回车会出现:
warning: commands will be executed using /bin/sh
at> 这时候输入到时间后要执行的命令,可以输多行,输完了ctrl+d.
就可以了

法二:
将命令保存成文件再执行:
at -f 文件名 17:20 tomorrow 回车.
这个文件最好加个可执行权限.

更多信息 man at

Perfect Console 计划

转自 http://www.linuxsir.org/bbs/showthread.php?t=245239
=================================================

目的:
提供 X , DirectFB 下的图形界面程序在纯控制台(最好是FrameBuffer的,VGA的驱动屏幕太小)下的替代品.
使用户在不装 X , DirectFB 等图形界面的情况下,也能有很好的体验.

内容:
尽量提供 软件简介, 主页, 安装方法, 截图, 依赖

大多数软件从 Freshmeat -> Environment -> Console (Text Based) -> Curses 找到.

如没有主页和下载地址, 请善用搜索:
1. www.freshmeat.net/projects/软件名
2. www.freshmeat.net 最大的开源软件库,几乎所有软件都能找到, 在这里搜索
3. rpmfind.net 也是很大的软件源, 下来的 src.rpm 可以解压后使用, 其中的 patch 也可以用.
4. www.google.com

有一些软件本人还未试验, use at your own risk .

欢迎提供适合本计划的软件, 要求某个功能的软件也可以提出, 但不保证有人帮你找到.

0. 基础软件
基本上,下面的软件都需要的, 下面就不提了.
Linux kernel with Framebuffer :
GPM : 鼠标驱动
ncurses : 基础图形库
S-lang : 基于 ncurses 的库, 有的软件需要
newt : 另一个图形库, 有的软件需要

screen : 让一个 console 同时运行多个图形程序 ,我写的 screen 的用法, 以及在 lfs 当中的应用 , 还有人说用screen可以实现gpm的跨控制台复制粘帖 这是gentoo的帮助文件: http://gentoo-wiki.com/TIP_Using_screen

1. 中文支持
zhcon : 在LFS5.0+kernel2.6.3里安装zhcon0.2.3
主页: zhcon.sf.net 现已升级到 0.2.6 ,从 0.2.5 开始部分支持 utf8 , 推荐.
cce : cce + gcc4 问题基本解决 (Final)

2. 文件管理
midnightcommander, mc : 见 BLFS Book
Midnight Commander MP : 改版的 mc http://freshmeat.net/projects/mcmp/

3. 上网浏览
lynx , w3m , links 在 BLFS book 里有
lynx : 基本的浏览器,在 cce/zhcon 下支持中文,不支持中文utf8网页(比如 本页 )

w3m : 较好的浏览器,支持表格,在 cce/zhcon 下完美支持中文, utf8 的网页也支持,新的 w3m 直接支持 fb 图象。

links : 功能比 w3m 还强大, 支持后台下载,但是完全不支持中文.
links -g 可以开启图形,高级布局

elinks : links 改版,功能比 links 还强大, 支持多Tab页,但是完全不支持中文.
据说 sir 上某人曾经 links 的中文码表,可以支持中文, 我还没找到,若有人找到,请给我一个地址. 否则, 我来试试自己写(抄袭?) 一个码表,不过肯定是 elinks 的.

4. 上网聊天
centericq : An ncurses-based client for ICQ, Yahoo!, AIM, IRC, Jabber, MSN, and LiveJournal.
http://freshmeat.net/projects/centericq/

Licq : An advanced graphical ICQ clone.
http://freshmeat.net/projects/licq/

5. 收发邮件
Mutt : A small but very powerful text-based mail client.
http://freshmeat.net/projects/mutt/

gnus+fetchmail+procmail
http://www.gnus.org/
http://fetchmail.berlios.de/
http://www.procmail.org/
教程:
PROCMAIL QUICK START http://www.ii.com/internet/robots/procmail/qs/
procmail 软件包包含一个自动的邮件处理器,可以很好的过滤和排序邮件。 http://lfs.linuxsir.org/htdocs/blfsc…/procmail.html
使用fecthmail http://doc.chinahtml.com/Manual/free…fetchmail.html
http://learn.tsinghua.edu.cn:8080/20…nt-backup/gnus
.html
http://learn.tsinghua.edu.cn:8080/20…up/gnus-1.html

Pine 不逊于 mutt 的 email 客户端
http://www.washington.edu/pine/

6. 音乐欣赏
mp3blaster : mepgsound 解码 http://mp3blaster.sourceforge.net/

MOC console audio player for Linux/UNIX
http://moc.daper.net/

mpg123 + playmp3list : mpg123 解码 http://rucus.ru.ac.za/~urban/projects/playmp3list/
mplay + mplayer : mplayer 的 console 前端

cmus : mad 解码 , 看起来比 mp3blaster 还好 http://onion.dynserv.net/~timo/cmus.html
为了支持更多格式,需要一下库:
flac : http://flac.sourceforge.net/
mp3 , mad : http://www.underbit.com/products/mad/
ogg , libogg, http://www.vorbis.com/
libao : http://www.xiph.org/ao/

下面不清楚,可能没有什么用
http://modplug.sourceforge.net/
http://www.musicpd.org/mpc.shtml
http://www.musicpd.org/

7. 视频播放
mplayer :
xine :
这两个在输出驱动为 fb 的情况下,可以完美播放各种格式视频.

8. 集成开发
motor : http://freshmeat.net/projects/motor/
http://thekonst.net/motor
ftp://rpmfind.net/linux/Mandrake/9.2…4-3mdk.src.rpm

有人可能更喜欢用 vi 或 emacs .

9. 上传下载
wget : http://www.gnu.org/software/wget/
curl : http://curl.haxx.se/
prozilla : 多线程 http://prozilla.genesys.ro/
lftp : 命令行 http://lftp.yar.ru/
ncftp : 命令行 http://www.ncftp.com/ncftp/
yafc : 命令行 + 彩色 http://yafc.sourceforge.net/
mc : mc 用来ftp是很方便的

10.图形图像
fbgrab : 在 framebuffer 下截图, http://hem.bredband.net/gmogmo/fbgrab/
我的截图都是 fbgrab 做的, 依赖于 libpng .
编译时不要用 make ,它的 Makefile 调用了一个检查程序,一般都没装,也没什么用.
看一下 Makefile ,把 gcc ……….. 粘帖下来直接用.

fbv : 看图软件,可以在console 下看 png gif jepg ,依赖于 libpng, libungif ,libjepg
http://freshmeat.net/projects/fbv/

iiview : 看图, 还可显示缩略图, 可以在console 下看 png gif jepg tiff,依赖于 libpng, libungif ,libjepg, libtiff
http://freshmeat.net/projects/iiview/

fbview : 看图, 不推荐,依赖太多, 除图形库外,还有imagemagick , oFBis library

fbi 系列 : http://linux.bytesex.org/fbida/ 有用的有:
fbi : 看图软件,可以在console 下看 png gif jepg
fbgs: 脚本, 用 ghostscript 把 ps , pdf 转成图像, 再用 fbi 看
exiftran : 在保留 exif 的同时转换 jpeg

11. 其他工具
htop : 进程管理器, 更好的 top http://htop.sourceforge.net/

sysvconfig : 系统设置, http://sysvconfig.sf.net ,用处不大, 不推荐

12.CD烧录
核心软件 cdrdao cdrtools dvd+rw-tools ,gui 的也要用到, distro 一般都有,很好找

bashburn ,ncurse 界面,菜单选择烧录cd
http://bashburn.sourceforge.net/

cdw ,另一个 ncurse 界面烧录软件
http://sourceforge.net/projects/cdw

screen

引自: http://www.winterxy.com/blog/000128.html
————————————————————–

UNIX/LINUX 工具: SCREEN 命令使用
最近同事给我介绍Screen 命令,真是不错。以前为了让程序在脱离终端的情况下运行,要么让它在后台运行,要么使用nohup运行,但是如果需要交互的程序就麻烦了。例如,你需要使用scp拷贝,需要输入密码,而且数据量很大,需要很长时间。遇到过的人就知道痛苦了。
有了screen,一切都简单了。这里把一篇介绍的文章转贴过来,使用还是很方便的。

screen your screen
文:林思敬
电子邮件:becks.lin@ec-base.com
前言
screen 是什么
根据其man介绍,screen是个多元化多功能的全屏窗口管理器,每个虚拟终端都可以为你提供DEC VT100 terminal的功能, 也许你会问:DEC VT100 terminal又是什么?如果你登陆过某些字符界面的BBS,或许你会记得在注册时,其要求你输入你的终端机型别,而一般预设就是我们刚刚提到的DEC VT100 termina了.另外screen还附加提供了比如SO 6429 (ECMA 48, ANSI X3.64) and ISO 2022 standards的操作功能.
screen 可以做些什么
如果在以前或许screen 是你登陆 bbs 站的好伴侣,但是相信现在大家都是直接登陆图形界面的也就是WEB界面的BBS.当你正在登陆多个BBS而又不想在多个窗口之间切换.那么screen就可以帮你的忙了。
当然screen可不是专为BBS服务, 它可以让你只需要打开一个终端窗口就可以地处理很多的(进程)事情,举个例子:你正在shell上编写某个程序,碰巧你又需要重新启动某个服务,同时还要 FTP上传个大文件,这个时候就可以使用调用screen,只需要按下3个键就可以无须用鼠标在3个窗口间切换.又或者你使用PUTTY等工具登陆到服务器,不想在退出时关闭当前的进程,比如你正在复制文件等.这个时候就可以利用screen让你复制文件这个前台进程享受后台进程的”待遇”。
正是因为screen的种种实用功能 ,已经成为不少*nix玩家的必备利器,让*unix的日常操作管理更加方便。
screen使用
使用screen非常简易.只需在SHELL键入screen,便可打开一个screen session。
而在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。
现在让我来简单介绍基本的命令
C-a c -> Create,开启新的 window
C-a n -> Next,切换到下个 window
C-a p -> Previous,前一个 window
C-a C-a -> Other,在两个 window 间切换
C-a w -> Windows,列出已开启的 windows 有那些
C-a 0 -> 切换到第 0 个 window
C-a 1..9 -> 切换到第 1..9 个window
C-a a -> 发出 C-a,在 emacs, ve, bash, tcsh 下可移到行首
C-a t -> Time,显示当前时间,和系统的 load
C-a K(大写) -> kill window,强行关闭当前的 window
C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、
复制就像用使用 vi 一样
C-b Backward,PageUp
C-f Forward,PageDown
H(大写) High,将光标移至左上角
L Low,将光标移至左下角
0 移到行首
$ 行末
w forward one word,以字为单位往前移
b backward one word,以字为单位往后移
Space 第一次按为标记区起点,第二次按为终点
Esc 结束 copy mode
C-a ] -> Paste,把刚刚在 copy mode 选定的内容贴上
C-a ? -> Help,显示简单说明
C-a d -> detach,将目前的 screen session (可能含有多个 windows)
丢到后台执行 当按了 C-a d 把 screen session detach 掉后,会回到还没进 screen 时的状态,此时在 screen session 里每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。
下次 login 进来时:
screen -ls -> 显示所有的 screen sessions
screen -r [keyword] -> 选择一个screen session 恢复对话
若 screen -ls 里有 Attached sessions:
screen -d [keyword] -> 强制 detach,以便「接手」过来
实例
说明看了那么多,让我们用一个实际例子来结束我们今天的学习。
在我们开启一个screen后,然后使用joe编辑一个文件,之后因为临时需要离开这时就可以运行Ctrl+a d,显示如下:
[becks@ec-base becks]$ screen
[detached]
这个时候当我们运行ps -e 可以看到pts/2这个我刚刚运行的screen正在运行joe
6264 pts/2 00:00:00 bash
6354 pts/2 00:00:00 joe
而当我们回来后想恢复这个session,只需要键入screen -r,而当你有多个session时候,系统将提示你选择一个,如下:
[becks@ec-base becks]$ screen -r
There are several suitable screens on:
6263.pts-1.ec-base (Detached)
6382.pts-1.ec-base (Detached)
Type “screen [-d] -r [pid.]tty.host” to resume one of them.
输入该session的pid进行恢复
[becks@becks becks]$ screen -r 6263
想退出screen的session,和退出shell一样,只需要键入exit命令,成功退出后将有以下提示
[screen is terminating]
screen的简单用法就介绍到这里,更多的功能和应有请读者参考MAN自行研究.