linux ps 命令查看进程状态

Posted on 2012年8月09日 22:01

linux上进程有5种状态:
1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps工具标识进程的5种状态码:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct ("zombie") process


注: 其它状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页).


使用ps格式输出来查看进程状态:
ps -eo user,stat..,cmd


user 用户名
uid 用户号
pid 进程号
ppid 父进程号
'size' 内存大小, Kbytes字节.
v'size' 总虚拟内存大小, bytes字节(包含code+data+stack)
share 总共享页数
nice 进程优先级(缺省为0, 最大为-20)
priority(pri) 内核调度优先级
pmem 进程分享的物理内存数的百分比
trs 程序执行代码驻留大小
rss 进程使用的总物理内存数, Kbytes字节
time 进程执行起到现在总的CPU暂用时间
stat 进程状态
cmd(args) 执行命令的简单格式


例子:
查看当前系统进程的uid,pid,stat,pri, 以uid号排序.
ps -eo pid,stat,pri,uid --sort uid


查看当前系统进程的user,pid,stat,rss,args, 以rss排序.
ps -eo user,pid,stat,rss,args --sort rss

附:

PROCESS STATE CODES
Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process.
D Uninterruptible sleep (usually IO)
R Running or runnable (on run queue)
S Interruptible sleep (waiting for an event to complete)
T Stopped, either by a job control signal or because it is being traced.
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z Defunct ("zombie") process, terminated but not reaped by its parent.

For BSD formats and when the stat keyword is used, additional characters may be displayed:
< high-priority (not nice to other users)
N low-priority (nice to other users)
L has pages locked into memory (for real-time and custom IO)
s is a session leader
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ is in the foreground process group

svn 常用命令

Posted on 2012年7月12日 15:15

SVN(Subversion)是一个自由、开源的项目源代码版本控制工具。目前,绝大多数开源软件和企业代码管理,都使用SVN作为代码版本管理软件。

Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器。不同的是,它可以记录每一次文件和目录的修改情况,这样就可以在需要的回滚时,将数据恢复到以前的版本,并可以查看数据的更改细节。

SVN 官方网址:Apache Subversion

SVN 服务器配置:安装SVN服务器

 

一、 SVN常用命令

1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
简写:svn co

2、往版本库中添加新的文件
svn add file

3、将改动的文件提交到版本库
svn commit -m “LogMessage” [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
简写:svn ci

4、加锁/解锁
svn lock -m “LockMessage” [--force] PATH
svn unlock PATH

5、更新到某个版本
svn update -r m path
简写:svn up

6、查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
2)svn status -v path(显示文件和子目录状态)
简写:svn st

7、删除文件
svn delete path -m “delete test fle”
简写:svn (del, remove, rm)

8、查看日志
svn log path

9、查看文件详细信息
svn info path

10、比较差异
svn diff path(将修改的文件与基础版本比较)
svn diff -r m:n path(对版本m和版本n比较差异)
简写:svn di

11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path

12、SVN 帮助
svn help
svn help ci

 

 

二、 SVN不常用命令
13、版本库下的文件和目录列表
  svn list path    显示path目录下的所有属于版本库的文件和目录简写:svn ls

14、创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法: 
1、mkdir PATH...
每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增调度,以待下一次的提交。
2、mkdir URL... 创建版本控制的目录。 
每个以URL指定的目录,都会透过立即提交于仓库中创建。在这两个情况下,所有的中间目录都必须事先存在。

15、恢复本地修改
svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。
用法: revert PATH... 注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录

16、代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法: 
1、switch URL [PATH]        
更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将      服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的方法。 
2、switch --relocate FROM TO [PATH...]   
改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动     (比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用     这个命令更新工作副本与仓库的对应关系。

17、解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH... 注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让 PATH 可以再次提交。

18、输出指定文件或URL的内容。
svn cat 目标[@版本]...如果指定了版本,将从指定的版本开始查找。 svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)
 

 

三、 SVN其它命令

虽然不像本章先前讨论过的那些命令那么常用,但是有时你也需要这些命令。 

svn cleanup
当 Subversion修改你的工作副本时(或者任何在.svn中的信息),它尝试尽可能做到安全。在改变一个工作副本前,Subversion把它的意 图写到一个日志文件中。接下来它执行日志文件中的命令来应用要求的修改。最后,Subversion删除日志文件。从架构上来说,这与一个日志文件系统 (journaled filesystem)类似。如果一个 Subversion操作被打断(例如,进程被杀掉了,或机器当掉了)了,日志文件仍在硬盘上。重新执行日志文件,Subversion可以完成先前开始 的操作,这样你的工作副本能回到一个可靠的状态。 

以下是svn cleanup所做的:它搜索你的工作副本并执行所有遗留的日志,在这过程中删除锁。如果Subversion曾告诉你你的工作副本的一部分被“锁定”了,那么你应该执行这个命令。另外, svn status会在锁定的项前显示L。 

$ svn status
L    somedir
M   somedir/foo.c 

$ svn cleanup
$ svn status
M      somedir/foo.c

svn import
使用svn import是把未版本化的文件树复制到资料库的快速办法,它需要创建一个临时目录。 

$ svnadmin create /usr/local/svn/newrepos
$ svn import mytree file:///usr/local/svn/newrepos/some/project
Adding         mytree/foo.c
Adding         mytree/bar.c
Adding         mytree/subdir
Adding         mytree/subdir/quux.h

Committed revision 1.

上面的例子把在some/project目录下mytree目录的内容复制到资料库中。 

$ svn list file:///usr/local/svn/newrepos/some/project
bar.c
foo.c
subdir/

注意在导入完成后,原来的树没有被转化成一个工作副本。为了开始工作,你仍然需要svn checkout这个树的一个新的工作副本。

 

 

四、SVN 常用命令一览表

命令 功能 使用格式
checkout 检出 svn  co  URL
up 更新到当前URL的末端 svn  up
switch 更新到某一tag/branch svn  switch  (tag/分支)URL
add 增加 svn  add  文件名
rm 删除文件 svn  rm 文件名
删除目录 svn  rm 目录名
diff 与base版本(最后检出或者更新到的版本)对比 svn  diff
与版本库中最新版本对比 svn  diff  -r  head
当前工作副本,两个版本之间对比 svn  diff  -r  reversion1:reversion2
版本库中任意两个tag做对比 svn   diff    (tag1)URL    (tag2)URL
ci 提交 svn ci -m "commit log"
log 查看当前工作副本log svn  log
只查看指定版本的log svn  log  -r
打印log所有附加信息 svn  log  -v
查看当前tag/branch版本详情 svn  log --stop-on-copy -v
info 查看当前工作副本所在URL svn  info
status 查看工作副本的状态 svn st
查看文件的taglist svn命令不支持,可执行cs taglist
tag 新增tag svn cp . (tag)URL
删除tag svn rm (tag)URL -m "commit log"
覆盖已经存在的tag 不支持
分支开发 创建branch svn  cp  (基线版本)URL (分支)URL  -m "commit log"
删除branch svn rm (分支)URL   -m "commit log"
同步 svn co (主干)URL
cd ~/wc
svn merge (主干)URL (待同步tag)URL
svn ci -m "commit log"
svn cp (主干)URL (以_PD_BL_MAIN结尾的tag)URL -m"commit log"
合并 svn co (合并目标)URL
cd ~/wc
svn merge (基线版本tag)URL  (上线tag)URL
svn ci -m "commit log"
svn cp (合并目标)URL (上线tag_MERGE_的tag对应)URL -m"commit log"

 

用mount挂载远程服务器网络硬盘

Posted on 2012年3月06日 20:01

环境:

服务器:192.168.20.204

客户端:192.168.20.203

1. 在服务器配置/etc/export  添加可以共享的文件夹和允许的客户端地址

/home/dir 192.168.20.203(rw,no_root_squash,async)

要加上no_root_squash,async,不然会出现reason given by server: Permission denied

重启nfs服务器

service nfs restart

2. 在客户端运行

mkdir -p /mnt/dir    创建挂载点

mount -t nfs 192.168.20.204:/home/dir /home/dir

一定要先创建挂载点,不然会出现mount point does not exist的错误

3. RPC Error: Program not registered错误

服务没启动。。

运行service nfs restart

 

linux分卷压缩与解压缩

Posted on 2011年11月27日 16:23

1.rar

rar a -m5 -v12m myarchive myfiles # 最大限制为 12M

rar e myarchive.part1.rar #解压

分卷压缩

ubuntu下没有默认安装rar,可以通过 sudo apt-get install rar,sudo apt-get install unrar 来安装rar.

安装过后,使用以下命令进行分卷压缩:

rar a -vSIZE  压缩后的文件名 被压缩的文件或者文件夹

例如:rar a -v50000k eclipse.rar eclipse

此命令即为对eclipse文件夹进行分卷压缩,每卷的大小为50000k,压缩后的文件名为eclipse.rar


2.tar

举例说明:
要将目录logs打包压缩并分割成多个1M的文件,可以用下面的命令:
 

tar cjf - logs/ |split -b 1m - logs.tar.bz2.
完成后会产生下列文件:
 logs.tar.bz2.aa, logs.tar.bz2.ab, logs.tar.bz2.ac
要解压的时候只要执行下面的命令就可以了:
cat logs.tar.bz2.a* | tar xj

再举例:
要将文件test.pdf分包压缩成500 bytes的文件:
tar czf - test.pdf | split -b 500 - test.tar.gz
最后要提醒但是那两个"-"不要漏了,那是tar的ouput和split的input的参数。

3、用7z

同样用以上例子

在film上层目录操作,保留film目录名
压缩:    7z a film.7z film -v80m
解压到当前目录:  7z x film.7z.001 
解压到目录a:    mkdir a && cd a && 7z x ../film.7z.001
或者   7z -oa x film.7z.001

不保留film目录名
压缩   cd film && find . | xargs 7z a film.7z -v80m
解压   7z -oa x film.7z.001

单纯采用7z的话,文件的权限(拥有者)属性会丢失, 采用如下办法则可以保留:   
压缩:
tar cf - film | 7z a -si film.tar.7z -v80m
解压缩:
7z x -so film.tar.7z.001 | tar xf -

 

Linux文件查找字符串

Posted on 2011年11月21日 23:33

linux下查找某目录下所有文件包含某字符串的命令:
从文件内容查找匹配指定字符串的行:
$ grep "被查找的字符串" 文件名
从文件内容查找与正则表达式匹配的行:
$ grep –e “正则表达式” 文件名
查找时不区分大小写:
$ grep –i "被查找的字符串" 文件名
查找匹配的行数:
$ grep -c "被查找的字符串" 文件名
从文件内容查找不匹配指定字符串的行:
$ grep –v "被查找的字符串" 文件名
从根目录开始查找所有扩展名为.txt的文本文件,并找出包含"phpzixue.cn"的行
find . -type f -name "*.txt" | xargs grep "Hello"

命令行Subversion入门

Posted on 2011年11月14日 00:26

如果您参与的项目正在使用 Subversion 进行版本控制,您将需要使用 Subversion 访问和更改项目源文件。您可以点击项目的左侧导航窗格上的“Subversion”链接,在线浏览源代码以查看该项目的目录结构和文件。

“Subversion”页面显示三个子目录:branches/、tags/、trunk/ 和一个自述文件。自述文件可以使您对 Subversion 存储库有一个整体了解。您可以点击“访问选项”,查看 Subversion 客户端安装说明。您的本地计算机上必须安装有 Subversion 客户端。

获取项目的本地工作副本svn checkout

若要获取最新源文件的“工作副本”,您必须首先签出这些源文件,这一过程会将文件从存储库复制到您的系统中。在您的外壳程序或终端客户端,请键入:

svn checkout https://(项目名称).(域)/svn/(项目名称)/(DIR) (项目名称) --username [在此处输入用户名]

当系统提示您时输入您的用户密码。此密码应与您在本站点中的用户帐号的密码相同。不指定目录将签出整个项目源代码。您可能希望签出“trunk/”目录,因为此目录具有工作“www/”文件夹。

转换:--revision (-r) REV, --quiet (-q), --non-recursive (-N), --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

请参见基本工作周期初始签出工作副本

注意:如果站点未启用 SSL(安全套接字层),则在执行 Subversion 操作时,请使用 http 而不是 https。例如,若要从项目的存储库中签出最新的源代码,请使用以下命令:

svn checkout https://(项目名称).(域)/svn/(项目名称)/(DIR) (项目名称) --username [在此处输入用户名]

处理 Subversion 存储库中的文件

从项目存储库中签出本地副本后,您可以在本地计算机上编辑现有文件、创建新文件和目录、以及删除文件。在您将所做的任何更改提交回 Subversion 存储库之前,这些更改只对项目文件的本地副本起作用。

将工作副本中的文件/目录添加到存储库中svn add

在您第一次在工作目录中创建并编辑新文件后,可以将此文件添加到存储库中,或添加一个目录,目录中有无内容均可。

svn add FILENAME/DIR

这样就会在您的工作副本中添加文件/目录,并安排它们以添加到存储库中。您下次提交时,会上载这些文件/目录,并将它们添加到存储库中。如果您了添加内容,但在提交前又改变了主意,则可以使用 svn revert 取消添加内容的安排。

转换:--targets FILENAME, --non-recursive (-N), --quiet (-q), --config-dir arg, --auto-props, --no-auto-props

请参见添加文件/目录示例

查看带有修订和作者信息的特定文件的内容svn blame

若要在线查看指定文件的作者和修订信息,请键入:

svn blame FILENAME

每行文本的开始处都以上次更改该行的作者(用户名)和修订版本号作为批注。

转换:--revision (-r) REV, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

查看特定文件的内容svn cat

有时,与存储库相比较,您的工作副本可能已过时;或者您可能已修改了本地工作副本。在这些情况下,在提交更改或决定编辑您的工作副本之前,您会希望查看指定文件的内容差异。运行 svn cat FILENAME 将自动从存储库中取出 HEAD 修订版本。这条子命令主要用于检索具有较旧修订版本号的文件,并将其显示在屏幕上。通过在此站点上浏览项目源代码,也可以执行相同的操作。

转换:--revision (-r) REV, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

清理工作副本svn cleanup

有时可能会出现“工作副本已锁定”错误。若要删除锁定,并递归清理工作副本,请使用 svn update

转换:--diff3-cmd CMD, --config-dir DIR

请参见 svn cleanup

复制工作副本或存储库中的文件或目录svn copy

在项目中,您可能需要用到过去的旧文档。例如,您可能想要使用一个已存在的 HTML 文件,使用其代码作为参考以在创建新内容时保持产品外观和感觉。创建文件时,您无需从头开始,只需使用 svn copy 复制此文件,然后将其另存为其它名称并更改其内容。您可以从存储库将文件复制为本地工作副本,也可以将本地工作副本复制回存储库文件。您还可以在本地工作副本内部复制文件。Subversion 不支持在存储库之间进行复制。可使用 svn copy SRC DST 完成此操作。

转换:--message (-m) TEXT, --file (-F) FILE, --revision (-r) REV, --quiet (-q), --username USER, --password PASS, --no-auth-cache, --non-interactive, --force-log, --editor-cmd EDITOR, --encoding ENC, --config-dir DIR

请参见 svn copy

从本地工作副本中删除文件或目录svn delete

您可能希望从本地工作副本中删除不需要的文件。使用 svn delete FILENAME 可安排删除文件。仅当您提交时,才会在存储库中将该文件实际删除。

转换:--force, --force-log, --message (-m) TEXT, --file (-F) FILE, --quiet (-q), --targets FILENAME, --username USER, --password PASS, --no-auth-cache, --non-interactive, --editor-cmd EDITOR, --encoding ENC, --config-dir DIR

查看文件之间的差异svn diff

可以使用 svn diff 显示工作副本中的指定文件相对于存储库中相应文件所做的本地修改。在命令提示符处,请键入:

svn diff (文件的路径) (项目存储库的 URL)

例如,若要将本地修改后的文件“index.html”与项目存储库中的相应文件进行比较,请键入:

svn diff $SRC/...../index.html https://(项目名称).(域)/svn/(项目名称)/trunk (项目名称) --username [在此处输入用户名]

除此之外,您也可以转到该文件所属的目录,并键入:

svn diff (FILENAME)

该命令将显示差异,并且带有修订版本号。

转换:--revision (-r) REV, --old OLD-TARGET, --new NEW-TARGET, --extensions (-x) "ARGS", --non-recursive (-N), --diff-cmd CMD, --notice-ancestry, --username USER, --password PASS, --no-auth-cache, --non-interactive, --no-diff-deleted, --config-dir DIR

请参见检查历史svn diff

在本地计算机上导出空目录树svn export

在您的本地计算机上,可以从项目存储库或本地工作副本内部提取一个无版本的副本,也称为空目录树。若要从存储库中获得较旧修订版本的空目录,请键入:

svn export [-r REV] [PATH]

该命令将从 URL 指定的存储库中的修订版本 REV 位置(如果指定,否则从 HEAD 位置)将空目录树导出到 PATH。如省略 PATH,则该 URL 的最后一部分将用作本地目录名称。除此之外,您也可以在本地计算机内部,从一个工作副本(由 PATH1 指定)向另一工作副本(由 PATH2 指定)导出空目录树。这将保留所有的本地更改,但不会复制版本控制中的文件。若要执行此操作,请键入:

svn export PATH1 PATH2

转换:--revision (-r) REV, --quiet (-q), --force, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

获取有关 Subversion 的帮助svn help

Subversion 可以在命令行界面为您提供帮助。若要获得有关特定子命令的帮助,请键入:

svn help [SUBCOMMAND...]

转换:--version, --quiet (-q)

将您的更改提供给 SVN 存储库

对文件和/或目录进行本地更改后,您必须向 SVN 存储库提交这些更改。

提交您的更改svn commit

若要向共享存储库提交您的更改,请键入:

svn commit -m "请在此处键入您的理由"

如果您不包括对该文件更改的描述,系统将提示您调用文件编辑器添加描述,然后 svn 才能完成提交操作;否则将会出现“提交失败”错误。所有的提交都会被自动记录,并发布到项目的提交讨论中。

转换:--message (-m) TEXT, --file (-F) FILE, --quiet (-q), --non-recursive (-N), --targets FILENAME, --force-log, --username USER, --password PASS, --no-auth-cache, --non-interactive, --encoding ENC, --config-dir DIR

请参见提交您的更改editor-cmd

将无版本的文件或树导入到项目存储库中svn import

您可以使用 svn import 将无版本的文件或树递归提交到项目存储库中。将根据需要在存储库中创建父目录。使用下面的命令可以从 PATH 向 URL 递归提交副本。如果省略 PATH,将认为其为“.”。

svn import [PATH] URL

示例:若要在您的本地计算机上创建带有一个文件的无版本目录 (D)。请点击项目左侧导航窗格中的“Subversion”链接,找到 Subversion 页面。请注意,“浏览源代码”下未列出 NEWDIR。若要将 D 导入项目存储库,请键入:

svn import -m "请在此处键入您的信息" D http://(项目名称).(域)/svn/(项目名称)/NEWDIR

刷新该页面。请注意,此时“浏览源代码”下列出了 D。点击 D 查看该文件。

转换:--message (-m) TEXT, --file (-F) FILE, --quiet (-q), --non-recursive (-N), --username USER, --password PASS, --no-auth-cache, --non-interactive, --force-log, --editor-cmd EDITOR, --encoding ENC, --config-dir DIR, --auto-props, --no-auto-props

打印有关工作副本中路径的信息svn info

有时,您将需要有关工作副本中文件的具体信息,以执行某些子命令。键入 svn info,将打印出详尽且有用的信息,这些信息涉及工作副本中的工作副本路径中的项,其中包括:路径、名称、URL、修订版本、节点类型、上次更改、作者、上次更改修订版本、上次更改日期、上次更新的文本、上次更新的属性以及校验和。

转换:--targets FILENAME, --recursive (-R), --config-dir DIR

查看存储库中的目录项列表svn list

在开始处理项目或取出“工作副本”之前,您可能希望查看项目存储库中的内容(即目录和文件),或查看本地工作副本中的目录项。在命令提示符处键入 svn list [TARGET...],也可以查看这些内容。除此之外,您也可以找到项目中的“软件配置管理”页,查看项目存储库。

转换:--revision (-r) REV, --verbose (-v), --recursive (-R), --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

查看提交日志信息svn log

如果要查看“工作副本”或存储库中文件/目录的各个文件/目录历史,以跟踪修订信息,请键入:

svn log [PATH]

该命令会显示出文件/目录的修订信息,从最近所做的修订版本开始显示提交信息和作者姓名等信息。除此之外,您也可以使用该站点,查看项目存储库中各个文件的提交日志信息。请点击项目左侧导航窗格中的“Subversion”链接。将出现 Subversion 页。搜索“浏览源代码”的目录中的文件,然后点击文件名。这时将会显示一个提交日志信息页面。

转换:--revision (-r) REV, --quiet (-q), --verbose (-v), --targets FILENAME, --stop-on-copy, --incremental, --xml, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

请参见 svn log

合并更改svn merge

您可以运行 svn merge 命令,以指示 Subversion 将存储库中最新版本的文件合并到您的工作副本中。

转换:--revision (-r) REV, --non-recursive (-N), --quiet (-q), --force, --dry-run, --diff3-cmd CMD, --ignore-ancestry, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

请参见 svn merge解决冲突(合并其他人的更改)分支和合并:常见合并使用案例合并最佳实践

使用存储库

创建新目录svn mkdir

若要在您的工作副本中创建新目录,请键入:

svn mkdir PATH

若要在您的项目存储库中创建新目录,请键入:

svn mkdir URL

PATH 或 URL 的最后一部分决定目录名称。在立即提交时在存储库中创建目录,所以还需要一条提交信息

转换:--message (-m) TEXT, --file (-F) FILE, --quiet (-q), --username USER, --password PASS, --no-auth-cache, --non-interactive, --editor-cmd EDITOR, --encoding ENC, --force-log, --config-dir DIR

移动文件或目录svn move

您可以使用 svn move SRC DST 在工作副本或项目存储库内部移动文件或目录。此命令等效于在使用 svn copy 后,再使用 svn delete。在工作副本内部移动文件或目录,不仅会移动该文件或目录,而且还将安排它以便于下次提交时进行添加。在项目存储库内部移动文件或目录属于封闭单元式提交,所以需要一条提交信息。

转换:--message (-m) TEXT, --file (-F) FILE, --revision (-r) REV, --quiet (-q), --force, --username USER, --password PASS, --no-auth-cache, --non-interactive, --editor-cmd EDITOR, --encoding ENC, --force-log, --config-dir DIR

使用属性

Subversion 具有很多具体属性,这些属性影响或决定其行为。您可以修改、提交和撤消属性更改,就像对文件内容所执行的操作一样。您还可以从本地工作副本或项目存储库的文件、目录或修订版本中,删除、编辑、打印、列出以及设置属性。

请参见 属性无版本属性元数据属性svn propdelsvn propeditsvn propgetsvn proplistsvn propsetHook 脚本

解决冲突svn resolved

更新本地工作副本时,可能会遇到冲突。您需要解决此冲突。解决冲突后,键入 svn resolved PATH...,通知工作副本该冲突已“解决”。

转换:--targets FILENAME, --recursive (-R), --quiet (-q), --config-dir DIR

请参见解决冲突(合并其他人的更改)

撤消您的更改svn revert

使用 Subversion 时,您会发现 svn revert PATH... 等效于 Windows 中的 Ctrl Z。您可以:

  • 撤消本地工作副本中的任何本地更改,从而解决冲突状态。
  • 撤消工作副本中的条目内容及属性更改。
  • 取消任何进度安排操作,如添加文件、删除文件等。

注意,如不提供目标,会导致工作副本中的更改丢失。

转换:--targets FILENAME, --recursive (-R), --quiet (-q), --config-dir DIR

获取文件/目录的状态svn status

在版本控制中,将更改提交到项目存储库之前最好对其进行审查。可以运行 svn status 打印工作副本中的文件和目录的状态。打印结果为八列编码输出。由于每列都有详尽的图例,若要从此输出中得出“无错误”的结论几乎不可能。若要使此任务更加简单,并同时可看到示例,请在命令提示符处键入 svn help status

转换:--show-updates (-u), --verbose (-v), --non-recursive (-N), --quiet (-q), --no-ignore, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir

请参见检查你的更改

转换工作副本svn switch

可以使用 svn switch URL [PATH] 更新工作副本,以镜像新的 URL。您还可以将工作副本或部分工作副本移动到新的分支。您可以将此子命令用作分支的快捷方式。

转换:--revision (-r) REV, --non-recursive (-N), --quiet (-q), --diff3-cmd CMD, --relocate, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

请参见转换工作副本分支和合并以及 svn switch

更新工作副本svn update

为了进行更好的版本控制,建议您每天用项目存储库更新本地工作副本,请使用:

svn update [PATH...]

列出的已更新条目以及它们的当前状态显示如下:

  • A = 已将一个文件添加到您的工作副本中。
  • U = 已更新您的工作副本中的一个文件。
  • D = 已从您的工作副本中删除一个文件。
  • R = 已替换您的工作副本中的一个文件。
  • G = 已成功合并了一个文件。
  • C = 一个文件已合并了必须手动解决的冲突

转换:--revision (-r) REV, --non-recursive (-N), --quiet (-q), --diff3-cmd CMD, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

请参见更新你的工作副本手动合并冲突

分支和标记

项目的主干通常用作开发主线,而分支通常用作主线的变更。分支是正在进行的开发线。在软件开发生命周期中,如果软件产品的发布版本已到期,经常 会用到分支,使测试者可以使用候选版本,使新的开发可以继续进行,不受测试的约束。分支还用于实验性工作,以及完成代码重写。标记是将一组文件修订版本标 记为整体的方式。虽然分支和标记都是使用 svn copy 子命令创建的,但它们是完全不同的。分支表示多个修订版本而标记只表示单个修订版本。

本站点上您项目的 Subversion 存储库支持对您的源文件进行分支和标记。对于 Subversion 来说,标记和分支属于简单实用的“复制”操作。

若要创建分支或标记项目文件,请键入:

svn copy SRC DST -m "在此处键入您的信息"

请参见分支和合并

Linux zip & unzip

Posted on 2011年10月22日 12:50

 

linux zip 命令详解 
功能说明:压缩文件。 
语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>] 
补充说明:zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。 
参 数: 
-A 调整可执行的自动解压缩文件。 
-b<工作目录> 指定暂时存放文件的目录。 
-c 替每个被压缩的文件加上注释。 
-d 从压缩文件内删除指定的文件。 
-D 压缩文件内不建立目录名称。 
-f 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。 
-F 尝试修复已损坏的压缩文件。 
-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。 
-h 在线帮助。 
-i<范本样式> 只压缩符合条件的文件。 
-j 只保存文件名称及其内容,而不存放任何目录名称。 
-J 删除压缩文件前面不必要的数据。 
-k 使用MS-DOS兼容格式的文件名称。 
-l 压缩文件时,把LF字符置换成LF+CR字符。 
-ll 压缩文件时,把LF+CR字符置换成LF字符。 
-L 显示版权信息。 
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。 
-n<字尾字符串> 不压缩具有特定字尾字符串的文件。 
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。 
-q 不显示指令执行过程。 
-r 递归处理,将指定目录下的所有文件和子目录一并处理。 
-S 包含系统和隐藏文件。 
-t<日期时间> 把压缩文件的日期设成指定的日期。 
-T 检查备份文件内的每个文件是否正确无误。 
-u 更换较新的文件到压缩文件内。 
-v 显示指令执行过程或显示版本信息。 
-V 保存VMS操作系统的文件属性。 
-w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。 
-x<范本样式> 压缩时排除符合条件的文件。 
-X 不保存额外的文件属性。 
-y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。 
-z 替压缩文件加上注释。 
-$ 保存第一个被压缩文件所在磁盘的卷册名称。 
-<压缩效率> 压缩效率是一个介于1-9的数值。


linux unzip 命令详解

功能说明:解压缩zip文件

语 法:unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]

补充说明:unzip为.zip压缩文件的解压缩程序。

参 数:

-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。

-f 更新现有的文件。

-l 显示压缩文件内所包含的文件。

-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。

-t 检查压缩文件是否正确。

-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。

-v 执行是时显示详细的信息。

-z 仅显示压缩文件的备注文字。

-a 对文本文件进行必要的字符转换。

-b 不要对文本文件进行字符转换。

-C 压缩文件中的文件名称区分大小写。

-j 不处理压缩文件中原有的目录路径。

-L 将压缩文件中的全部文件名改为小写。

-M 将输出结果送到more程序处理。

-n 解压缩时不要覆盖原有的文件。

-o 不必先询问用户,unzip执行后覆盖原有文件。

-P<密码> 使用zip的密码选项。

-q 执行时不显示任何信息。

-s 将文件名中的空白字符转换为底线字符。

-V 保留VMS的文件版本信息。

-X 解压缩时同时回存文件原来的UID/GID。

[.zip文件] 指定.zip压缩文件。

[文件] 指定要处理.zip压缩文件中的哪些文件。

-d<目录> 指定文件解压缩后所要存储的目录。

-x<文件> 指定不要处理.zip压缩文件中的哪些文件。

-Z unzip -Z等于执行zipinfo指令


范例:

zip命令可以用来将文件压缩成为常用的zip格式。unzip命令则用来解压缩zip文件。

1. 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip:

# zip -r yasuo.zip abc.txt dir1

2.我下载了一个yasuo.zip文件,想解压缩:

# unzip yasuo.zip

3.我当前目录下有abc1.zip,abc2.zip和abc3.zip,我想一起解压缩它们:

# unzip abc\?.zip

注释:?表示一个字符,如果用*表示任意多个字符。

4.我有一个很大的压缩文件large.zip,我不想解压缩,只想看看它里面有什么:

# unzip -v large.zip

5.我下载了一个压缩文件large.zip,想验证一下这个压缩文件是否下载完全了

# unzip -t large.zip

6.我用-v选项发现music.zip压缩文件里面有很多目录和子目录,并且子目录中其实都是歌曲mp3文件,我想把这些文件都下载到第一级目录,而不是一层一层建目录:

# unzip -j music.zip

VIM 中文帮助文档安装

Posted on 2011年10月21日 13:38

下载

                      wget http://sourceforge.net/projects/vimcdoc/files/vimcdoc/1.8.0/vimcdoc-1.8.0.tar.gz

解压
                  cd vimcdoc-1.8.0
                  tar zxvf vimcdoc-1.8.0.tar.gz
查看安装文档
                  cat INSTALL
安装
                  ./vimcdoc.sh -i
 
查看帮助文件
 
:help

Linux查看硬件信息

Posted on 2011年9月16日 21:33

cat /proc/cpuinfo

 

lspci

简明 Vim 练级攻略(转)

Posted on 2011年9月08日 14:21

vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。

——————————正文开始——————————

你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VIM幸存下来,然后一点一点地学习各种戏法。

Vim the Six Billion Dollar editor

Better, Stronger, Faster.

学习 vim 并且其会成为你最后一个使用的文本编辑器。没有比这个更好的文本编辑器了,非常地难学,但是却不可思议地好用。

我建议下面这四个步骤:

  1. 存活
  2. 感觉良好
  3. 觉得更好,更强,更快
  4. 使用VIM的超能力

当你走完这篇文章,你会成为一个vim的 superstar。

在开始学习以前,我需要给你一些警告:

  • 学习vim在开始时是痛苦的。
  • 需要时间
  • 需要不断地练习,就像你学习一个乐器一样。
  • 不要期望你能在3天内把vim练得比别的编辑器更有效率。
  • 事实上,你需要2周时间的苦练,而不是3天。
 

第一级 – 存活

  1. 安装 vim
  2. 启动 vim
  3. 什么也别干!请先阅读

当你安装好一个编辑器后,你一定会想在其中输入点什么东西,然后看看这个编辑器是什么样子。但vim不是这样的,请按照下面的命令操作:

  • 启 动Vim后,vim在 Normal 模式下。
  • 让我们进入 Insert 模式,请按下键 i 。(陈皓注:你会看到vim左下角有一个–insert–字样,表示,你可以以插入的方式输入了)
  • 此时,你可以输入文本了,就像你用“记事本”一样。
  • 如果你想返回 Normal 模式,请按 ESC 键。

现在,你知道如何在 Insert 和 Normal 模式下切换了。下面是一些命令,可以让你在 Normal 模式下幸存下来:

  • iInsert 模式,按 ESC 回到 Normal 模式.
  • x → 删当前光标所在的一个字符。
  • :wq → 存盘 + 退出 (:w 存盘, :q 退出)   (陈皓注::w 后可以跟文件名)
  • dd → 删除当前行,并把删除的行存到剪贴板里
  • p → 粘贴剪贴板

推荐:

  • hjkl (强例推荐使用其移动光标,但不必需) →你也可以使用光标键 (←↓↑→). 注: j 就像下箭头。
  • :help <command> → 显示相关命令的帮助。你也可以就输入 :help 而不跟命令。(陈皓注:退出帮助需要输入:q)

你能在vim幸存下来只需要上述的那5个命令,你就可以编辑文本了,你一定要把这些命令练成一种下意识的状态。于是你就可以开始进阶到第二级了。

当是,在你进入第二级时,需要再说一下 Normal 模式。在一般的编辑器下,当你需要copy一段文字的时候,你需要使用 Ctrl 键,比如:Ctrl-C。也就是说,Ctrl键就好像功能键一样,当你按下了功能键Ctrl后,C就不在是C了,而且就是一个命令或是一个快键键了,在VIM的Normal模式下,所有的键就是功能键了。这个你需要知道。

标记:

  • 下面的文字中,如果是 Ctrl-λ我会写成 <C-λ>.
  • 以 : 开始的命令你需要输入 <enter>回车,例如 — 如果我写成 :q 也就是说你要输入 :q<enter>.

第二级 – 感觉良好

上面的那些命令只能让你存活下来,现在是时候学习一些更多的命令了,下面是我的建议:(陈皓注:所有的命令都需要在Normal模式下使用,如果你不知道现在在什么样的模式,你就狂按几次ESC键)

  1. 各种插入模式
    • a → 在光标后插入
    • o → 在当前行后插入一个新行
    • O → 在当前行前插入一个新行
    • cw → 替换光标所在位置的一个单词
  2. 简单的移动光标
    • 0 → 数字零,到行头
    • ^ → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
    • $ → 到本行行尾
    • g_ → 到本行最后一个不是blank字符的位置。
    • /pattern → 搜索 pattern 的字符串(陈皓注:如果搜索出多个匹配,可按n键到下一个)
  3. 拷贝/粘贴 (陈皓注:p/P都可以,p是表示在当前位置之后,P表示在当前位置之前)
    • P → 粘贴
    • yy → 拷贝当前行当行于 ddP
  4. Undo/Redo
    • u → undo
    • <C-r> → redo
  5. 打开/保存/退出/改变文件(Buffer)
    • :e <path/to/file> → 打开一个文件
    • :w → 存盘
    • :saveas <path/to/file> → 另存为 <path/to/file>
    • :x, ZZ 或 :wq → 保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车)
    • :q! → 退出不保存 :qa! 强行退出所有的正在编辑的文件,就算别的文件有更改。
    • :bn 和 :bp → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。(陈皓注:我喜欢使用:n到下一个文件)

花点时间熟悉一下上面的命令,一旦你掌握他们了,你就几乎可以干其它编辑器都能干的事了。但是到现在为止,你还是觉得使用vim还是有点笨拙,不过没关系,你可以进阶到第三级了。

第三级 – 更好,更强,更快

先恭喜你!你干的很不错。我们可以开始一些更为有趣的事了。在第三级,我们只谈那些和vi可以兼容的命令。

更好

下面,让我们看一下vim是怎么重复自己的:

  1. . → (小数点) 可以重复上一次的命令
  2. N<command> → 重复某个命令N次

下面是一个示例,找开一个文件你可以试试下面的命令:

  • 2dd → 删除2行
  • 3p → 粘贴文本3次
  • 100idesu [ESC] → 会写下 “desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu “
  • . → 重复上一个命令—— 100 “desu “.
  • 3. → 重复 3 次 “desu” (注意:不是 300,你看,VIM多聪明啊).
更强

你要让你的光标移动更有效率,你一定要了解下面的这些命令,千万别跳过

  1. NG → 到第 N 行 (陈皓注:注意命令中的G是大写的,另我一般使用 : N 到第N行,如 :137 到第137行)
  2. gg → 到第一行。(陈皓注:相当于1G,或 :1)
  3. G → 到最后一行。
  4. 按单词移动:
    1. w → 到下一个单词的开头。
    2. e → 到下一个单词的结尾。

    > 如果你认为单词是由默认方式,那么就用小写的e和w。默认上来说,一个单词由字母,数字和下划线组成(陈皓注:程序变量)

    > 如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W。(陈皓注:程序语句)

    Word moves example

下面,让我来说说最强的光标移动:

  • % : 匹配括号移动,包括 (, {, [. (陈皓注:你需要把光标先移到括号上)
  • * 和 #:  匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)

相信我,上面这三个命令对程序员来说是相当强大的。

更快

你一定要记住光标的移动,因为很多命令都可以和这些移动光标的命令连动。很多命令都可以如下来干:

<start position><command><end position>

例如 0y$ 命令意味着:

  • 0 → 先到行头
  • y → 从这里开始拷贝
  • $ → 拷贝到本行最后一个字符

你可可以输入 ye,从当前位置拷贝到本单词的最后一个字符。

你也可以输入 y2/foo 来拷贝2个 “foo” 之间的字符串。

还有很多时间并不一定你就一定要按y才会拷贝,下面的命令也会被拷贝:

  • d (删除 )
  • v (可视化的选择)
  • gU (变大写)
  • gu (变小写)
  • 等等
(陈皓注:可视化选择是一个很有意思的命令,你可以先按v,然后移动光标,你就会看到文本被选择,然后,你可能d,也可y,也可以变大写等)

第四级 – Vim 超能力

你只需要掌握前面的命令,你就可以很舒服的使用VIM了。但是,现在,我们向你介绍的是VIM杀手级的功能。下面这些功能是我只用vim的原因。

在当前行上移动光标: 0 ^ $ f F t T , ;
  • 0 → 到行头
  • ^ → 到本行的第一个非blank字符
  • $ → 到行尾
  • g_ → 到本行最后一个不是blank字符的位置。
  • fa → 到下一个为a的字符处,你也可以fs到下一个为s的字符。
  • t, → 到逗号前的第一个字符。逗号可以变成其它字符。
  • 3fa → 在当前行查找第三个出现的a。
  • F 和 T → 和 f 和 t 一样,只不过是相反方向。
    Line moves

还有一个很有用的命令是 dt" → 删除所有的内容,直到遇到双引号—— "。

区域选择 <action>a<object> 或 <action>i<object>

在visual 模式下,这些命令很强大,其命令格式为

<action>a<object><action>i<object>

  • action可以是任何的命令,如 d (删除), y (拷贝), v (可以视模式选择)。
  • object 可能是: w 一个单词, W 一个以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符:"、 '、 )、 }、 ]。

假设你有一个字符串 (map (+) ("foo")).而光标键在第一个 的位置。

  • vi" → 会选择 foo.
  • va" → 会选择 "foo".
  • vi) → 会选择 "foo".
  • va) → 会选择("foo").
  • v2i) → 会选择 map (+) ("foo")
  • v2a) → 会选择 (map (+) ("foo"))

Text objects selection

块操作: <C-v>

块操作,典型的操作: 0 <C-v> <C-d> I-- [ESC]

  • ^ → 到行头
  • <C-v> → 开始块操作
  • <C-d> → 向下移动 (你也可以使用hjkl来移动光标,或是使用%,或是别的)
  • I-- [ESC] → I是插入,插入“--”,按ESC键来为每一行生效。

Rectangular blocks

在Windows下的vim,你需要使用 <C-q> 而不是 <C-v> ,<C-v> 是拷贝剪贴板。

自动提示: <C-n> 和 <C-p>

在 Insert 模式下,你可以输入一个词的开头,然后按 <C-p>或是<C-n>,自动补齐功能就出现了……

Completion

宏录制: qa 操作序列 q, @a, @@
  • qa 把你的操作记录在寄存器 a。
  • 于是 @a 会replay被录制的宏。
  • @@ 是一个快捷键用来replay最新录制的宏。

示例

在一个只有一行且这一行只有“1”的文本中,键入如下命令:

  • qaYp<C-a>q
    • qa 开始录制
    • Yp 复制行.
    • <C-a> 增加1.
    • q 停止录制.
  • @a → 在1下面写下 2
  • @@ → 在2 正面写下3
  • 现在做 100@@ 会创建新的100行,并把数据增加到 103.

Macros

可视化选择: v,V,<C-v>

前面,我们看到了 <C-v>的示例 (在Windows下应该是<C-q>),我们可以使用 vV。一但被选好了,你可以做下面的事:

  • J → 把所有的行连接起来(变成一行)
  • <> → 左右缩进
  • = → 自动给缩进 (陈皓注:这个功能相当强大,我太喜欢了)

Autoindent

在所有被选择的行后加上点东西:

  • <C-v>
  • 选中相关的行 (可使用 j 或 <C-d> 或是 /pattern 或是 % 等……)
  • $ 到行最后
  • A, 输入字符串,按 ESC。

Append to many lines

分屏: :split 和 vsplit.

下面是主要的命令,你可以使用VIM的帮助 :help split. 你可以参考本站以前的一篇文章VIM分屏

  • :split → 创建分屏 (:vsplit创建垂直分屏)
  • <C-w><dir> : dir就是方向,可以是 hjkl 或是 ←↓↑→ 中的一个,其用来切换分屏。
  • <C-w>_ (或 <C-w>|) : 最大化尺寸 (<C-w>| 垂直分屏)
  • <C-w>+ (或 <C-w>-) : 增加尺寸

Split

结束语

  • 上面是作者最常用的90%的命令。
  • 我建议你每天都学1到2个新的命令。
  • 在两到三周后,你会感到vim的强大的。
  • 有时候,学习VIM就像是在死背一些东西。
  • 幸运的是,vim有很多很不错的工具和优秀的文档。
  • 运行vimtutor直到你熟悉了那些基本命令。
  • 其在线帮助文档中你应该要仔细阅读的是 :help usr_02.txt.
  • 你会学习到诸如  !, 目录,寄存器,插件等很多其它的功能。

学习vim就像学弹钢琴一样,一旦学会,受益无穷。

——————————正文结束——————————

对于vi/vim只是点评一点:这是一个你不需要使用鼠标,不需使用小键盘,只需要使用大键盘就可以完成很多复杂功能文本编辑的编辑器。不然,Visual Studio也不就会有vim的插件了

 

以上文章出处:http://coolshell.cn/articles/5426.html