错综复杂的UNIX家谱

UNIX操作系统(UNIX),最早是美国AT&T公司1971年在PDP-11上运行的操作系统.Unix在学术机构和大型企业中得到了 广泛的应用.Unix因为其安全可靠,高效强大的特点在服务器领域得到了广泛的应用.直到GNU/Linux流行开始前,Unix也是科学计算、大型机、 超级电脑等所用操作系统的主流.正因为Unix历史悠久,版权所有者不断变更,授权者的数量也在不断增加,因此各种发行版之间的关系显得错综复杂,以下这张图可帮您理清楚UNIX的发展路线,这是一张超大的图片,宽19833像素 :)

下载:UNIX家谱


GRUB的修复

使用LIVECD启动,然后进入终端,输入grub,

QUOTE:
grub> find /boot/grub/stage1
(hd0,1)

grub>root (hd0,1)
grub>setup (hd0)

即可

同样适用于其他系统


awk1line中文版 转自邮件列表

AWK是个很强的文本处理工具,awk1line更发挥了AWK灵活简单的特性。
搜索了一下发现还没有awk1line的中文版,所以自己翻译了一下,可能对大家会有点帮助:)

================================================================
AWK单行脚本快速参考 2003年7月22日
编辑: Eric Pement 版本 0.22
翻译: yisudong
最新英文版本文件发布在以下地址:
http://www.student.northpark.edu/pemente/awk/awk1line.txt
最新中文翻译版本文件发布在以下地址:
http://ximix.org/translation/awk1line_zh-CN.txt

用法:

Unix: awk ‘/pattern/ {print “$1″}’ # 标准 Unix shell环境
DOS/Win: awk ‘/pattern/ {print “$1″}’ # DJGPP 可编译通过
awk “/pattern/ {print \”$1\”}” # 需要安装 Mingw32

我的大多数经验来自于Win32的GNU awk (gawk)版本。需要特别注意的是,DJGPP
编译器可以允许awk脚本使用Unix的引号语法 ‘/like/ {”this”}’。但是,用户必
须知道在DOS/Windows环境下,单引号并不能保护重定向符号()和管道(|)。
如果使用双引号的话,在DOS/CMD命令解释器下的特殊符号和他们的特殊含义都
会被忽略。同样,DOS/Win用户必须记住用,百分号(%)用来标记DOS/Win环境变量,
如果想要在awk使用的话,需要使用双百分号(%%)来表示一个百分号%。

如果我能确定一个脚本不需要被指出是使用在Unix, DOS或者CMD环境下,我通常
不作出提示。如果一个例子是GNU awk所特有的,将会用 ‘gawk’命令来代替。如
果你发现错误或者新的命令想要添加到这个列表里(总长度控制在65个字符一下)
,请通知我。首先我经常会尝试去写一个最短字符的脚本。

文本间隔:

# 每行后面增加一行空行
awk ‘1;{print “”}’
awk ‘BEGIN{ORS=”\n\n”};1′

# 每行后面增加一行空行。输出文件不会包含连续的两个或两个以上的空行
# 注意:在Unix系统, DOS行包括的 CRLF (\r\n) 通常会被作为非空行对待
# 因此 ‘NF’ 将会返回TRUE。
awk ‘NF{print $0 “\n”}’

# 每行后面增加两行空行
awk ‘1;{print “\n”}’

编号和计算:

# 以文件为单位,在每句行前加上编号 (左对齐).
# 使用制表符 (\t) 来代替空格可以有效保护页变的空白。
awk ‘{print FNR “\t” $0}’ files*

# 用制表符 (\t) 给所有文件加上连贯的编号。
awk ‘{print NR “\t” $0}’ files*

# number each line of a file (number on left, right-aligned)
# Double the percent signs if typing from the DOS command prompt.
awk ‘{printf(”%5d : %s\n”, NR,$0)}’

# 给非空白行的行加上编号
# 记得Unix对于 \r 的处理的特殊之处。(上面已经提到)
awk ‘NF{$0=++a ” :” $0};{print}’
awk ‘{print (NF? ++a ” :” :”") $0}’

# 计算行数 (模拟 “wc -l”)
awk ‘END{print NR}’

# 计算每行每个区域之和
awk ‘{s=0; for (i=1; i<=NF; i++) s=s+$i; print s}’

# 计算所有行所有区域的总和
awk ‘{for (i=1; i<=NF; i++) s=s+$i}; END{print s}’

# 打印每行每区域的绝对值
awk ‘{for (i=1; i<=NF; i++) if ($i < 0) $i = -$i; print }’
awk ‘{for (i=1; i<=NF; i++) $i = ($i max {max=$1; maxline=$0}; END{ print max, maxline}’

# 打印每行的列数,并在后面跟上此行内容
awk ‘{ print NF “:” $0 } ‘

# 打印每行的最后一列
awk ‘{ print $NF }’

# 打印最后一行的最后一列
awk ‘{ field = $NF }; END{ print field }’

# 打印列数超过4的行
awk ‘NF > 4′

# 打印最后一列大于4的行
awk ‘$NF > 4′

文本转换和替代:

# 在Unix环境:转换DOS新行 (CR/LF) 为Unix格式
awk ‘{sub(/\r$/,”");print}’ # 假设每行都以Ctrl-M结尾

# 在Unix环境:转换Unix新行 (LF) 为DOS格式
awk ‘{sub(/$/,”\r”);print}

# 在DOS环境:转换Unix新行 (LF) 为DOS格式
awk 1

# 在DOS环境:转换DOS新行 (CR/LF) 为Unix格式
# DOS版本的awk不能运行, 只能用gawk:
gawk -v BINMODE=”w” ‘1′ infile >outfile

# 用 “tr” 替代的方法。
tr -d \r outfile # GNU tr 版本为 1.22 或者更高

# 删除每行前的空白(包括空格符和制表符)
# 使所有文本左对齐
awk ‘{sub(/^[ \t]+/, “”); print}’

# 删除每行结尾的空白(包括空格符和制表符)
awk ‘{sub(/[ \t]+$/, “”);print}’

# 删除每行开头和结尾的所有空白(包括空格符和制表符)
awk ‘{gsub(/^[ \t]+|[ \t]+$/,”");print}’
awk ‘{$1=$1;print}’ # 每列之间的空白也被删除

# 在每一行开头处插入5个空格 (做整页的左位移)
awk ‘{sub(/^/, ” “);print}’

# 用79个字符为宽度,将全部文本右对齐
awk ‘{printf “%79s\n”, $0}’ file*

# 用79个字符为宽度,将全部文本居中对齐
awk ‘{l=length();s=int((79-l)/2); printf “%”(s+l)”s\n”,$0}’ file*

# 每行用 “bar” 查找替换 “foo”
awk ‘{sub(/foo/,”bar”);print}’ # 仅仅替换第一个找到的”foo”
gawk ‘{$0=gensub(/foo/,”bar”,4);print}’ # 仅仅替换第四个找到的”foo”
awk ‘{gsub(/foo/,”bar”);print}’ # 全部替换

# 在包含 “baz” 的行里,将 “foo” 替换为 “bar”
awk ‘/baz/{gsub(/foo/, “bar”)};{print}’

# 在不包含 “baz” 的行里,将 “foo” 替换为 “bar”
awk ‘!/baz/{gsub(/foo/, “bar”)};{print}’

# 将 “scarlet” 或者 “ruby” 或者 “puce” 替换为 “red”
awk ‘{gsub(/scarlet|ruby|puce/, “red”); print}’

# 倒排文本 (模拟 “tac”)
awk ‘{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }’ file*

# 如果一行结尾为反斜线符,将下一行接到这行后面
# (如果有连续多行后面带反斜线符,将会失败)
awk ‘/\\$/ {sub(/\\$/,”"); getline t; print $0 t; next}; 1′ file*

# 排序并打印所有登录用户的姓名
awk -F “:” ‘{ print $1 | “sort” }’ /etc/passwd

# 以相反的顺序打印出每行的前两列
awk ‘{print $2, $1}’ file

# 调换前两列的位置
awk ‘{temp = $1; $1 = $2; $2 = temp}’ file

# 打印每行,并删除第二列
awk ‘{ $2 = “”; print }’

# 倒置每行并打印
awk ‘{for (i=NF; i>0; i–) printf(”%s “,i);printf (”\n”)}’ file

# 删除重复连续的行 (模拟 “uniq”)
awk ‘a !~ $0; {a=$0}’

# 删除重复的、非连续的行
awk ‘! a[$0]++’ # 最简练
awk ‘!($0 in a) {a[$0];print}’ # 最有效

# 用逗号链接每5行
awk ‘ORS=%NR%5?”,”:”\n”‘ file #bug awk ‘ORS=NR%5?”,”:”\n”‘ file

选择性的打印某些行:

# 打印文件的前十行 (模拟 “head”)
awk ‘NR 1{exit};1′

# 打印文件的最后两行 (模拟 “tail -2″)
awk ‘{y=x “\n” $0; x=$0};END{print y}’

# 打印文件的最后一行 (模拟 “tail -1″)
awk ‘END{print}’

# 打印匹配正则表达式的行 (模拟 “grep”)
awk ‘/regex/’

# 打印不匹配正则表达式的行 (模拟 “grep -v”)
awk ‘!/regex/’

# 打印匹配正则表达式的前一行,但是不打印当前行
awk ‘/regex/{print x};{x=$0}’
awk ‘/regex/{print (x==”" ? “match on line 1″ : x)};{x=$0}’

# 打印匹配正则表达式的后一行,但是不打印当前行
awk ‘/regex/{getline;print}’

# 以任何顺序查找包含 AAA、BBB 和 CCC 的行
awk ‘/AAA/; /BBB/; /CCC/’

# 以指定顺序查找包含 AAA、BBB 和 CCC 的行
awk ‘/AAA.*BBB.*CCC/’

# 打印长度大于64个字节的行
awk ‘length > 64′

# 打印长度小于64个字节的行
awk ‘length < 64′

# 打印从匹配正则起到文件末尾的内容
awk ‘/regex/,0′
awk ‘/regex/,EOF’

# 打印指定行之间的内容 (8-12行, 包括第8和第12行)
awk ‘NR==8,NR==12′

# 打印第52行
awk ‘NR==52′
awk ‘NR==52 {print;exit}’ # 对于大文件更有效率

# 打印两个正则匹配间的内容 (包括正则的内容)
awk ‘/Iowa/,/Montana/’ # 大小写敏感

选择性的删除某些行:

# 删除所有空白行 (类似于 “grep ‘.’ “)
awk NF
awk ‘/./’

致谢:

特别感谢 Peter S. Tillier 帮助我完成了一版的FAQ。

更多的语法指令,包括用文件脚本来使用awk,可以参考如下:

“sed & awk, 2nd Edition,” by Dale Dougherty and Arnold Robbins
O’Reilly, 1997
“UNIX Text Processing,” by Dale Dougherty and Tim O’Reilly
Hayden Books, 1987
“Effective awk Programming, 3rd Edition.” by Arnold Robbins
O’Reilly, 2001

为了能开发awk的强大功能,开发人员必须知道 “正则表达式”。关于正则
的详细讨论,可以查看
“Mastering Regular Expressions, 2d edition” by Jeffrey Friedl
(O’Reilly, 2002)。

Unix系统的用户帮助手册会很有用,(尝试 “man awk”,”man nawk”,”man regexp”
或者帮助手册里正则表达式的相关章节),但是查看帮助手册可是有名的困难:)
因为他们不是为awk和正则的新手所写,而是作为有经验人员的参考手册。

在awk脚本里面使用 ‘\t’:为了使文档变得清晰,我们在脚本里使用了表达式’\t’
来显示一个制表符 (0×99)。所有awk的版本,甚至UNIX系统7的版本应该能认出
‘\t’这种缩写。

#—文件结尾—


ubuntu Hardy(8.04)源列表大全
Read the rest of this entry »

FTP常用操作命令

1. 连接ftp服务器

格式:ftp [hostname| ip-address]
a)在linux命令行下输入:ftp 10.18.34.115
b)服务器询问你用户名和口令,分别输入yint和相应密码,待认证通过即可。

2. 下载文件

下载文件通常用get和mget这两条命令。
a) get
格式:get [remote-file] [local-file]
将文件从远端主机中传送至本地主机中.
如要获取服务器上E:\rose\1.bmp,则
ftp> get /rose/1.bmp 1.bmp (回车)
b) mget
格式:mget [remote-files]
从远端主机接收一批文件至本地主机.
如要获取服务器上E:\rose\下的所有文件,则
ftp> cd /rose
ftp> mget *.* (回车)
注意:文件都下载到了linux主机的当前目录下。比如,在 /root/yint下运行的ftp命令,则文件都下载到了/root/yint下。

3.上传文件

a) put
格式:put local-file [remote-file]
将本地一个文件传送至远端主机中.
如要把本地的1.bmp传送到远端主机E:\rose,并改名为333.bmp
ftp> put 1.bmp /rose/333.bmp (回车)
b) mput
格式:mput local-files
将本地主机中一批文件传送至远端主机.
如要把本地当前目录下所有bmp文件上传到服务器E:\rose 下
ftp> cd /rose (回车)
ftp> mput *.bmp (回车)
注意:上传文件都来自于主机的当前目录下。比如,在 /root/yint下运行的ftp命令,则只有在/root/yint下的文件linux才会上传到服务器E:\rose 下。

4. 断开连接

bye:中断与服务器的连接。
ftp> bye (回车)


ubuntu 时间设置

这几天使用ubuntu8.04的过程中,发现ubuntu的时间工具已经很好很强大了。不仅可以显示时间,还可以显示天气,温度等。下面就为大家介绍下详题细的设置过程。
1.右键单击桌面右上角时间区域,弹出菜单,选择“首选项“。如下图1:
通过“时钟选项”可以他设置“12小时制/24小时制”,其他就不多说了。

1.png
2.切换到“标签’,点击“添加“(图2),弹出“位置选择“窗口(图3)。再点击“查找“,弹出另外一个窗口(图4)。在这个窗口中可以手动选择你所在的城市,也可以自动查找。选择好后,点’确定‘,就完成了位置设定。(用于天气,温度显示)

2.png

3.png

4.png

3.切换到“天气“标签”,选择温度和风力的单位。
建议温度选择“C”,即摄氏温度。风力选择“km/h“

4.时间调整
右键单击桌面右上角时间区域,弹出菜单,选择“调整日期和时间“,手动修改好时间后,点击“设定系统时间”即可(图5)。

5.png