2007-12-22

Endnote 文献导入 zotero

zotero是运行在firefox2.0以上版的一个文献管理工具。支持word openoffice googledoc

How to Import From EndNote
In EndNote, select "Output Styles" from the Edit menu. From the list of output styles select RefMan (RIS). (If you do not see RIS as an option, you'll need to download the style from the EndNote site.) Once RefMan (RIS) is set as the format, select "Export" from the File menu. In the Export window that pops up, choose "Text Only" and hit "Save." After exporting from EndNote, click on the gear icon () above the left column in your Zotero pane and select "Import" from the pull-down menu. In the filesystem window that pops up, locate the RIS file you exported from EndNote and select "Open." Your references should be imported into Zotero.

2007-11-29

Reciteword

http://reciteword.sourceforge.net/

Reciteword is an education software to help people to study English, reciting English words. It has very beautiful interface, make reciting word being an interesting thing.

2007-11-24

jornada ce-star 装了拼音输入法,却不出现备选字

以前一直很好,后来不知装了什么软件突然不行了。因为绝大部份时间在用720degrees,一直没时间搞,但毕竟感觉有些不爽。

经过一阵搜索,终于找到元凶 删除掉windows目录下的aygshell.dll就好了。

http://bbs.pdafans.com/archiver/tid-293953.html

2007-11-01

google images

google 的图像搜索已经被GFW废掉了,第二页以后的图像都显示不了!!!
fxxk gfw!

2007-10-13

du -h --max-depth=1

du -h --max-depth=1, 用来显示当前目录下子目录大小。但是windows版的du 缺少max-depth功能。
i.disk 软件也不错,还能以图形方式显示目录大小, 我找到了藏在硬盘中的 googledesktop 和neo 的废弃文件夹有2G左右。

2007-10-03

bash

http://www.linuxsir.org/main/?q=node/140


Ctrl + A : 光标移到行首。
Ctrl + E : 光标移到行尾。
Ctrl + L : 清屏。
Ctrl + U : 清除光标前至行首间的所有内容。
Ctrl + H : 同 backspace 键相同。
Ctrl + R : 搜索之前打过的命令。
Ctrl + C : 杀死当前进程。
Ctrl + D : 退出当前 Shell。

Ctrl + S:终止屏幕输出,Ctrl+Q恢复

Ctrl + Z : 把当前进程转到后台运行,使用’ fg ‘命令恢复。
Ctrl + W : 移除光标前的一个单词
Ctrl + K : 清除光标后至行尾的内容。
Ctrl + T : 交换光标位置前的两个字符。

l <CTRL y>:插入最近删除的单词

Esc + T : 交换光标位置前的两个单词。
Alt + F : 在当前行把光标向前移一个单词。
Alt + B : 在当前行把光标向后移一个单词。

<ALT d>:删除从光标到当前单词结尾的部分


l <ALT a>:将光标移到当前单词头部
l <ALT e>:将光标移到当前单词尾部

Tab : 自动补完命令

阅读(103 次)



l
l <CTRL w>:删除从光标到当前单词开头的部分


l <!$>:重复前一个命令最后的参数。

Esc b

左移一个单词

Esc f

命令的排列

command1;command2
先执行 command1 ,不管 command1 是否出错,接下来执行 command2 。

command1 && command2
只有当 command1 正确运行完毕后,才执行 command2 。

命令的任务调度

当您运用任务的调度或将命令置于后台,终端就立即解放了,这样一来,终端立即就可以接受新的输入。为实现这样的目的,您只需在命令后面添加一个 & :
gqview &
告诉 shell 将图片查看器'GQview'放到后台去执行(即当成 job 来运行)。

命令 jobs 将告诉您,在这个终端窗口中,运行着哪些命令与程序:
jobs
[1]+ Running gqview &

组合键 <CTRL z> 将挂起终端中正在运行的程序,然后您就可以用 bg 命令将其放到后台去执行。

命令的替换

command1 $(command2)
除了'$( )',您还可以用后引号(backquote):

command1 `command2`
这里有另外一个例子。我们假设,您打算结束一个名为'rob'的程序。您先得用命令'pidof'找出相应的进程号(Process ID),然后以这个 PID 为参数,运行'kill'命令,这样就可以结束'rob'程序。除了用:
pidof rob
567
kill 567

您还可以试试:
kill `pidof rob`

文件名匹配

环境变量
所有环境变量名都是大写
变量名有时候以'$'开头,但有时又不是。当设置一个变量时,您直接用名称,而不需要加'$':
PATH=/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin
要获取变量值的话,就要在变量名前加'$':
echo $PATH
/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin
否则的话,变量名就会被当作普通文本了:
echo PATH
PATH

PATH=$PATH:/some/directory
这样,PATH 被设成当前的值(以 $PATH 来表示)+新添的目录。
为当前终端设置了新的 $PATH 变量。如果您打开一个新的终端,运行 echo $PATH ,将返回旧的 $PATH 值,而看不到您刚才添加的新目录。因为您先前定义的是一个局部环境变量(仅限于当前的终端)。

要定义一个全局变量,使在以后打开的终端中生效,您需要将局部变量输出(export),可以用'export'命令:
export PATH=$PATH:/some/directory


别名的语法是:
alias shortcut='command'
命令中有空格的话 ,就需要用引号(如在命令与可选项间就有空格)。请注意,您可以用单引号或双引号,但他们是有区别的。
单引号将剥夺其中的所有字符的特殊含义,而双引号中的'$'(参数替换)和'`'(命令替换)是例外。这意味着,如果您想在别名中应用变量或命令的替换,就得用双引号。看一下上面的例子,我在'.bashrc'中定义了一个称为 MUOHOME 的变量:
export MUOHOME=$HOME/web/muo/rsmuo/docs
要在上面的别名中用上这个变量,我就必须用双引号:
alias upmuo="rsync -e ssh -z -t -r -vv --progress $MUOHOME muo:/www/mandrakeuser/docs"
否则,别名将查找一个名为'$MUOHOME'的目录或文件。

2007-09-28

shell命令[转帖]
shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。

 什么是shell

Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。

shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。

shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。

有一些命令,比如改变工作目录命令cd,是包含在shell内部的。还有一些命令,例如拷贝命令cp和移动命令rm,是存在于文件系统中某个目录下的单独的程序。对用户而言,不必关心一个命令是建立在shell内部还是一个单独的程序。

shell首先检查命令是否是内部命令,若不是再检查是否是一个应用程序(这里的应用程序可以是Linux本身的实用程序,如ls和rm,也可以是购买的 商业程序,如xv,或者是自由软件,如emacs)。然后shell在搜索路径里寻找这些应用程序(搜索路径就是一个能找到可执行程序的目录列表)。如果 键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。如果能够成功找到命令,该内部命令或应用程序将被分解为系统调用 并传给Linux内核。
 
shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。

当普通用户成功登录,系统将执行一个称为shell的程序。正是shell进程提供了命令行提示符。作为默认值(TurboLinux系统默认的shell是BASH),对普通用户用“$”作提示符,对超级用户(root)用“#”作提示符。

一旦出现了shell提示符,就可以键入命令名称及命令所需要的参数。shell将执行这些命令。如果一条命令花费了很长的时间来运行,或者在屏幕上产生了大量的输出,可以从键盘上按ctrl+c发出中断信号来中断它(在正常结束之前,中止它的执行)。

当用户准备结束登录对话进程时,可以键入logout命令、exit命令或文件结束符(EOF)(按ctrl+d实现),结束登录。

我们来实习一下shell是如何工作的。

$ make work

make:***No rule to make target ‘work’. Stop.

$

注释:make是系统中一个命令的名字,后面跟着命令参数。在接收到这个命令后,shell便执行它。本例中,由于输入的命令参数不正确,系统返回信息后停止该命令的执行。

在例子中,shell会寻找名为make的程序,并以work为参数执行它。make是一个经常被用来编译大程序的程序,它以参数作为目标来进行编译。在 “make work”中,make编译的目标是work。因为make找不到以work为名字的目标,它便给出错误信息表示运行失败,用户又回到系统提示符下。

另外,用户键入有关命令行后,如果shell找不到以其中的命令名为名字的程序,就会给出错误信息。例如,如果用户键入:

$ myprog

bash:myprog:command not found

$

可以看到,用户得到了一个没有找到该命令的错误信息。用户敲错命令后,系统一般会给出这样的错误信息。

shell的种类

Linux中的shell有多种类型,其中最常用的几种是Bourne shell(sh)、C shell(csh)和Korn shell(ksh)。三种shell各有优缺点。Bourne shell是UNIX最初使用的shell,并且在每种UNIX上都可以使用。Bourne shell在shell编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。Linux操作系统缺省的shell是Bourne Again shell,它是Bourne shell的扩展,简称Bash,与Bourne shell完全向后兼容,并且在Bourne shell的基础上增加、增强了很多特性。Bash放在/bin/bash中,它有许多特色,可以提供如命令补全、命令编辑和命令历史表等功能,它还包含 了很多C shell和Korn shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。

C shell是一种比Bourne shell更适于编程的shell,它的语法与C语言很相似。 Linux为喜欢使用C shell的人提供了Tcsh。Tcsh是C shell的一个扩展版本。Tcsh包括命令行编辑、可编程单词补全、拼写校正、历史命令替换、作业控制和类似C语言的语法,它不仅和Bash shell是提示符兼容,而且还提供比Bash shell更多的提示符参数。

Korn shell集合了C shell和Bourne shell的优点并且和Bourne shell完全兼容。Linux系统提供了pdksh(ksh的扩展),它支持任务控制,可以在命令行上挂起、后台执行、唤醒或终止程序。

Linux并没有冷落其他shell用户,还包括了一些流行的shell如ash、zsh等。每个shell都有它的用途,有些shell是有专利的,有 些能从Internet网上或其他来源获得。要决定使用哪个shell,只需读一下各种shell的联机帮助,并试用一下。

用户在登录到Linux时由/etc/passwd文件来决定要使用哪个shell。例如:

# fgrep lisa /etc/passwd

lisa:x:500:500:TurboLinux User:/home/lisa:/bin/bash

shell被列每行的末尾(/bin/bash)。

由于Bash是Linux上缺省的shell,本章主要介绍Bash及其相关知识。

shell命令

命令行c

用户登录到Linux系统时,可以看到一个shell提示符,标识了命令行的开始。用户可以在提示符后面输入任何命令及参数。例如:

$ date

二 11 23 01:34:58 CST 1999

$

用户登录时,实际进入了shell,它遵循一定的语法将输入的命令加以解释并传给系统。命令行中输入的第一个字必须是一个命令的名字,第二个字是命令的选项或参数,命令行中的每个字必须由空格或TAB隔开,格式如下:

$ Command Option Arguments

1. 选项和参数

选项是包括一个或多个字母的代码,它前面有一个减号(减号是必要的,Linux用它来区别选项和参数),选项可用于改变命令执行的动作的类型。例如:

$ ls

motd passwd

$

这是没有选项的ls命令,可列出当前目录中所有文件,只列出各个文件的名字,而不显示其他更多的信息。

$ ls -l

total 2

-rw-r--r-- 2 wzh book 22 Apr 20 20:37 motd

-rw-r--r-- 2 wzh book 796 Apr 20 20:37 passwd

$

加入-l选项,将会为每个文件列出一行信息,诸如数据大小和数据最后被修改的时间。

大多数命令都被设计为可以接纳参数。参数是在命令行中的选项之后键入的一个或多个单词,例如:

$ ls -l text

-rw-r--r-- 2 wzh book 22 Apr 20 20:37 motd

-rw-r--r-- 2 wzh book 796 Apr 20 20:37 passwd

$

将显示text目录下的所有文件及其信息。

有些命令,如ls可以带参数,而有一些命令可能需要一些最小数目的参数。例如,cp命令至少需要两个参数,如果参数的数目与命令要求不符,shell将会给出出错信息。例如:

$ cp -i mydata newdata

注意:命令行中选项先于参数输入。
2. 命令行特征

命令行实际上是可以编辑的一个文本缓冲区,在按回车之前,可以对输入的文本进行编辑。比如利用BACKSPACE键可以删除刚键入的字符,可以进行整行删 除,还可以插入字符,使得用户在输入命令,尤其是复杂命令时,若出现键入错误,无须重新输入整个命令,只要利用编辑操作,即可改正错误。

利用上箭头可以重新显示刚执行的命令,利用这一功能可以重复执行以前执行过的命令,而无须重新键入该命令。

bash保存着以前键入过的命令的列表,这一列表被称为命令历史表。按动上箭头,便可以在命令行上逐次显示各条命令。同样,按动下箭头可以在命令列表中向 下移动,这样可以将以前的各条命令显示在命令行上,用户可以修改并执行这些命令。这一特征将在10.4节中进行详细的论述。

在一个命令行中还可以置入多个命令,用分号将各个命令隔开。例如:

$ ls -F;cp -i mydata newdata

也可以在几个命令行中输入一个命令,用反斜杠将一个命令行持续到下一行。

$ cp –i

mydata

newdata

 

上面的cp命令是在三行中输入的,开始的两行以反斜杠结束,把三行作为一个命令行。

shell中的特殊字符

shell中除使用普通字符外,还可以使用一些具有特殊含义和功能的特殊字符。在使用它们时应注意其特殊的含义和作用范围。下面分别对这些特殊字符加以介绍。

1. 通配符

通配符用于模式匹配,如文件名匹配、路经名搜索、字符串查找等。常用的通配符有*、?和括在方括号[ ]中的字符序列。用户可以在作为命令参数的文件名中包含这些通配符,构成一个所谓的“模式串”,在执行过程中进行模式匹配。

* 代表任何字符串(长度可以不等),例如:“f*”匹配以f打头的任意字符串。但应注意,文件名前的圆点(.)和路经名中的斜线(/)必须显式匹配。例如“*”不能匹配.file,而“.*”才可以匹配.file。

? 代表任何单个字符。

[] 代表指定的一个字符范围,只要文件名中[ ]位置处的字符在[ ]中指定的范围之内,那么这个文件名就与这个模式串匹配。方括号中的字符范围可以由直接给出的字符组成,也可以由表示限定范围的起始字符、终止字符及中间 的连字符(-)组成。例如,f [a- d] 与f [abcd]的作用相同。Shell将把与命令行中指定的模式串相匹配的所有文件名都作为命令的参数,形成最终的命令,然后再执行这个命令。

下面我们给出表10-1说明这些通配符的具体含义。

表10-1 通配符含义举例

模式串

意 义

*

当前目录下所有文件的名称。

*Text*

当前目录下所有文件名中包含有Text的文件的名称。

[ab-dm]*

当前目录下所有以a、b、c、d、m开头的文件的名称。

[ab-dm]?

当前目录下所有以a、b、c、d、m开头且后面只跟有一个字符的文件的名称。

/usr/bin/??

目录/usr/bin下所有名称为两个字符的文件的名称。

 

特别需要注意的是,连字符“-”仅在方括号内有效,表示字符范围,如在方括号外面就成为普通字符了。而*和?只在方括号外面是通配符,若出现在方括号之 内,它们也失去通配符的能力,成为普通字符了。例如,模式“- a[*?]abc”中只有一对方括号是通配符,*和?均为普通字符,因此,它匹配的字符串只能是- a*abc和- a?abc。

最后说明一下使用通配符时需要注意的一些问题。由于*、?和[ ]对于shell来说具有比较特殊的意义,因此在正常的文件名中不应出现这些字符。特别是在目录名中不要出现它们,否则Shell匹配起来可能会无穷的递 归下去。另外要注意的一点是:如果目录中没有与指定的模式串相匹配的文件名,那么Shell将使用此模式串本身作为参数传给有关命令。这可能就是命令中出 现特殊字符的原因所在。
2. 引号

在shell中引号分为三种:单引号,双引号和反引号。

* 单引号 ‘

由单引号括起来的字符都作为普通字符出现。特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释。例如:

$ string=’$PATH’

$ echo $string

$PATH

$

可见$保持了其本身的含义,作为普通字符出现。

* 双引号 “

由双引号括起来的字符,除$、、’、和”这几个字符仍是特殊字符并保留其特殊功能外,其余字符仍作为普通字符对待。对于$来说,就是用其后指定的变量的值 来代替这个变量和$;对于而言,是转义字符,它告诉shell不要对其后面的那个字符进行特殊处理,只当作普通字符即可。可以想见,在双引号中需要在前面 加上的只有四个字符$,,’和”本身。而对”号,若其前面没有加,则Shell会将它同前一个”号匹配。

例如,我们假定PATH的值为.:/usr/bin:/bin,输入如下命令:

$ TestString=”$PATH”$PATH”

$ echo $TestString

.:/usr/bin:/ bin”$PATH

$

读者可以自己试一下在第二个双引号之前不加会产生什么结果。

 

* 反引号 `

反引号(`)这个字符所对应的键一般位于键盘的左上角,不要将其同单引号(’)混淆。反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。例如:

$ pwd

/home/xyz

$ string=”current directory is `pwd`”

$ echo $string

current directour is /home/xyz

$

shell执行echo命令时,首先执行`pwd`中的命令pwd,并将输出结果/home/xyz取代`pwd`这部分,最后输出替换后的整个结果。

利用反引号的这种功能可以进行命令置换,即把反引号括起来的执行结果赋值给指定变量。例如:

$ today=`date`

$ echo Today is $today

Today is Mon Apr 15 16:20:13 CST 1999

$

反引号还可以嵌套使用。但需注意,嵌套使用时内层的反引号必须用反斜线()将其转义。例如:

$ abc=`echo The number of users is `who| wc-l``

$ echo $abc

The number of users is 5

$

在反引号之间的命令行中也可以使用shell的特殊字符。Shell为得到``中命令的结果,它实际上要去执行``中指定的命令。执行时,命令中的特殊字符,如$,”,?等又将具有特殊含义,并且``所包含的可以是任何一个合法的Shell命令,如:

$ ls

note readme.txt Notice Unix.dir

$ TestString=”`echo $HOME ` ` ls [nN]*`”

$ echo $TestString

/home/yxz note Notice

$

其他情况,读者可自行试之。

1. 注释符

在shell编程中经常要对某些正文行进行注释,以增加程序的可读性。在Shell中以字符“#”开头的正文行表示注释行。

此外还有一些特殊字符如:用于输入/输出重定向与管道的<、>、<<、>>和|;执行后台命令的&;命令执行操作符&&和||及表示命令组的{}将在下面各小节中加以介绍。

北南南北 02-08-22 01:14

标准输入/输出和重定向

1. 标准输入与输出

我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和 标准错误输出文件(stderr),这两个文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息 送到标准错误文件中。

我们以cat命令为例,cat命令的功能是从命令行给出的文件中读取数据,并将这些数据直接送到标准输出。若使用如下命令:

$ cat config

将会把文件config的内容依次显示到屏幕上。但是,如果cat的命令行中没有参数,它就会从标准输入中读取数据,并将其送到标准输出。例如:

$ cat

Hello world

Hello world

Bye

Bye

<ctrl+d>

$

用户输入的每一行都立刻被cat命令输出到屏幕上。

另一个例子,命令sort按行读入文件正文(当命令行中没有给出文件名时,表示从标准输入读入),将其排序,并将结果送到标准输出。下面的例子是从标准输入读入一个采购单,并将其排序。

$ sort

bananas

carrots

apples

<ctrl+d>

apples

bananas

carrots

$

这时我们在屏幕上得到了已排序的采购单。

直接使用标准输入/输出文件存在以下问题:

输入数据从终端输入时,用户费了半天劲输入的数据只能用一次。下次再想用这些数据时就得重新输入。而且在终端上输入时,若输入有误修改起来不是很方便。

输出到终端屏幕上的信息只能看不能动。我们无法对此输出作更多处理,如将输出作为另一命令的输入进行进一步的处理等。

为了解决上述问题,Linux系统为输入、输出的传送引入了另外两种机制,即输入/输出重定向和管道。

2. 输入重定向

输入重定向是指把命令(或可执行程序)的标准输入重定向到指定的文件中。也就是说,输入可以不来自键盘,而来自一个指定的文件。所以说,输入重定向主要用于改变一个命令的输入源,特别是改变那些需要大量输入的输入源。

例如,命令wc统计指定文件包含的行数、单词数和字符数。如果仅在命令行上键入:

$ wc

wc将等待用户告诉它统计什么,这时shell就好象死了一样,从键盘键入的所有文本都出现在屏幕上,但并没有什么结果,直至按下<ctrl+d>,wc才将命令结果写在屏幕上。

如果给出一个文件名作为wc命令的参数,如下例所示,wc将返回该文件所包含的行数、单词数和字符数。

$ wc /etc/passwd

20 23 726 /etc/passwd

$

另一种把/etc/passwd文件内容传给wc命令的方法是重定向wc的输入。输入重定向的一般形式为:命令<文件名。可以用下面的命令把wc命令的输入重定向为/etc/passwd文件:

$ wc < /etc/passwd

20 23 726

$

另一种输入重定向称为here文档,它告诉shell当前命令的标准输入来自命令行。here文档的重定向操作符使用<<。它将一对分隔符 (本例中用delim表示)之间的正文重定向输入给命令。下例将一对分隔符delim之间的正文作为wc命令的输入,统计出正文的行数、单词数和字符数。

$ wc<<delim

>this text forms the content

>of the here document,which

>continues until the end of

>text delimter

>delim

4 17 98

在<<操作符后面,任何字符都可以作为正文开始前的分隔符,本例中使用delim作为分隔符。here文档的正文一直延续到遇见另一个分隔符 为止。第二个分隔符应出现在新行的开头。这时here文档的正文(不包括开始和结束的分隔符)将重新定向送给命令wc作为它的标准输入。

由于大多数命令都以参数的形式在命令行上指定输入文件的文件名,所以输入重定向并不经常使用。尽管如此,当要使用一个不接受文件名作为输入参数的命令,而需要的输入内容又存在一个文件里时,就能用输入重定向解决问题。

1. 输出重定向

输出重定向是指把命令(或可执行程序)的标准输出或标准错误输出重新定向到指定文件中。这样,该命令的输出就不显示在屏幕上,而是写入到指定文件中。

输出重定向比输入重定向更常用,很多情况下都可以使用这种功能。例如,如果某个命令的输出很多,在屏幕上不能完全显示,那么将输出重定向到一个文件中,然 后再用文本编辑器打开这个文件,就可以查看输出信息;如果想保存一个命令的输出,也可以使用这种方法。还有,输出重定向可以用于把一个命令的输出当作另一 个命令的输入(还有一种更简单的方法,就是使用管道,将在下面介绍)。

输出重定向的一般形式为:命令>文件名。例如:

$ ls > directory.out

$ cat directory.out

ch1.doc ch2.doc ch3.doc chimp config mail/ test/

$

将ls命令的输出保存为一个名为directory.out的文件。

注:如果>符号后边的文件已存在,那么这个文件将被重写。

为避免输出重定向中指定文件只能存放当前命令的输出重定向的内容,shell提供了输出重定向的一种追加手段。输出追加重定向与输出重定向的功能非常相 似,区别仅在于输出追加重定向的功能是把命令(或可执行程序)的输出结果追加到指定文件的最后,而该文件原有内容不被破坏。

如果要将一条命令的输出结果追加到指定文件的后面,可以使用追加重定向操作符>>。形式为:命令>>文件名。例如:

$ ls *.doc>>directory.out

$ cat directory.out

ch1.doc ch2.doc ch3.doc chimp config mail/ test/

ch1.doc ch2.doc ch3.doc

$

和程序的标准输出重定向一样,程序的错误输出也可以重新定向。使用符号2>(或追加符号2>>)表示对错误输出设备重定向。例如下面的命令:

$ ls /usr/tmp 2> err.file

可在屏幕上看到程序的正常输出结果,但又将程序的任何错误信息送到文件err.file中,以备将来检查用。

还可以使用另一个输出重定向操作符(&>)将标准输出和错误输出同时送到同一文件中。例如:

$ ls /usr/tmp &> output.file

利用重定向将命令组合在一起,可实现系统单个命令不能提供的新功能。例如使用下面的命令序列:

$ ls /usr/bin > /tmp/dir

$ wc –w < /tmp/dir

459

统计了/usr/bin目录下的文件个数。

管 道

将一个程序或命令的输出作为另一个程序或命令的输入,有两种方法,一种是通过一个临时文件将两个命令或程序结合在一起,例如上个例子中的/tmp/dir文件将ls和wc命令联在一起;另一种是Linux所提供的管道功能。这种方法比前一种方法更好。

管道可以把一系列命令连接起来,这意味着第一个命令的输出会作为第二个命令的输入通过管道传给第二个命令,第二个命令的输出又会作为第三个命令的输入,以此类推。显示在屏幕上的是管道行中最后一个命令的输出(如果命令行中未使用输出重定向)。

通过使用管道符“|”来建立一个管道行。用管道重写上面的例子:

$ ls /usr/bin|wc -w

1789

再如:

$ cat sample.txt|grep "High"|wc -l

管道将cat命令(列出一个文件的内容)的输出送给grep命令。grep命令在输入里查找单词High,grep命令的输出则是所有包含单词High的行,这个输出又被送给wc命令,wc命令统计出输入中的行数。假设sample.txt文件的内容如下:

Things to do today:

Low:Go grocery shopping

High:Return movie

High:Clear level 3 in Alien vs. Predator

Medium:Pick up clothes from dry cleaner

那么该管道行的结果是2。

命令替换

命令替换和重定向有些相似,但区别在于命令替换是将一个命令的输出作为另外一个命令的参数。常用命令格式为:

command1 `command2`

其中,command2的输出将作为command1的参数。需要注意的是这里的`符号,被它括起来的内容将作为命令执行,执行后的结果作为command1的参数。例如:

$ cd `pwd`

该命令将pwd命令列出的目录作为cd命令的参数,结果仍然是停留在当前目录下。

第二十二课 在Bash中的操作      2000年/5月/29日

命令和文件名扩展特性

Bash命令行具有命令和文件名扩展特性。当输入一个还没完成的命令或文件名时,只需键入Tab键就能激活命令和文件名扩展特性,从而完成该命令的剩余输 入。如果有多个命令或文件的前缀相同,Bash将响铃并等待用户输入足够的字符,以便选择唯一的命令或文件名,如果找到,系统将自动补齐搜索到的命令或文 件名,用户按回车键后,系统将执行这条指令。例如:

$ cat pre <Tab>

$ cat preface

Bash也能列出当前目录下部分匹配的文件名来完成文件名扩展。如果键入Esc,然后键入?,shell将列出所有与输入的字符串相匹配的文件名。例如下 例,在没有完成的输入后键入Esc ?,shell将列出所有与输入的字符串相匹配的字符串,然后shell回显命令行,根据列出的文件名,可以键入要输入的文件名或按下Tab键来完成文件 名扩展。例如:

$ ls

document docudrama

$ cat doc <ESC ?>

document

docudrama

$ cat docudrama

[例】下面是一个目录包含的文件列表:

Firebird2.7.tgz Firebird.README Firebird2.60.tgz

FireBird Firebird2.60.tgz.README

现在要删除Firebird2.60.tgz.README文件,键入:

$ rm –f Fi<Tab>

系统会发出警报声,并且自动将命令行补全为:

$ rm –f Fire

并等待用户进一步输入文件名的后面部分。现在再键入:

b<Tab>

系统再次发出警报声,并且自动将命令行补全为:

$ rm –f Firebird

并等待用户进一步输入文件名的后面部分。现在再键入:

2.6<Tab>

系统再次发出警报声,并且自动将命令行补全为:

$ rm –f Firebird2.60.tgz

并等待用户进一步输入文件名的后面部分。现在再键入:

.<Tab>

此时命令将被补全为:

$ rm –f Firebird2.60.tgz..README

从上例可以看到,bash总是尽力根据用户输入的信息来补全命令。当无法根据现有信息补全命令时,则提示用户再给出更多的信息,然后再根据用户的提示来进 一步补全命令。作为用户最好是能够一次性给出足够的信息以便于bash进行命令补全;否则多按几次<Tab>,时间也就消耗掉了。

命令行编辑

在Bash中可以对命令行进行编辑,以便用户在执行所键入的命令之前能够修改所键入的命令。如果在键入命令时出现拼写错误,只需在运行所键入的命令之前,使用编辑命令来纠正编辑错误,然后执行它,而不用重新输入整行命令。这个功能对以长路径文件名作参数的命令特别有用。

表10-2是对命令行编辑操作的一个总结。

表10-2 命令行编辑操作

 

命令行编辑操作

功能

Ctrl+b或左箭头键

左移一个字符(移至前一个字符)

Ctrl+f或右箭头键

右移一个字符(移至后一个字符)

Ctrl+a

移至行首

Ctrl+e

移至行尾

Esc b

左移一个单词

Esc f

右移一个单词

Del

删除光标所在处的字符

Ctrl+d

删除光标所在处的字符

BACKSPACE或Ctrl+h

删除光标左边的字符

Ctrl+k

删除至行尾

 

命令历史

在Bash中,history命令能够保存最近所执行的命令。这些命令的历史记录号从1开始,只有有限个命令可以被保存起来,最多500个,即 history命令的历史记录号缺省值为500。要查看最近执行的命令,只要键入history命令,然后键入回车键,最近执行过的命令即按先后顺序被显 示出来(各条命令前的数字为历史记录号)。

[例】

$ history

1 cp mydata today

2 vi mydata

3 mv mydata reports

4 cd reports

5 ls



所有这些命令都被称为事件(event),一个事件表示一个操作已经发生,即一个命令已被执行。这些事件根据它们被执行的先后顺序用数字标识,这一标识称为历史事件号。最后执行的历史事件的事件号最大。每个事件都可由它的历史事件号或命令的初始字符或字符串等确定。

利用history命令能够查询以前的事件,并可把它们显示到命令行上执行这一事件。最简便的方法就是利用上下箭头键,把先前的事件逐次显示到命令行。这 个操作不需要运行history命令就可以执行。按动一下上箭头键,那么上一次执行的一个事件就将出现在命令行上,再按一下,上一次的前一事件又会出现在 命令行上;按动一下下箭头键,将会使当前事件的下一事件出现在命令行上。

Bash也可以通过键入Esc、Tab键来完成对历史事件的字符扩展。和标准命令行扩展特性一样,键入历史事件的部分字符串,然后键入Esc,再键入 Tab键,与刚才键入的字符串相匹配的历史事件将自动扩展并回显到命令行处。如果不止一个事件与输入的字符串相匹配,就会听到一声响铃,继续键入字符或字 符串,shell将会唯一确定用户所要键入的历史事件。

还有一个查询和执行历史事件的命令——!命令。在!命令后键入与历史事件相关联的字符,这个关联字符可以是历史事件的历史事件号,也可以是该事件的前几个字符。在下面的例子中,查询到历史事件号为3的事件,然后又用其开头的几个字符去匹配,也查询到该命令。

[例】

$ !3

mv mydata reports

$ !mv

mv mydata reports

也可以用一个偏移量(相对于历史事件列表中最后一个事件)来查询历史事件。负的偏移量将从历史事件列表表尾向前偏移。在下面的例子中,历史事件号为2的事 件“vi mydata”就是用一个负的偏移量查询到的。必须注意的是,这个偏移量是相对于历史事件列表中的最后一个事件的。在本例中,历史事件列表中最后一个事件 是事件5,历史事件列表中第一个事件为1。从历史事件号为5的事件,往前偏移4,即是历史事件号为2的事件。

[例】

$ !-4

vi mydata

如果键入!!,则系统默认为上一事件。下面的例子中,用户在命令行上键入!!命令,系统将执行上一事件:“ls”命令。

[例】

$ !!

ls

mydata today reports

也可以用“模式”来搜索一个历史事件。搜索的“模式”必须用符号“?”括起来。下例是用“模式”“?myd?”来搜索历史事件号为3的历史事件“vi mydata”。

[例】

$ !?myd?

vi mydata

1. 查询历史事件

可以在命令行上编辑历史事件列表中的事件。表10-3列出了查询历史事件列表的各种操作。

表10-3 查询历史事件操作

查询历史事件操作

功能

Ctrl+n或向下光标键

移至历史事件列表中当前事件的下一历史事件

Ctrl+p或向上光标键

移至历史事件列表中当前事件的前一历史事件

Esc <

移至历史事件列表表首

Esc >

移至历史事件列表表尾

!event_num

用历史事件号来定位一个历史事件

!characters

用历史事件的字符前缀来查询一个历史事件

!?pattern

用“模式”来查询历史事件列表中的事件

!-event_num

通过偏移量来定位历史事件
2. 配置history:HISTFILE及HISTSIZE

系统保存的历史事件数被保存在一个特定的系统变量中,这个变量就是HISTSIZE。这个变量的缺省值通常被设置为500。这个值可以被修改。例如:

$ HISTSIZE=10

将HISTSIZE的值重新设置为10。

历史事件被保存在一个文件中,文件名由变量HISTFILE指定。通常这个文件的缺省名是.bash_history。通过给变量HISTFILE赋值,可以指定新的文件名。

[例】

$ echo $HISTFILE

/home/lisa/.bash_history

$ HISTFILE=”/home/lisa/newhist”

$ echo $HISTFILE

/home/lisa/newhist

以上操作先显示变量HISTFILE的值,然后赋予它新的值“/home/lisa/newhist”,以后所有的历史事件将被保存在newhist文件中。

 

北南南北 02-08-22 01:14

别名

还有一个使工作变得轻松的方法是使用命令别名。命令别名通常是其他命令的缩写,用来减少键盘输入。

命令格式为:

alias [alias-name=’original-command’]

其中,alias-name是用户给命令取的别名,original-command是原来的命令和参数。需要注意的是,由于Bash是以空格或者回车来 识别原来的命令的,所以如果不使用引号就可能导致Bash只截取第一个字,从而出现错误。如果alias命令后面不使用任何参数,则显示当前正在使用的被 别名化的命令及其别名。为命令取的别名在该次登录期间始终有效。如果用户需要别名在每次登录时都有效,那么就将alias命令写到初始化脚本文件中。

[例]如果经常要键入如下的命令,最好为它建立一个别名来减少工作量。

$ cd /usr/X11/lib/X11

假如为这个长命令建立一个名为goconfig的别名,在Bash提示符下键入如下命令:

$ alias goconfig=’cd /usr/X11/lib/X11’

现在,除非您退出Bash,键入goconfig将和原来的长命令有同样的作用。如果想取消别名,可以使用下面的命令:

$ unalias goconfig

这是一些很多人认为有用的别名,可以把它们写入初始化脚本文件中来提高工作效率:

alias ll=’ls –l’

alias log=’logout’

alias ls=’ls –F’

如果您是一名DOS用户并且习惯了DOS命令,可以用下面的别名定义使Linux表现得象DOS一样:

alias dir=’ls’

alias copy=’cp’

alias rename=’mv’

alias md=’mkdir’

alias rd=’rmdir’

注意:在定义别名时,等号两边不能有空格,否则shell不能决定您需要做什么。仅在命令中包含空格或特殊字符时才需要引号。

如果键入不带任何参数的alias命令,将显示所有已定义的别名。

提示符

Bash有两级提示符。第一级提示符是经常见到的Bash在等待命令输入时的情况。第一级提示符的默认值是$符号。如果用户不喜欢这个符号,或者愿意自己定义提示符,只需修改PS1变量的值。例如将其改为:

PS1=”Enter a command:”

第二级提示符是当Bash为执行某条命令需要用户输入更多信息时显示的。第二级提示符默认为>。如果需要自己定义该提示符,只需改变PS2变量的值。例如将其改为:

PS2=”More information:”

上面的两个例子都是设定提示符为静态字符串的情况。其实用户也可以使用一些事先已经定义好的特殊字符。这些特殊字符将使提示符中包含当前时间之类的信息。表10-4列出了最常用的一些特殊字符及其含义。

表10-4 bash提示符常用特殊字符

 

特殊字符

说 明

!

显示该命令的历史编号

#

显示shell激活后,当前命令的历史编号

$

显示一个$符号,如果当前用户是root则显示#符号



显示一个反斜杠

d

显示当前日期

h

显示运行该shell的计算机主机名

n

打印一个换行符,这将导致提示符跨行

s

显示正在运行的Shell的名称

t

显示当前时间

u

显示当前用户的用户名

W

显示当前工作目录基准名

w

显示当前工作目录

 

这些特殊字符可以组合起来,为用户提供一些提示符,提供很有用的信息。下面来看几个实际例子:

PS1=”t”

将使提示符变成如下所示:

02:16:15

而 PS1=t

将使提示符变成如下所示:

t

若PS1=”t”

将使提示符变成如下所示:

02:16:30

该例就是使用两个特殊字符的组合得到的。

控制shell的运行方式

Bash有一些特殊变量,能控制shell以不同的方式工作。例如,变量noclobber能防止在重定向输出时意外地覆盖一个文件。通过set命令可以 设置noclobber变量的有效或无效。set命令有两个参数:一个是指定变量开(on)或关(off)的选项,一个是特殊变量的变量名。要使某一特殊 变量开(有效),用-o选项,要使其关(无效),用+o选项。例如:

$ set –o noclobber // 使noclobber变量开

$ set +o noclobber // 使noclobber变量关

三个最常用的shell特殊变量有:ignoreeof、noclobber及noglob。

ignoreeof

ignoreeof变量用来禁止使用ctrl+d来退出shell(ctrl+d不仅用来退出shell,而且可以终止用户直接输往标准输出上的输入。该 操作经常在一些shell实用命令中使用,例如实用命令cat。在这些实用程序操作中,非常容易误操作而意外地退出shell。ignoreeof特殊变 量正是用来防止这种意外的退出。例如:

$ set –o ignoreeof

之后,用户只能用logout或exit命令退出shell。

noclobber

noclobber变量可以在重定向输出时保护已存在的文件,防止被意外地覆盖。在下例中,用户设置noclobber为有效,在重定向时,用户试图去覆盖已经存在的文件myfile,此时系统将返回一个错误信息。

[例]

$ set –o noclobber

$ cat preface>myfile

bash: myfile: cannot overwrite existing file

$

noglob

设置noglob变量后,shell将不扩展文件名中一些特殊的字符或字符串。如字符*、?、[ ]等将不再作为通配符。如果用户希望列出结尾为?的文件名answer?,可通过如下步骤:首先,用户使noglob变量为无效,然后再列出文件名。可以 看到,目前命令行上的问号?被认为是文件名中的一个字符,而不再被看作通配符。

$ set –o noglob

$ ls answer?

answer?

子shell与export命令

用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程 序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一个是系统为运行脚 本程序创建的shell。当一个脚本程序运行完毕,它的脚本shell将终止,可以返回到执行该脚本之前的shell。从这种意义上来说,用户可以有许多 shell,每个shell都是由某个shell(称为父shell)派生的。

在子shell中定义的变量只在该子shell内有效。如果在一个shell脚本程序中定义了一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程 序内的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他shell中被改变,可以使用export命令对已定义的变量进行输出。 export命令将使系统在创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。

[例]在本例中,变量myfile是在dispfile脚本程序中定义的。然后用export命令将变量myfile输出至任何子shell,例如当执行printfile脚本程序时产生的子shell。

dispfile脚本程序清单:

/**************begin dispfile**************/

myfile=”List”

export myfile

echo “Displaying $myfile”

pr –t –n $myfile

printfile

/**************end dispfile***************/

 

printfile脚本程序清单:

/**************begin printfile**************/

echo “Printing $myfile”

lpr $myfile&

/**************end printfile**************/

$dispfile

Displaying List

1 screen

2 modem

3 paper

Printing List

$

定制Bash

在本节中已经介绍了很多定制Bash的方法,但是迄今为止,这些方法都只是对当前Bash对话有用。只要用户退出登录,所做的一切改变都会丢失。所以应该在Bash的初始化文件中做永久性的修改。

用户可以将每次启动Bash所需要执行的命令放入初始化文件中,最常见的命令就是alias命令和变量定义两种。系统中的每个用户在其主目录中都有一个.bash_profile文件,Bash每次启动时都将读取该文件,其中包含的所有命令都将被执行。

下面便是默认.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

ENV=$HOME/.bashrc

USERNAME=””

Export USERNAME ENV PATH

2007-09-27

crontab是一个在unix/linux系统上定时(循环)执行某个任务的程序

基本用法:
1. crontab -l
列出当前的crontab任务
2. crontab -d
删除当前的crontab任务
3. crontab -e
编辑一个crontab任务
4. crontab filename
以filename做为crontab的任务列表文件并载入

crontab file的格式:
crontab 文件中的行由 6 个字段组成,不同字段间用空格或 tab 键分隔。前 5 个字段指定命令要运行的时间
分钟 (0-59)
小时 (0-23)
日期 (1-31)
月份 (1-12)
星期几(0-6,其中 0 代表星期日)
第 6 个字段是一个要在适当时间执行的字符串


例子:
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
#每天早上6点10分
10 6 * * * date
#每两个小时
0 */2 * * * date
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date
#1月份日早上4点
0 4 1 jan * date


补充:在使用crontab的时候,要特别注意的是运行脚本中能够访问到的环境变量和当前测试环境中的环境变量未必一致,一个比较保险的做法是在运行的脚本程序中自行设置环境变量(export)

测试例子:没分钟输出日期信息:

* * * * * date >> /home/oraepb/date.out

2007-09-24

freemind 替代品vym ,TVO:The vim outliner, Notecase

freemind 脑图是java软件,目前在运行debian arm 的jornada上无法运行,所以考虑其它替代物

outline 类的能更有效利用jornada的小屏幕也在考虑之内。

NoteCase is a hierarchical note manager (aka. outliner). It helps you organize your everyday text notes 似乎不太稳定。
into a single document, with individual notes placed in the tree-like structure (each note can have its sub-notes, ...).
To ensure your privacy, encrypted document format is supported, along with standard unencrypted format.
Project is free and open source (released under BSD license).
It is written to be portable and is available for following platforms:
  • Linux/Unix (with GTK+ 2.x installed)
  • Windows 9x/2000/XP/Vista
  • Mac OS X
  • Free BSD (available elsewhere on Internet)
  • Sharp Zaurus platform (running pdaxrom or angstrom Linux distro)
  • Nokia Maemo platform (Nokia N800)
TVO: The Vim Outliner :不错, Turn vim into a full-featured text outliner
http://www.vim.org/scripts/script.php?script_id=517

debian有vym 的安装包,但这个界面似乎不太适合小屏幕。
vym for windows
http://www.kriener.de/index.pl/vym4win

2007-09-15

jornada Xmonobut 鼠标右键

触摸屏单击通常代表鼠标单击左键,在728上安装了 Xmonobut, 这样可以在任务栏上出现一个小鼠标,单击这个图标可以切换鼠标左中右三个键。
http://forums.720degrees.net/viewtopic.php?p=1354#1354



I downloaded the source form here

http://handhelds.org/~mallum/downloadables/xmonobut/xmonobut-0.4.tar.gz

then

$tar zxvf xmonobut-0.4.tar.gz

$./configure

$make

$ sudo make install

$ xmonobut -k 21 -m 22

2007-09-11

Installation of the Backlight Upgrade Kit for the HP 100LX / 200LX palmtop

看过HPjornada680改LED背光的,想不到有更老的,200LX,加装EL背光。


http://www.daniel-hertrich.de/backlight/install/

2007-09-04

FREEENGINEER.ORG


Learn UNIX in 10 minutes. Version 1.3  

Preface

This is something that I had given out to students (CAD user training) in years past.
The purpose was to have on one page the basics commands for getting started using
the UNIX shell (so that they didn't call me asking what to do the first time someone
gave them a tape).

This document is copyrighted but freely redistributable under the terms of the GFDL .

Have an idea for this page?
Send me patches, comments, corrections, about whatever you think is wrong or should be
included. I am always happy to hear from you. Please include the word "UNIX" in your subject.

Sections:


Directories:
Moving around the file system:
Listing directory contents:
Changing file permissions and attributes
Moving, renaming, and copying files:
Viewing and editing files:
Shells
Environment variables
Interactive History
Filename Completion
Bash is the way cool shell.
Redirection:
Pipes:
Command Substitution
Searching for strings in files: The grep command
Searching for files : The find command
Reading and writing tapes, backups, and archives: The tar command
File compression: compress, gzip, and bzip2
Looking for help: The man and apropos commands
Basics of the vi editor
FAQs

******************************************************************************************
Basic UNIX Command Line (shell) navigation : Last revised May 17 2001
******************************************************************************************


Directories:


File and directory paths in UNIX use the forward slash "/"
to separate directory names in a path.

examples:

/ "root" directory
/usr directory usr (sub-directory of / "root" directory)
/usr/STRIM100 STRIM100 is a subdirectory of /usr

Moving around the file system:


pwd Show the "present working directory", or current directory.
cd Change current directory to your HOME directory.
cd /usr/STRIM100 Change current directory to /usr/STRIM100.
cd INIT Change current directory to INIT which is a sub-directory of the current
directory.
cd .. Change current directory to the parent directory of the current directory.
cd $STRMWORK Change current directory to the directory defined by the environment
variable 'STRMWORK'.
cd ~bob Change the current directory to the user bob's home directory (if you have permission).


Listing directory contents:


ls list a directory
ls -l list a directory in long ( detailed ) format

for example:
$ ls -l
drwxr-xr-x 4 cliff user 1024 Jun 18 09:40 WAITRON_EARNINGS
-rw-r--r-- 1 cliff user 767392 Jun 6 14:28 scanlib.tar.gz
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | | | |
| | | | | owner group size date time name
| | | | number of links to file or directory contents
| | | permissions for world
| | permissions for members of group
| permissions for owner of file: r = read, w = write, x = execute -=no permission
type of file: - = normal file, d=directory, l = symbolic link, and others...

ls -a List the current directory including hidden files. Hidden files start
with "."
ls -ld * List all the file and directory names in the current directory using
long format. Without the "d" option, ls would list the contents
of any sub-directory of the current. With the "d" option, ls
just lists them like regular files.


Changing file permissions and attributes


chmod 755 file Changes the permissions of file to be rwx for the owner, and rx for
the group and the world. (7 = rwx = 111 binary. 5 = r-x = 101 binary)
chgrp user file Makes file belong to the group user.
chown cliff file Makes cliff the owner of file.
chown -R cliff dir Makes cliff the owner of dir and everything in its directory tree.

You must be the owner of the file/directory or be root before you can do any of these things.

Moving, renaming, and copying files:


cp file1 file2 copy a file
mv file1 newname move or rename a file
mv file1 ~/AAA/ move file1 into sub-directory AAA in your home directory.
rm file1 [file2 ...] remove or delete a file
rm -r dir1 [dir2...] recursivly remove a directory and its contents BE CAREFUL!
mkdir dir1 [dir2...] create directories
mkdir -p dirpath create the directory dirpath, including all implied directories in the path.
rmdir dir1 [dir2...] remove an empty directory


Viewing and editing files:


cat filename Dump a file to the screen in ascii.
more filename Progressively dump a file to the screen: ENTER = one line down
SPACEBAR = page down q=quit
less filename Like more, but you can use Page-Up too. Not on all systems.
vi filename Edit a file using the vi editor. All UNIX systems will have vi in some form.
emacs filename Edit a file using the emacs editor. Not all systems will have emacs.
head filename Show the first few lines of a file.
head -n filename Show the first n lines of a file.
tail filename Show the last few lines of a file.
tail -n filename Show the last n lines of a file.


Shells


The behavior of the command line interface will differ slightly depending
on the shell program that is being used.

Depending on the shell used, some extra behaviors can be quite nifty.

You can find out what shell you are using by the command:

echo $SHELL

Of course you can create a file with a list of shell commands and execute it like
a program to perform a task. This is called a shell script. This is in fact the
primary purpose of most shells, not the interactive command line behavior.


Environment variables


You can teach your shell to remember things for later using environment variables.
For example under the bash shell:

export CASROOT=/usr/local/CAS3.0 Defines the variable CASROOT with the value
/usr/local/CAS3.0.
export LD_LIBRARY_PATH=$CASROOT/Linux/lib Defines the variable LD_LIBRARY_PATH with
the value of CASROOT with /Linux/lib appended,
or /usr/local/CAS3.0/Linux/lib

By prefixing $ to the variable name, you can evaluate it in any command:

cd $CASROOT Changes your present working directory to the value of CASROOT

echo $CASROOT Prints out the value of CASROOT, or /usr/local/CAS3.0
printenv CASROOT Does the same thing in bash and some other shells.


Interactive History


A feature of bash and tcsh (and sometimes others) you can use
the up-arrow keys to access your previous commands, edit
them, and re-execute them.


Filename Completion


A feature of bash and tcsh (and possibly others) you can use the
TAB key to complete a partially typed filename. For example if you
have a file called constantine-monks-and-willy-wonka.txt in your
directory and want to edit it you can type 'vi const', hit the TAB key,
and the shell will fill in the rest of the name for you (provided the
completion is unique).


Bash is the way cool shell.

Bash will even complete the name of commands and environment variables.
And if there are multiple completions, if you hit TAB twice bash will show
you all the completions. Bash is the default user shell for most Linux systems.


Redirection:


grep string filename > newfile Redirects the output of the above grep
command to a file 'newfile'.
grep string filename >> existfile Appends the output of the grep command
to the end of 'existfile'.

The redirection directives, > and >> can be used on the output of most commands
to direct their output to a file.

Pipes:


The pipe symbol "|" is used to direct the output of one command to the input
of another.

For example:

ls -l | more This commands takes the output of the long format directory list command
"ls -l" and pipes it through the more command (also known as a filter).
In this case a very long list of files can be viewed a page at a time.

du -sc * | sort -n | tail
The command "du -sc" lists the sizes of all files and directories in the
current working directory. That is piped through "sort -n" which orders the
output from smallest to largest size. Finally, that output is piped through "tail"
which displays only the last few (which just happen to be the largest) results.

Command Substitution


You can use the output of one command as an input to another command in another way
called command substitution. Command substitution is invoked when by enclosing the
substituted command in backwards single quotes. For example:

cat `find . -name aaa.txt`

which will cat ( dump to the screen ) all the files named aaa.txt that exist in the current
directory or in any subdirectory tree.



Searching for strings in files: The grep command


grep string filename prints all the lines in a file that contain the string


Searching for files : The find command


find search_path -name filename

find . -name aaa.txt Finds all the files named aaa.txt in the current directory or
any subdirectory tree.
find / -name vimrc Find all the files named 'vimrc' anywhere on the system.
find /usr/local/games -name "*xpilot*"
Find all files whose names contain the string 'xpilot' which
exist within the '/usr/local/games' directory tree.


Reading and writing tapes, backups, and archives: The tar command


The tar command stands for "tape archive". It is the "standard" way to read
and write archives (collections of files and whole directory trees).

Often you will find archives of stuff with names like stuff.tar, or stuff.tar.gz. This
is stuff in a tar archive, and stuff in a tar archive which has been compressed using the
gzip compression program respectivly.

Chances are that if someone gives you a tape written on a UNIX system, it will be in tar format,
and you will use tar (and your tape drive) to read it.

Likewise, if you want to write a tape to give to someone else, you should probably use
tar as well.

Tar examples:

tar xv Extracts (x) files from the default tape drive while listing (v = verbose)
the file names to the screen.
tar tv Lists the files from the default tape device without extracting them.
tar cv file1 file2
Write files 'file1' and 'file2' to the default tape device.
tar cvf archive.tar file1 [file2...]
Create a tar archive as a file "archive.tar" containing file1,
file2...etc.
tar xvf archive.tar extract from the archive file
tar cvfz archive.tar.gz dname
Create a gzip compressed tar archive containing everything in the directory
'dname'. This does not work with all versions of tar.
tar xvfz archive.tar.gz
Extract a gzip compressed tar archive. Does not work with all versions of tar.
tar cvfI archive.tar.bz2 dname
Create a bz2 compressed tar archive. Does not work with all versions of tar


File compression: compress, gzip, and bzip2


The standard UNIX compression commands are compress and uncompress. Compressed files have
a suffix .Z added to their name. For example:

compress part.igs Creates a compressed file part.igs.Z

uncompress part.igs Uncompresseis part.igs from the compressed file part.igs.Z.
Note the .Z is not required.

Another common compression utility is gzip (and gunzip). These are the GNU compress and
uncompress utilities. gzip usually gives better compression than standard compress,
but may not be installed on all systems. The suffix for gzipped files is .gz

gzip part.igs Creates a compressed file part.igs.gz
gunzip part.igs Extracts the original file from part.igs.gz

The bzip2 utility has (in general) even better compression than gzip, but at the cost of longer
times to compress and uncompress the files. It is not as common a utility as gzip, but is
becoming more generally available.

bzip2 part.igs Create a compressed Iges file part.igs.bz2
bunzip2 part.igs.bz2 Uncompress the compressed iges file.



Looking for help: The man and apropos
commands

Most of the commands have a manual page which give sometimes useful, often more or less
detailed, sometimes cryptic and unfathomable discriptions of their usage. Some say they
are called man pages because they are only for real men.

Example:

man ls Shows the manual page for the ls command

You can search through the man pages using apropos

Example:

apropos build Shows a list of all the man pages whose discriptions contain the word "build"

Do a man apropos for detailed help on apropos.


Basics of the vi editor

Opening a file
vi filename

Creating text
Edit modes: These keys enter editing modes and type in the text
of your document.

i Insert before current cursor position
I Insert at beginning of current line
a Insert (append) after current cursor position
A Append to end of line
r Replace 1 character
R Replace mode
<ESC> Terminate insertion or overwrite mode

Deletion of text

x Delete single character
dd Delete current line and put in buffer
ndd Delete n lines (n is a number) and put them in buffer
J Attaches the next line to the end of the current line (deletes carriage return).

Oops

u Undo last command

cut and paste
yy Yank current line into buffer
nyy Yank n lines into buffer
p Put the contents of the buffer after the current line
P Put the contents of the buffer before the current line

cursor positioning
^d Page down
^u Page up
:n Position cursor at line n
:$ Position cursor at end of file
^g Display current line number
h,j,k,l Left,Down,Up, and Right respectivly. Your arrow keys should also work if
if your keyboard mappings are anywhere near sane.

string substitution

:n1,n2:s/string1/string2/[g] Substitute string2 for string1 on lines
n1 to n2. If g is included (meaning global),
all instances of string1 on each line
are substituted. If g is not included,
only the first instance per matching line is
substituted.

^ matches start of line
. matches any single character
$ matches end of line

These and other "special characters" (like the forward slash) can be "escaped" with
i.e to match the string "/usr/STRIM100/SOFT" say "/usr/STRIM100/SOFT"

Examples:

:1,$:s/dog/cat/g Substitute 'cat' for 'dog', every instance
for the entire file - lines 1 to $ (end of file)

:23,25:/frog/bird/ Substitute 'bird' for 'frog' on lines
23 through 25. Only the first instance
on each line is substituted.


Saving and quitting and other "ex" commands

These commands are all prefixed by pressing colon (:) and then entered in the lower
left corner of the window. They are called "ex" commands because they are commands
of the ex text editor - the precursor line editor to the screen editor
vi. You cannot enter an "ex" command when you are in an edit mode (typing text onto the screen)
Press <ESC> to exit from an editing mode.

:w Write the current file.
:w new.file Write the file to the name 'new.file'.
:w! existing.file Overwrite an existing file with the file currently being edited.
:wq Write the file and quit.
:q Quit.
:q! Quit with no changes.

:e filename Open the file 'filename' for editing.

:set number Turns on line numbering
:set nonumber Turns off line numbering



FAQs

The USENET FAQs should be the first place you look for an answer to specific questions.
You can find most of them at RTFM
The contents of this directory includes vi, bash, and comp.unix.questions FAQs.
Searching USENET archives are very useful too.
google.com has a USENET archive (formerly Deja.com's) .
Advanced Group Search rules.


This document was converted from plain text using Vim and
then hacked. Vim is the best version of the one true text editor: vi.

Copyright (c) 2000-2006
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation;
with Invariant Section: Preface, with Front-Cover Texts, and with no
Back-Cover Texts. A copy of the license can be found on the GNU web site
here.



FREEENGINEER.ORG

2007-08-26

用vim风格使用firefox


文件: keyconfig.tar.gz
大小: 13KB
下载: 下载

http://blog.chinaunix.net/u/9465/showart_199548.html

Vim keys in firefox

把firefox的操作,页面浏览设置为vim的风格,即经典的hjkl. 虽然Arrow Down和Arrow Up可以翻阅页面,但手情不自禁地去敲hj两个键。可以独立用keyconfig的插件,再设置一下就可以实现。或者再用另外一个辅助keyconfig的插件:functions for keyconfig相对方便一点实现。

(一)独立用keyconfig

  1. 首先到 http://mozilla.dorando.at 上安装keyconfig.xpi插件(本文附件)
  2. 进入~/.mozilla/firefox/[yours].default/目录,编辑文件prefs.js,将一下内容插入到文件末尾: user_pref("keyconfig.main.xxx_key_ScrollPageUp", "!][][][goDoCommand('cmd_scrollPageUp');"); user_pref("keyconfig.main.xxx_key_ScrollPageDown", "!][][][goDoCommand('cmd_scrollPageDown');"); user_pref("keyconfig.main.xxx_key_ScrollLineUp", "!][][][goDoCommand('cmd_scrollLineUp');"); user_pref("keyconfig.main.xxx_key_ScrollLineDown", "!][][][goDoCommand('cmd_scrollLineDown');"); user_pref("keyconfig.main.xxx_key_ScrollLeft", "!][][][goDoCommand('cmd_scrollLeft');"); user_pref("keyconfig.main.xxx_key_ScrollRight", "!][][][goDoCommand('cmd_scrollRight');"); user_pref("keyconfig.main.xxx_key_ScrollTop", "!][][][goDoCommand('cmd_scrollTop');"); user_pref("keyconfig.main.xxx_key_ScrollBottom", "!][][][goDoCommand('cmd_scrollBottom');"); user_pref("keyconfig.main.xxx_key_findTypeLinks", "!][][][goDoCommand('cmd_findTypeLinks');");
  3. 先关闭firefox,然后再保存修改过的prefs.js文件。否则,firefox关闭后会清空 firefox的剪贴板,同时重写prefs.js文件,所以需要先复制上面的代码,再关闭firefox,最后保存prefs.js文件。
  4. 重新启动firefox,在tools->keyconfig中设置相应的快捷键。
(二)keyconfig 与 functions for keyconfig联合使用

用keyconfig的一个扩展插件functions for keyconfig就可以不用操作prefs.js,直接设置,而这个插件是以keyconfig为基础的,也就是必须先安装keyconfig。

http://www.pqrs.org/~tekezo/firefox/extensions/functions_for_keyconfig/

(三)直接改ff配置文件,不需要任何插件

1. 找到[firefox_dir]/chrome/toolkit.jar (备份一下)

2. 解压global文件夹下的platformHTMLBindings.xml文件

3. 修改platformHTMLBindings.xml文件
找到如下关键字(123行):
<binding id="browser">
.....

<handler event="keypress" keycode="VK_UP" command="cmd_scrollLineUp" />
<handler event="keypress" keycode="VK_DOWN" command="cmd_scrollLineDown"
/>
<handler event="keypress" keycode="VK_LEFT" command="cmd_scrollLeft" />
<handler event="keypress" keycode="VK_RIGHT" command="cmd_scrollRight" />

在此代码后面添加:
<!-- YY's Add for vi(m) keybindings -->
<handler event="keypress" key="h" command="cmd_scrollLeft"/>
<handler event="keypress" key="j" command="cmd_scrollLineDown"/>
<handler event="keypress" key="k" command="cmd_scrollLineUp"/>
<handler event="keypress" key="l" command="cmd_scrollRight"/>
<handler event="keypress" key="u" command="cmd_scrollPageUp" />

4. 将platformHTMLBindings.xml文件再加入 toolkit.jar文件

5. 打开firefox,在设置页面(运行about:config)中确认
accessibility.typeaheadfind 为false

这样就可以啦

vimperator firefox vim界面风格插件

http://vimperator.mozdev.org/

2007-08-12

压缩包备份与更新


定时备份是一个很好的习惯,可惜最近丢失了一些珍贵的文档,才想起学习一下。
编辑一个bk.bat 专门用来备份的批处理文件,
"c:program filesWinRAR3WinRAR.exe" u -r d:homebk.zip @d:homebackup.lst

u代表更新homebk.zip 中的文件,-r代表 同时处理子目录。
使用zip文档是因为它的通用性非常强,连pda都可以使用,而且速度快于RAR,缺点是压缩后体积比rar要大

@后面的路径d:homebackup.lst,其内容是一个需要备份文件的详细列表。

backup.lst 并包含下列字串:
c:workdoc*.txt //备份文本文档
c:workimage*.bmp //备份图片
c:workmisc
// 后面是给列表文件添加注释

2007-06-30

英文书信

英文书信结构要素

(1 )信头(Letterhead)。

信头包括发信人的地址和发信日期。很多人不太注意保留信封,在信内的打上发信人地址就方便收信人回信。如果使用已经印好信头的信纸,就只要打上发信日 期。信头位于信的最上方,原则上首先按从小到大的顺序(正好与中文书信相反),门牌号码和街名或单位名占一行(太长可占两行),城镇名和邮政编码占一行, 国名占一行。然后是发信日期,它是信头的最后一行,可以写成日月年(英式)也可写成月日年(美式),如:May8,1996或8May,1996. 必然说明的是,月份要写英文名称,否则有可能产生歧义,如5/8/1996,美国人会理解为1996年5 月8 日,而英国人则理解为1996年8 月5 日。

 (2 )封内地址(Inside Address)。
封内地址包括收信人的姓名和地址。封内地址必须和信封地址一致,否则就是出了差错,收信人此时可将信退回或按封内地址转寄。封内地址的第一行是收信人姓名,第二行职务,从第三行开始写收信人地址,写出法原则上和写发信人地址一样。


 (3 )称呼(Salutation)。

称呼应与亲近程度相吻合。最为正式的也是最不亲近的称呼为Dear Sir(英国用)或Dear Genteman (美国用),一般用于给政府机关、官员的公函中,或用于首次往来的商业书信中。比较熟识的人由应称他的姓,最随便也是最亲近的称呼是直呼其名,一般用于亲 朋好友,但应注意,称姓时只称姓,不要又称名,而称名时 不要加Dr或Mr. 如某人全名为William.另外,如果对方为女性却不知应称Mrs.还是Miss时可称Ms. 。称呼后面的标点英国人习惯用逗号,而美国人习惯用冒号(亲朋好友之间可用逗号)。

 (4 )正文(Body)。

正文是信的主体,和中文书信的要求一样,正文的内容要主题突了出、层次清楚、语言简洁、表达准确。如果正文很长需要几张信纸联页时,则应在每张联页左上端都注明页数和收信人名称,如:Mr.WilliamJ.Hall

(5 )结束语(Complimentary Close)。

结束语是习惯的客套用语,它必须和前面的称呼遥相呼应。如果前面称Dear Sir,则应选择下列结束语:Very simcerely yours ,Vedry respecrfully yours,Very truly yours ,Sincerely yours 或Yours sincedrely,Respe-crfullky yours 或Yours respecrfullyFaithfully yours 或 Yours faith-fully.如果前面称姓,则应选择下列是结束语:Sincerely yours 或Yours sincerely ,Truly yours 或Yokkurs truly ,Yours ever. 如果前面称名,则表示写信人与收信人的关系亲近友好,应选择下列结束语:SincerelyYours,Love,All my love.

(6 )签名和发信人姓名(Signaturd and Name Addresser)。
签名因为是亲笔手写,可能不好辩认,因此必须还要打印出来。签名只需签姓名,不需加Mr. 或Mrs.,以及学位头衔等,但打印姓名时,因为中文名没有性别之分,所以中文拼音名前就加Mr.或Mrs.,Miss.,Ms.,以便收信人辨认,英文 名男性不必加Mr.,但女性要加Mrs.,Miss.,Ms. ,打印名后面可加学位头衔等。

一封完整的英文书信必须依序 包含上述六个要素。如果信件有附件并有必要提醒收信人,可在第六个要素之后加上附件注记(Enclosure 或Encl.)。如果整封信写好后又发现遗漏了什么,可在附件注记之后加上又启(Postscript)或其缩写(P.S.)进行补充。



英文书信格式+范例


Addressing Envelopes 信封的书写方式


(1)收信人的地址;
(2)寄信人的地址;
(3)邮票;
(4)地址与信封上边缘留空约40mm;
(5)邮寄指示<如 By Air Mail>;
(6)特别注意事项,要加底线 <如 Printed Matters, Confidential>









Roman International Inc.
2203 Broadway
New York, N.Y. 100101
U.S.A.







Mr. John Smith
Astin Asia Ltd.
1000 King's Road
Hong Kong





Blocked Form of Address 齐头式










AIR MAIL


Mr. John Smith
Astin Asia Ltd.
30/F Cornwall House
1000 King's Road
Hong Kong

Urgent





Indented Form of Address 缩格式地址书写方式


Layout Plans of Letters 信件版面图












(1)Heading (Company name and logo, Address, Telephone number(s), Fax/Telex numbers) 信头(机构名称和标记,地址,电话号码,传真/电传号码)


(2)Date 日期


(3)Addressee's name and address 收信人的姓名和地址


(4)Caption or reference number, underlined 信件提要或编号(要加底线)


(5)Salutation 信件开头的称呼 <如 Dear Sir>


(6)Letter contents 信文


(7)Complimentary closure 结尾敬辞 <如 Yours sincerely>


(8)Writer's signature 写信人的签名


(9)Writer's name 写信人的姓名


(10)Writer's job title写信人的职务头衔


(11)Other information 其他<如写信人所属部门或职责范围>


(12)Miscellaneous abbreviations 各种缩写 <如 cc(抄送);Encl.(附件)等>





Business letters 公务信件












Letters written by small companies or
individuals 小公司或个人信件


(1)Sender's address with company name above 寄信人地址,公司名应写在第一行.
If the sender is an individual, put address only, no name is needed. 如寄信人为个人,只需写地址,无需写姓名.


(2)Date日期


(3)Addressee's name and address收信人的姓名和地址


(4)Salutation 信件开头的称呼



注:无论公务信件或个人信件,信件编号(Ref:...)可放在(A),(B),(C)或(D)任何一个位置.

Social Correspondence 社交书信

Letter of Congratulations









Dear Mr. Smith,


I am writing to convey my warm congratulations on your appointment to the Board of Asia Industries Ltd.


My colleagues and I are delighted that the years of service your have given to your company should at last have been rewarded in this way and we join in sending you our very best wishes for the future.


Yours sincerely

敬爱的史密斯先生:

欣闻你获任命为亚洲实业有限公司董事会成员,我谨向你致以热烈的祝贺。


我和我的同事都感到很高兴,你为贵公司服务多年终以这一方式得到应有的奖赏。我们大家祝你前程远大。



Letter Thanks









Dear Mr. Smith,


I am writing to you just to tell you how very much I appreciate the warm welcome you extended to my wife when she visited your country last week.


The help and advice you gave to her, and the introductions you arranged for her, have resulted in a number of very useful meetings and I should like you to know how very grateful I am for all you have done to make them possible.


I realized the value of time to a busy person like you and this makes me all the more appreciative of the time you so generously gave to her..

敬爱的史密斯先生:

我写此信是想告诉您我是多么感激您在我太太上周访问贵国时给予他的热情款待。


你给予她的协助和宝贵意见,以及为她安排的情况介绍,使她有机会开成几次十分有用的会议,这一切都得助于您才得以办成,我对此真是感激不尽。


我深知时间对于像您一样忙的人是多么宝贵,而您如此慷慨地拿出时间接待她,我为此要向您表示无限的感谢。



Informal Letter of Invitation









Dear Miss Smith,


My brother Peter will be staying with us for a few days during the Christmas holidays and my wife and I have planned a family dinner for him next Saturday evening at seven o'clock so that he can meet some of our friends . We should be delighted if you could join us. I hope you will let me know that you can come.

敬爱的史密斯小姐:

我弟弟彼得将在圣诞节假期期间到我们家住几天,我和妻子计划在下星期六晚七时在家中为他设便宴,以便他可以和我们一些朋友见面。若您能出席我们会感到很高兴,希望您告诉我您能来。


Formal Letters of Invitation










Mr. and Mrs. Andrew K.K. Wang
request the pleasure of your company
at a dinner
in honor of their parents
Fiftieth Wedding Anniversary
on Sunday, the fifth of July
at eight o'clock
New Asia Hotel
100 Deep Water Bay Road
Hong Kong



R. S. V. P.

谨订于七月五日星期日晚八时在香港深水湾道100号新亚洲大酒店为我们父母的金婚纪念举行晚宴,敬请

光临



王楷康夫妇敬约


敬请回复


Informal Letter Accepting an Invitation









Dear Mr. Lee,


Thank you for your kind invitation to the dinner you and Mrs. Lee are giving next Saturday for your brother. I shall be very happy indeed to come, and look forward with pleasure to meeting your brother.

Yours sincerely

李先生:

感谢您邀请我参加您和夫人下周六为您兄弟举行的晚宴。我将很高兴出席,并愉快地期待着见到您的兄弟。



Formal Letter Accepting an Invitation









Mr. and Mrs. John Smith
accept with pleasure
the kind invitation of
Mr. and Mrs. Andrew K.K. Wang
to a dinner
at eight o'clock
the fifth of July
New Asia Hotel
100 Deep Water Bay Road
Hong Kong

约翰史密斯夫妇欣然接受王楷康先生和夫人的邀请,参加于七月五日晚八时在香港深水湾道100 号新亚洲大酒店举行的晚宴。





Informal Letter Declining an Invitation









Dear Mr. Lee,


I am so sorry that I cannot come to the dinner you and Mrs. Lee are giving next Saturday for your brother because of a previous engagement that evening.

I do appreciate your asking me and hope that I will have the opportunity to meet your brother on some other occasion in the near future.

李先生:

很抱歉我不能参加下周六您和李夫人为您兄弟举行的晚宴,因为那天晚上我恰巧有约在先。


但我非常感激您邀请我,并希望在不久的将来有机会能见到您的兄弟。



Formal Letter Declining an Invitation









Mr. and Mrs. John Smith
regret that they are
unable to accept
Mr. and Mrs. Andrew K.K. Wang's
kind invitation to dinner
on Sunday, the fifth of July
at eight o'clock
New Asia Hotel
owing to previous engagement

约翰史密斯夫妇因已有约,不能应邀参加王楷康先生和夫人定于七月五日晚八时在新亚洲大酒店举行的晚宴。至为抱歉。


Letter of Condolence









Dear Mr. Long,


I have just learned with deep regret of the death of your wife and I am writing at once to express our heartfelt sympathy.

There is not much one can say at a time such as this, but those of us at the office who have met Mrs. Long would like you to know that you have our sincere sympathy in your bereavement. We recall her many kindness. She will be missed by all who knew her.

If there is any way in which we can be of any help, either now or later, do please let us know.

Yours sincerely

敬爱的朗先生,

我刚才获悉您妻子去世的噩耗,深感悲痛,现即时提笔向您表示我们深切的哀悼。

在这种时刻任何语言都是苍白无力的,我办公室中凡认识龙太太的同仁都希望您知道,我们对您痛失亲人表示诚挚的同情。我们都记得她是多么和蔼可亲,所以认识她的人都将怀念她。

如果我们可以任何方式帮助您,不管是现在还是稍后,都请您告诉我们。


Letters of Introduction









Dear Sir,


The bearer of this letter is Mr. John Smith, our manager for the sales and marketing department. Mr. Smith will be spending two months in New York in order to develop our business with suitable firms.

We shall be most grateful if you will introduce him to reliable business people and give him any help or advice he may need. We feel that with your experience and connections and your knowledge of the trade you are the best person we know who is able to do this.

We shall very much appreciate your help and look forward to the opportunity of reciprocating when you come to our city.

Yours faithfully

尊敬的先生:

持信人约翰史密斯先生是我们公司业务部门经理,他将在纽约逗留2个月以便和适当的商行拓展业务。


如果您能把商业界一些可靠的人士介绍给他,并给予他必要的协助和建议,我们将万分感激。我们感到您有丰富的经验和广泛的联系,加上您对本行的了解,您是我们认识的人中能办到此事的最佳人选。


我们感谢您的帮助并期待在您到访时报答您的好意。





Business Correspondence 商业书信


Enquiry 询盘(a)









Dear sir,


We have seen your advertisement in the New Asia Journal and are particularly interested in your portable typewriters, but we require a machine suitable for fairly heavy duty.


Please send me your current illustrated catalogue and a price list.


Your faithfully

敬启者:

我们在《新亚洲周刊》见到你们的广告。我们对你们的手提打字机尤感兴趣,但我们需要的是一台适用于打字量较大的机子。


请你寄一份最新的附图产品目录和价目表来。谢谢。


 


Enquiry 询盘(b)









Dear Sir,


We are a leading dealer in waterproof garments in this city. Our customers have expressed interest in your raincoats and enquired about their quality.


Provided quality and price are satisfactory there are prospects of good sales here, but before placing a firm order we should be glad if you would send us, on fourteen day's approval, a selection of men's and women's raincoats. Any of the items unsold at the end of the period, and which we decide not to keep as stock, would be returned at our expense.


We look forward to hearing from you soon.

敬启者:

我们是一家经销防水衣的主要商号。我们的顾客对贵公司生产的雨衣有兴趣,并曾询问过它们的品质。


若质量和价格适宜,你们的雨衣在这里会有较好的销量。但在正式下定单之前,我们希望先试销。如你们能选一批男,女装雨衣寄来,并同意给我们14天的试销期,我们将会感到很高兴。在此期限结束时,任何未销出而我们又不准备库存的产品将退还给你们,退货费用由我方负担。


盼早日赐复。


 


Reply 报盘(a)









Dear Sir,


We were very pleased to receive your letter of 5th April answering our advertisement for typewriters and, as requested, enclose a copy of our latest illustrated catalogue and current price list.

We think the "Portable 95" is a machine that would suit your purpose very well. It weighs 6.5 kg and is a bit heavier than the usual portable, but it is good for heavy duty and at the same time conveniently portable when carried in its case.

We have one of these machines in stock and we shall be pleased to arrange for you to try it.

Although costs have been rising since March, we have not yet raised our pries, but may have to do so when present stocks run out. We therefore advise you to place your order with us at once.

敬启者:

我们很高兴收到您四月五日答复我们打字机广告的来信,现按您来信的要求附上我们最新的附图产品目录及现在的价目表。


我们认为“手提95型”会适合您的需要。这部机重6。5公斤,比常见的手提机稍重一些,但适合于打字量大的用途,同时也可放进打字箱内,十分便于手提。


我们目前的存货中有这样一台机子,我们将很乐意为您安排前来试用。


自今年三月以来各种费用一直在上升,但我们仍未提价,不过目前的库存一旦售完便可能不得不这样做。为此我们建议您即时向我们下订单。


Reply 报盘(b)









Dear Sir,


Thank you for your letter of 10th March. We are gratified to receive your request for men and women's raincoats on approval.

As we have not previously done business together, perhaps you will kindly agree to supply either the usual trade references, or the name of a bank to which we may refer. As soon as these enquiries are satisfactorily settled, we shall be happy to send you the items you mention in your letter.

W sincerely hope this will be the beginning of a long and pleasant business association. We shall do our best to make it so.


敬启者:

您三月十日的来函收悉,我们对您提出有意试销我们出产的男女装雨衣的要求谨表示由衷的高兴。

鉴于我们双方以往未有生意往来,可否请您提供一些一般的商业信用证明资料,或我们可查询的某家银行的名称。一旦这些查询获满意答复,我们将非常乐意向您寄出您信中提出的产品。

我们衷心希望这是我们双方长期愉快合作的开始,我们将为此尽心竭力。


Complaint 投诉









Dear Sir,


On 5th October I bought one of your expensive "Apollo" fountain pens from Julian's, a big department store of this town. Unfortunately I have been unable to use the pen because it leaks and fails to write without making blots. I am very disappointed with my purchase.


On the advice of Julian's manager I am returning the pen to you and enclose it with this letter for correction of the fault.


Please arrange for the pen to be fixed or replace it with a new one and send it to me as soon as possible.

敬启者:

本人于十月五日在本市的朱利安大百货公司购买了你们出产的名贵“阿波罗”型号钢笔一支。但遗憾的是,我一直未能使用这支笔,因为它漏墨水,一写字就漏出一滴滴墨水污渍。我对所购买的产品非常失望。


现按照朱利安百货公司经理的意见,我随信把这支笔退还给你们,以便你们设法补救。


请你们安排修理此笔,或换一支新的给我,并望早日寄来为盼。


Settlement of Complaint 对投诉的处理









Dear Sir,


Thank you for your letter of 9th October enclosing the defective "Apollo" fountain pen, received today. We very much regret that the pen you bought has given your trouble.


Normally each of our pens is individually examined before being passed into store and it is hard to understand why this one escaped examination. We have passed your pen to our quality control department for inspection and a report. Meanwhile, we are arranging to replace your pen with a new one.


We extend our apologies for the inconvenience this matter has caused you, but are confident that the replacement pen you will be receiving will prove satisfactory and give you the service you are entitled to expect from our products.

敬启者:

我们今天受到您十月五日寄来的信及所附的有毛病的“阿波罗”钢笔一支。您购买的笔给您造成麻烦,我们对此深感遗憾。


一般情况下,我们生产的每支钢笔都要经过单独检验才能进入仓库,因此很难理解为什么这支被漏检。我们已将您的笔送交质量检查部门检验,并要求做出报告。与此同时,我们正安排为您更换新笔。


我们对此事给您造成的不便深感抱歉,但深信您将收到的新笔会令您满意,不辜负您对我们产品质量所寄托的期望。




Dear John Letter 绝交信范例一








Dear John Letter


Dear John,


I have been seriously looking back upon our relationship and getting very clear on what I need and desire out of a relationship.


The conclusion I have come to is that we are too different in both our personality and our desired lifestyles to be able to successfully live together with joy, bliss, good communication, and interaction.


This is not about you or about me "winning or losing", or about one of us being wrong -- it is about two ways of being... which do not fulfill each other, or go together. Though I had been open to having you visit with the thought that possibly we could 'try' again, after thinking about it a lot, I realize that it is not a good idea. I am very clear that we are not the 'right' people for each other at this time in our lives.


Please forgive yourself, and me, for any 'mistakes' we made along the way... and remember that we both have grown immensely through being together... but the time has come to move on.


So basically what I am saying is that I would like to 'cancel' my invitation for you to visit. I feel at this time, that I need to move on with my life, and having you come and visit would not serve any positive purpose. You need to accept that this relationship is over and open yourself up to receiving the blessings of the universe...


I think we both need to let go of the past, be grateful for what we had for a time, learn from our experiences, and move on from there.


Dearest John, we have been through a lot together... I have a learned a lot about myself, as you have learnt a lot about yourself. At this point, we are both ready to graduate to the next level in a relationship...What we have learned, whether while we were together, or whether after, through looking back on how we 'operated' together, will serve us in our future relationships.


It has been my experience, that all relationships that end are simply opening the door to another level of joy, and a better relationship built on what we have learnt in the past. So I know and trust that there is someone out there who will support you in your growth while loving you exactly the way you are... which is something that we were not doing for each other. I constantly judged and criticized you, in the same manner that you judged and criticized me... Out there is the perfect person for you that will love you and not find a single thing to criticize about you in the same way that you will not find a single thing to criticize about them... You will accept her as she is, even while seeing that she is not "perfect".


Do not see this as losing something, but rather as having gained knowledge and wisdom... Everything that you learned from us being together, as well as from us being separated, you will be able to put in practice in your next relationship to avoid the traps that we got into.


EVERYTHING ALWAYS WORKS OUT FOR THE BEST, and this is no exception. Trust in yourself, trust in the Universe, trust in the power of Love that rules our lives. Please don’t get into feeling sorry for yourself and wanting to 'end it all'. Rather, thank God for the learning experience, and ask for the openness to recognize the blessings in your life. They are there... open yourself up to being you, accepting yourself completely without judgment, and loving yourself unconditionally.


I wish you joy, I wish you happiness, I wish you heaven on earth. Please trust in yourself and the Universe enough to take some deep breaths, and start looking to find and create joy in your life. It is there... simply step out and claim it.


Blessings to you... Be the light!



Dear Cigarette 绝交信范例二







25 Smokey Lane
Our Town
4GO T10
Dear Cigarette,

For the past 17 years, you have been my best friend. You have seen me through difficult times, happy times and just about every phase of my life. You have always been here when I've needed you. Some of my family and friends didn't
care much for you, but I always defended you no matter what. I always thought you were a great friend to have, and I counted on you at all times.

It's
hard for me to tell you this, but in the past few months, I have been seriously thinking about ending our relationship. I've decided that I've just been too dependent on you, and I feel that at the age of 35 it is time that I start being more independent. I thought about just maybe seeing you once in a while, but I don't think that would work. Eventually, I'd start relying on you all the time again. I feel the only way to end our relationship is to end it for good.

I've always included you in everything I've done but next week, I'm
going on a trip, and I've decided not to take you along. I feel this would be a good time to break up. I will be gone a whole week without you and if I can make it on my own for that week, I know I can make it forever.

It
is a little sad for me knowing that I won't be able to rely on you anymore, but I think I will be a better person in the end.

Sincerely,


Letty Gogh



求职信七步写作法


求职信分为推荐信和自荐信两种,它是书面表达的重要体裁之一,也是高考书面表达的热点内容。写求职信可按下列七个步骤进行。下面举例说明:
假设你叫李平,你从报上得知某公司欲招聘一名英语翻译,请你给该公司经理写一份求职信,你的个人资料如下:
1.简况:姓名,李平;年龄,30岁;身高,1.80米;健康状况,良好;业余爱好,游泳、唱歌、跳舞。
2.简历:1994年北京大学毕业后分配到南通中学工作,1996年调至苏州中学工作至今。
3.工作:工作认真负责,与人相处融洽。
4.特长:精通英语,尤其口语,已将多本中文书籍译成英语,懂一些日语、能用日语与外宾对话。
联系电话:3654731
联系地址:苏州市人民路一号
第一步:介绍消息来源
介绍消息来源实际上是求职信的开篇交待句,它可使求职信显得自然、顺畅;而不介绍消息来源,会使收信人感到意外、突然,文章也缺乏过渡、照应,本文消息来源可作如下介绍:
Dear manager,
I learned from the newspaper that your company wanted to hire an English translator.
第二步:表明求职心愿
介绍完消息来源后,应向收信人表明自己的求职心愿,即写信的目的,本文求职心愿可作如下介绍:
I'm interested in this job very much. I'd like to get this job.
第三步:介绍个人简历
某单位需要新人,求职人也有求职心愿,但这并不意味着这项工作非你莫属。如果你没有干好这项工作的经历、实力,也是难以适应的。因此,介绍个人简历是必不可少的。本文个人简历可介绍如下:
Now I'd like to introduce myself to you. My name is Li Ping. I'm 30 years old. I'm 180 cm tall. I'm healthy. I like swimming, singing and dancing in my spare time. I graduated from Beijing University in 1994.Then,I went to work in Nantong Middle School.In 1996,I began to work in Suzhou Middle School and I have worked there until now.
第四步:摆出求职优势
仅有一定的工作经历而没有自身的优势和特长,也很难求得称心如意的工作。因此,求职时应表明自己除了具有一定的工作经历之外,还具有一定的优势和特长,这样才能稳操胜券。本文可通过如下方法摆出自己的优势:
I work hard and I can get along well with others. I'm good at English and especially my spoken English is very good. I've translated many Chinese books into English. I can understand Japanese and I can talk to foreigners in Japanese freely.
第五步:提出获职打算
丰富的工作经验,一定的优势和特长,只能代表过去和现在的情况,如果获职后自以为心愿已了,从此高枕无忧,马虎从事,那也是得不到用人单位认可的。显然表明获职后努力工作的决心是感动用人单位的领导从而顺利谋得此项工作的重要一环。本文获职打算可作如下介绍:
If you agree with me, I'll work hard and try to be a good translator.
第六步:请求答复联系
如果单位领导同意了你的求职要求,你必然要请他和你联系,以便你及时做好准备,到用人单位应聘或报到。为准确起见,请求答复联系时你还应当提供你的通讯地址、邮政编码、电话号码、电子信箱等。本文答复联系的内容可作如下介绍:
If you agree with me, please write a letter to me or phone me. I live at No.1 Renmin Road,Suzhou city. My telephone number is 3654371.
第七步:表明感激之情
无论你的请求是否能够得到满意的答复,你给用人单位写信就是给对方添了麻烦,因此你应向对方表明感激之情。本文可这样来表明感激之情:
Thank you very much.
上述七步内容联成一个整体,再加上下面的信尾,就成为一封完整的求职信。
Yours Truly
LiPing
实战训练:
假如你是王林,李明是你的好友,他对Brown先生的公司(firm)感兴趣,打算到该公司谋职(apply for a position)。请根据下面李明的简历表,用英语写一封推荐信,词数120左右。


Dear Mr.Brown,
My friend-Li Ming wants to apply for a position with your firm. Now, I'd like to introduce my friend to you. Li Ping graduated from a college three years ago and since then he has worked as a lawyer. He is good at English and knows some Japanese. He works hard and is careful in everything he does. He is honest, kind and easy to get on with. He was born on May 1,1968 in Jinan, Shandong Province,China. He is married and lives at No.148 Renmin Road,Jinan city.He shows great interest in your firm. If he is accepted, he will do his best. I'm sure he will be fit for the position. If you agree with him, please write a letter to him, his telephone number is 6600537.
Yours truly















How to upgrade micronucleus

micro micronucleus nucleus 是 ATtiny/ ATMega328p的bootloder, 它的过人之处是给这些芯片带来usb支持. 使得它们可以直接通过usb口来烧录. 我购买了很多 digispark 开发板. 这些开发板小巧方便价格低廉. ...