0. man 的使用
linux man手册包括如下几个章节:
1、Standard commands (标准命令)
2、System calls (系统调用)
3、Library functions (库函数)
4、Special devices (设备说明)
5、File formats (文件格式)
linux命令查看文件夹大小6、Games and toys (游戏和娱乐)
7、Miscellaneous (杂项)
8、Administrative Commands (管理员命令)
9 其他(Linux特定的), 用来存放内核例行程序的文档。
使用时,可指定章节
1.常用快捷键
1.1:程序控制
1.1.1:显示桌面: X4+D/*(winkey键)键暂称为X4键,即win 键*/
1.1.2:最小化所有窗口:X4+M
1.1.3:打开我的电脑:X4+E
1.1.4:搜索文件或者文件夹:X4+f
1.1.5:还原最小化窗口:X4+M+shift
1.1.6:打开“运行”对话框:X4+r
1.1.7:打开“工具管理器(内有放大镜 +屏幕键盘)”:X4+U
1.1.8:关闭当前程序:alt + F4
1.1.9:切换程序:alt + table
1.1.10:取消当前任务:esc
1.2: 程序内控制
1.2.1:F2:重命名所选项目
1.2.2:F3:搜索文件或者文件夹
1.2.3:F4:显示我的电脑或者资源管理器中的地址栏列表
1.2.4:F5:刷新当前窗口
1.2.5:F10:激活当前程序的菜单条
1.2.5:F4+ctrl:在允许同时打开多个文档的程序中关闭当前文档
1.3:word 绝活
1.3.1:连续3个“=”,然后回车,输出一条双直线
1.3.2:连续3个“~”,然后回车,输出一条波浪线
1.3.3:连续3个“*”或者“#”,然后回车,输出点线或者一条三直线,其中中间较粗
1.3.4:Ctrl+[ 缩小文字 Ctrl+] 放大文字
1.3.5:Ctrl+B 粗体
1.3.5:Ctrl+W :关闭程序
1.3.6:Alt+回车 查看文件属性 Alt+双击文件 查看文件属性
1.3.7:Shift+空格 半\全角切换
1.3.8 快速选择 :SHIFT+任何箭头键在窗口或桌面上选择多项,或者选中文档中的文本
1.4:快速关机: win + U + U
快速重启: win + U + R
快速待机: win + U + S

2.1:私有IP
10.0.0.0-10.255.255.255
126.15.0.0-126.31.255.255
192.168.0.0-192.168.255.255
2.2:ip范围
A类网络的IP地址范围为:1.0.0.1-127.255.255.254;
B类网络的IP地址范围为:128.1.0.1-191.255.255.254;
C类网络的IP地址范围为:192.0.1.1-223.255.255.254。
3.编译生成动态链接库
3.1 编译:gcc -fPIC -c xxx.c
3.2 链接:gcc -shared -o libxxx.so xxx.o
3.3 链接时指定入口函数:ld a.o b.o -e main -o ab
3.4 链接时指定控制脚本:ld -T link.script
4.linux shell 命令                       
4.1 管道: ls |wc -l  /*会显示执行ls命令后显示的行数,即文件个数*/
4.2 输入重定向:wc<<flag          /*输入该命令行后,下一行自动出现">"标识,输入最后一行后回车*/
>abcd ef   
/* ,会统计出行数,字数,字节数等*/
>gh,shu
>flag
2  3  11
4.3 输出重定向/*用>符号也可以,但是会将存在的内容覆盖掉*/
4.2.1:输出重定向:make >>tmp  /*会将make执行时显示的内容输出到tmp文件*/
4.2.2:错误输出重定向:make 2>>tmp2 /*会将错误输出都输出到tmp2中*/
4.2.3:make &>>tmp2 /*会将标准输出及错误输出都输出到tmp2中*/
4.4 使shell脚本可以执行:
4.4.1 :chmod 777 file
4.4.2 :sh ./file
4.5 shell脚本求和
vi sum  /*编译脚本*/
sum=`expr $1 + $2`
echo $1 + $ 2 = $sum
sh ./sum 5 6          /*执行程序*/
4.5 samba
4.5.1 : a.创建samba帐户
b.创建共享目录
c.如果linux不能访问windows,就关闭防火墙或者开启445端口
如果windows不能访问linux,就关闭防火墙(service iptables stop)
或者开启445端口及139端口(vi /etc/sysconfig/iptables,然后开启两个端口)
4.5.2 :配置
a. 主要的配置文件:/etc/f
b. 如果在windows下没有权限,则在linux下修改共享文件夹的权限s
4.6.find grep
4.6.1: find : find [path] [expression]
example : find ./ -name 'makefile'
4.6.2: grep : grep [option] PATTERN [file]  /*PATTERN :正则表达式*/
example :grep -n "led" makefile
4.7. 普通命令
4.7.1:fdisk:磁盘相关操作
4.7.2: modprobe:加载内核模块或程序
lsmod:查看内核模块
4.7.3:ls -lh:显示的文件列表中的 文件大小为 按 K 或者 M 显示
4.8. route: route add -net 192.168.62.0 netmask 255.255.255.0 gw 192.168.1.1
route del -net 192.168.122.0 netmask 255.255.255.0
4.9. a.cut:  显示每行从开头算起 num1 到 num2 的文字
b.paste: paste指令会把每个文件以列对列的方式,一列列地加以合并
join:出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。
c.patch: 修补文件
d.split:切割文件(split可将文件切成较小的文件,预设每1000行会切成一个小文件。)
<: tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
f.vim -d file1 file2
用vim突出显示单个字符的更改来表示区别.
h.
i.
4.10.反汇编 :objdump <option> file
objdump -d xx.o  /*进行反汇编*/
objdump -h xx.so  /*查看段表*/
objdump -R xx.so  /*查看重定位信息*/
4.10 tee命令:cat slayers.story |tee ss-copy1 ss-copy2 ss-copy3  /*tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。我们可利用tee把管道导入的数据存成文件,甚至一次保存数份文件。*/
4.11 diff 和 patch使用
4.11.1 创建修补文件:
diff -Nur old/ new/ >mypatch.diff
    注:-r选项按照文件目录递归创建修补文件.
      -u还是统一模式
      -N是指当diff遇到一个只存在于两个树中的一个树中的文件时,默认情况下跳过文件并且打印一个
警告到stderr.这个行为可以通过-N选项来更改,这也导致了diff认为丢失的文件实际上是存在的,但它是空的.采用这种方式,一个修补文件可以包括已经创建的文件.然后应用修补程序创建新的文件.
4.11.2 打补丁到old目录:
patch --dir old < mypatch.diff
4.11.3 恢复old目录的内容
patch --dir old -R < mypatch.diff
4.12 shell程序退出码
echo $?
4.13 设置环境变量
export 环境变量=xxx  /*请务必注意:"=" 前后不能有空格*/
4.14  readelf
readelf -h  App.bin  /*查看文件头*/
readelf -l  App.bin  /*查看程序头*/
4.15 ldconfig
当系统中安装或更新一个共享库时,就需要运行这个工具,它会遍历所有的默认共享目录,然后更新所有的软链接。
4.16 LD_DEBUG 环境变量 /*可以打开动态链接器的调试功能*/
LD_DEBUG=files  ./HelloWorld.out    /*可以打印出整个装载过程*/
5.makefile
5.1 make --debug=b  /*(备选选项 a v i j m)*/
5.2  =        /*前面的变量可以使用后面的变量*/
:= /*前面的变量不可以使用后面的变量,避免无穷递归*/
+= /*追加变量,当第一次赋值时,自动退化成 = 或者:=*/
5.3 '',""组合:
5.3.1. s1 = ‘abcd’
s2 = ‘efg’
echo "$(s1)$(s2)"    /*  'abcd''efg'  */
s1 = "abcd"
s2 = "efg"
echo "$(s1)$(s2)"    /*  abcdefg  */
5.3.2 ‘ ’和“ ”差别:单引号和双引号都能关闭shell对特别字符的处理 。不同的是,双引号没有单引号严峻,单引号关闭所有有特别作用的字符,而双引号只请求 shell漠视 大多数,具体的说,就是①美元符号②反引号③反斜杠,这3种特别字符不被漠视 。 不漠视 美元符号意味着shell在双引号内部也进行变量名调换。
5.4.模式相关
5.4.1 静态模式: $(objects):%.o:%.c
gcc -c $< -o $@
5.4.2 变量替换: foo := a.o b.o c.o
bar := $(foo:.o=.c)
或:bar := $(foo:%.o=%.c)
6.linux_file
6.1. 文件颜:
6.1.1 红:压缩文件
6.1.2 绿:可执行文件
6.1.3 蓝:目录
6.1.4 白:普通文件
6.1.5 紫:链接文件
6.2.
7.名词解释:
7.1 spinLock:自旋锁
8.c基础
8.1 逻辑移位和算术移位:在C语言标准中,只规定了无符号数的移位操作是采用逻辑移位(即左移、右移都是使用的逻辑左移和逻辑右移)。
而对于有符号数,其左移操作还是逻辑左移,但右移操作是采用逻辑右移还是算术右移就取决于机器了!(算术右移和逻辑右移的区别是:算术右移不右移符号
位,即最高位,右移后前补0还是1取决于符号位的值;逻辑右移执行时将移动符号位,右移后前补0)
因此,一个程序如果使用了有符号数的右移位操作,它就是不可移植的了。
8.2
9.svn
9.1 locale 当用svn服务器不能下载中文文件名的文件时,用 locale命令查看语言设置:export LC_ALL=en_US.UTF-8
10.vi
10.1 : 寄存器下的操作:
在复制前可以先指定一个寄存器,方法是在双引号后跟一个字母,例如"a指定了寄存器a,"B指定了寄存器B。所以,"ayy把当前行放进了寄存器a,以后就可以用"ap来粘贴寄存器a里的内容了。如果不确定寄存器里放了什么内容,可以使用:reg来查看。
Vim提供了一个很有用的特殊寄存器"+,它的内容就是系统剪贴板的内容。可以在Vim里用"+p粘贴出来。
10.2:删除:
dd:    删除一行
dw:    删除一个单词,需将光标移到单词的第一个字母。
d$:    删除当前光标到该行的行尾的字母
daw:  删除一个单词,光标在单词任意位置
dnw:  删除N个单词
dnj:    向下删除n行
dnk:    向上删除n行
J:      删除换行符,将光标移到改行,按shift+j删除行尾的换行符,下一行接上来了。
x:剪切当前字符到剪切板,前面可以加数字
s:类似x,但其后进入插入模式
10.3:复制:
yy:    复制一行
yw:    复制一个单词,需将光标移到单词的第一个字母。
yaw:  复制一个单词,光标在单词任意位置
ynw:  复制N个单词
ynj:    向下复制n行
ynk:    向上复制n行
10.4:修改:
cl:    更改当前字符
cw:    修改当前单词到结尾
cc:    修改当前行
10.5: 移动:
fx:移动光标到当前行的下一个x处
Fx:往回
w:光标往前移动一个单词
b:向后移动一个单词
0:到行首(数字0)
$:行末
H:到屏幕上面
M:到屏幕中间
L:到屏幕下面
G:到文件尾
gg:到文件首
ma:在当前位置标记一个名字为a的书签
`q:到书签a处
`.:到上次编辑文件的地方
10.6    高效查:
*:读取光标处的字符串,并且移到它再次出现的地方
#:和*类似,但是反向
/text: 从光标处搜text
?test:从光标处搜text,后续可按n继续
10.7    高效输入:
自动完成功能:ctrl + N(P),可多次操作,(在插入模式下)
快速删除并进入插入模式:c{motion}
c$ :删除到行末,并进入插入模式
ct! :删除到!,但不删除!
d{motion},和c差不多,但不进入插入模式     
:重复上一次的命令(令人惊奇的命令)
10.7: 命令
set nu:    显示行号
11.SourceInsight
11.1 快捷键 F3,F4 :分别回到查到的单词的上一处、下一处
11.2 改变函数内部的某变量名:0) 选中需替换的变量;1)按右键;2)点 Smart Rename;3)弹出框后一定要选择 smart reference match;4)注意被替换的变量是带函数名时才好使
11.3 列操作功能: 按住 【alt】后选择即可直接按列选中;
11.4 处理如下操作时:
a[0] = 1;
a[1] = 2;
a[2] = 3;
变为:(方法:在a[0] = 1;前面填一句a[0] = 0;然后列选下表,再用Renumber功能(按【ctrl】+ 【R】)弹出,设置start 数字就OK了)
a[0] = 0
a[1] = 1;
a[2] = 2;
a[3] = 3;
14.5 如何屏蔽不关注的分支,对形如:
#ifdef dev1
//hhh
#else
//xxx
#endif
/*选中该条件,如 dev1,然后鼠标右键,点击<Edit condition>,然后其他分支都会灰掉,以避免其他分支影响视听*/
14.6 配置快捷键:在菜单 option/key assignments/ 对话框里
14.7 快捷菜单一揽:wenku.baidu/view/73502d0216fc700abb68fc6e.html
【ctrl】+ 【K】 ==> 复制当前行
小键盘【+】/【-】 ==> 移到下一个/上一个函数
14.8 todo注释实现:“///TODO:”开始时,便会高亮黄显示