Linux 服务器开发工具
论你使用的机器是 Windows、Linux 还是 MacOS,都可以使用工具远程登录到 Linux 服务器上去。在此我们通常使用 SSH 协议(包括 SSH-1 和 SSH-2 两个版本,它们之间不相兼容,建议使用 SSH-2),SSH 协议是一个用于安全数据通信的协议(相比下 FTP、Telnet 本质上是不安全的)。一些 Linux 发行版会预装 SSH Server,有了 SSH Server 我们就可以通过 SSH Client 使用远程服务器上的 Shell 服务。常见的 SSH Client 有(这里我使用的是 Windows 机器):
通过 SecureCRT(这里使用的是 SecureCRT 7.0.1)连接到 SSH Server:
SecureCRT 的关键配置:
- 终端模拟配置,Option -> Session Options -> Terminal -> Emulation 处,选择 Terminal 为 Linux 并且勾选 ANSI Color。这里选择了需要模拟的终端为 Xterm,勾选 ANSI Color 表示使用 ANSI 调色板(ANSI Color Palette)
- SFTP(后面马上会谈到 SFTP)本地目录配置,Option -> Session Options -> Connection -> SSH2 -> SFTP Session 处可以填写本地目录(Local directory)
- Option -> Session Options -> Terminal -> Appearance -> Character encoding 处可以选择字符编码,这里需要选择和 Linux 服务器相匹配的编码方式。Linux 中可以通过命令 locale 查看使用的语言和编码
SecureCRT 常用的快捷键如下:
- Alt+B 用于在一个新的 Tab 中打开一个新的 Session
- Alt+P 用于在一个新的 Tab 中打开一个新的 SFTP Session
- Ctrl+F4 用于关闭当前 Tab
- Shift+Insert 用于粘贴
可以使用 Shell 之后,我们还面临的一个问题就是如何把本地的文件上传自 Linux 服务器,这里我们使用 SFTP(SSH file transfer)。在 SecureCRT 中 File -> Connect SFTP Session(或者使用快捷键 Ctrl+F4)打开 SFTP Session,常用的 SFTP 命令如下:
- help 命令用于获取帮助信息
- 工作目录相关命令
pwd — 查看远程 Linux 服务器的工作目录
lpwd — 查看本地工作目录
cd — 修改远程 Linux 服务器的工作目录
lcd — 修改本地工作目录
ls — 列出远程 Linux 服务器的工作目录中的文件
lls — 列出本地工作目录中的文件
这里的 l 含义为 Local - put 命令用于上传文件或者文件夹到 Linux 服务器。常见用法:
- put -r dir
- put file
第一条命令用于递归的上传本地目录 dir 到远程 Linux 服务器的工作目录下
</li>
第二条命令用于上传本地文件 file 到远程 Linux 服务器的工作目录下 - get 命令用于下载文件或者文件夹到本地。常见用法:
- get -r dir
- get file </ol> </pre>
- svn <subcommand> [options] [args]
- help
用法:svn help [subcommand...]
说明:用于获取一个或者多个 subcommand 的帮助信息
范例:svn help co - co(checkout)
用法:svn co URL [PATH]
说明:用于从版本库中签出工作副本到 PATH 目录下
范例:svn co https://name5566-vim-bookmark.googlecode.com/svn/trunk/ name5566-vim-bookmark - up(update)
用法:svn up [PATH...]
说明:用于将版本库的修改合并到工作副本中
范例:svn up - ci(commit)
用法:svn ci [PATH...]
说明:用于把工作副本的修改提交到版本库中,通常情况下,我们会和 -m 选项一起使用此子命令,-m 选项用于指定日志信息
范例:svn ci -m “增加了新的 XXX 特性” - st(status)
用法:svn st [PATH...]
说明:用于显示工作副本中文件和目录的状态,常常用于检测哪一些文件尚未处于版本控制中
范例:svn st - add
用法:svn add [PAHT...]
说明:用于把文件和目录纳入版本控制
范例:svn add file.txt - rm
用法:
svn rm PATH
svn rm URL
说明:可以用于把文件和目录从版本库中删除,rm 子命令后可以接上 URL,用于立即从版本库中删除指定项目
范例:svn rm file.txt - #!/bin/sh
- # Configure your favorite diff program here.
- DIFF="/usr/bin/vimdiff"
- # Subversion provides the paths we need as the sixth and seventh
- # parameters.
- LEFT=${6}
- RIGHT=${7}
- # Call the diff command (change the following line to make sense for
- # your merge program).
- $DIFF $LEFT $RIGHT
- # Return an errorcode of 0 if no differences were detected, 1 if some were.
- # Any other errorcode will be treated as fatal.
- [helpers]
- diff-cmd = diff.sh
- grep 是 Linux 最常用的命令之一,其能够用于检索文件或者标准输出中的行,其用法如下:
- grep [options] PATTERN [FILE...]
很多命令可能会输出大量信息而其中仅仅一小部分是我们关心的,这时候 grep 是过滤信息的利器,例如:
ls 命令用于显示目录中的内容:- $ ls -l
- -rw-r--r-- 1 name5566 name5566 0 Nov 2 19:22 file1
- -rw-r--r-- 1 name5566 name5566 0 Nov 2 19:22 file2
- drwxr-xr-x 29 name5566 name5566 4096 Oct 31 17:07 src
- drwxr-xr-x 2 name5566 name5566 4096 Oct 31 16:58 test
假如我们只希望显示目录,可以这么使用:
- $ ls -l | grep ^d
- drwxr-xr-x 29 name5566 name5566 4096 Oct 31 17:07 src
- drwxr-xr-x 2 name5566 name5566 4096 Oct 31 16:58 test
这里的 pattern ^d 含义为行首为 d。再如这样的用法:
- $ ls | grep -i file1
用于判断当前目录下是否存在 file1,这里的 -i 选项表示匹配时忽略大小写。
</li> - find 命令用于通过文件名去寻找文件(grep 命令主要用于在文件中查找信息),常见用法如下:
- $ find . -name file1 </ol> </pre>
- ps 命令用于显示当前进程的快照,常用的选项如下:
- # 查看系统上的所有进程(e 的含义为 every)
- ps -e
- # 输出时使用 full 格式列表(f 的含义为 full)
- ps -ef
- # 输出时使用 long 格式列表(l 的含义为 long)
- ps -el
- # 输出 effective user 为 name 的进程
- ps -u name
- # 使用 full 格式列表
- ps -fu name </ol> </pre></li>
- kill 和 killall 命令用于发送一个信号到一个进程。如果不指定发送的信号则发送 SIGTERM。用法如下:
用于在当前目录及子目录下查找名字为 file1 的文件。要注意的是,file1 必须是一个完整的文件名而不能是文件名的一部分
</li>
第一条命令用于递归的下载目录 dir 到本地工作目录下
</li> </ol>
第二条命令用于下载文件 file 到本地工作目录下有了 SSH Client,我们就可以执行 Shell 命令,上传下载文件和文件夹了。
代码编辑工具
编辑代码的工具很多,也有各种不同的做法。一种常见的代码编辑的方式是使用 SSH Client 在远程 Linux 服务器上使用 Vim 或者 Emacs 进行代码编辑。Vim 的基本用法可以参考以下两篇文章:
http://name5566.com/3400.html
http://name5566.com/3402.html
Vim 的基本的配置可以参考:
http://code.google.com/p/name5566-vim-config/代码构建工具
代码构建工具很多,常见的有 make、automake、cmake 等等。读者可以参考云风的关于 make 的相关文章:
http://blog.codingnow.com/2008/09/replacement_of_ide_1.html
http://blog.codingnow.com/2008/09/replacement_of_ide_2.html
http://blog.codingnow.com/2008/09/replacement_of_ide_3.html
http://blog.codingnow.com/2008/09/replacement_of_ide_4.html
http://blog.codingnow.com/2008/09/replacement_of_ide_5.html
http://blog.codingnow.com/2008/09/replacement_of_ide_6.html代码调试工具
一般来说使用 gdb 进行调试,http://name5566.com/4018.html 一文介绍了一些基本的命令来满足我们在调试上的基本需要。
版本控制工具
在版本控制工具上,我们常见的主要是 Subversion(SVN)和 git,而后者似乎更加被 Linux 用户所喜爱。这里主要谈一下 SVN 的基本使用。
svn 命令的用法:常用的 subcommand 如下:
我们可以设置 vimdiff 为 subversion 的 diff 工具。首先创建一个 Shell 脚本(来源于 http://svnbook.red-bean.com/en/1.4/svn.advanced.externaldifftools.html):
注意修改此 Shell 脚本的权限(u+x)。然后修改 $HOME/.subversion/config 文件:
这里的 diff.sh 为前面所述的 Shell 脚本的路径名。
常用命令
这里主要介绍一下 Linux 下常用命令的一些最常见用法,实际上,很多命令远比你想象强大,这里并不做详述。