ubuntu - oyaji's Blog

Sed学习笔记

 

作者:Jims of 肥肥世家

发布时间:2004年09月20日

最近更新:2005年12月22日,增加小技巧章节。


1. Sed简介

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。

2. 定址

可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定 。

3. Sed命令

调用sed命令有两种形式:

  • sed [options] 'command' file(s)

  • sed [options] -f scriptfile file(s)

 

a\

在当前行后面加入一行文本。

b lable

分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。

c\

用新的文本改变本行的文本。

d

从模板块(Pattern space)位置删除行。

D

删除模板块的第一行。

i\

在当前行上面插入文本。

h

拷贝模板块的内容到内存中的缓冲区。

H

追加模板块的内容到内存中的缓冲区

g

获得内存缓冲区的内容,并替代当前模板块中的文本。

G

获得内存缓冲区的内容,并追加到当前模板块文本的后面。

l

列表不能打印字符的清单。

n

读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。

N

追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。

p

打印模板块的行。

P(大写)

打印模板块的第一行。

q

退出Sed。

r file

从file中读行。

t label

if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。

T label

错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。

w file

写并追加模板块到file末尾。

W file

写并追加模板块的第一行到file末尾。

!

表示后面的命令对所有没有被选定的行发生作用。

s/re/string

用string替换正则表达式re。

=

打印当前行号码。

#

把注释扩展到下一个换行符以前。

以下的是替换标记
  • g表示行内全面替换。

  • p表示打印行。

  • w表示把行写入一个文件。

  • x表示互换模板块中的文本和缓冲区中的文本。

  • y表示把一个字符翻译为另外的字符(但是不用于正则表达式)

4. 选项

-e command, --expression=command

允许多台编辑。

-h, --help

打印帮助,并显示bug列表的地址。

-n, --quiet, --silent

取消默认输出。

-f, --filer=script-file

引导sed脚本文件名。

-V, --version

打印版本和版权信息。

5. 元字符集

^

锚定行的开始 如:/^sed/匹配所有以sed开头的行。

$

锚定行的结束 如:/sed$/匹配所有以sed结尾的行。

.

匹配一个非换行符的字符 如:/s.d/匹配s后接一个任意字符,然后是d。

*

匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。

[]

匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed。

[^]

匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。

\(..\)

保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。

&

保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。

\<

锚定单词的开始,如:/\<love/匹配包含以love开头的单词的行。

\>

锚定单词的结束,如/love\>/匹配包含以love结尾的单词的行。

x\{m\}

重复字符x,m次,如:/0\{5\}/匹配包含5个o的行。

x\{m,\}

重复字符x,至少m次,如:/o\{5,\}/匹配至少有5个o的行。

x\{m,n\}

重复字符x,至少m次,不多于n次,如:/o\{5,10\}/匹配5--10个o的行。

6. 实例

删除:d命令
  • $ sed '2d' example-----删除example文件的第二行。

  • $ sed '2,$d' example-----删除example文件的第二行到末尾所有行。

  • $ sed '$d' example-----删除example文件的最后一行。

  • $ sed '/test/'d example-----删除example文件所有包含test的行。

替换:s命令
  • $ sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。

  • $ sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。

  • $ sed 's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加 localhost,变成192.168.0.1localhost。

  • $ sed -n 's/\(love\)able/\1rs/p' example-----love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。

  • $ sed 's#10#100#g' example-----不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。

选定行的范围:逗号
  • $ sed -n '/test/,/check/p' example-----所有在模板test和check所确定的范围内的行都被打印。

  • $ sed -n '5,/^test/p' example-----打印从第五行开始到第一个包含以test开始的行之间的所有行。

  • $ sed '/test/,/check/s/$/sed test/' example-----对于模板test和west之间的行,每行的末尾用字符串sed test替换。

多点编辑:e命令
  • $ sed -e '1,5d' -e 's/test/check/' example-----(-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执 行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。

  • $ sed --expression='s/test/check/' --expression='/love/d' example-----一个比-e更好的命令是--expression。它能给sed表达式赋值。

从文件读入:r命令
  • $ sed '/test/r file' example-----file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。

写入文件:w命令
  • $ sed -n '/test/w file' example-----在example中所有包含test的行都被写入file里。

追加命令:a命令
  • $ sed '/^test/a\\--->this is a example' example<-----'this is a example'被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。

插入:i命令

$ sed '/test/i\\

new line

-------------------------' example

如果test被匹配,则把反斜杠后面的文本插入到匹配行的前面。

下一个:n命令
  • $ sed '/test/{ n; s/aa/bb/; }' example-----如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续。

变形:y命令
  • $ sed '1,10y/abcde/ABCDE/' example-----把1--10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令。

退出:q命令
  • $ sed '10q' example-----打印完第10行后,退出sed。

保持和获取:h命令和G命令
  • $ sed -e '/test/h' -e '$G example-----在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将 打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。在这个例子里,匹配test的行被找到后,将存入模式空间,h命令将其复制并存入一个称为保 持缓存区的特殊缓冲区内。第二条语句的意思是,当到达最后一行后,G命令取出保持缓冲区的行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中 的行的末尾。在这个例子中就是追加到最后一行。简单来说,任何包含test的行都被复制并追加到该文件的末尾。

保持和互换:h命令和x命令
  • $ sed -e '/test/h' -e '/check/x' example -----互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。

7. 脚本

Sed脚本是一个sed的命令清单,启动Sed时以-f选项引导脚本文件名。Sed对于脚本中输入的命令非常挑剔,在命令的末尾不能有任何空白或文本,如果在一行中有多个命令,要用分号分隔。以#开头的行为注释行,且不能跨行。

8. 小技巧

  • 在sed的命令行中引用shell变量时要使用双引号,而不是通常所用的单引号。下面是一个根据name变量的内容来删除named.conf文件中zone段的脚本:

    name='zone\ "localhost"'
    sed "/$name/,/};/d" named.conf
" named.conf

 

Nautilus Tips and Tricks

Managing Nautilus from the keyboard

You don’t have to be slowed down by the mouse just because you are using a GUI. Nautilus has great keyboard shortcuts that will allow you to use it quickly and effectively.

Here is a quick table of the shortcut keys and their functionality

Key(s) Action
Searching
Start Typing Select the matching name of a file or directory
CTRL+F Search filenames and content of indexed files
CTRL+S Selects all files or directories matching a pattern
Display and Window Management
CTRL+N Create a new Nautilus window
CTRL+W Close a Nautilus window
CTRL+SHIFT+W Close all Nautilus windows
CTRL+1 View files in icon mode
CTRL+2 View files in list mode
F9 Toggle sidebar pane
File Management
CTRL+H Show hidden files
CTRL+SHIFT+N Create a new folder
CTRL+T or Del Delete the file or directory and move to the trash
Shift+Del Delete the selected file or directory and skip the trash
F2 Rename the selected file or directory
Alt+Enter View properties of the selected file or directory
Movement
CTRL+L Move into the location bar
Alt+HOME Go to your $HOME folder
* or + or SHIFT+RArrow Expand Directory in list view
- or SHIFT+LArrow Close Directory in list view
ALT+LArrow Browse through files and folders to the left
ALT+RArrow Browse through files and folders to the right
ALT+UArrow Move to the parent folder one level above
ALT+DArrow Open the selected file or folder
Accessibility
CTRL++ Zoom in
CTRL+- Zoom out
CTRL+0 Normal zoom

 

-->>from http://opensuse-tutorials.com/2008/07/nautilus-tips-and-tricks/

Ubuntu关联site集(J)

Ubuntuを紹介しているBlog等

  • Ubuntuウィークリーニュースレター (RSS)

    • Ubuntuウィークリーニュースレター(Ubuntu Weekly Newsletter, UWN) - 今週のUbuntu・Kubuntu・Edubuntu・Xubuntuの全ての活動をレポートします。
    • 日本語への翻訳協力者募集中です。(詳細)

  • Ubuntu Weekly Topics (RSS)

    • Ubuntuコミュニティに興味があるユーザ向けに,ML・Wiki・フォーラムなどの最新の話題を1週間分厳選してお届けします。基本的に毎週金曜日に更新されます。Ubuntu Japanese Team 提供です。
  • Ubuntu Weekly Recipe

    • Ubuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。基本的に毎週水曜日に更新されます。Ubuntu Japanese Team 提供です。
  • 行っとけ! Ubuntu道場!

    • Ubuntuの今をフレンドリーに座談会形式で解説。基本的に隔週木曜日に更新されます。Ubuntu Japanese Team 提供です。
  • Full Circle Magazine (RSS)

    • Full Circle is a free, independent, magazine dedicated to the Ubuntu family of Linux operating systems. Each month, it contains helpful how-to articles and reader submitted stories.
    • 月刊のフリーUbuntu雑誌です。面白い読み物と役に立つHowToが充実しています。

    • 日本語への翻訳協力者募集中です。
  • Tutorial of the Week

    • 英語フォーラムに寄せられたTipsのうち秀逸なものを毎週1つずつ紹介しています。
    • 日本語への翻訳協力者募集中です。(詳細)

  • Viva! Ubuntu!! (RSS)

    • 極力コマンドラインを使わない、直感的な Ubuntu の利用・紹介記事が充実。u-bon氏による。
  • Ubuntuのある日々 (RSS)

    • ふつうの人のふつうのLinux の著者によるブログ。
  • 独学Linux (RSS)

    • Ubuntuに限らず、デスクトップ用途での Linux 利用記事が充実しています。Compiz関連情報も。vine_user 氏による。

  • Linux Salsad (RSS)

    • エントリ中に"メチャな女の子やクールな女性や若い奥様に向けてLinuxやUbuntuの話題を書いているブログ"と執筆者のコメントがあるように、ポップな雰囲気で分かりやすい。Akira Ohgaki 氏による。

  • うぶんちゅ! (RSS)

    • 「世界初!? 学園Ubuntuラブコメ」
    • 第一話が有志の手により現時点で日本語を含め17ヵ国語で読めるようになっているとのこと。Cc-By-Nc-2.1-jpで公開されている。瀬尾浩史 氏による。

  • ubuntu smash (RSS)

  • たわごと (RSS)

  • Kawaji's Weblog (RSS)

    • Kawaji さんによるブログ
  • ひよこのグダグダUbuntu日記 (Atom)

  • ubulog (Atom)

    • ubuntuとEmacsに関する記述が多いです。
  • Ubuntu Blog Network

    • ユウヤ さんが運営していて、情報を発信するUbuntuブロガーと、情報を探しているUbuntuユーザの架け橋を目指しているそうです。

  • Winux/Lindows (RSS)

    • tmin さんによるブログです。

 

ソフトウェア関連

  • リリースノート

    • 公式のリリースノートです。各バージョンのUbuntuのリリース時点における既知の不具合の情報が記載されているます。日本語訳はこちらを参照のこと。

  • Official Ubuntu Documentation

    • 公式 Ubuntu 関連ドキュメントサイトです。"Ubuntu Documentation Project Team"による。システム ▶ ヘルプとサポート (yelp) から閲覧できます。

  • Ubuntu Manpages

    • 通常コマンド"man"で利用するマニュアルページがブラウザ上から利用出来る。Ubuntu公式です。
  • Launchpad’s bug tracker

    • 公式のバグトラッカーです。バグに遭遇した際の解決策の検索に有用です。
  • Community Ubuntu Documentation

    • コミュニティにより保守されているドキュメントです。
  • ubuntu guide

    • 有志による Ubuntuの利用ガイド。
    • 日本語への翻訳協力者募集中。
  • Ubuntu Packages Search

    • 公式のパッケージ検索サイトです。検索機能に特化しています。
  • Appnr

    • "Web-based package browser"
    • apturlを利用しており、ブラウザ上からアプリケーションの検索とインストールが行える。Akira Ohgaki氏による。

  • Personal Package Archives

  • Medibuntu

    • 公式リポジトリでは配布の難しいソフトを配布。
    • サードパーティのレポジトリを利用した場合アップグレード時に特別な操作が必要となる場合あり。
    • 利用しようとするソフトが目的の用途で国内法的に問題ないことを確認して利用のこと。
    • 日本語Wikiにおける利用方法の紹介

  • GetDeb

    • まだリポジトリで提供されていない、リポジトリにあるものは最新ではない、といったソフトウェアのパッケージを大量に配布。
    • 公式リポジトリ外のパッケージの導入はシステムにセキュリティ上のリスク、アップグレードの際のリスク、運用上の予期せぬ不具合の可能性を与えることを認識の上利用のこと。
  • UbuntuTweak

    • Windowsにおける「窓の手」に類似したソフト"ubuntu-tweak"の開発と配布。
    • 公式リポジトリ外のパッケージの導入はシステムにセキュリティ上のリスク、アップグレードの際のリスク、運用上の予期せぬ不具合の可能性を与えることを認識の上利用のこと。
  • Ubuntu Security Notice (RSS)

    • Ubuntu のセキュリティアップデートに関する情報があります。日本語訳は Ubuntu Weekly Topics の今週のセキュリティアップデートにあります。

 

Linux 全般に関する情報

 

ハードウェア関連

  • Phoronix

    • Linux のハードウェアレビューが充実しています。Phoronix Mediaが提供しています。

-->>from https://wiki.ubuntulinux.jp/UbuntuSites

 

gedit tips

 

自从开始编程了以后,一直苦于没有找到一款好的编辑器。 用过很多功能强大的IDE,但是觉得它们太笨重,有非常多的不需要的功能。

在mac上,由于textmate迟迟不推出2.0版本,而现在的版本又在多字节的文字显示有问题,所以一直再用Coda,勉强还能过去。 在Linux上,感觉gedit还不错,但是总是觉得它功能有些不全。

最近终于发现了一个好东西Gmate,可以在Linux下近乎实现textmate中的功能,而且gedit也有mac版,所以理论上说,mac下面也能用。

简单的说,Gmate是一个对gedit提供theme,code snippets和多种实用插件的集合包。 下面把我个人觉得应该使用的内容记录一下,供以后配置的时候参考。

安装

首先安装gedit,然后在安装gmate

配置

Theme

Gmate提供很多,个人喜好的theme是如下三个

  • Monokai
  • GitHub
  • Railscasts Improved

Plugins

大部分是Gmate提供的,也有自己download的,基础的插件是Gedit自带(default)的。

  1. Advanced Bookmarks (download)

    在读代码的时候非常有用,可以对代码作暂时的说明,能非常方便的比较代码

  2. Align (gmate)

    可以自己指定分隔符,使代码在列方向对齐

  3. File Browser Pane (default)

    这个是必备的,以下的很多plugin都以此为基础

  4. Fuzzy Open (gmate)

    模糊查找当前文件夹下的文件,非常的方便,而且如果使用git的话,还可以显示文件在git repo中的当前状态

  5. File Search (download)

    一直没有扎到一个十分好用的搜索多个文件内容的插件,这个算是最好用的了。 可以设置rails常用的文件类型如下,速度会快很多。

    *.rb *.rake *.erb *.yml *.css *.js *.html
  6. Classbrowser (gmate)

    可以列出当前文件的类,方法,变量等信息。需要安装 ctags-exuberant 包。

  7. TODO List (gmate)

    相当方便的用来在代码中做记录的插件

  8. Gemini (gmate)

    自动补全引号、括号等字符

  9. Quick Highligt Mode (gmate)

    方便快捷的选择代码高亮的语言模板,不必再在很长的list中用鼠标拖动选择

  10. Rails Extract Partial (gmate)

    抽出选中的内容,并用其创建新的partial文件的快捷方式

  11. Rails File Loader (gmate)

    判断文件是否为rails的文件,如果是的话,则自动打开rubyonrails的高亮模式

  12. Rails Hotcommands (gmate)

    Rails相关的快捷键

  13. Rails Hotkeys (gmate)

    用快捷键打开rails中的各种文件,适合没有怎么customize过的项目

  14. Regex Search Replace (gmate)

    用正则表达式查找当前文件中的字符

  15. Smart Indent (gmate)

    在编写程序的同时自动indent

  16. TabSwitch (gmate)

    在打开的文件之间切换

  17. Text Tools (gmate)

    进行编辑、选择的键盘快捷方式

    Clear Line:         '<Shift><Control>c'
    Duplicate Line      '<Shift><Control>d'
    Move Line Up        '<Alt>Up'
    Move Line Down      '<Alt>Down'
    Select Enclosed Text    '<Alt><Control>9'
    Select Word         '<Alt>W'
    Select Word Special '<Alt><Shift>W'
  18. Save without trailing space (gmate)

    在保存文件的时候去除所有文件结尾的空字符,仅仅保留一个newline

  19. Word Completion (gmate)

    非常不错的补全插件

  20. Multi Edit (gmate)

    同时进行多点编辑的插件

  21. Zen Coding (gmate)

    超级快速编辑html的插件。语法参考

  22.  

     

    Pair character autocompletion plugin for gedit

     

    A gedit plugin that automatically inserts brackets, quotes, and parenthesis.

    Usage

    Automatically inserts a closing parenthesis ) whenever an opening parenthesis ( is typed. The default paired characters are ()[]{},""'', and ``. The plugin is smart enough to automatically overwrite existing closing brackets when appropriate.

    Selecting a block of text and typing an opening parenthesis or quote character will enclose the selection in quotes or parenthesis.

    To quickly jump out of nested quotes or brackets and start a newline, type Ctrl+Return. To jump to the end of the line, insert a semicolon, and start a newline, type Ctrl+Shift+Return.

    Custom sets of per-language paired characters are supported. To change the default paired characters, or add support for new languages, edit the file pair_char_lang.py.

    Installation

    1. Download the latest version of the plugin and extract it
    2. Run the install.sh script.
    3. Restart gedit if it is already started.
    4. Select Edit->Preferences from the menu. Click on the Plugins tab and enable the Pair Character Completion plugin.

    -->>from 旷兄的提示。补记

不足之处:

没有完整的emacs风格的快捷键支持,虽然可以用

gconftool-2 --set /desktop/gnome/interface/gtk_key_theme Emacs --type string
gconftool-2 --set /desktop/gnome/interface/gtk_key_theme Default --type string

的方式,将gtk的keybinding在emacs和default之间来回切换, 但是在emacs的模式下,keybinding有些能用(比如C-f, C-b, C-a, C-e), 但是有些还是不能用(比如C-v还是粘贴)

ubuntu下svn的使用

0、ubuntu下svn的安装

sudo apt-get install subversion subversion-tools

详细请看 http://www.subversion.org.cn/svnbook/1.1/index.html svn子命令

1、检出

svn  co  http://路径(目录或文件的全路径) [本地目录全路径]  --username 用户名 --password 密码svn  co svn://路径(目录或文件的全路径) [本地目录全路径]  --username 用户名 --password 密码
svn  checkout  http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名
svn  checkout  svn://路径(目录或文件的全路径) [本地目录全路径]  --username 用户名
注:如果不带--password 参数传输密码的话,会提示输入密码,建议不要用明文的--password 选项
  其中 username 与 password前是两个短线,不是一个。
  不指定本地目录全路径,则检出到当前目录下。
例子:
svn co svn://192.168.0.3/测试工具 /home/testtools --username wzhnsc
svn co http://192.168.0.3/test/testapp --username wzhnsc
svn checkout svn://192.168.0.3/测试工具 /home/testtools --username wzhnsc
svn checkouthttp://192.168.0.3/test/testapp --username wzhnsc

2、导出(
导出一个干净的不带.svn文件夹的目录树)
svn  export  [-r 版本号]  http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名
svn  export  [-r 版本号]  svn://路径(目录或文件的全路径) [本地目录全路径] --username 用户名
svn  export  本地检出的(即带有.svn文件夹的)目录全路径  要导出的本地目录全路径
注:第一种从版本库导出干净工作目录树的形式是指定URL,
   如果指定了修订版本号,会导出相应的版本,
   如果没有指定修订版本,则会导出最新的,导出到指定位置。

   如果省略
 本地目录全路径,URL的最后一部分会作为本地目录的名字。
  第二种形式是指定 本地检出的目录全路径 到 要导出的本地目录全路径,所有的本地修改将会保留,
   但是不在版本控制下(即没提交的新文件,因为.svn文件夹里没有与之相关的信息记录)的文件不会拷贝。

例子:
svn exportsvn://192.168.0.3/测试工具 /home/testtools --username wzhnsc
svn exporthttp://192.168.0.3/test/testapp --username wzhnsc
svn export/home/testapp /home/testtools

3、添加新文件 
svn add 文件名
注:告诉SVN服务器要添加文件了,还要用svn commint -m真实的上传上去!
例子:
svn add test.php <- 添加test.php 
svn commit -m “添加我的测试用test.php“ test.php
svn add *.php <- 添加当前目录下所有的php文件
svn commit -m “添加我的测试用全部php文件“ *.php

4、提交
svn commit -m “提交备注信息文本“ [-N] [--no-unlock] 文件名
svn ci -m “提交备注信息文本“ [-N] [--no-unlock] 文件名
必须带上-m参数,参数可以为空,但是必须写上-m
例子:
svn commit -m “提交当前目录下的全部在版本控制下的文件“ * <- 注意这个*表示全部文件
svn commit -m “提交我的测试用test.php“ test.php
svn commit -m “提交我的测试用test.php“ -N --no-unlock test.php <- 保持锁就用–no-unlock开关
svn ci -m “提交当前目录下的全部在版本控制下的文件“ * <- 注意这个*表示全部文件
svn ci -m “提交我的测试用test.php“ test.php
svn ci -m “提交我的测试用test.php“ -N --no-unlock test.php <- 保持锁就用–no-unlock开关

5、更新文件
svn update
svn update -r
 修正版本 文件名
svn update 文件名
例子:
svn update <- 后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本
svn update -r 200 test.cpp <- 将版本库中的文件 test.cpp 还原到修正版本(revision)200
svn update test.php <- 更新与版本库同步。
            提交的时候提示过期冲突,需要先 update 修改文件,
            然后清除svn resolved,最后再提交commit。


6、删除文件
svn delete svn://路径(目录或文件的全路径) -m “删除备注信息文本”
推荐如下操作:
svn delete 文件名 
svn ci -m “删除备注信息文本”
例子:
svn delete svn://192.168.1.1/testapp/test.php -m “删除测试文件test.php”
推荐如下操作:
svn delete test.php 
svn ci -m “删除测试文件test.php”

7、加锁/解锁 
svn lock -m “加锁备注信息文本“ [--force] 文件名 
svn unlock 文件名
例子:
svn lock -m “锁信测试用test.php文件“ test.php 
svn unlock test.php 

8、比较差异 
svn diff 文件名 
svn diff -r 修正版本号m:修正版本号n 文件名
例子:
svn diff test.php<- 将修改的文件与基础版本比较
svn diff -r 200:201 test.php<- 对 修正版本号200 和 修正版本号201 比较差异

9、查看文件或者目录状态
svn st 目录路径/名
svn status 目录路径/名<- 目录下的文件和子目录的状态,正常状态不显示 
             【?:不在svn的控制中;  M:内容被修改;C:发生冲突;
              A:预定加入到版本库;K:被锁定】 
svn  -v 目录路径/名
svn status -v 目录路径/名<- 显示文件和子目录状态
              【第一列保持相同,第二列显示工作版本号,
               第三和第四列显示最后一次修改的版本号和修改人】 
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,
  原因是svn在本地的.svn中保留了本地版本的原始拷贝。 

10、查看日志
svn log 文件名
例子:
svn log test.php<- 显示这个文件的所有修改记录,及其版本号的变化 

11、查看文件详细信息
svn info 文件名
例子:
svn info test.php

12、SVN 帮助
svn help <- 全部功能选项
svn help ci <- 具体功能的说明

13、查看版本库下的文件和目录列表 
svn list svn://路径(目录或文件的全路径)
svn ls svn://路径(目录或文件的全路径)
例子:
svn list svn://192.168.0.3/test
svn ls svn://192.168.0.3/test <- 显示svn://192.168.0.3/test目录下的所有属于版本库的文件和目录 

14、创建纳入版本控制下的新目录
svn mkdir 目录名
svn mkdir -m "新增目录备注文本" http://目录全路径
例子:
svn mkdir newdir
svn mkdir -m "Making a new dir." http://192.168.0.3/test/newdir 
注:添加完子目录后,一定要回到根目录更新一下,不然在该目录下提交文件会提示“提交失败”
svn update
注:如果手工在checkout出来的目录里创建了一个新文件夹newsubdir,
  再用svn mkdir newsubdir命令后,SVN会提示:
  svn: 尝试用 “svn add”或 “svn add --non-recursive”代替?
  svn: 无法创建目录“hello”: 文件已经存在
  此时,用如下命令解决:
  svn add --non-recursive newsubdir
  在进入这个newsubdir文件夹,用ls -a查看它下面的全部目录与文件,会发现多了:.svn目录
  再用 svn mkdir -m "添hello功能模块文件" svn://192.168.0.3/test/newdir/newsubdir 命令,
  SVN提示:
  svn: File already exists: filesystem '/data/svnroot/test/db', transaction '4541-1',
  path '/newdir/newsubdir '

15、恢复本地修改 
svn revert [--recursive] 文件名
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录。
例子:
svn revert foo.c <- 丢弃对一个文件的修改
svn revert --recursive . <-恢复一整个目录的文件,. 为当前目录 

16、把工作拷贝更新到别的URL 
svn switch http://目录全路径 本地目录全路径
例子:
svn switch http://192.163.0.3/test/456 . <- (原为123的分支)当前所在目录分支到192.163.0.3/test/456

17、解决冲突 
svn resolved [本地目录全路径]
例子:
$ svn update
C foo.c
Updated to revision 31.
如果你在更新时得到冲突,你的工作拷贝会产生三个新的文件:
$ ls
foo.c
foo.c.mine
foo.c.r30
foo.c.r31
当你解决了foo.c的冲突,并且准备提交,运行svn resolved让你的工作拷贝知道你已经完成了所有事情。
你可以仅仅删除冲突的文件并且提交,但是svn resolved除了删除冲突文件,还修正了一些记录在工作拷贝管理区域的记录数据,所以我们推荐你使用这个命令。

18、不checkout而查看输出特定文件或URL的内容 
svn cat http://文件全路径
例子:
svn cat http://192.168.0.3/test/readme.txt

ubuntu 系统异常

1. 发现了几次系统在休眠状态下假死的现象

2. 今天再次在假死状态下强制重启动之后,

   系统的默认主题,字体,颜色等都不正常了

3. 然后重新启动后,用root用户登录之后,主题字体等是正常的

   然后在切换到日常工作账户下,又变回正常状态

 

ubuntu 截屏工具shutter

收joe(http://joe.is-programmer.com/posts/18028.html)的启发,试用shutter工具

安装步骤

1. sudo add-apt-repository ppa:shutter/ppa

2. sudo apt-get update

3. sudo apt-get install shutter

2011.1.21

给ubuntu安装了

1. putty

   sudo apt-get install putty

2. dia

   类似windows下visio的工具

  sudo apt-get install dia

3. sqlite3

   sudo apt-get install sqlite sqlite3

4. sqlitebrowser

   sudo apt-get install sqlitebrowser

 

ubuntu 安装awn,ror

ubuntu下安装awn

在ubuntu下启用avant来实现mac的windows navigator panel效果
   1. 在包管理器中输入avant,勾选avant-windows-navigate-panel来安装
   2. 通过alt+f2来启动 avant-window-navigator
   3. 通过在awn的配置画面中勾选“start awn automatically"来实现自动启动。
 
ubuntu 下安装ror
步骤
1. sudo apt-get install ruby 1.9.2
    但安装之后,ruby -v却是:1.8.7
    估计是命令的用法不对,其实后面的版本号没起作用
2. sudo apt-get install rubygems
    gem -v确认版本 1.3.7
3. 用gem install rails 之后,在gem list下和rails相关的gem都安装好了
    但在命令行下,rails -v仍然报错。“程序 rails 尚未安装"
    改正:在agile web development with rails Fourth edition 中发现在此处正规的做法时用gem来安装rails
                如果安装了之后出现上面的问题,那么需要在用户的 .bashrc文件中追加 
                export PATH=/var/lib/gem/1.8/bin:$PATH
    用上面的方面在.bashrc中追加了export path后,rails -v就正常了。  
    然后用apt-get remove rails 命令来删除用apt-get install的rails 2.3.5

ubuntu 安装fcitx openoffice

1. 安装fcitx4.0输入法

   1. 先在/etc/apt/sources.list文件的末尾添加
       deb http://ppa.launchpad.net/wengxt/fcitx-nightly/ubuntu lucid main
       然后apt-get update命令来更新源
   2. sudo apt-get install fcitx
       但sudo apt-get install fcitx-config不成功
   3. 用sudo im-switch -s fcitx -z default设置fcitx为默然的输入法
   4. 虽然fcitx-config没有安装成功,点击工具条上的小企鹅可以打开配置文件。但没有图形界面。
 
2. 重新安装了3.2.1版本的openoffice
   1. 删除现有版本sudo apt-get remove openoffice*.*
   2. 从官网下载最新的安装包
   3. sudo dpkg -i OOO320_m18_native_packed-1_zh-CN.9502/DEBS/*.deb
   4. sudo dpkg -i OOO320_m18_native_packed-1_zh-CN.9502/DEBS/desktop-integration/
       openoffice.org3.2-debian-menus_3.2-9502_all.deb




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee