显示标签为“linux”的博文。显示所有博文
显示标签为“linux”的博文。显示所有博文

星期六, 三月 07, 2009

sed学习

sed缓冲区
sed 处理文件时,会把文件的每一行保存在一个临时缓冲区,即模式空间。
sed处理完一行后,该模式空间就被清空,下一行等待处理。因此可把模式空间内容用命令h复制并
保存在一个暂存缓冲区(holding buffer)内,然后可用命令G把它从暂存缓冲区读出一行,并放回模式空间缓冲区,
追加在模式空间内当前行的后面。

1. sed '/north/p' datafile
缺省情况下,sed会把输入的所有行都打印在标准输出上;如果某行匹配了north,则sed将该行再打印一遍。

2. sed -n '/north/p' datafile
只打印匹配north的行.

3.删除d
sed '3d' datafile 删除第3行
sed '3,$d' datafile 删除从第3行到结束
sed '$d' datafile 删除最后一行
sed '/north/d' file 删除匹配north的行

4.替换命令s
sed 's/west/north/g' datafile 全局替换
sed 's/[0-9][0-9]$/&.5/g' datafile
所有以两位数字结尾的行,后面加上.5(点5)

sed -n 's/\(Mar\)got/\1lianne/p' datafile
Mar作为标签1,将Margot 替换成Marianne

sed 's#3#88#g' datafile等价于 sed 's/3/88/g' datafile

指定行范围:逗号
sed -n '/west/,/east/p' datafile 指定在模式west和east之间的行,打印
sed -n '5,/^northeast/p' datafile 打印从第5行到第一个以northeast开头的行之间的所有行
sed '/west/,/east/s/$/**VACA**/' datafile修改从模式east和west之间的所有行,并将行尾$替换成**VACA**

多重编辑e
sed -e '1,3d' -e 's/Mike/Jones/' datafile
删除1到3行,然后再替换Mike为Jones(先全部执行完第一重编辑,再进行第二重编辑)

读入r
sed '/suan/r newfile' datafile
如果文件datafile中某一行匹配到模式suan,则在该行后读入newfile的内容。

写文件w
sed -n '/north/w newfile' datafile
如果文件datafile中某一行匹配到模式north,则把该行写入newfile文件中

追加
sed '/^north /a\\
----->THE NORTH SALES<------

插入
sed '/eastern/i\\
NEW ENGLAND REGION\\
----------------' datafile
下一行命令n
sed '/eastern/{n;s/AM/Archie/;}' datafile
如果某一行匹配到模式eastern, 命令n指示sed用下一输入行,即包含AM的那一行,
替换模式空间中的当前行,并用Archie替换AM,然后打印该行,再继续向下处理

转换y
sed '1,3y/abcdef/ABCDEF/' datafile
把第1到3行中abcedf字母转换成大写字母

退出q
sed '5q' datafile打印5行后退出
sed '/Lewis/{s/Lewid/Joseph/;q;} datafile
某行匹配到Lewis时,先用Joseph替换Lewis,然后立即退出

暂存和取用(h和g命令)
sed -e '/WE/{h;d;}' -e '/CT/{G;}' datafile
找到某一行匹配模式WE,用命令h将该行从模式缓冲区拷贝到一个暂存缓冲区,再用命令d把
该模式空间缓冲区那份拷贝删除。找到模式CT后,再用G命令取出保存在暂存缓冲区中的副本,
用其替换模式空间当前行。

暂存和互换命令x
sed -e '/Patricia/h' -e '/Margot/x' datafile
x命令将暂存区的内容和模式空间内的当前行互换
sed脚本编程:把sed组成一个文本文件,执行脚本时,sed 先将输入文件中第一行拷贝到模式缓冲区
,然后执行脚本中的所有命令;每行处理完毕后,sed再拷贝文件中下一行到模式缓冲区,
执行脚本中的所有命令。
如:
/Lewis/a\
Lewis is TOP salesperson for April!!!\
Lewis is moving to the southern district next month.\
/Margot/c\
********************
MARGOT HAS RETIRED\
********************
/i\
mployer database\
_________________

$d

%sed -f filename datafile
sed -n '/sentimeatal/p' filename
sed '1,3d' filename > newfile
sed '/[Dd]aniel/d' filename
sed -n '15,20p' filename
sed '/1,10s/Montana/MT/g' filename
sed '/March/!d' filename
sed '/March/\!d' filename
sed 's/\([Oo]cuur\)ence/\1rence' file
sed '/^....//' file删除每行前4个字符
sed '/....$//' file删除每行后4个字符
sed '/east/,/west/s/North/South/' filename
把从east到west范围内出现的第一个North替换成South,只一次


sed 's/%//g' 把%换成空格

sed 's/^0*//g' 把以0开头的数字换成空格

sed /^$/d  删除空行

sed $d 删除最后一行

sed ld 删除第一行

sed 's/[0-9][0-9]*/& password/g' file.txt 把password连接到

Read More...

星期三, 四月 23, 2008

Pekwm &bmpanel











今天来个pekwm+bmpanel+conky
其实和前面的openbox差不多都那样,改的地方也差不多,设置好了一个其他的也就照着改改就ok了,唯一遗憾的是bmpanel在设置font的时候不能用pl的zhunyuan字体,只能用丑陋的Vera,好像这个是bmpanel的bug?google了半天也没找到什么,呵呵,再说吧 ,先凑合着用吧

Read More...

星期二, 四月 22, 2008

eva版本号过低无法登陆QQ的解决办法

该死的腾讯总是喜欢封杀第三方QQ,不过他只是靠拒绝低版本号QQ登陆来实现的。
因为第三方QQ更新得比较慢(eva,luma),所以经常会出现登陆不上的情况,这时只好自己动手,丰衣足食了。

以eva为例:
emerge -f eva //下载eva的源码包
将 /usr/portage/distfiles/eva-0.4.1.tar.bz2 包解出来
修改 eva/src/libeva/evadefines.h 文件中的 QQ_CLIENT_VERSION 常量
改为 const int QQ_CLIENT_VERSION = 0x0E1B; 这个版本号可以想办法找到最新的(比如看看珊瑚虫的设置)
然后把修改过的源码重新打包,放回 /usr/portage/distfiles/ 目录
然后
cd /usr/portage/local/layman/gentoo-china/net-im/eva
ebuild eva-0.4.1.ebuild digest
否则emerge时会重新下载,做的修改就白费了。

然后就可以
emerge eva
安装修改过的eva了。装完了以后成功登陆QQ。

Read More...

星期一, 四月 21, 2008

fluxbox-又一pp桌面











show一下我的pp的fluxbox桌面

Read More...

星期一, 三月 10, 2008

Linux系统的开机程序执行顺序

开机的程序是这样的:

1. 加载 BIOS 的硬件信息,并取得第一个开机装置的代号;

2. 读取第一个开机装置的 MBR 的 boot Loader (亦即是 lilo, grub, spfdisk 等

等) 的开机信息;

3. 加载 Kernel 操作系统核心信息, Kernel 开始解压缩,并且尝试驱动所有硬件装

置;

4. Kernel 执行 init 程序并取得 run-level 信息;

5. init 执行 /etc/rc.d/rc.sysinit 档案;

6. 启动核心的外挂模块 (/etc/modprobe.conf);

7. init 执行 run-level 的各个批次档( Scripts )

Read More...

星期三, 三月 05, 2008

fcitx主体颜色

其一

[界面]
候选词个数=10
主窗口使用3D界面=0
输入条使用3D界面=0
主窗口隐藏模式=1
是否自动隐藏输入条=1
显示虚拟键盘=0
输入条居中=1
首次显示输入条=1
# 输入条固定宽度(仅适用于码表输入法),0表示不固定宽度
输入条固定宽度=0
输入条偏移量X=0
输入条偏移量Y=67108880
序号后加点=1
显示打字速度=0
显示版本=0
光标色=92 210 131
主窗口背景色=255 255 255
主窗口线条色=229 229 229
主窗口输入法名称色=191 191 191 80 220 150 30 160 250
输入窗背景色=255 255 255
输入窗提示色=250 40 200
输入窗用户输入色=250 40 200
输入窗序号色=250 40 200
输入窗第一个候选字色=30 160 250
# 该颜色值只用于拼音中的用户自造词
输入窗用户词组色=250 40 200
输入窗提示编码色=100 100 255
# 五笔、拼音的单字/系统词组均使用该颜色
输入窗其它文本色=30 160 250
输入窗线条色=229 229 229
输入窗箭头色=30 240 170
虚拟键盘窗背景色=255 255 255
虚拟键盘窗字母色=250 40 200
虚拟键盘窗符号色=30 160 250

其二

粉色

光标色=102 159 66
主窗口背景色=255 255 255
主窗口线条色=203 202 186
主窗口输入法名称色=153 153 153 102 159 66 56 134 230
输入窗背景色=255 255 255
输入窗提示色=2 89 196
输入窗用户输入色=255 0 132
输入窗序号色=0 66 200
输入窗第一个候选字色=0 99 200
#该颜色值只用于拼音中的用户自造词
输入窗用户词组色=0 99 200
输入窗提示编码色=255 0 132
#五笔、拼音的单字/系统词组均使用该颜色
输入窗其它文本色=56 134 230
输入窗线条色=203 202 186
输入窗箭头色=193 227 151
虚拟键盘窗背景色=220 220 220
虚拟键盘窗字母色=80 0 0
虚拟键盘窗符号色=0 0 0

其三

ubuntu主题
[界面]
候选词个数=10
主窗口是否使用3D界面=1 #
输入条使用3D界面=1
主窗口隐藏模式=1 #0-->一直显示在顶层;1-->只有在中文输入状态下才显示;2--> 不显示
显示虚拟键盘=0
是否自动隐藏输入条=1
输入条是否居中=0
首次显示输入条=0
#输入条固定宽度(仅适用于码表输入法),0表示不固定宽度
输入条固定宽度=0
输入条偏移量X=0
输入条偏移量Y=12
序号后加点=1
显示打字速度=0
显示版本=0
光标色=160 446 46
主窗口背景色=240 240 240
主窗口输入法名称色=153 153 153 200 200 200 240 153 50
主窗口线条色=245 154 49
输入窗背景色=240 240 240
输入窗提示色=48 132 240
输入窗用户输入色=255 0 255
输入窗序号色=239 104 49
输入窗第一个候选字色=238 103 48
#该颜色值只用于拼音中的用户自造词
输入窗用户词组色=241 154 49
输入窗提示编码色=255 0 255
#五笔、拼音的单字/系统词组均使用该颜色
输入窗其它文本色=245 154 49
输入窗线条色=237 104 48
输入窗箭头色=193 227 151
虚拟键盘窗背景色=219 211 188
虚拟键盘窗字母色=245 154 49
虚拟键盘窗符号色=238 103 48

其四

黑色主题
[界面]
候选词个数=10
主窗口是否使用3D界面=1 #
输入条使用3D界面=1
主窗口隐藏模式=1 #0-->一直显示在顶层;1-->只有在中文输入状态下才显示;2--> 不显示
显示虚拟键盘=0
是否自动隐藏输入条=1
输入条是否居中=0
首次显示输入条=0
#输入条固定宽度(仅适用于码表输入法),0表示不固定宽度
输入条固定宽度=0
输入条偏移量X=0
输入条偏移量Y=12
序号后加点=1
显示打字速度=0
显示版本=0
光标色=160 446 46
主窗口背景色=30 34 35
主窗口线条色=29 123 213
主窗口输入法名称色=153 153 153 170 170 170 255 255 0
输入窗背景色=30 34 35
输入窗提示色=1 154 232
输入窗用户输入色=255 0 255
输入窗序号色=255 255 255
输入窗第一个候选字色= 85 255 85
#该颜色值只用于拼音中的用户自造词
输入窗用户词组色=255 255 0
输入窗提示编码色=255 0 255
#五笔、拼音的单字/系统词组均使用该颜色
输入窗其它文本色=255 255 0
输入窗线条色=1 183 255
输入窗箭头色=193 227 151
虚拟键盘窗背景色=30 34 35
虚拟键盘窗字母色=255 255 255
虚拟键盘窗符号色=255 255 255

其五

白玉色主题
候选词个数=10
主窗口使用3D界面=0
输入条使用3D界面=0
主窗口隐藏模式=1
是否自动隐藏输入条=1
显示虚拟键盘=0
输入条居中=1
首次显示输入条=1
# 输入条固定宽度(仅适用于码表输入法),0表示不固定宽度
输入条固定宽度=0
输入条偏移量X=0
输入条偏移量Y=67108880
序号后加点=1
显示打字速度=0
显示版本=0
光标色=92 210 131
主窗口背景色=255 255 255
主窗口线条色=229 229 229
主窗口输入法名称色=191 191 191 80 220 150 30 160 250
输入窗背景色=255 255 255
输入窗提示色=250 40 200
输入窗用户输入色=250 40 200
输入窗序号色=250 40 200
输入窗第一个候选字色=30 160 250
# 该颜色值只用于拼音中的用户自造词
输入窗用户词组色=250 40 200
输入窗提示编码色=100 100 255
# 五笔、拼音的单字/系统词组均使用该颜色
输入窗其它文本色=30 160 250
输入窗线条色=229 229 229
输入窗箭头色=30 240 170
虚拟键盘窗背景色=255 255 255
虚拟键盘窗字母色=250 40 200
虚拟键盘窗符号色=30 160 250

Read More...

星期日, 十二月 30, 2007

一个mplayer配置文件



# Write your default config options here!
# Some video output drivers (svga, x11, vesa) do not support hardware scaling.
ao=alsa #音频驱动选择
vo=x11 #视频驱动选择
joystick=0 #是否支持手柄控制
stop-xscreensaver=yes #是否允许播放视频时出现屏保
monitoraspect=1280:800 #识别桌面分辨率为1280×800
zoom=yes #是否允许视频缩放
subcp=cp936 #字幕字符集编码
subfont-autoscale=1 #设置按什么方法来进行自动缩放字幕,0-不自动缩放,1-按电影高度缩放,2-按电影宽度缩放,3-按电影对角线缩放(默认值)
subfont-text-scale=5 #设置字幕文本的自动缩放系数(屏幕尺寸的百分比),值范围为0~100,默认值为5。
subfont-osd-scale=8 #OSD字幕的自动缩放系统(屏幕尺寸的百分比),值范围为0~100,默认值为6。
font="Microsoft YaHei" #选择字幕用的字体
overlapsub=1 #支持多语言字幕。
sub-fuzziness=1 #设定字幕自动加载的识别,播放时可以通过j键切换。
osdlevel=1 #在屏幕的左上角显示相应时间等
cache = 8192 #此选项指定用多少内存(以 kBytes 为单位)作为播放文件或 URL 的预缓冲。
autosync=0
mc=0


#subalign=2 #字幕对齐方式。顶部对齐 (原始行为)。中央对齐。底部对齐 (默认)。
#vf=expand=0:-30:0:0 #如果是16:9的影片,字幕可以放在下面的黑框中osdlevel
#vf=eq2=1.0:-0.8
#vf=delogo=380:0:120:45:0
#subfont-blur=0
#subfont-outline=5
#subpos=100
#flip=1
#mirror=0
#ffactor=0.75 #对字体的 alphamap 重新采样。

Read More...

.bash_profile和.bashrc说明

/etc/profile: 
此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc: 
为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile:
每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:
该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
~/.bash_logout:
当每次退出系统(退出bash shell)时,执行该文件.另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
通常二者设置大致相同,所以通常前者会调用后者。



* 每次bash作为login shell启动时会执行.bash_profile。

主要有(我所知道的)有以下几种情形:

a) 每次登录到服务器时默认启动的shell

b) "su -l [USER]"时进入的shell

c) "bash --login"进入的shell

* 每次bash作为普通的交互shell(interactive shell)启动时会执行.bashrc

常见的有:

i) "su [USER]"进入的shell
ii) 直接运行"bash"命令进入的shell。

** 注意

1, 在shell脚本中"#!/usr/bin/bash"启动的bash并不执行.bashrc。因为这里的bash不是
interactive shell。

2, bash作为login shell(login bash)启动时并不执行.bashrc。虽然该shell也是interactive shell,
但它不是普通的shell。

* 一般.bash_profile里都会调用.bashrc

尽管login bash启动时不会自动执行.bashrc,惯例上会在.bash_profile中显式调用.bashrc。

,-------------------------------------
| if [ -f ~/.bashrc ]; then
| . ~/.bashrc
| fi
`-------------------------------------

.bash_profile显示内容如下:
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=.:$PATH:$HOME/bin
BASH_ENV=$HOME/.bashrc
USERNAME="root"

export USERNAME BASH_ENV PATH

Read More...

星期二, 十一月 06, 2007

FVWM新手入门不完全手册『转』

<一>Fvwm是什么?哪里可以下载?

Fvwm是一种窗口管理器,它可以方便的管理系统的资源。gnome和kde是桌面系统,这是两个不同的概念。桌面系统可以调用不同的窗口管理器,这就是为什么gnome系统可以有metacity和swafish两种不同的WM可以选择。

现在WM很多,但是Fvwm作为一种历史比较悠久的WM,其最大的优点就是:可完全定制,节省系统资源开销。而且它的界面也可以做得非常漂亮。
由于本版不让发图片,我的抓图在linufans,地址是:
http://www.linuxfans.org/nuke/modules.php?name=Desktop_Downloads&op=geninfo&did=161

Fvwm的抓图地址:http://www.fvwm.org/screenshots/index.php

Fvwm下载地址在:http://www.fvwm.org/download/index.php 有gz,bz2两种文件。最好下载bz2文件,因为它压缩得比较大。(可以省点网费)

<二>编译和安装过程

所有的linux软件,以源代码安装的话,都要经历三个过程,configure,make ,make install

下面以fvwm-2.5.6.tar.bz2为例子的编译安装过程。

首先cp fvwm-2.5.6.tar.bz2 /usr/local

tar jxvf fvwm-2.5.6.tar.bz2 (在/usr/local目录下面生成了fvwm2.5.6目录)

然后cd fvwm-2.5.6 再就是./configure,make ,make install

安装成功后,在/usr/local/bin的目录下面生成了一些文件,有fvwm,xpmroot等

你可以切换到usr/local/bin目录下面,ls fvwm* 会出来相关的生成的fvwm的文件。好了,现在fvwm已经在你的系统中成功安装了,如果遇到什么问题,也可以看看在fvwm-2.5.6中的INSTALL文件。

<三>启动Fvwm

经常看到很多人问这个问题,在linuxsir,linuxeden以及linuxfans上都有人在问这样的问题,实际上,我第一次用fvwm的时候,也不知道怎么来启动它,不过有一次在安装windowmaker的时候,误打误撞的受到了启发。知道了以命令行的方式来启动fvwm。

首先设置你的系统启动方式是命令行:在/etc/inittab文件中,设置以命令行的方式来启动

id: 3:initdefault,然后把/etc/X11/xinit/xinitrc这个文件备份,最好改成xinitrc.old,,然后在/root或者是/home/usrname/下面建立一个.xinitrc文件,在里面写入:exec fvwm保存,然后以startx的方式,就进入了fvwm 。

这种方式对我来说比较适用,因为我很少用gnome和kde,对于那些想在多种系统中切换的朋友,可能有些麻烦。因为你想进入gnome和kde的时候,还要重新把xinitrc.old改成xinitrc,然后要把根目录下面的.xinitrc文件改名。

<四>FVWM的配置文件

当你进入Fvwm后,你会发现它缺省的配置是很简陋的。在/usr/local/fvwm-2.5.6/sample.fvwmrc目录下面有些配置文件,比如:system.fvwm2rc等,你可以把这些文件copy到/root/.fvwm目录下面去(如果这个目录没有,你要自己建立一个),并改名为:.fvwm2rc,再进入fvwm,看是否发生了些什么变化,是不是变得稍微好看了点:)不过还是很简陋:(

fvwm正是因为它可以完全被定制,所以它的缺省的配置就很简单,一切都可以按照你自己的意思来办,它可以模拟任何的系统,这就是它最大的优点。

和aftstep, windowmaker相比,它们都有固定模式,而且缺省的配置界面已经很漂亮了,改动也比较困难。即使是换了不同的主题,也是换汤不换药。 Afterstep一启动就要启动wharf,windowmaker一看,你就知道它是windowmaker,但是fvwm模拟的系统,让你总有一种新鲜的感觉。不过关于界面美观的问题,是仁者见仁,智者见智。其实我们用wm的目的是用来管理我们的系统,让我们能更好的学习和工作。一味的追求界面的美观,是没有必要的。

不过正是因为fvwm可以完全被定制,也给它的配置带来了很多困难。它需要你自己来配置,这对新手来说是很困难的,不过好在有些高手已经给我们配置了。

下面这个配置文件是一位高手配置的,下载地址在:

http://learn.tsinghua.edu.cn/homepage/015450/src/.fvwm2rc

<五>Fvwm的配置初步分析

只要一个.fvwm2rc文件,fvwm就可以现实出非常漂亮的界面,一切按照你自己的意思来现实,这对个人来说是比较适用了,也比较人性的。下面我将详细的分析一下我自己的一份.fvwm2rc文件。

对Fvwm的.fvwm2rc来说,最重要的几个设置是:

icons----定义系统要用到的图标,这个很重要(在www.kde-look.org中可以下载一些

icon)

Menu-----系统的菜单,让你把一些常用的软件和工具直接在Menu启动,是不是很

方便:)

FvwmButtons----以图标的形式来装饰系统,也可以把一些dockapp欠入其中,同时也

可以在你按下mouse的时候启动相应的程序。

FvwmPager----用来设置desk和pager,让你方便的在不同的虚拟桌面之间切换。

FvwmTaskBar-----任务条,和window一样的任务条

FvwmWharf-------这个和Afterstep的wharf一样的,正因为有这个,

fvwm模拟afterstep就非常的容易了:)

<六>Fvwm的相关资源

说了这么多,也许你有点疲惫了,看看我的一些Fvwm的主题吧,在linuxsir上我发过一些抓图



<七>Fvwm的详细配置(以我自己配置的.fvwm2rc为例子)。注意:以“#”开头的为注释部分,*开头的一般为Fvwm的模块的相关的设置。

1.icons设置:(定义了系统需要的一些icons的连接地址)

ImagePath +:/root/pic
ImagePath +:/usr/local/AquaFusion/22x22/devices
ImagePath +:/usr/local/AquaFusion/22x22/apps
ImagePath +:/usr/local/AquaFusion/22x22/filesystems
ImagePath +:/usr/local/AquaFusion/22x22/actions

如果你自己设置的时候,这些地址要存在才行。

2.Menu的配置

首先是MenuStyle

MenuStyle * Foreground white, Background gray40
Menustyle * fvwm, Font -adobe-times-bold-r-*-*-14-*-*-*-*-*-*-*
MenuStyle * HilightBackOff, Hilight3DThickness -3, ActiveForeOff, PopupOffset -3 100
MenuStyle * ItemFormat %s%10p%|%i%12p%l%|%6p%>%10p%s
MenuStyle * ActiveFore #49C671
MenuStyle * MenuFace VGradient 64 darkgray MidnightBlue
MenuStyle * MenuFace TiledPixmap /root/pic/macblack.png
ButtonStyle All -- UseTitleStyle
ButtonStyle All ActiveDown VGradient 8 palevioletred black

其中分别是定义了menu的颜色方案,具体的通过文字,也可以知道它的意思了,

MenuStyle * MenuFace TiledPixmap /root/pic/macblack.png对于这句设置是:以一张png的图片作为Menu的背景,让Menu看起来很有质感,甚至可以达到透明的效果。是不是很cool??这里是我的设置,你可以选择一张你自己喜欢的png或者是xpm图片作为Menu的背景。

上面是定义了MenuStyle,下面将给出菜单的详细内容:

######################## Menus ###################

DestroyMenu RootMenu
AddToMenu RootMenu Root Menu Title
+ &aterm%kcontrol.png% Exec exec aterm
+ &gnome-terminal%gnome-apps.png% Exec exec gnome-terminal
+ konsole%xconsole.png% Exec exec konsole
+ Nop
+ &Programs%hancom.png% Popup ProgramsMenu
+ &Utilities%kdmconfig.png% Popup Utilities
+ Nop
+ Re&fresh Screen%kbabeldict.png% Refresh
+ Nop
+ &Lock%lock.png% Exec exec xscreensaver-command -lock
+ ExitFvwm%terminal.png% Popup Quit-Verify


DestroyMenu ProgramsMenu
AddToMenu ProgramsMenu Choose-Pro%view_icon.png% Title
+ gedit%editshred.png% Exec exec gedit
+ emacs%emacs.png Exec exec emacs
+ &gqview%xpaint.png Exec exec gqview
+ &xpdf%xchat.png% Exec exec xpdf
+ x&mms%xmms.png% Exec exec xmms
+ stardict%kdat.png% Exec exec stardict
+ mo&zilla%netscape.png% Exec exec mozilla
+ &Gimp%gimp.png% Exec exec gimp
+ xload%xsane.png% Exec exec xload
+ gkrellm%gnomemeeting.png% Exec exec gkrellm

DestroyMenu Utilities
AddToMenu Utilities Utilities%scanner.png% Title
+ Top%folder_mediumgreen.png% Exec exec xterm -T Top -n Top -e top
+ xcalc%xcalc.png% Exec exec xcalc
+ Xman%folder_burntorange.png% Exec exec xman
+ xclipboard%classic_mac.png% Exec exec xclipboard &
+ konqueror%go.png% Exec exec konqueror
+ Nop
+ wmtimer%babelfish.png% Exec exec wmtimer &

+ kcontrol%kopete.png% Exec exec kcontrol

+ xlogo%x.png% Exec exec xlogo
+ Captura%kcmkwm.png% Exec captura
+ FvwmCommand%xterm.png% Module FvwmConsole -terminal aterm -geometry 45x5-0+0 \
-bg gold2 -fg midnightblue \
-fn -adobe-courier-medium-r-*-*-14-*-*-*-*-*-*-*


DestroyMenu Quit-Verify
AddToMenu Quit-Verify Choose%xconsole.png% Title
+ Yes, Really Quit%xchat.png% Quit
+ Restart Fvwm2%kstars.png% Restart fvwm2
+ No, Dont Quit%hancom.png% Nop

其中+ &aterm%kcontrol.png% Exec exec aterm,前面为aterm,后面的png图片kcontrol.png将在菜单中出现在文字的前面。后面的Exec exec将执行aterm这个命令。依次类推,后边都是如此。


+ FvwmCommand%xterm.png% Module FvwmConsole -terminal aterm -geometry 45x15-0+0 \
-bg black -fg white \
-fn -adobe-courier-medium-r-*-*-14-*-*-*-*-*-*-* 启动了一个FvwmCommand,FvwmCommand是不能在xterm中启动,它只能通过菜单,或者是Modules来启动。

这里定义了一个FvwmCommand,它的背景颜色是黑色(black)字体颜色是白色。字体为:-adobe-courier-medium-r-*- *-14-*-*-*-*-*-*-*,大小是45×15,位置是-0+0,屏幕的右上角,你在上面的那张图中可以看到它的效果。当然你可以改变这个坐标的位置,让它出现在你希望出现的地方。

FvwmCommand能很好的和Fvwm通讯,在其中输入Fvwm的相关模块能直接执行。比如在 FvwmCommand中输入:FvwmTaskBar,它就能直接调出Fvwm的任务条,当你的配置文件出了问题,或者无法调出相关的模块的时候,你可以开启一个FvwmCommand来,直接调出相关的模块。这样是不是很方便:)。菜单的定义就是这样的,其实很简单,看看我的菜单的效果吧:




3.FvwmButtons的设置

你看到的上图中,在屏幕最底部有一排图标,就是FvwmButtons的现实效果,怎么样,漂亮吗??其中还有2个dockapp,分别用来显示cpu和内存的使用情况。(这两个程序是wmcpuload和wmmemload。下载地址在:http://dockapps.org。详细配置文件如下:


################## FvwmButtons ############################## ##########################################################


# Colors,设置FvwmButtons的颜色
*FvwmButtonsFore white
*FvwmButtonsBack white

#用一张xpm图片作为FvwmButtons的背景,用些你喜欢的图片实现很玄的效果:)
*FvwmButtonsPixmap /root/pic/icons/macblack_small.xpm
# Font 设置字体的大小
*FvwmButtonsFont 5x8


#设置FvwmButtons的出现在屏幕的位置,+250-0的坐标刚好在屏幕的底部中间位置。
*FvwmButtonsGeometry +250-0
*FvwmButtonsColumns 7 #设置FvwmButtons为七列,一行
*FvwmButtonsRows 1

*FvwmButtons(Title Nautilus, Icon evolution.png, Action Exec nautilus &)
*FvwmButtons(Swallow wmcpuload Exec wmcpuload -w &)
*FvwmButtons(Title xmms, Icon noatun.png, Action Exec xmms &)
*FvwmButtons(Title gqview, Icon fish.png, Action Exec gqview &)
#*FvwmButtons(Title kmail, Icon arson.png, Action Exec kmail &)
*FvwmButtons(Swallow wmmemload Exec wmmemload -w &)
*FvwmButtons(Title Terminal, Icon log.png, Action Exec gnome-terminal &)

上面各项中,分别为Title的名字,然后就是相应的图标,然后就是Action,当你用鼠标点击它的时候,执行相应的操作。


小结:FvwmButtons这个模块的功能非常的强大,你可以在其中欠入FvwmPager或者是FvwmWinList等,具体的可以参考Fvwm的man手册。

4.FvwmPager的设置,通过这个模块,可以实现虚拟桌面的切换,您看到的上图中,屏幕的左上角,就是一个Pager,具体设置如下:


########################### Pager #########################################
*FvwmPager: Rows 1
*FvwmPager: Columns 1 #设置它为一行和一列,当然你可以设置成其它的数字。
*FvwmPagerFore white #聚焦的时候为白色

#用一张png图片作为FvwmPager的背景,可以实现很漂亮的效果。
*FvwmPagerPixmap /root/pic/macblack.png

#定义FvwmPager出现在屏幕的位置
*FvwmPagerGeometry +5+5
*FvwmPagerBack #909090 #它的背景颜色,其实设置了pixmap后,这项已经不重要了
*FvwmPager:Font -*-fixed-medium-r-semicondensed-*-13-*-gb2312.1980-0
*FvwmPagerHilight #808080

*FvwmPagerLabel 0 MyFvwm 显示pager的名字
#*FvwmPagerLabel 1 MyFvwm
#*FvwmPagerLabel 2 Program
#*FvwmPagerLabel 3 Myfavorite
*FvwmPager:SmallFont -*-fixed-medium-r-semicondensed-*-13-*-gb2312.1980-0
*FvwmPagerBalloons All
*FvwmPagerBalloonBack white
*FvwmPagerBalloonFore black
*FvwmPager:BalloonFont -*-fixed-medium-r-semicondensed-*-13-*-gb2312.1980-0

*FvwmPagerBalloonBorderWidth 0
*FvwmPagerBalloonBorderColor white

FvwmPager还可以欠入在FvwmButtons中来显示,具体可以参考man手册。

5.FvwmTaskBar,这个模块,我用得不是很好,配置出来的任务条象win2000的,所以我不大喜欢,不过有些人用了些特殊的程序,象perl,实现了很漂亮的FvwmTaskBar,可以看看下面的抓图:http://www.fvwm.org/screenshots/Mikhael-desk-1280x1024.php

相关的配置文件如下:

Style FvwmTaskBar HandleWidth 0, BorderWidth 0
*FvwmTaskBar: UseSkipList
*FvwmTaskBar: AutoStick
*FvwmTaskBar: DeskOnly
#*FvwmTaskBar: Action Click1 DeiconifyRaiseAndFocus
*FvwmTaskBar: Action Click2 Iconify On
*FvwmTaskBar: Action Click3 Lower
#*FvwmTaskBar: Action Click3 FvwmIdent
*FvwmTaskBar: MailCommand Exec exec rxvt -e mutt
*FvwmTaskBar: 3DFvwm
*FvwmTaskBar: StartName FVWM
*FvwmTaskBar: StartMenu RootMenu
*FvwmTaskBar: Font -*-simsun-medium-r-*-*-14-*-*-*-*-*-*-*
#*FvwmTaskBar: Font xft:Luxi Mono
*FvwmTaskBar: SelFont -*-simsun-medium-r-*-*-14-*-*-*-*-*-*-*
*FvwmTaskBar: ShowTips
*FvwmTaskBar: ClockFormat
*FvwmTaskBar: WindowButtonsRightMargin 20

*FvwmTaskBar: Back seagreen
*FvwmTaskBar: Fore gold2
*FvwmTaskBar: FocusFore cornsilk
*FvwmTaskBar: IconBack darkgreen
*FvwmTaskBar: IconFore white

#*FvwmTaskBar: Button Title hello, Icon mini.x.xpm, Action (Mouse 1) Module FvwmConsole
#*FvwmTaskBar: DateFormat %A, %B %d, %Y
#*FvwmTaskBar: WindowButtonsLeftMargin 20
#*FvwmTaskBar: HighlightFocus
#*FvwmTaskBar: AutoHide 6

 

6.关于FvwmWharf,这个模块挺不错的,可以实现很复杂的功能,象一个抽屉似的。把一些图标藏在其中。具体配置文件如下:

Style FvwmWharf NoTitle,NoHandles, Sticky, WindowListSkip,BorderWidth 0,CirculateSkip

DestroyModuleConfig FvwmWharf: *
*FvwmWharf: Animate
*FvwmWharf: AnimateMain
*FvwmWharf: Geometry -7-316
*FvwmWharf: Columns 1
*FvwmWharf: Bgcolor Grey70
*WharfBalloonFore Black
*WharfBalloonBack Grey70

#*FvwmWharf: Bgcolor #000000
*FvwmWharf: Colorset #000000
*FvwmWharf: FullPush
*FvwmPagerFore:Black
*FvwmWharf: TextureType 128
#用一张xpm图片作为它的背景,这个可以实现很好的视觉效果。
*FvwmWharfPixmap /root/pic/icons/s11.xpm

*FvwmWharf asclock nil MaxSwallow asclock asclock &
*FvwmWharf wmitime nil MaxSwallow wmitime wmitime &
*FvwmWharf bubblemon nil MaxSwallow bubblemon bubblemon &
*FvwmWharf wmusic nil MaxSwallow wmusic wmusic -w

*FvwmWharf a kmenu.png Folder
*FvwmWharf Exit xchat.png FvwmForm FvwmForm-QuitVerify
*FvwmWharf Recycler software_update.png Restart
*FvwmWharf lock Classic.png Exec exec xscreensaver-command -lock
*FvwmWharf ~Folder

*FvwmWharf b qtella.png, Folder
*FvwmWharf aterm gaim2.png Exec exec aterm &
*FvwmWharf konqueror go.png Exec exec konqueror &
*FvwmWharf gedit emacs.png Exec exec gedit &
*FvwmWharf xmms xmms.png Exec exec xmms &
*FvwmWharf gnome-terminal gnome-apps.png Exec exec gnome-terminal &
*FvwmWharf ~Folder

*FvwmWharf wmnotify nil MaxSwallow wmnotify wmnotify &


上面用到的一些png和xpm文件,它们的路径您必需在icons的path中设置好,否则会无法显示。

<八>Fvwm的相关FAQ

1.启动相应的模块。

所有的Fvwm的模块,只有在函数中启动了它们,它们才能够工作,在.fvwm2rc文件中,如果您需要用到FvwmButtons,或者其它的模块,必需要先启动它。具体如下:

DestroyFunc StartFunction
AddToFunc StartFunction
+ I Module FvwmButtons
+ I Module FvwmPager
+ I Module FvwmAuto 500 Raise Nop
+ I Module FvwmAnimate
+ I Module FvwmTaskBar
+ I Module FvwmWharf
+ I Exec exec xpmroot /root/pic/macblack.png

I 表示:立即执行,上面的配置中,分别在启动函数中,启动了FvwmButtons,FvwmPager,FvwmAnimate,FvwmTaskBar 和FvwmWharf等,五个模块。同时,你有什么程序需要在fvwm启动的时候执行,你可以在其中加入一行:比如我想在fvwm启动的时候启动 gkrellm

+ I Exec exec gkrellm 就ok了:)

2.给桌面设置背景

缺省的fvwm是没有设置桌面背景的,最多是些颜色的设置,其实fvwm可以用清晰度很高的png或者是xpm图片作为背景。最直接的一种方法是:用xpmroot程序,它是fvwm自带

开启一个xterm,在其中输入:xpmroot filename.png 马上就能把该图片设置成桌面的背景,也可以在启动函数中加入:+ I Exec exec xpmroot /root/pic/macblack.png

<九>fvwm-themes的下载

fvwm-themes是一个fvwm的主题的软件,它需要另外的下载,而且要编译,安装。具体设置如下:

1.下载

fvwm-themes的下载地址 http://sourceforge.net/projects/fvwm-themes

你需要下载两个文件,分别是:

fvwm-themes-0.6.2.tar.bz2,fvwm-themes-extra-0.6.2.tar.bz2

2.编译安装:

cp fvwm-themes0.6.2.bz2 /usr/local

tar jxvf fvwm-themes-0.6.2.bz2

./configure,make ,make install

这时,你可以切换到/usr/local/share/fvwm/themes目录下面去,可以发现,已经出现了几个目录,不错,它们就是fvwm的主题。

接下来安装extra的主题。找到 fvwm-themes-extra-0.6.2.tar.bz2 的存放目录,然后

fvwm-themes-config --site --install fvwm-themes-extra-0.6.2.tar.bz2

系统会自动帮你安装这些扩展的主题到/usr/local/share/fvwm/themes目录下面去。

3.启动fvwm-themes

启动方式和启动fvwm的方式是一样的,把/etc/X11/xinit/xinitrc 改名为:xinitrc.old

然后在根目录下面建立一个.xinitrc 文件,在其中写入:fvwm-themes-start 就ok了

在命令行下面输入:startx,就启动了fvwm-themes。它提供了不少的主题,你也可以自己制作自己喜欢的主题:)

Read More...

星期一, 十月 22, 2007

转:使用vmware+linux如何共享WIndows下资源

昨天从www.arm9.net上下载了nano2410_sdk40的光盘更新,.tgz后缀的压缩文件,我把文件刻录到光盘后.
再在linux下挂载光驱,结果刻录后的文件无法tar.好在vmware有共享文件夹,这样我们就可以随意调用windows下的资源。
 
我宿主系统是xp+VMware+RedHat 9
虚拟机不认识宿主系统的盘,因为从逻辑上讲那是另一台机器了。所以想用mount挂载其他的盘是不行的。

方法如下:
打开VMare-->"虚拟机"-->"设置"-->"选项"-->"共享文件夹"启用,并添加需要用到的主机资源文件所在位置.然后安装vmware   tools,则/mnt/hgfs下就是共享的目录。
以下是安装VMtools的方法
1、以ROOT身份进入LINUX
  2、按下 CTRL+ALT组合键,进入主操作系统,点击VMWARE状态栏安装提示,或者点击 SETTING菜单下的ENABLE VMWARE TOOLS子菜单。
  3、确认安装VMWARE TOOLS。
  这时我们并没有真正的安装上了VMWARE TOOLS软件包,如果您点击菜单:DEVICES,您就会发现光驱的菜单文字变为:ide1:0-> C:\\Program Files\\VMware\\VMware Workstation\\Programs\\linux.iso,这表示VMWARE将LINUX的ISO映象文件作为了虚拟机的光盘
  4、鼠标点击LINUX界面,进入LINUX。
  5、运行如下命令,注意大小写。
  mount -t iso9660 /dev/cdrom /mnt
  加载CDROM设备,这时如果进入 /mnt 目录下,你将会发现多了一个文件:vmwaretools-5.5.1-19175.tar.gz。这就是WMWARE TOOLS的LINUX软件包,也就是我们刚才使用WINISO打开LINUX.ISO文件所看到的。
  cp /mnt/vmwaretools-5.5.1-19175.tar.gz/tmp
  将该软件包拷贝到LINUX的 TMP目录下。
  umount /dev/cdrom
  卸载CDROM。
  cd /tmp
  进入TMP目录
  tar xvzf vmwaretools-5.5.1-19175.tar.gz
  解压缩该软件包,默认解压到vmware-tools-distrib目录下(与文件名同名)。
  cd vmware-linux-tools
  进入解压后的目录
  ./VMTools-install.pl
  运行安装命令。

Read More...

星期五, 十月 19, 2007

转:使用 sed 编辑器

使用 sed 编辑器
作者:Emmett Dulaney

sed 编辑器是 Linux 系统管理员的工具包中最有用的资产之一,
因此,有必要彻底地了解其应用

Linux 操作系统最大的一个好处是它带有各种各样的实用工具。存在如此之多不同的实用工具,几乎不可能知道并了解所有这些工具。可以简化关键情况下操作的一个实用工具是 sed。它是任何管理员的工具包中最强大的工具之一,并且可以证明它自己在关键情况下非常有价值。

sed 实用工具是一个“编辑器”,但它与其它大多数编辑器不同。除了不面向屏幕之外,它还是非交互式的。这意味着您必须将要对数据执行的命令插入到命令行或要处 理的脚本中。当显示它时,请忘记您在使用 Microsoft Word 或其它大多数编辑器时拥有的交互式编辑文件功能。sed 在一个文件(或文件集)中非交互式、并且不加询问地接收一系列的命令并执行它们。因而,它流经文本就如同水流经溪流一样,因而 sed 恰当地代表了流编辑器。 它可以用来将所有出现的 "Mr. Smyth" 修改为 "Mr. Smith",或将 "tiger cub" 修改为 "wolf cub"。流编辑器非常适合于执行重复的编辑,这种重复编辑如果由人工完成将花费大量的时间。其参数可能和一次性使用一个简单的操作所需的参数一样有限, 或者和一个具有成千上万行要进行编辑修改的脚本文件一样复杂。sed 是 Linux 和 UNIX 工具箱中最有用的工具之一,且使用的参数非常少。

sed 的工作方式

sed 实用工具按顺序逐行将文件读入到内存中。然后,它执行为该行指定的所有操作,并在完成请求的修改之后将该行放回到内存中,以将其转储至终端。完成了这一行 上的所有操作之后,它读取文件的下一行,然后重复该过程直到它完成该文件。如同前面所提到的,默认输出是将每一行的内容输出到屏幕上。在这里,开始涉及到 两个重要的因素—首先,输出可以被重定向到另一文件中,以保存变化;第二,源文件(默认地)保持不被修改。sed 默认读取整个文件并对其中的每一行进行修改。不过,可以按需要将操作限制在指定的行上。

该实用工具的语法为:

 

sed [options] '{command}' [filename]

 

在这篇文章中,我们将浏览最常用的命令和选项,并演示它们如何工作,以及它们适于在何处使用。

替换命令

sed 实用工具以及其它任何类似的编辑器的最常用的命令之一是用一个值替换另一个值。用来实现这一目的的操作的命令部分语法是:

 

's/{old value}/{new value}/'

 

因而,下面演示了如何非常简单地将 "tiger" 修改为 "wolf":

 

$ echo The tiger cubs will meet on Tuesday after school | sed 's/tiger/wolf/'The wolf cubs will meet on Tuesday after school$

 

注意如果输入是源自之前的命令输出,则不需要指定文件名—同样的原则也适用于 awk、sort 和其它大多数 Linux\UNIX 命令行实用工具程序。

多次修改

如果需要对同一文件或行作多次修改,可以有三种方法来实现它。第一种是使用 "-e" 选项,它通知程序使用了多条编辑命令。例如:

 

$ echo The tiger cubs will meet on Tuesday after school | sed -e 's/tiger/wolf/' -e 's/after/before/'The wolf cubs will meet on Tuesday before school$

 

这是实现它的非常复杂的方法,因此 "-e" 选项不常被大范围使用。更好的方法是用分号来分隔命令:

 

$ echo The tiger cubs will meet on Tuesday after school | sed 's/tiger/wolf/; s/after/before/'The wolf cubs will meet on Tuesday before school $

 

注 意分号必须是紧跟斜线之后的下一个字符。如果两者之间有一个空格,操作将不能成功完成,并返回一条错误消息。这两种方法都很好,但许多管理员更喜欢另一种 方法。要注意的一个关键问题是,两个撇号 (' ') 之间的全部内容都被解释为 sed 命令。直到您输入了第二个撇号,读入这些命令的 shell 程序才会认为您完成了输入。这意味着可以在多行上输入命令—同时 Linux 将提示符从 PS1 变为一个延续提示符(通常为 ">")—直到输入了第二个撇号。一旦输入了第二个撇号,并且按下了 Enter 键,则处理就进行并产生相同的结果,如下所示:

 

$ echo The tiger cubs will meet on Tuesday after school | sed '> s/tiger/wolf/> s/after/before/'The wolf cubs will meet on Tuesday before school$

 

全局修改

让我们开始一次看似简单的编辑。假定在要修改的消息中出现了多次要修改的项目。默认方式下,结果可能和预期的有所不同,如下所示:

 

$ echo The tiger cubs will meet this Tuesday at the same timeas the meeting last Tuesday | sed 's/Tuesday/Thursday/'The tiger cubs will meet this Thursday at the same timeas the meeting last Tuesday $

 

与 将出现的每个 "Tuesday" 修改为 "Thursday" 相反,sed 编辑器在找到一个要修改的项目并作了修改之后继续处理下一行,而不读整行。sed 命令功能大体上类似于替换命令,这意味着它们都处理每一行中出现的第一个选定序列。为了替换出现的每一个项目,在同一行中出现多个要替换的项目的情况下, 您必须指定在全局进行该操作:

 

$ echo The tiger cubs will meet this Tuesday at the same timeas the meeting last Tuesday | sed 's/Tuesday/Thursday/g'The tiger cubs will meet this Thursday at the same timeas the meeting last Thursday$

 

请记住不管您要查找的序列是否仅包含一个字符或词组,这种对全局化的要求都是必需的。

sed 还可以用来修改记录字段分隔符。例如,以下命令将把所有的 tab 修改为空格:

 

sed 's/	/ /g' 

 

其 中,第一组斜线之间的项目是一个 tab,而第二组斜线之间的项目是一个空格。作为一条通用的规则,sed 可以用来将任意的可打印字符修改为任意其它的可打印字符。如果您想将不可打印字符修改为可打印字符—例如,铃铛修改为单词 "bell"—sed 不是适于完成这项工作的工具(但 tr 是)。

有时,您不想修改在一个文件中出现的所有指定项目。有时,您只想在满足某些条件时才作修改—例如,在与其它一些数据匹配之后才作修改。为了说明这一点,请考虑以下文本文件:

 

$ cat sample_oneone     1two     1three   1one     1two     1two     1three   1$

 

假定希望用 "2" 来替换 "1",但仅在单词 "two" 之后才作替换,而不是每一行的所有位置。通过指定在给出替换命令之前必须存在一次匹配,可以实现这一点:

 

$ sed '/two/ s/1/2/' sample_oneone     1two     2three   1one     1two     2two     2three   1$

 

现在,使其更加准确:

 

$ sed '> /two/ s/1/2/> /three/ s/1/3/' sample_oneone     1two     2three   3one     1two     2two     2three   3$

 

请 再次记住唯一改变了的是显示。如果您查看源文件,您将发现它始终保持不变。您必须将输出保存至另一个文件,以实现永久保存。值得重复的是,不对源文件作修 改实际是祸中有福—它让您能够对文件进行试验而不会造成任何实际的损害,直到让正确命令以您预期和希望的方式进行工作。

以下命令将修改后的输出保存至一个新的文件:

 

$ sed '> /two/ s/1/2/> /three/ s/1/3/' sample_one > sample_two

 

该输出文件将所有修改合并在其中,并且这些修改通常将在屏幕上显示。现在可以用 head、cat 或任意其它类似的实用工具来进行查看。

脚本文件

sed 工具允许您创建一个脚本文件,其中包含从该文件而不是在命令行进行处理的命令,并且 sed 工具通过 "-f" 选项来引用。通过创建一个脚本文件,您能够一次又一次地重复运行相同的操作,并指定比每次希望从命令行进行处理的操作详细得多的操作。

考虑以下脚本文件:

 

$ cat sedlist/two/ s/1/2//three/ s/1/3/$

 

现在可以在数据文件上使用脚本文件,获得和我们之前看到的相同的结果:

 

$ sed -f sedlist sample_oneone     1two     2three   3one     1two     2two     2three   3$

 

注意当调用 "-f" 选项时,在源文件内或命令行中不使用撇号。脚本文件,也称为源文件,对于想重复多次的操作和从命令行运行可能出错的复杂命令很有价值。编辑源文件并修改一个字符比在命令行中重新输入一条多行的项目要容易得多。

限制行

编辑器默认查看输入到流编辑器中的每一行,且默认在输入到流编辑器中的每一行上进行编辑。这可以通过在发出命令之前指定约束条件来进行修改。例如,只在此示例文件的输出的第 5 和第 6 行中用 "2" 来替换 "1",命令将为:

 

$ sed '5,6 s/1/2/' sample_oneone     1two     1three   1one     1two     2two     2three   1$

 

在这种情况下,因为要修改的行是专门指定的,所以不需要替换命令。因此,您可以灵活地根据匹配准则(可以是行号或一种匹配模式)来选择要修改哪些行(从根本上限制修改)。

禁止显示

sed 默认将来自源文件的每一行显示到屏幕上(或重定向到一个文件中),而无论该行是否受到编辑操作的影响,"-n" 参数覆盖了这一操作。"-n" 覆盖了所有的显示,并且不显示任何一行,而无论它们是否被编辑操作修改。例如:

 

$ sed -n -f sedlist sample_one$$ sed -n -f sedlist sample_one > sample_two$ cat sample_two$

 

在 第一个示例中,屏幕上不显示任何东西。在第二个示例中,不修改任何东西,因此不将任何东西写到新的文件中—它最后是空的。这不是否定了编辑的全部目的吗? 为什么这是有用的?它是有用的仅因为 "-n" 选项能够被一条显示命令 (-p) 覆盖。为了说明这一点,假定现在像下面这样对脚本文件进行了修改:

 

$ cat sedlist/two/ s/1/2/p/three/ s/1/3/p$

 

然后下面是运行它的结果:

 

$ sed -n -f sedlist sample_onetwo     2three   3two     2two     2three   3$

 

保持不变的行全部不被显示。只有受到编辑操作影响的行被显示了。在这种方式下,可以仅取出这些行,进行修改,然后把它们放到一个单独的文件中:

 

$ sed -n -f sedlist sample_one > sample_two$$ cat sample_twotwo     2three   3two     2two     2three   3$

 

利用它的另一种方法是只显示一定数量的行。例如,只显示 2-6 行,同时不做其它的编辑修改:

 

$ sed -n '2,6p' sample_onetwo     1three   1one     1two     1two     1$

 

其它所有的行被忽略,只有 2-6 行作为输出显示。这是一项出色的功能,其它任何工具都不能容易地实现。Head 将显示一个文件的顶部,而 tail 将显示一个文件的底部,但 sed 允许从任意位置取出想要的任意内容。

删除行

用一个值替换另一个值远非流编辑器可以执行的唯一功能。它还具有许多的潜在功能,在我看来第二种最常用的功能是删除。删除与替换的工作方式相同,只是它删除指定的行(如果您想要删除一个单词而不是一行,不要考虑删除,而应考虑用空的内容来替换它—s/cat//)。

该命令的语法是:

 

'{what to find} d'

 

从 sample_one 文件中删除包含 "two" 的所有行:

 

$ sed '/two/ d' sample_oneone     1three   1one     1three   1$

 

从显示屏中删除前三行,而不管它们的内容是什么:

 

$ sed '1,3 d' sample_oneone     1two     1two     1three   1$

 

只显示剩下的行,前三行不在显示屏中出现。对于流编辑器,一般当它们涉及到全局表达式时,特别是应用于删除操作时,有几点要记住:

 

  1. 上三角号 (^) 表示一行的开始,因此,如果 "two" 是该行的头三个字符,则

     

     

    sed '/^two/ d' sample_one

     

    将只删除该行。

  2. 美元符号 ($) 代表文件的结尾,或一行的结尾,因此,如果 "two" 是该行的最后三个字符,则

     

     

    sed '/two$/ d' sample_one 

     

    将只删除该行。

 

将这两者结合在一起的结果:

 

sed '/^$/ d' {filename}

 

删除文件中的所有空白行。例如,以下命令将 "1" 替换为 "2",以及将 "1" 替换为 "3",并删除文件中所有尾随的空行:

 

$ sed '/two/ s/1/2/; /three/ s/1/3/; /^$/ d' sample_oneone     1two     1three   1one     1two     2two     2three   1$

 

其通常的用途是删除一个标题。以下命令将删除文件中所有的行,从第一行直到第一个空行:

 

sed '1,/^$/ d' {filename}

 

添加和插入文本

可以结合使用 sed 和 "a" 选项将文本添加到一个文件的末尾。实现方法如下:

 

$ sed '$a\> This is where we stop\> the test' sample_oneone     1two     1three   1one     1two     1two     1three   1This is where we stopthe test$

 

在该命令中,美元符号 ($) 表示文本将被添加到文件的末尾。反斜线 (\) 是必需的,它表示将插入一个回车符。如果它们被遗漏了,则将导致一个错误,显示该命令是错乱的;在任何要输入回车的地方您必须使用反斜线。

要将这些行添加到第 4 和第 5 个位置而不是末尾,则命令变为:

 

$ sed '3a\> This is where we stop\> the test' sample_oneone     1two     1three   1This is where we stopthe testone     1two     1two     1three   1$

 

这将文本添加到第 3 行之后。和几乎所有的编辑器一样,您可以选择插入而不是添加(如果您希望这样的话)。这两者的区别是添加跟在指定的行之后,而插入从指定的行开始。当用插入来代替添加时,只需用 "i" 来代替 "a",如下所示:

 

$ sed '3i\> This is where we stop\> the test' sample_oneone     1two     1This is where we stopthe testthree   1one     1two     1two     1three   1$

 

新的文本出现在输出的中间位置,而处理通常在指定的操作执行以后继续进行。

读写文件

重定向输出的功能已经演示过了,但需要指出的是,在编辑命令运行期间可以同步地读入和写出文件。例如,执行替换,并将 1-3 行写到名称为 sample_three 的文件中:

 

$ sed '> /two/ s/1/2/> /three/ s/1/3/> 1,3 w sample_three' sample_oneone     1two     2three   3one     1two     2two     2three   3$$ cat sample_threeone     1two     2three   3$

 

由于为 w (write) 命令指定了 "1,3",所以只有指定的行被写到了新文件中。无论被写的是哪些行,所有的行都在默认输出中显示。

修改命令

除了替换项目之外,还可以将行从一个值修改为另一个值。要记住的是,替换是对字符逐个进行,而修改功能与删除类似,它影响整行:

 

$ sed '/two/ c\> We are no longer using two' sample_oneone     1We are no longer using twothree   1one     1We are no longer using twoWe are no longer using twothree   1$

 

修 改命令与替换的工作方式很相似,但在范围上要更大些—将一个项目完全替换为另一个项目,而无论字符内容或上下文。夸张一点讲,当使用替换时,只有字符 "1" 被字符 "2" 替换,而当使用修改时,原来的整行将被修改。在两种情况下,要寻找的匹配条件都仅为 "two"。

修改全部但……

对于大多数 sed 命令,详细说明各种功能要进行何种修改。利用感叹号,可以在除指定位置之外的任何地方执行修改—与默认的操作完全相反。

例如,要删除包含单词 "two" 的所有行,操作为:

 

$ sed '/two/ d' sample_oneone     1three   1one     1three   1$

 

而要删除除包含单词 "two" 的行之外的所有行,则语法变为:

 

$ sed '/two/ !d' sample_onetwo     1two     1two     1$

 

如果您有一个文件包含一系列项目,并且想对文件中的每个项目执行一个操作,那么首先对那些项目进行一次智能扫描并考虑将要做什么是很重要的。为了使事情变得更简单,您可以将 sed 与任意迭代例程(for、while、until)结合来实现这一目的。

比如说,假定您有一个名为 "animals" 的文件,其中包含以下项目:

pig
horse
elephant
cow
dog
cat

您希望运行以下例程:

 

#mcd.kshfor I in $*doecho Old McDonald had a $Iecho E-I, E-I-Odone

 

结 果将为,每一行都显示在 "Old McDonald has a" 的末尾。虽然对于这些项目的大部分这是正确的,但对于 "elephant" 项目,它有语法错误,因为结果应当为 "an elephant" 而不是 "a elephant"。利用 sed,您可以在来自 shell 文件的输出中检查这种语法错误,并通过首先创建一个命令文件来即时地更正它们:

 

#sublist/ a a/ s/ a / an // a e/ s/ a / an //a i/ s / a / an //a o/ s/ a / an //a u/ s/ a / an /

 

然后执行以下过程:

 

$ sh mcd.ksh 'cat animals' | sed -f sublist  

 

现 在,在运行了 mcd 脚本之后,sed 将在输出中搜索单个字母 a (空格,"a",空格)之后紧跟了一个元音的任意位置。如果这种位置存在,它将把该序列修改为空格,"an",空格。这样就使问题更正后才显示在屏幕上, 并确保各处的编辑人员在晚上可以更容易地入睡。结果是:

Old McDonald had a pig
E-I, E-I-O
Old McDonald had a horse
E-I, E-I-O
Old McDonald had an elephant
E-I, E-I-O
Old McDonald had a cow
E-I, E-I-O
Old McDonald had a dog
E-I, E-I-O
Old McDonald had a cat
E-I, E-I-O

提前退出

sed 默认读取整个文件,并只在到达末尾时才停止。不过,您可以使用退出命令提前停止处理。只能指定一条退出命令,而处理将一直持续直到满足调用退出命令的条件。

例如,仅在文件的前五行上执行替换,然后退出:

 

$ sed '> /two/ s/1/2/> /three/ s/1/3/> 5q' sample_oneone     1two     2three   3one     1two     2$

 

在退出命令之前的项目可以是一个行号(如上所示),或者一条查找/匹配命令:

 

$ sed '> /two/ s/1/2/> /three/ s/1/3/> /three/q' sample_oneone     1two     2three   3$

 

您 还可以使用退出命令来查看超过一定标准数目的行,并增加比 head 中的功能更强的功能。例如,head 命令允许您指定您想要查看一个文件的前多少行—默认数为 10,但可以使用从 1 到 99 的任意一个数字。如果您想查看一个文件的前 110 行,您用 head 不能实现这一目的,但用 sed 可以:

 

sed 110q filename

 

处理问题

当使用 sed 时,要记住的重要事项是它的工作方式。它的工作方式是:读入一行,在该行上执行它已知要执行的所有任务,然后继续处理下一行。每一行都受给定的每一个编辑命令的影响。

如果您的操作顺序没有十分彻底地考虑清楚,那么这可能会很麻烦。例如,假定您需要将所有的 "two" 项目修改为 "three",然后将所有的 "three" 修改为 "four":

 

$ sed '> /two/ s/two/three/> /three/ s/three/four/' sample_oneone     1four     1four   1one     1four     1four     1four   1$

 

最初读取的 "two" 被修改为 "three"。然后它满足为下一次编辑建立的准则,从而变为 "four"。最终的结果不是想要的结果—现在除了 "four" 没有别的项目了,而本来应该有 "three" 和 "four"。

当执行这种操作时,您必须非常用心地注意指定操作的方式,并按某种顺序来安排它们,使得操作之间不会互相影响。例如:

 

$ sed '> /three/ s/three/four/> /two/ s/two/three/' sample_oneone     1three     1four   1one     1three     1three     1four   1$

 

这非常有效,因为 "three" 值在 "two" 变成 "three" 之前得到修改。

标签和注释

可以在 sed 脚本文件中放置标签,这样一旦文件变得庞大,可以更容易地说明正在发生的事情。存在各种各样与这些标签相关的命令,它们包括:

 

  1. : 冒号表示一个标签名称。例如:

     

     

    :HERE

     

    以冒号开始的标签可以由 "b" 和 "t" 命令处理。

     

  2. b {label} 充当 "goto" 语句的作用,将处理发送至前面有一个冒号的标签。例如,

     

     

    b HERE

     

    将处理发送给行

     

    :HERE

     

    如果紧跟 b 之后没有指定任何标签,则处理转至脚本文件的末尾。

     

  3. t {label} 只要自上次输入行或执行一次 "t" 命令以来进行了替换操作,就转至该标签。和 "b" 一样,如果没有给定标签名,则处理转至脚本文件的末尾。

     

     

  4. # 符号作为一行的第一个字符将使整行被当作注释处理。注释行与标签不同,不能使用 b 或 t 命令来转到注释行上。

 

进一步的研究
sed 实用工具是 Linux 管理员拥有的最强大和灵活的工具之一。虽然本文覆盖了许多基础知识,但对于这一具有丰富功能的工具仅是蜻蜓点水。关于更多信息,最好的来源之一是 Dale Dougherty 和 Arnold Robbins 的著作 sed & awk,现在从 O'Reilly & Associates 出版社推出了其第二版(参加“接下来的步骤”)。该出版社还推出了一本可以随身携带的袖珍参考

Read More...

AWK 用法简介

AWK是Unix平台上一种可以对文本进行逐行处理的编程语言,它来源于3个创作者的名字:Aho、(Peter)Weinberg和(Brain)
Kernighan.与sed和grep很相似,awk是一种样式扫描与处理工具,但其功能却大大强于sed和grep。awk提供了极其强大的功能:它
几乎可以完成grep和sed所能完成的全部工作,同时,它还可以可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。awk的
三位创建者已将它正式定义为:样式扫描和处理语言。

AWK的调用方式
1). 程序体直接写到AWK命令行中,适用较简单的情况
awk 'program' input-file1 input-file2 ...
2). 程序体写入文件中,用AWK命令调用该文件
awk -f program-file input-file1 input-file2 ...
3). C shell作为命令解释程序,调用AWK来执行AWK程序,写成的脚本
#!/bin/csh -f
awk '
{ print $8, "\t", $3} \
'
4). AWK作为命令解释程序,写成的脚本
#!/bin/awk -f
{ print $8, "\t", $3}
AWK的参数说明
awk [ -F re] [parameter...] ['prog'] [-f progfile][in_file...]
参数说明:
-F re: 允许awk更改其字段分隔符。
parameter: 该参数帮助为不同的变量赋值。
'prog': awk的程序语句段。必须用单引号:'和'括起,以防被shell解释。
这个程序语句段的标准形式为: 'pattern {action}'
  (1) pattern参数是匹配模式,跟Sed命令类似。
  (2) action参数总是被大括号包围,由一系统awk语句组成,各语句间用";"分隔。
        awk
pattern给定的样式匹配记录上执行其操作。 使用#作为注释符。
  (3) 可以省略pattern和action之一,但不能两者同时省略,当省略pattern时没
    有样式匹配,表示对所有行(记录)均执行操作,省略action时执行缺省的操作在标准输出上显示。
  (4) 可以包含多个pattern {action},如果一个记录满足多个pattern,其对应的action会被执行多次

-f progfile: 允许awk调用执行程序文件。progfile是一文本文件,必须符合awk语法。
in_file: awk的输入文件,awk允许对多个输入文件进行处理。
*awk不修改输入文件。如果未指定输入文件,awk将接受标准输入,并将结果显示在标准输出上。awk支持输入输出重定向。(跟SED类似)
AWK的记录(Record)与字段(Field)
awk
处理的工作与数据库的处理方式有相同之处,其相同处之一就是awk支持对记录和字段的处理,其中对字段的处理是grep和sed不能实现的。在awk中,
缺省的情况下总是将文本文件中的一行视为一个记录,而将一行中的某一部分作为记录中的一个字段。为了操作这些不同的字段,awk借用shell的方法,用
$1,$2,$3...这样的方式来顺序地表示行(记录)中的不同字段。特殊地,awk用$0表示整个行(记录)。不同的字段之间是用称作分隔符的字符分
隔开的。系统默认的分隔符是空格。awk允许在命令行中用-F
re的形式来改变这个分隔符。事实上,awk用一个内置的变量FS来记忆这个分隔符,可以在程序中进行修改。
AWK的运算,判断与赋值运算do-while语句
do
{
语句
}while(条件判断语句)
2.4for语句
for(初始表达式;终止条件;步长表达式)
{语句}

while、do-while和for语句中允许使用break, continue,exit来控制程序走向。
运算符 用途
------------------
x^y x的y次幂
x**y 同上
x%y 计算x/y的余数(求模)
x+y x加y
x-y x减y
x*y x乘y
x/y x除y
-y 负y(y的开关符号);也称一目减
++y y加1后使用y(前置加)
y++ 使用y值后加1(后缀加)
--y y减1后使用y(前置减)
y-- 使用后y减1(后缀减)
x=y 将y的值赋给x
x+=y 将x+y的值赋给x
x-=y 将x-y的值赋给x
x*=y x*y的值赋给x
x/=y 将x/y的值赋给x x%=y 将x%y的值赋给x
x^=y 将x^y的值赋给x
x**=y 将x**y的值赋给x

判断:
操作符 含义
x==y x等于y
x!=y x不等于y
x>y x大于y
x>=y x大于或等于y
x小于y
x<=y x小于或等于y?
x~re x匹配正则表达式re?
x!~re x不匹配正则表达式re?

赋值 (按优先级升序排列)
= 、+=、 -=、 *= 、/= 、 %=
||
&&
> >= < <= == != ~ !~
xy (字符串连结,'x''y'变成"xy")
+ -
* / %
++ - -
AWK的流程控制
1BEGINEND:
在awk
中两个特别的表达式,BEGIN和END,这两者都可用于pattern中,提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些
扫尾的工作。任何在BEGIN之后列出的操作(在{}内)将在awk开始扫描输入之前执行,而END之后列出的操作将在扫描完所有输入之后执行。因此,通
常用BEGIN来显示变量和预置(初始化)变量,用END来输出最终结果。 例:累计销售文件xs中的销售金额(假设销售金额在记录的第三字段):
$awk
>'BEGIN { FS=":";print "统计销售金额";total=0}
>{print $3;total=total+$3;}
>END {printf "销售金额总计:%.2f",total}' sx
>是shell提供的第二提示符,如要在shell程序awk语句和awk语言中换行,在行尾加反斜杠\
在这里,BEGIN预置了内部变量FS(字段分隔符)和自定义变量total,同时在扫描之前显示出输出行头。而END则在扫描完成后打印出总合计。
2、流程控制语句


2.1if...else语句:
if(表达式)
语句1
else
语句2
格式中"语句1"可以是多个语句,如果你为了方便awk判断也方便你自已阅读,你最好将多个语句用{}括起来。awk分枝结构允许嵌套。
2.2while语句
while(表达式
Break:中断当前正在执行的循环并跳到循环外执行下一条语句。
Continue:从当前位置跳到循环开始处执行。
Exit:当exit语句不在END中时,该命令表现得如同到了文件尾,所有模式或操作将停止,END模式中的操作被执行。而出现在END中的exit将导致程序终止。
AWK的变量awk
提供两种变量,一种是awk内置的变量,在awk程序中引用内置变量不需要使用标志符"$"awk提供的另一种变量是自定义变量。当然这种变量不能与内置
变量及其它awk保留字相同,在awk中引用自定义变量必须在它前面加上标志符"$"。与C语言不同的是,awk中不需要对变量进行初始化,awk根据其
在awk中第一次出现的形式和上下文确定其具体的数据类型。当变量类型不确定时,awk默认其为字符串类型。这里有一个技巧:如果你要让你的awk程序知
道你所使用的变量的明确类型,你应当在在程序中给它赋初值。
 
AWK中的函数
AWK的函数同样包括内置函数和用户自定义的函数。原始的awk不提供函数功能,只有在nawk或较新的awk版本中才可以增加函数。
函数的使用包含两部分:函数的定义与函数调用。其中函数定义又包括要执行的代码(函数本身)和从主程序代码传递到该函数的临时调用。
awk函数的定义方法如下:
function 函数名(参数表){
函数体
}
函数名必须是一个合法的标志符,参数表中可以不提供参数(但在调用函数时函数名后的一对括号仍然是不可缺少的),也可以提供一个或多个参数。awk的参数也是通过值来传递的。

在awk
中调用函数比较简单,其方法与C语言相似,但awk比C语言更为灵活,它不执行参数有效性检查。换句话说,在你调用函数时,可以列出比函数预计(函数定义
中规定)的多或少的参数,多余的参数会被awk所忽略,而不足的参数,awk将它们置为缺省值0或空字符串,具体置为何值,将取决于参数的使用方式。
awk函数有两种返回方式:隐式返回和显式返回。当awk执行到函数的结尾时,它自动地返回到调用程序,这是函数是隐式返回的。如果需要在结束之前退出函数,可以明确地使用返回语句提前退出。方法是在函数中使用形如:return 返回值 格式的语句。
例:下面的例子演示了函数的使用。
nawk
>'BEGIN{pageno=1;file=FILENAME
>pageno=print_header(file,pageno);span lang="EN-US">#调用函数print_header
>printf("当前页页号是:%d\n",pageno);
}

#定义函数print_header
function print_header(FileName,PageNum){
printf("%s %d\n",FileName,PageNum); >PageNum++;return PageNUm;
}
}' myfile
AWK的内置变量(预定义变量)
说明:表中v项表示第一个支持变量的工具:A=awk,N=nawk,P=POSIX awk,G=gawk
V 变量 含义 缺省值
--------------------------------------------------------
N ARGC 命令行参数个数
G ARGIND 当前被处理文件的ARGV标志符
N ARGV 命令行参数数组
G CONVFMT 数字转换格式 %.6g
P ENVIRON UNIX环境变量
N ERRNO UNIX系统错误消息
G FIELDWIDTHS 输入字段宽度的空白分隔字符串
A FILENAME 当前输入文件的名字
P FNR 当前记录数
A FS 输入字段分隔符 空格
G IGNORECASE 控制大小写敏感0(大小写敏感)
A NF 当前记录中的字段个数
A NR 已经读出的记录数
A OFMT 数字的输出格式 %.6g
A OFS 输出字段分隔符 空格
A ORS 输出的记录分隔符 新行
A RS 输入的记录他隔符 新行
N RSTART 被匹配函数匹配的字符串首
N RLENGTH 被匹配函数匹配的字符串长度
N SUBSEP 下标分隔符 "\034"

AWK的内置函数
V 函数 用途或返回值
------------------------------------------------
N gsub(reg,string,target) 每次常规表达式reg匹配时替换target中的string
N index(search,string) 返回string中search串的位置
A length(string) 求串string中的字符个数
N match(string,reg) 返回常规表达式reg匹配的string中的位置
N printf(format,variable) 格式化输出,按format提供的格式输出变量variable。
N split(string,store,delim) 根据分界符delim,分解string为store的数组元素
N sprintf(format,variable) 返回包含基于format的格式化数据,variables是要放到串中的数据
G strftime(format,timestamp) 返回format日期或时间串,timestmp是systime()函数返回的时间
N sub(reg,string,target) 第一次当常规表达式reg匹配,替换target串中的字符串
A substr(string,position,len) 返回一个以position开始len个字符的子串
P totower(string) 返回string中对应的小写字符
P toupper(string) 返回string中对应的大写字符
A atan(x,y) x的余切(弧度)
N cos(x) x的余弦(弧度)
A exp(x) e的x幂
A int(x) x的整数部分
A log(x) x的自然对数值
N rand() 0-1之间的随机数
N sin(x) x的正弦(弧度)
A sqrt(x) x的平方根
A srand(x) 初始化随机数发生器。如果忽略x,则使用system()
G system() 返回自1970年1月1日以来经过的时间(按秒计算)
一些例子:
<!--[if !supportLists]-->1.       打印11月被修改的文件的字节数
ls –lg | awk ‘$6 == “NOV” {sum += $5} END {print sum}’

2.       文件result中包含FAILED的行数
awk ‘/FAILED/ {sum += 1} END {print sum}’ result

3.       打印file文件最长行的长度
awk ‘if (length($0) > max) max = length($0)} END {print max}’ file

4.       输出file文件的行数
awk ‘END {print NR} file

NR是内置变量,表示已经读出的记录数,在END后输出即是总行数
用cat file | wc –l 命令组合可以完成同样的功能

Read More...

星期日, 十月 14, 2007

wget 使用技巧

wget 是一个命令行的下载工具。对于我们这些 Linux 用户来说,几乎每天都在使用它。下面为大家介绍几个有用的 wget 小技巧,可以让你更加高效而灵活的使用 wget。



  1. $ wget -r -np -nd http://example.com/packages/

    这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件。其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构。

  2. $ wget -r -np -nd --accept=iso http://example.com/centos-5/i386/

    与上一条命令相似,但多加了一个 --accept=iso 选项,这指示 wget 仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名,只需用逗号分隔即可。

  3. $ wget -i filename.txt

    此命令常用于批量下载的情形,把所有需要下载文件的地址放到 filename.txt 中,然后 wget 就会自动为你下载所有文件了。

  4. $ wget -c http://example.com/really-big-file.iso

    这里所指定的 -c 选项的作用为断点续传。

  5. $ wget -m -k (-H) http://www.example.com/

    该命令可用来镜像一个网站,wget 将对链接进行转换。如果网站中的图像是放在另外的站点,那么可以使用 -H 选项。

Read More...

星期四, 九月 20, 2007

又一套linux girl

Read More...

一套完整的LinuxGirl 照片

无意中瞧到了完整的一套 LinuxGirl 的照片,发上来大伙瞧瞧。

分别代表谁就不说了,让大伙来自己看。

Linux
点击在新窗口中浏览此图片

Debian
点击在新窗口中浏览此图片
Ubuntu
点击在新窗口中浏览此图片
Suse
点击在新窗口中浏览此图片
Redhat
点击在新窗口中浏览此图片
Fedora
点击在新窗口中浏览此图片
Gentoo
点击在新窗口中浏览此图片
ArchLinux
点击在新窗口中浏览此图片
Knoppix
点击在新窗口中浏览此图片
Mandriva
点击在新窗口中浏览此图片
Slackware
点击在新窗口中浏览此图片
合照
点击在新窗口中浏览此图片


此套作品作者的主页在这里,在里面可以查看1024×768的桌面壁纸。

Read More...

星期日, 五月 27, 2007

转载:修正Linux下丑陋的FireFox的表单控件的问题

在 Linux 下,Linux 版本的 Firefox 中显示的表单控件比较丑陋,特别是单选按钮的毛刺和按钮突兀的风格,此解决方法是 ubuntuforums.org 提出的,他们利用新的CSS覆盖了原有的表单CSS做到了这一点.首先如果运行着 Firefox,那么关闭它.然后打开终端命令提示符,输入下面的命令:

wget http://users.tkk.fi/~otsaloma/art/firefox-form-widgets.tar.gz

tar -xvzf firefox-form-widgets.tar.gz

sudo cp /usr/lib/mozilla-firefox/res/forms.css /usr/lib/mozilla-firefox/res/forms.css.bak

cat firefox-form-widgets/res/forms-extra.css | sudo tee --append /usr/lib/mozilla-firefox/res/forms.css > /dev/null

sudo cp -r firefox-form-widgets/res/form-widgets /usr/lib/mozilla-firefox/res

rm -rf firefox-form-widgets 再打开 Firefox,一切就变得好看了。



修正后,变为:

Read More...

星期四, 五月 24, 2007

收到ubuntu光盘

呵呵,以前申请了好几次,都没收到,这次竟然收到了,虽然平时都是在用gentoo,但是还是帮同学装了好多ubuntu,大老远的从德国寄过来,真是辛苦了。收到3张自己和女友留了一张,其他的都送同学了,也帮着普及一下linux吧
呵呵

Read More...

星期日, 五月 06, 2007

linux distrotimeline

发件人 bolg

Read More...

星期二, 五月 01, 2007

试着用vsftp架设服务器

今天尝试着用vsftp架设服务器,没想到非常的顺利和简单,不过就是在最后出现了一点问题,那就是每次我执行 /etc/init.d/vsftpd start的时候老是提示错误,怎么都不理解,最后直接执行了一下vsftpd
结果就提示出错了,才发现是vsftpd.conf的某些设置有问题,就是不符合它的规则可能,修改以后,基本没什么大的问题了,现在就是一点我在/etc/vsftpd/vsftpd.conf设置了background=YES可是在
/etc/init.d/vsftpd start的时候它老提示说不准设置这个,但是我看网上都说要把这个打开,没办法还是关了吧.最后关了以后终于基本正常了.
还有就是在登录服务器的时候出现了500 OOPS:capset错误,最后发现是缺少capability这个模块,经过查证后,在内核里面把capability编译进去重启就没事了

Read More...

星期五, 四月 27, 2007

用xmame玩kof,ns仿真成功

呵呵,今天在gentoo下用xmame试着玩了玩kof
没想到一点都不卡,真出乎我的意料啊,真爽,还有这个就是老大的ns2在我的电脑上终于仿真成功了,原来的问题在于gcc patch补丁没打,

Read More...