中文版

电脑版
提示:原网页已由神马搜索转码, 内容由shouce.jb51.net提供.
Unix Toolbox - 中文版
Bourne shell(/bin/sh) 存在于所有的 Unix 系统上,并且用她写的脚本是(完全)可移植的; 是一个好的参考。 使用 的命令格式设置变量,其中 variable 是变量名称,value是打算赋给该变量的值。使用 $variable 获取变量值。 命令行参数: 来一个小实例,此脚本从本 xhtml 文档创建一个 PDF 小册子: 这里是。还有一个很好的 。
sed 's/string1/string2/g'                    
sed -i 's/wroong/wrong/g' *.txt              
sed 's/\(.*\)1/\12/g'                        
sed '/<p>/,/<\/p>/d' t.xhtml                 
sed '/ *#/d; /^ *$/d'                        
sed 's/[ \t]*$//'                            
sed 's/^[ \t]*//;s/[ \t]*$//'                
sed 's/[^*]/[&]/'                            # 括住首字符 [] top -> [t]op
sed = file | sed 'N;s/\n/\t/' > file.num     
一些基本的正则表达式同样可用于 sed。作为一个良好的启蒙,可看 。 下列命令对于包含于一个脚本或者单行命令来说很有用。 我使用一种小伎俩来一次更改许多文件的扩展名。举个例子,从 .cxx 到 .cpp。排除最后的 先测试一下。你同样可以使用命令 来做这些,如果安装了的话。或者使用 bash 内建命令。

编程

C 基础

strcpy(newstr,str)                        /* 拷贝 str 到 newstr */
expr1 ? expr2 : expr3                     /* if (expr1) expr2 else expr3 */
x = (y > z) ? y : z;                      /* if (y > z) x = y; else x = z; */
int a[]={0,1,2};                          /* 初始化数组 (或者 a[3]={0,1,2}; */
int a[2][3]={{1,2,3},{4,5,6}};            /* 初始化二维数组 */
int i = 12345;                            /* 从 i 转换成 char str */
char str[10];
sprintf(str, "%d", i);

C 实例

一个最小化的 C 程式 simple.c:
#include <stdio.h>
main() {
int number=42;
printf("The answer is %i\n", number);
}
编译:
# gcc simple.c -o simple
# ./simple
The answer is 42

C++ 基础

*pointer                                  // 指向对象的指针
&obj                                      // 对象 obj 的地址
obj.x                                     // 类(对象) obj 成员 x
pobj->x                                   // 指针 pobj 指向类(对象)成员 x
                                          // (*pobj).x 同 pobj->x

C++ 实例

来一个稍微现实一点的 C++ 程序,我们在一个头文件(IPv4.h)中创建一个类并且实现它(IPv4.cpp),然后创建一个程式来使用其功能。这个类的成员方法实现了 IP 地址从一串整数转换成我们熟知的点分格式。这是一个最小化的 C++ 程式和多源文件(multi-source)的编译。

IPv4 class

IPv4.h:

#ifndef IPV4_H#define IPV4_H#include <string>namespace GenericUtils {                          // 创建 namespaceclass IPv4 {                                      // 类定义public:
IPv4();
~IPv4();
std::string IPint_to_IPquad(unsigned long ip);// 成员方法接口};
} //namespace GenericUtils #endif // IPV4_H

IPv4.cpp:

#include "IPv4.h"#include <string>#include <sstream>using namespace std;                              // 使用 namespaceusing namespace GenericUtils;
IPv4::IPv4() {} // 默认构造/析构函数IPv4::~IPv4() {}
string IPv4::IPint_to_IPquad(unsigned long ip) { // 成员方法实现 ostringstream ipstr; // 使用字符串流 ipstr << ((ip &0xff000000) >> 24) // 位右移 << "." << ((ip &0x00ff0000) >> 16)
<< "." << ((ip &0x0000ff00) >> 8)
<< "." << ((ip &0x000000ff));
return ipstr.str();
}

程序 simplecpp.cpp

#include "IPv4.h"#include <iostream>#include <string>using namespace std;int main (int argc, char* argv[]) {
string ipstr; // 定义变量 unsigned long ipint = 1347861486; // 数字形式的 IP GenericUtils::IPv4 iputils; // 创建一个类的对象 ipstr = iputils.IPint_to_IPquad(ipint); // 调研类的成员方法 cout << ipint << " = " << ipstr << endl; // 输出结果 return 0;
}
编译和执行:
# g++ -c IPv4.cpp simplecpp.cpp                # 编译成目标文件
# g++ IPv4.o simplecpp.o -o simplecpp.exe      # 连接目标代码,生成可执行文件
# ./simplecpp.exe 
1347861486 = 80.86.187.238
使用 ldd脚本检查并列出可执行程序所依赖的共享库文件。这个命令同样可以用来检查共享库的丢失。
# ldd /sbin/ifconfig

简单的 Makefile

相应的最小化多源文件(multi-source)编译 Makefile 显示如下。每一个命令行必须以 tab开始!可以将一个较长行使用反斜线"\"来分解为多行。
CC = g++CFLAGS = -OOBJS = IPv4.o simplecpp.osimplecpp: ${OBJS}
${CC} -o simplecpp ${CFLAGS} ${OBJS}clean:
rm -f ${TARGET} ${OBJS}

在线帮助

文档

其他 Unix/Linux 参考

That's all folks!