??xml version="1.0" encoding="utf-8" standalone="yes"?> Ubuntu System Admin 在一U上服务器上讄计划dQ?不小心选择了nanoQ?׃以前接触的是redhatpd的, 不习惯用nanoQ?于是想重设下Q?|上查了下, 貌似没有。?/p> 无奈之下Q重装一台服务器试Q?发现当你W一ơcrontab -e选择~辑器的时候就会提醒你Q?以后若要该改变选择Q?输入select-editor 唉,q是不够l心啊。?sudo select-editor 选择vim 搞定。?/p> 选择的数字是“3”Q?/usr/bin/vim.basic?/p> Linux scp命o用于Linux之间复制文g和目录,具体如何使用q里好好介绍一下,从本地复制到q程、从q程复制到本地是两种使用方式。这里有具体举例Q?/p> ================== Linux scp 命o ================== scp 可以?2?linux L间复制文Ӟ 命o基本格式Q?/p> scp [可选参数] file_source file_target ====== ?本地 复制?q程 ====== * 复制文gQ?/p> * 命o格式Q?/p> scp local_file remote_username@remote_ip:remote_folder 或?/p> scp local_file remote_username@remote_ip:remote_file 或?/p> scp local_file remote_ip:remote_folder 或?/p> scp local_file remote_ip:remote_file W?,2个指定了用户名,命o执行后需要再输入密码Q第1个仅指定了远E的目录Q文件名字不变,W?个指定了文g名; W?,4个没有指定用户名Q命令执行后需要输入用户名和密码,W?个仅指定了远E的目录Q文件名字不变,W?个指定了文g名; * 例子Q?/p> scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music/001.mp3 scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music/001.mp3 * 复制目录Q?/p> * 命o格式Q?/p> scp -r local_folder remote_username@remote_ip:remote_folder 或?/p> scp -r local_folder remote_ip:remote_folder W?个指定了用户名,命o执行后需要再输入密码Q?/p> W?个没有指定用户名Q命令执行后需要输入用户名和密码; * 例子Q?/p> scp -r /home/space/music/ root@www.cumt.edu.cn:/home/root/others/ scp -r /home/space/music/ www.cumt.edu.cn:/home/root/others/ 上面 命o ?本地 music 目录 复制 ?q程 others 目录下,卛_制后?q程 ?../others/music/ 目录 ====== ?q程 复制?本地 ====== ?q程 复制?本地Q只要将 ?本地 复制?q程 的命???个参?调换序 卛_Q?/p> 例如Q?/p> scp root@www.cumt.edu.cn:/home/root/others/music /home/space/music/1.mp3 scp -r www.cumt.edu.cn:/home/root/others/ /home/space/music/ 最单的应用如下 : scp 本地用户?@IP 地址 : 文g?1 q程用户?@IP 地址 : 文g?2 [ 本地用户?@IP 地址 :] 可以不输?, 可能需要输入远E用户名所对应的密?. 可能有用的几个参?: -v 和大多数 linux 命o中的 -v 意思一?, 用来昄q度 . 可以用来查看q接 , 认证 , 或是配置错误 . -C 使能压羃选项 . -P 选择端口 . 注意 -p 已经?rcp 使用 . -4 使用 IPV4 地址 . -6 使用 IPV6 地址 . Linux scp命o的用方法应该可以满_家对Linux文g和目录的复制使用了?/p> ?用svn switch --relocate 改变repository的时候可能遇 ?nbsp;The respository at '...' has uuid '...', but the WC has '...'Q这是因?checkout的svn 跟switch to的svn的uuid不一栗?/p> UID是respository创徏时自动生成的repo的n份idQSVN 使用UUID判断是否为同一个repo?/p> 解决ҎQ?/p> 1. 重新checkout 2. 如果本地checkout的和relocate 的repo不是同一个repoQ则需要将q两个repo的uuid讄ZL。当然了Q这两个repo应该是svnsync出来的镜像。内容完全一致才可以?当时我是export导出原来的库Q然后再importq新库的Q也是可以修Ҏ库的uuid的;) 讄uuid的方法?/p> a. 登陆到svn server b. svnlook uuid /path/to/your/repo c. svnamdin setuuid /path/to/your/repo newuuid Ubuntu System Admin 在一U上服务器上讄计划dQ?不小心选择了nanoQ?׃以前接触的是redhatpd的, 不习惯用nanoQ?于是想重设下Q?|上查了下, 貌似没有。?/p> 无奈之下Q重装一台服务器试Q?发现当你W一ơcrontab -e选择~辑器的时候就会提醒你Q?以后若要该改变选择Q?输入select-editor 唉,q是不够l心啊。?sudo select-editor 选择vim 搞定。?/p> 选择的数字是“3”Q?/usr/bin/vim.basic?/p> linux备䆾真是太方便了,其实我们常用的tar是很好的增量备份Y?/span> 使用 tar -g 参数q行增量备䆾实验 完整备䆾: #建立试路径与档?span> #执行完整备䆾 #查看 tarball 内容 增量备䆾: #新增一个档?span> #执行W一ơ的增量备䆾 (注意 tarball 档名) #查看 tarball 内容 #新增一个档? q异动一个档案内?span> #执行W二ơ的增量备䆾 (注意 tarball 档名) #查看 tarball 内容 q原备䆾资料: #清空试资料 #开始进行资料还?span> #查看试资料 使用 tar -u 参数q行增量备䆾 W一ơ备? #建立试路径与档?span> #备䆾资料 #查看 tarball 内容 增量备䆾: #新增一个档? q异动一个档案内?span> #执行增量备䆾 (-u 参数只能执行於未压羃?span> tarball) #查看 tarball 内容 q原备䆾资料: #清除试资料 #解包 tarball #查看试资料 要对q程q行监测和控?首先必须要了解当前进E的情况,也就是需要查看当前进E?而ps命o是最基本同时也是非常强大的进E查看命?使用该命 令可? 定有哪些进E正在运行和q行的状态、进E是否结束、进E有没有僵尸、哪些进E占用了q多的资源等{?M大部分信息都是可以通过执行该命令得到的. ps命o最常用的还是用于监控后台进E的工作情况,因ؓ后台q程是不和屏q键盘这些标准输?输出讑֤q行通信?所以如果需要检其情况,便可以用ps命o? ps [选项] 下面对命令选项q行说明∶ -e昄所有进E? -f全格? -h不显C标? -l长格? -w宽输? a昄l端上的所有进E?包括其他用户的进E? r只显C正在运行的q程. x昄没有控制l端的进E? O[+|-] k1 [,[+|-] k2 [,…]] ҎSHORT KEYS、k1、k2中快捷键指定的多 U排序顺序显CE列?对于ps的不同格式都存在着默认的顺序指?q些? 认顺序可以被用户的指定所覆盖.其中“+”字符是可选的,“-”字符是倒{?定键的方? 最常用的三个参数是u、a、x. ps ax 命o昄一个当前系l进E的列表Q该列表中包括其他用h有的q程。要昄q程以及它们的所有者,使用 ps aux 命o。该列表是一个静态列表;换一句话_它是在你启用q项命o时正在运行的q程的快照。如果你需要一个时L新的q行q程列表Q用另一个指令: top 命o? ps 的输Z很长。要防止它快速从屏幕中滑q,你可以把它管道输出给 less 命oQ? 之后Q你可以输入数字来控制显C多条q程信息Q要退出可以按Qshift+! 你可以?ps 命o?grep 命o的组合来查看某进E是否在q行。譬如,要判?Emacs 是否在运行,使用下面q个命oQ? chkconfig命o主要用来更新Q启动或停止Q和查询pȝ服务的运行信息。}记chkconfig不是立即自动止或激zM个服务,它只是简单的改变了符可接?/p> 使用语法Q?br style="line-height: normal;" />chkconfig [--add][--del][--list][pȝ服务] ?chkconfig [--level <{代号>][pȝ服务][on/off/reset] chkconfig 在没有参数运行时Q显C用法。如果加上服务名Q那么就查这个服务是否在当前q行U启动。如果是Q返回trueQ否则返回false。如果在服务名后面指 定了onQoff或者resetQ那么chkconfi 会改变指定服务的启动信息。on和off分别指服务被启动和停止,reset指重|服务的启动信息Q无论有问题的初始化脚本指定了什么。on和off开 养Ipȝ默认只对q行U?Q?Q?有效Q但是reset可以Ҏ有运行有效?/p> 参数用法Q?br style="line-height: normal;" /> --add 增加所指定的系l服务,让chkconfig指o得以理它,q同时在pȝ启动的叙q文件内增加相关数据?br style="line-height: normal;" /> --del 删除所指定的系l服务,不再由chkconfig指o理Qƈ同时在系l启动的叙述文g内删除相x据?br style="line-height: normal;" /> --level<{代号> 指定ȝl服务要在哪一个执行等U中开启或x?br style="line-height: normal;" /> {0表示Q表C关?br style="line-height: normal;" /> {1表示Q单用户模式 chkconfig --list [name]Q显C所有运行pȝ服务的运行状态信息(on或offQ。如果指定了nameQ那么只昄指定的服务在不同q行U的状态?br style="line-height: normal;" /> chkconfig --add nameQ增加一Ҏ的服务。chkconfig保每个q行U有一启?S)或者杀?K)入口。如有缺,则会从缺省的init脚本自动建立?br style="line-height: normal;" /> chkconfig --del nameQ删除服务,q把相关W号q接?etc/rc[0-6].d删除?br style="line-height: normal;" /> chkconfig [--level levels] nameQ设|某一服务在指定的q行U是被启动,停止q是重置?/p> q行U文Ӟ 使用范例Q?br style="line-height: normal;" />chkconfig --list #列出所有的pȝ服务 如何增加一个服务: 问题一Q?/p> @ERROR: chroot failed rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3] 原因Q?/p> 服务器端的目录不存在或无权限。创建目录ƈ修正权限可解决问题?/span> 问题二: @ERROR: auth failed on module tee rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3] 原因Q?/p> 服务器端该模块(teeQ需要验证用户名密码Q但客户端没有提供正的用户名密码,认证p|。提供正的用户名密码解x问题?/span> 问题三: @ERROR: Unknown module ‘tee_nonexists’ rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3] 原因Q?/p> 服务器不存在指定模块。提供正的模块名或在服务器端修Ҏ你要的模块以解决问题?/span> 问题四: password file must not be other-accessible continuing without password file Password: 原因Q?/p> q是因ؓrsyncd.pwd rsyncd.secrets的权限不对,应该讄?00。如Qchmod 600 rsyncd.pwd 问题五: rsync: failed to connect to 218.107.243.2: No route to host (113) rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9] 原因Q?/p> Ҏ没开机、防火墙L、通过的网l上有防火墙LQ都有可能。关闭防火墙Q其实就是把tcp udp?73端口打开?/span> 问题六: rsync error: error starting client-server protocol (code 5) at main.c(1524) [Receiver=3.0.7] 原因Q?/p> /etc/rsyncd.conf配置文g内容有错误。请正确核对配置文g?/span> 问题七: rsync: chown "" failed: Invalid argument (22) 原因Q?/p> 权限无法复制。去掉同步权限的参数卛_?q种情况多见于Linux向Windows的时? “^\d+$” //非负整数Q正整数 + 0Q? 匚w中文字符的正则表辑ּQ?[\u4e00-\u9fa5] \ 下一个字W标Cؓ一个特D字W、或一个原义字W、或一个后向引用、或一个八q制转义W?/p> ^ 匚w输入字符串的开始位|。如果设|了 RegExp 对象的Multiline 属性,^ 也匹?’\n’ ?’\r’ 之后的位|?/p> $ 匚w输入字符串的l束位置。如果设|了 RegExp 对象的Multiline 属性,$ 也匹?’\n’ ?’\r’ 之前的位|?/p> * 匚w前面的子表达式零ơ或多次?/p> + 匚w前面的子表达式一ơ或多次? {h?{1,}?/p> ? 匚w前面的子表达式零ơ或一ơ? {h?{0,1}?/p> {n} n 是一个非负整敎ͼ匚w定的n ơ?/p> {n,} n 是一个非负整敎ͼ臛_匚wn ơ?/p> {n,m} m ?n 均ؓ非负整数Q其中n <= m。最匹?n ơ且最多匹?m ơ。在逗号和两个数之间不能有空根{?/p> ? 当该字符紧跟在Q何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面Ӟ匚w模式是非贪婪的。非贪婪模式可能少的匹配所搜烦的字W串Q而默认的贪婪模式则尽可能多的匚w所搜烦的字W串?/p> . 匚w?“\n” 之外的Q何单个字W。要匚w包括 ’\n’ 在内的Q何字W,请用象 ’[.\n]’ 的模式? (?:pattern) 匚wpattern 但不获取匚wl果Q也是说这是一个非获取匚wQ不q行存储供以后用?/p> (?=pattern) 正向预查Q在M匚w pattern 的字W串开始处匚w查找字符丌Ӏ这是一个非获取匚wQ也是_该匹配不需要获取供以后使用?/p> (?!pattern) 负向预查Q与(?=pattern)作用相反 x|y 匚w x ?y?/p> [xyz] 字符集合?/p> [^xyz] 负值字W集合?/p> [a-z] 字符范围Q匹配指定范围内的Q意字W?/p> [^a-z] 负值字W范_匚wM不在指定范围内的L字符?/p> \b 匚w一个单词边界,也就是指单词和空格间的位|?/p> \B 匚w非单词边界?/p> \cx 匚w由x指明的控制字W?/p> \d 匚w一个数字字W。等价于 [0-9]?/p> \D 匚w一个非数字字符。等价于 [^0-9]?/p> \f 匚w一个换늬。等价于 \x0c ?\cL?/p> \n 匚w一个换行符。等价于 \x0a ?\cJ?/p> \r 匚w一个回车符。等价于 \x0d ?\cM?/p> \s 匚wMI白字符Q包括空根{制表符、换늬{等。等价于[ \f\n\r\t\v]?/p> \S 匚wM非空白字W。等价于 [^ \f\n\r\t\v]?/p> \t 匚w一个制表符。等价于 \x09 ?\cI?/p> \v 匚w一个垂直制表符。等价于 \x0b ?\cK?/p> \w 匚w包括下划U的M单词字符。等价于’[A-Za-z0-9_]’?/p> \W 匚wM非单词字W。等价于 ’[^A-Za-z0-9_]’?/p> \xn 匚w nQ其?n 为十六进制{义倹{十六进制{义值必Mؓ定的两个数字长?/p> \num 匚w numQ其中num是一个正整数。对所获取的匹配的引用?/p> \n 标识一个八q制转义值或一个后向引用。如?\n 之前臛_ n 个获取的子表辑ּQ则 n 为后向引用。否则,如果 n 为八q制数字 (0-7)Q则 n Z个八q制转义倹{?/p> \nm 标识一个八q制转义值或一个后向引用。如?\nm 之前臛_有is preceded by at least nm 个获取得子表辑ּQ则 nm 为后向引用。如?\nm 之前臛_?n 个获取,?n Z个后跟文?m 的后向引用。如果前面的条g都不满Q若 n ?m 均ؓ八进制数?(0-7)Q则 \nm 匹配八q制转义?nm?/p> \nml 如果 n 为八q制数字 (0-3)Q且 m ?l 均ؓ八进制数?(0-7)Q则匚w八进制{义?nml?/p> \un 匚w nQ其?n 是一个用四个十六q制数字表示的Unicode字符?/p> 匚w中文字符的正则表辑ּQ?[u4e00-u9fa5] 匚w双字节字W?包括汉字在内)Q[^x00-xff] 匚wI的正则表辑ּQn[s| ]*r 匚wHTML标记的正则表辑ּQ?<(.*)>.*</1>|<(.*) />/ 匚w首尾I格的正则表辑ּQ?^s*)|(s*$) 匚wEmail地址的正则表辑ּQw+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 匚w|址URL的正则表辑ּQhttp://([w-]+.)+[w-]+(/[w- ./?%&=]*)? 利用正则表达式限制网表单里的文本框输入内容Q?/p> 用正则表辑ּ限制只能输入中文Qonkeyup=”value=value.replace(/[^u4E00-u9FA5]/g,”)” onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^u4E00-u9FA5]/g,”))” 用正则表辑ּ限制只能输入全角字符Q?onkeyup=”value=value.replace(/[^uFF00-uFFFF]/g,”)” onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^uFF00-uFFFF]/g,”))” 用正则表辑ּ限制只能输入数字Qonkeyup=”value=value.replace(/[^d]/g,”) “onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^d]/g,”))” 用正则表辑ּ限制只能输入数字和英文:onkeyup=”value=value.replace(/[W]/g,”) “onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^d]/g,”))” =========常用正则表达?/p> 匚w中文字符的正则表辑ּQ?[\u4e00-\u9fa5] 匚w双字节字W?包括汉字在内)Q[^\x00-\xff] 匚wI的正则表辑ּQ\n[\s| ]*\r 匚wHTML标记的正则表辑ּQ?<(.*)>.*<\/\1>|<(.*) \/>/ 匚w首尾I格的正则表辑ּQ?^\s*)|(\s*$) 匚wIP地址的正则表辑ּQ?(\d+)\.(\d+)\.(\d+)\.(\d+)/g // 匚wEmail地址的正则表辑ּQ\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匚w|址URL的正则表辑ּQhttp://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? sql语句Q^(select|drop|delete|create|update|insert).*$ 1、非负整敎ͼ^\d+$ 2、正整数Q^[0-9]*[1-9][0-9]*$ 3、非正整敎ͼ^((-\d+)|(0+))$ 4、负整数Q^-[0-9]*[1-9][0-9]*$ 5、整敎ͼ^-?\d+$ 6、非负QҎQ^\d+(\.\d+)?$ 7、正点敎ͼ^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)| ([0-9]*[1-9][0-9]*))$ 8、非正QҎQ^((-\d+\.\d+)?)|(0+(\.0+)?))$ 9、负点敎ͼ^(-((正QҎ正则?))$ 10、英文字W串Q^[A-Za-z]+$ 11、英文大写串Q^[A-Z]+$ 12、英文小写串Q^[a-z]+$ 13、英文字W数字串Q^[A-Za-z0-9]+$ 14、英数字加下划线Ԍ^\w+$ 15、E-mail地址Q^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ 16、URLQ^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$ 17、邮政编码:^[1-9]\d{5}$ 18、中文:^[\u0391-\uFFE5]+$ 19、电话号码:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9] \d{6,7}(\-\d{1,4})?$ 20、手机号码:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$ 21、双字节字符(包括汉字在内)Q^\x00-\xff 22、匹配首|(^\s*)|(\s*$)Q像vbscript那样的trim函数Q?/p> 23、匹配HTML标记Q?lt;(.*)>.*<\/\1>|<(.*) \/> 24、匹配空行:\n[\s| ]*\r 25、提取信息中的网l链接:(h|H)(r|R)(e|E)(f|F) *= *(’|”)?(\w|\\|\/|\.)+(’|”| *|>)? 26、提取信息中的邮件地址Q\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 27、提取信息中的图片链接:(s|S)(r|R)(c|C) *= *(’|”)?(\w|\\|\/|\.)+(’|”| *|>)? 28、提取信息中的IP地址Q?\d+)\.(\d+)\.(\d+)\.(\d+) 29、提取信息中的中国手机号码:(86)*0*13\d{9} 30、提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8} 31、提取信息中的中国电话号码(包括Ud和固定电话)Q?\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14} 32、提取信息中的中国邮政编码:[1-9]{1}(\d+){5} 33、提取信息中的QҎQ即数Q:(-?\d*)\.?\d+ 34、提取信息中的Q何数?Q?-?\d*)(\.\d+)? 35、IPQ?\d+)\.(\d+)\.(\d+)\.(\d+) 36、电话区P/^0\d{2,3}$/ 37、腾讯QQP^[1-9]*[1-9][0-9]*$ 38、帐?字母开_允许5-16字节Q允许字母数字下划线)Q^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 39、中文、英文、数字及下划U:^[\u4e00-\u9fa5_a-zA-Z0-9]+$ head <filename>: 你可以通过head命o查看具体文g最初的几行内容Q该命o默认是前10行内容,如果你想查看前面更多内容Q你可以通过一个数字选项来设|,例如 head -20 install.log 通过上面命o你可以查看install.logq个文g前面20行的内容 与head命o相反Qtail命o是用来查看具体文件后面几行的内容Q默认情况下Q是查看该文件尾10行的内容Q同P如果x看后面更多内容,也是通过数字选项来设|,例如 tail -20 install.log 你还可以使用 tail 来观察日志文件被更新的过E。?-f 选项Qtail 会自动实?br /> 地把打开文g中的新消息显C到屏幕上。例如,要即时观?/var/log/messages的变化,以根用户w䆾?shell 提示 原文Q?div>http://hi.baidu.com/winlei/blog/item/9f5909ca8869e24af31fe73f.html 在安装完成linux后,q入l端Q输入命令行ifconfigQ会提示bash: ifconfig: command not found。这是因为在我们的环境变量里Q还没有讄完整变量。如果我们输?sbin/ifconfig?usr/bin/gcc可以执行命令行?Z不输入命令行的完整\径,最好给用户配置好\径。vi ~/.bash_pro 本h的做法是Q直接在输入 要是惌׃n目录能访问,可以使用命o #setenforce 0 暂时停掉SELinux 使用 #setenforce 1 启用SELinux q行yum,pȝ提示Existing lock /var/run/yum.pid: another copy is running as pid 3046 问题描述Q登录系l后,执行yum install vsftpd,提示Existing lock /var/run/yum.pid: another copy is running as pid 5048.有时{?~10分钟yum可以正常使用?/p> 问题分析Q主要原因就是yum在自动更斎ͼ所以再q行yum׃报这个错?/p> 问题解决Q只要关掉正在执行的yum更新可以了可以了Q停止正在运行的yumq程Q或者禁用开动启动yumq程?/p> 操作步骤Q?/p> 停止yumq程 [root@localhost ~]# rm -f /var/run/yum.pid Z么会有一个yumq程在执行呢Q?/p> 原来是yum自动更新机制自动ȀzMyumq程Q用下面的命令停止自动更斎ͼ [root@localhost ~]# /etc/init.d/yum-updatesd stop 停止 yum-updatesdQ?[定] 如果我们不需要自动更新服务,可以直接删除它?br /> #yum remove yum-updatesd #yum update l过长时间学习SambaQ于是和大家分n一下,你可能会遇到Fedora Samba安装问题Q看完本文你肯定有不收Pq里介lFedora Samba安装问题的解x?希望本文能教会你更多东西。在我们使用 Windows 作ؓ客户机的时候,通常有文件、打印共享的需求?/p> Fedora 9 Samba 服务器的构徏 作ؓWindows |络功能之一Q通常可以?Windows 客户Z间通过 Windows Network 固有的功能实现这些要求。然而,通过 Fedora Samba 我们也可以让一?Fedora L来兼?Windows |络Q实现同L功能Q进而充分发?Fedora L的可用性?/p> 本文主要介绍怎样通过 Fedora Samba 服务器的构徏实现 Windows |络中的文g׃n?br />SMB协议是徏立在 NetBIOS协议之上的应用协议,是基于TCP138?39两个端口的服务,NetBIOS出现之后QMicrosoft׃用NetBIOS实现?一个网l文?打印服务pȝ。这个系l基于NetBIOS讑֮了一套文件共享协议,MicrosoftUC为SMBQServer Message BlockQ?协议Q这个协议被用于Lan Manager和Windows服务器系l中Q实C同计机之间׃n打印机和文g{。因此,Z让Windows和Unix/Linux计算机相集成Q?最好的办法是?Unix/Linux计算Z安装支持SMB协议的Y件。这样用Windows的客L不需要更改设|, p像用Windows NT或Windows 2000服务器一P使用Unix/Linux计算Z的共享资源了?br />Fedora Samba使SMB协议q行在NetBIOS协议上,q且使用Windows的NetBEUI协议让Unix/Linux服务器可以在Windows的网l邻居上被访问到?/p> 安装Fedora Samba 配置Fedora Samba 接下来,创徏要通过Fedora Samba ׃nl?Windows |络的专用目录?/strong> [root@sample ~]# mkdir /home/suyang/samba ← 建立׃n文g专用目录 在进行到服务端的q接之前Q需要预先对用于dFedora Samba 的用戯行设|。这里我们以 Fedora Samba 标准? Samba 用户数据库管理工?#8220;smbpasswd”ZQ创建用于登录Fedora Samba 的用h据。这里需要注意的一点:? smbpasswd 创徏用户的前提是Q系l用户中存在该用?-- 在基于系l用户之上,才可以创用户在Fedora Samba 用户数据库中的信息?/p> [root@sample ~]# smbpasswd -a suyang ← 系l用?suyangQ例Q加入到Fedora Samba 用户数据?br />New SMB password: ← 输入该用L于登录Fedora Samba 的密?br />Retype new SMB password: ← 再次认输入该密?br /> [root@sample ~]# chkconfig smb on ← 讄Fedora Samba 自启?br />[root@sample ~]# chkconfig --list smb ← 认Fedora Samba 启动标签Q确?2-5 ?on 的状?br />smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off [注意Q] fedora 8的安装过E?/span> PSQ?/span>
开始安装的?/span>fedora 12,׃不是全部安装Q很多东西没有自带(比如svn,比如samba,bison,Q然后即使后来安装了Q也仍然在编译的时候出现很多问题,~译不通过Q接q搞?/span>2天,都没有结果,于是今天安装?/span>fedora 8,选择了Y件开发,但是重启的时候出现停住不动的情况Q这个没有关p,自己按键重启好了?/span> fedora 8遇到的一些问题: 1.
ifconfig 命o找不刎ͼ是因为环境变?/span>PATH里没?/span>sbin ?/span>/usr/sbin,补充q去卛_?/span> 2.
fedora 的相应信息: ip:172.28.6.36 ====================================================================== 安装fedoraQ?/span>fedora 8Q?/span> 我的fedorapȝ?/span>IPQ?/span>172.28.6.36 原本?/span>windowspȝ没关p,使用光驱安装Q电脑启动的时候按F2或其他某个键q入BIOS选择使用光驱启动可以把原本?/span>windows的系l安装成Fedorapȝ了?/span> dev/sda1 我的Fedorapȝ的信息记录: Hostname: fedoraOfKiki Root Password:82632955 PSQ安装过E中Q用中文指C后面的安装 使用完全安装Q把所有Y仉勾上?/span> 分区那一步,我选择Use
entire driveQ用整个硬盘空_卛_部革掉了Q?/span> 安装OK,重启Q创?/span>User(kiki,82632955) su 切换用户 2. ?/span>fedora中先安装samba服务器,安装Ҏ如下Q?/span> yum update 更新?/span> yum –y install samba-swat yum –y install bision 3.使用
tar jvxf tar?/span> 直接这?/span>toolchain解到opt/toolchains/uclibc-mipsel-gcc-4.2.3下面 不管在哪里解压,只要解压好的东西放?/span> /opt/toolchains/目录下面卛_?/span> 解压2?/span>toolchains ?/span>/opt目录下面 63281 toolchainsQ?/span> 5358 toolchainsQ?/span> 4. 发现fedora里面q没有自?/span>svn,所以用命?/span>yum –y install svnq行安装Q居?/span>OK了?/span> 后面在尝试编译的q程中发现提C没?/span>gcc,所以我安?/span>gcc了(yum –y install gccQ?/span> ====================================================================== Bison 是替代yacc的语法解析器. Bison能生成可以分析文本文件结构的E序. 安装下列E序: bison ?yacc 安装下列库文?/em>: liby.a bison 是替代yacc的语法分析程序生成器. yacc?Yet Another Compiler Compiler(又一个编译器的编译器)的羃? yacc是bison的包装脚本,实际上是?y的参数调用bison. q个是ؓ了和那些用yacc而不是bison的程序兼? liby.a ?Yacc 库,包含了与Yacc兼容?yyerror 和主要函数。通常q个库没什么用Q但 POSIX 要求有它.
]]>root@ubuntu:
/var/www
# select-editor
Select an editor. To change later, run
'select-editor'
.
1.
/bin/ed
2.
/bin/nano
<---- easiest
3.
/usr/bin/vim
.basic
4.
/usr/bin/vim
.tiny
]]>svn switch --relocate 错误 The respository at '...' has uuid '...', but the WC has '...'
]]>
root@svn2:~/pmc-sz/pmc# date
Mon Dec 16 13:57:51 EST 2013
修改Zh?br />root@svn2:~/pmc-sz/pmc# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
root@svn2:~/pmc-sz/pmc# date
Tue Dec 17 03:01:07 CST 2013
重新讄旉
root@svn2:~/pmc-sz/pmc# date -s "2013-12-16 14:04:50"
Mon Dec 16 14:04:50 CST 2013
]]>root@ubuntu:
/var/www
# select-editor
Select an editor. To change later, run
'select-editor'
.
1.
/bin/ed
2.
/bin/nano
<---- easiest
3.
/usr/bin/vim
.basic
4.
/usr/bin/vim
.tiny
mkdir test
touch test/{a,b,c};
在test下生成三个文?/span>
tar -g snapshot -zcf backup_full.tar.gz test
tar ztf backup_full.tar.gz
test/
test/a
test/b
test/c
touch test/d
tar -g snapshot -zcf backup_incremental_1.tar.gz test
tar ztf backup_incremental_1.tar.gz
test/
test/d
touch test/e
echo 123 > test/a
tar -g snapshot -zcf backup_incremental_2.tar.gz test
tar ztf backup_incremental_2.tar.gz
test/
test/a
test/e
rm -rf test
tar zxf backup_full.tar.gz
tar zxf backup_incremental_1.tar.gz
tar zxf backup_incremental_2.tar.gz
ls test
a b c d e
mkdir test
touch test/a test/b test/c
tar zcf backup.tar.gz test
tar ztf backup.tar.gz
test/
test/a
test/b
test/c
touch test/d
echo 123 > test/a
gunzip backup.tar.gz
tar uf backup.tar test
gzip backup.tar
tar ztf backup.tar.gz
test/
test/a
test/b
test/c
test/
test/a
test/d
rm -rf test
tar zxf backup.tar.gz
ls test
a b c d
]]>
wulong中含 三个文g?include source pro 和makefile文g?br /> include 中包?hai.h头文件?br /> source 中包?hello.c文g?br /> pro 中包?haia.c haib.c文g?br />
makefile文g内容有两U写法:
makefile W一U写法:
Q/Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q?br /> CC=gcc Q选择~译器类型ؓgcc
VPATH= include : pr : source #列明文g存放目录
hello: hello.o haia.o haib.o
$(CC) -o hello hello.o haia.o haib.o
hello.o:hello.c hai.h
$(CC) -c hello.c
haia.o: haia.c hai.h
$(CC) -c haia.c
haib.o: haib.c hai.h
$(CC) -c haib.c
.PHONY: clean
clean:
rm hello $(obj)
Q/Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q?br />
makefileW二U写法(化版Q:
Q/Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*
CC=gcc #选择~译U类
VPATH= include : pr : source #在include pr source 三目录下查找文g
obj= hello.o haia.o haib.o Q?br />
hello:$(obj) Q?br /> $(CC) -o hello $(obj)
$(obj): hai.h
.PHONY: clean
clean:
rm hello $(obj)
Q/Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*
hai.h文g内容为:
Q/Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*
#include "stdio.h"
extern void haiprinta();
extern void haiprintb();
Q/Q*Q*Q*Q*Q*Q*Q*Q*
hello.c内容为:
Q/Q*Q*Q*Q*Q*Q*Q*Q*
#include "../include/hai.h"
int main(void)
{
haiprinta();
haiprintb();
return 0;
}
Q/Q*Q*Q*Q*Q*Q*Q*
haia.c内容为:
Q/Q*Q*Q*Q*Q*Q*
#include "../include/hai.h"
void haiprinta()
{
printf("hai aaaaaaaaaa\n");
}
Q/Q*Q*Q*Q*Q*Q*Q*
haib.c内容为:
Q/Q*Q*Q*Q*Q*Q*Q*
#include "../include/hai.h"
void haiprintb()
{
printf("haib bbbbbbbbbbbbbb\n");
}
Q/Q*Q*Q*Q*Q*Q*Q*Q*Q*Q?br />
2。make 调用makefile生成 可执行文?hello
3. q行 hello昄打印l果Q?br /> [HAI@localhost wulong]$ ./hello
hai aaaaaaaaaa
haib bbbbbbbbbbbbbb
[HAI@localhost wulong]$
到此l束Q恭喜!
原文Q?div>http://blog.tianya.cn/blogger/post_show.asp?BlogID=2058037&PostID=17326631
]]>
使用权限 : 所有用?
使用方式 : sleep [--help] [--version] number[smhd]
说明 : sleep 可以用来目前动作gq一D|?
参数说明 :
--help : 昄辅助讯息
--version : 昄版本~号
number : 旉长度Q后面可?s、m、h ?d
其中 s 为秒Qm ?分钟Qh 为小Ӟd 为日?
例子 :
昄目前旉后gq?1 分钟Q之后再ơ显C时?:
date;sleep 1m;date 转:
]]>ps aux | less
ps ax | grep emacs
转:
]]>
{2表示Q无|络q接的多用户命o行模?br style="line-height: normal;" /> {3表示Q有|络q接的多用户命o行模?br style="line-height: normal;" /> {4表示Q不可用
{5表示Q带囑Ş界面的多用户模式
{6表示Q重新启?br style="line-height: normal;" /> 需要说明的是,level选项可以指定要查看的q行U而不一定是当前q行U。对于每个运行Q只能有一个启动脚本或者停止脚本。当切换q行U时Qinit不会重新启动已经启动的服务,也不会再ơ去停止已经停止的服务?/p>
?个被chkconfig理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。第一行告诉chkconfig~省启动的运行以及启动?停止的优先。如果某服务~省不在Mq行U启动,那么使用 - 代替q行U。第二行Ҏ务进行描qͼ可以用\ 跨行注释?br style="line-height: normal;" />例如Qrandom.init包含三行Q?br style="line-height: normal;" /># chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
# higher quality random number generation.
chkconfig --add httpd #增加httpd服务
chkconfig --del httpd #删除httpd服务
chkconfig --level httpd 2345 on #讄httpd在运行别ؓ2???的情况下都是onQ开启)的状?br style="line-height: normal;" />chkconfig --list #列出pȝ所有的服务启动情况
chkconfig --list mysqld #列出mysqld服务讄情况
chkconfig --level 35 mysqld on #讑֮mysqld在等U??为开行服务,--level 35表示操作只在{3?执行Qon表示启动Qoff表示关闭
chkconfig mysqld on #讑֮mysqld在各{为onQ?#8220;各等U?#8221;包括2???{
1.服务脚本必须存放?etc/ini.d/目录下;
2.chkconfig --add servicename
在chkconfig工具服务列表中增加此服务Q此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;
3.chkconfig --level 35 mysqld on
修改服务的默认启动等U?/p>
原文Q?div>http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796873.html
]]>
]]>
“^[0-9]*[1-9][0-9]*$” //正整?
“^((-\d+)|(0+))$” //非正整数Q负整数 + 0Q?
“^-[0-9]*[1-9][0-9]*$” //负整?
“^-?\d+$” //整数
“^\d+(\.\d+)?$” //非负点敎ͼ正QҎ + 0Q?
“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$” //正QҎ
“^((-\d+(\.\d+)?)|(0+(\.0+)?))$” //非正点敎ͼ负QҎ + 0Q?
“^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$” //负QҎ
“^(-?\d+)(\.\d+)?$” //点?
“^[A-Za-z]+$” //?6个英文字母组成的字符?
“^[A-Z]+$” //?6个英文字母的大写l成的字W串
“^[a-z]+$” //?6个英文字母的写l成的字W串
“^[A-Za-z0-9]+$” //由数字和26个英文字母组成的字符?
“^\w+$” //由数字?6个英文字母或者下划线l成的字W串
“^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$” //email地址
“^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$” //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // q???
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // ??q?
“^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$” //Emil
/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/ //电话L
“^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$” //IP地址
匚w双字节字W?包括汉字在内)Q[^\x00-\xff]
匚wI的正则表辑ּQ\n[\s| ]*\r
匚wHTML标记的正则表辑ּQ?<(.*)>.*<\/\1>|<(.*) \/>/
匚w首尾I格的正则表辑ּQ?^\s*)|(\s*$)
匚wEmail地址的正则表辑ּQ\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匚w|址URL的正则表辑ּQ^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
匚w帐号是否合法(字母开_允许5-16字节Q允许字母数字下划线)Q^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匚w国内电话LQ?\d{3}-|\d{4}-)?(\d{8}|\d{7})?
匚w腾讯QQP^[1-9]*[1-9][0-9]*$
元字W及其在正则表达式上下文中的行ؓQ?/p>
(pattern) 匚wpattern q获取这一匚w?/p>
或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\’:+!]*([^& lt;>\"\"])*$
]]>
Linux 2.6内核新特?/strong>
支持更多处理器,比如AMD64、一些大型机及嵌入式{,同时改进了对已有处理器的支持?采用抢占式内核,使交互式操作的响应速度大大提高? 修改了I/O子系l部分,保证在各U工作负荷下I/O都有很好的响应速度? 更新了IDE/ATA、SCSI{存储ȝQ解军_改善了以前的一些问题,比如2.6版内核可以直接通过IDE驱动E序来支持IDE CD/RW讑֤Q而不必像以前一栯使用一个特别的SCSI模拟驱动E序? 大量改进文gpȝQ比如支持Windows的逻辑L理器、重写对NTFS文gpȝ的支持、改qHPFS{? 改进和部分重写了Modules功能Q之更E_?改进对USB的支持,使之能够支持当前多数L的USB讑֤?加强ҎU设备的支持? 增加了ALSAQAdvanced Linux Sound ArchitectureQ。ALSA是有希望取代旧式OSSQOpen Sound SystemQ的另一U声音系l,能支持全杜比录音及回放、无~韟뀁支持声韛_成设备、USB声卡{?支持更多U类和型L多媒体设备? |络功能新增了对IPSec协议的支持,改进了对IPv6的支持?新增“Enable different security models”? ~译pȝ的改q?...... 实际?.6版内核的很多新特性都是针对企业应用的改进Q比如最大支?4个CPU?4GB内存、支持NUMAQ非一致存储访问){。对于普通PC?P?.6版内怸感受到的是USB支持、响应速度、音频、无U设备、PDA{方面的提高?br />
Windows VS Linux内核
从应用角度看QLinux内核的主要Q务是I/O讑֤理、TCP/IP及Q务调度等。Linux内核表现出高度的可配|性和独立性,可以UL到多U^?上。Linux内核的可配置、可UL性得Linux在许多领域中被广泛用。Linux的标准内核发布版本体U大概在40?0MB左右Q而现在,一?在评估板上试验用的嵌入式LinuxpȝQ用ARM或M68Kpd嵌入式处理器Q只用到2MB大小的内核,同样能够实现|络功能和完整的d调度。这?得Linux可以适用于从高端服务器到嵌入式应用的各等U^台?与之相比QWindowsq没有明的内核概念Q它更适合于台式机。Window NT从未真正地打入高端服务器领域Q嵌入式领域的WinCEpȝ也同样遇C一些结构性困难? 从性能角度比较Q衡量一个内怼劣的重要指标是多d环境下的安全性和d调度效率。Linux在这斚wl承了Unix的优炏V在多Q务效率的比较 上,Linux内核中的消息机制和通信模式使其在速度和性能上都更具优势?而Windows 9xpdQ包括Windows MeQƈ没有实现安全的多d环境QWindows 2000/NT虽在安全性上下了功夫Q但l果仍然存在诸多的安全隐患和漏洞?
Linux 2.6内核VS Linux 2.4内核
新内核较之以往内核在很多方面都有突破性地改进Q前面已有列举。这里再单对几个较突出的斚wq行比较Q读者对新内核的新特性能有一个更清晰的了解?
1Q服务器领域 在大型服务器领域QUnix一直独占鳌头。最新发布的Linux 2.6版内核增加了对安全性的改进和支持,从而Linux具备了与Unix在这一领域抗衡的基? Linux的稳定性和安全性一直都是商安睐它的主要原因,大型服务器更是Linux在商业领域发展的梁柱?.6版内核对更多新硬件类型的支持中也?含了对大型服务器更多的支持。这些服务器既有q行i386处理器的Q也有运行其它处理器的。这些特性是新近加入Linux的,q有许多优化工作需要完成?但这是Linux发展相当q速的一个领域,预计在不久的来QLinux成为服务器领域更有力的竞争者?在Linux 2.6内核中,整个Z核心的安全体p,即类Unix操作pȝ中的用户权限Q已l被划分成一些可以被替换的安全模块。不q,目前提供的安全模块只有一 个缺省的Q仅仅当作一个向我们展示如何自定义安全模块的例子。作个变化的一部分Q核心的所有部分都被更斎ͼ以具有更l粒度的用户讉K控制Q而不是像?前那L“用户”pȝ。虽然几乎所有的Linuxpȝ仍然存在具有完全访问权限的root用户Q但上述改变使得cLinuxpȝ可以不再必须如此? 另一个与安全相关的变化是一些二q制模块不能再重载系l调用,也不能看到及修改pȝ调用表。这极大地限制了非开放源码模块在核心中的讉KQ同时也修补?GPL版权协议在这斚w可能存在的漏z?br />
2Q文件系l?
Q?Q本地文件系l?
相对于Linux 2.4而言Q?.6版内核对于文件系l的支持在很多方面都有大的改q? 日志文gpȝ的最大优Ҏ它的定w能力。一个设计精良的日志文gpȝ在损坏恢复方面,比传l的日志文g实现h更容易、时间更短、返回服务功能更快?2.6版内核增加了Ҏ志文件系l功能的支持Q解决了2.4版在q方面的不? 2.6版内核在文gpȝ上的关键变化q包括对扩展属性及POSIX标准讉K控制的支持。ext2/ext3作ؓ大多数Linuxpȝ~省安装的文件系l, ?.6版内怸是改q最大的一个。最主要的变化是Ҏ展属性的支持Q即l指定的文g在文件系l中嵌入一些元数据。很多其它操作系l,如Windows?l大量地使用了这U扩展属性。但Unixpȝ操作pȝ一般都q不能很好地支持扩展属性,很多用户U程序需要进行更新才能保存和转储q些扩展属性信息?
Q?Q网l文件系l?
Linux下块讑֤最常见的用法是在块讑֤上徏立一个文件系l。但q不是所有文件系l都作ؓ块设备被加蝲Q像q程、共享内存和讑֤文gpȝ{完全都是虚?的。还有其它一些文件系l是通过|络加蝲的,其完成的Ҏ多样Q许多操作系l都提供自己的方法来处理。Linux可以识别当前的大部分|络文gpȝ QNFSQ?Linux 2.4内核在显著提高NFS加蝲目录E_性的同时Q还提供对NFS协议最新版?#8212;—NFSv3的支持。NFSv3能更好地支持文gpȝ同步、文仉定等?能?Linux 2.6内核中,|络文gpȝ同样得到了更新和改进。最大的改进是实验性地支持NFSv4协议在客L和服务器端的实现。新版本有更强、更安全的n份认?Q采用加密技术)Q支持更化的锁管理、伪文gpȝ{。Linux 2.6q没有实现所有NFS4的新特征Q但目前的版本已l比较稳定,q能够支持一些品的应用。同Ӟ改进了基于Linux的NFS服务端的实现Q从?h更好的扩展性、完整性、健壮性。通过新的NFSd文gpȝ能够更加便捷地管理,而不再需要通过pȝ调用来管理? 除了改进对网l文件系l的支持QLinux 2.6在对Windowscd的网l文件系l支持方面也q行了改q。Linux新内核能够在SMB协议的客L对该协议的很多版本提供不错地支持。同 Ӟ2.6新内核无需在内核编译阶D|动选择从Windows 9x或Windows NT/2000加蝲的选项Q而能够自动检远端操作系l的cdQƈ能够q行必要地排错?Linux 2.6q加入了相对新的一些分布式|络文gpȝQ支持一个逻辑卷上的文件分布在多个节点中?
3Q嵌入式pȝ
嵌入式系l是一U以应用Z心,计算机技术ؓ基础QY?g可裁剪,适用于应用系l对功能、可靠性、成本、体U、功耗要求严格的专用计算机系l? 嵌入式领域是Linux应用的广阔天地。uCLinux是Linux应用在微控制器^台的一个项目,是一U针对不带MMU的ARM微处理器的嵌入式操作p?l。uCLinux完全W合GNU/GPL公约Q完全开放代码,它的很多Ҏ都和Linux相同Q最典型的特征是无MMUQ内存管理单元)?Linux 2.6内核扩展多嵌入式q_支持的一个主要途径是把uCLinux的大部分q入L内核功能中。目前许多嵌入式处理器如ARMpd{,很多都是无MMU 的。uCLinux在嵌入式pȝ中的应用非常q泛。因此,Linux 2.6ҎMMU体系l构的支持,及将Linux和uCLinux合ƈ到统一的新内核中,无疑为Linux在嵌入式领域的广泛应用加重了砝码?
ȝ
我们从三个不同方面提U挈领地介绍了Linux 2.6内核的一些特点,旨在者展C新内核的设计理念和相对?.4版内核的q步。一个设计优良的操作pȝ应该有一个精一致的构?在添加新功能时不 必破坏原有的l构Qƈ在后l发展中能够保持前后一致。Linux׃最初设计时的科学性,在后来的发展中没有在设计思想上做q大的变动。虽然Linux?很多版本Q但是通过POSIX标准Q这些不同版本的pȝ在源代码上都能保持高度的兼容。因此,无论是最新推出的Linux 2.6版本内核Q还是仍在不断完善稳定的2.4版本内核Q或者是来功能更加强大的新内核QLinux都将会在兼容的基上l进步?br />原文Q?div>http://www.ibm.com/developerworks/cn/linux/theme/kernel/index.html
]]>
########################## 灰太狼的讄 ############
set shiftwidth=4 //讄~进的空格数?
set autoindent //讄自动~进Q每行的~进g上一行相{?/span>
set ai
set cin //讄使用C语言的自动羃q方?/span>
set nu //昄行号
set nobackup
syntax enable
]]>
下键入以下命令:
tail -f /var/log/messages
]]>
[zjw@localhost ~]$ PATH=$PATH:/sbin
[zjw@localhost ~]$ export PATH
[zjw@localhost ~]$ PATH=$PATH:/usr/bin
[zjw@localhost ~]$ export PATH
]]>
总计 156
drwxr-xr-x 2 root root 4096 06-16 17:33 .
drwxr-xr-x 103 root root 12288 06-16 15:30 ..
-rw-r--r-- 1 root root 20 2008-11-27 lmhosts
-rw-r--r-- 1 root root 231 06-16 17:31 smb.conf
-rw-r--r-- 1 root root 9781 05-26 17:34 smb.conf.bak
-rw-r--r-- 1 root root 9898 06-16 14:04 smb.conf.h
-rw-r--r-- 1 root root 9902 06-16 13:19 smb.conf.hcz
-rw-r--r-- 1 root root 16384 06-16 13:32 .smb.conf.hcz.swp
-rw-r--r-- 1 root root 9845 06-16 13:24 smb.conf.hzc
-rw-r--r-- 1 root root 291 06-16 14:36 smb.conf.n
-rw-r--r-- 1 root root 9894 06-16 10:44 smb.conf.ok
-rw-r--r-- 1 root root 97 2008-11-27 smbusers
[root@localhost samba]#
[root@localhost samba]# cat smb.conf
[global]
workgroup = LinuxSir
netbios name = kiki_fedora
server string = kiki_fedora
security = user
[work]
path = /home/dsl
writable = yes
browseable = yes
guest ok = yes
[root@localhost samba]#
[root@localhost samba]#
[root@localhost samba]#
[root@localhost samba]# /etc/rc.d/init.d/sm
smartd smb smolt
[root@localhost samba]# /etc/rc.d/init.d/smb restart
关闭 SMB 服务Q?nbsp; [定]
启动 SMB 服务Q?nbsp; [定]
[root@localhost samba]#
[root@localhost samba]# smbpasswd -a root
惛_我的fedora机器Q?72.28.6.36上面搭徏sambaQ实现我本机windows机器Q?72.28.6.27之间的文件共享,
问题Q始l在windows讉K时提C无权限Q?br />解决ҎQ?. 首先要把fedora机器上的ifconfig命o和samba服务都开启来Q?br />2. 在fedora机器上按照上面所C的命oq行讄sambaQƈ创徏samba账户Qroot/xxxxxxx;kiki/xxxxxx;q且查看q行׃n的文件属性是rootq是kiki.
3. 最关键的一个问题:SELINUXD无权限访问,setenforce=0停掉selinux搞定?br />3.
]]>
那就是SELinux在作怪了
]]>
不过删除该服务之后,以后的更新要用下面的命o手工来完成了?/p>
原文Qhttp://www.lutuzhi.com/howto/112.html
]]>
首先Q通过 yum 来在U安装Fedora Samba ?br />yum -y install samba
然后Q通过~辑 /etc/samba/smb.conf Q根据需求配|Fedora Samba。在q里Q本文的原则是只文件共享应用于内网Qƈ让将要被׃n的目录拥有充分的d权限属性?br />[root@sample ~]# vi /etc/samba/smb.conf ← ~辑Fedora Samba 的配|文?
workgroup = WORKGROUP //讄工作l?br />server string = %U's samba %v //描述信息QU代表当前登陆用户
netbios name = fedora //netbios名字Qfedora9 默认没有启用
log file = /var/log/samba/log.%m //日志文g保存路径Qm你的windowsL?br />max log size = 50 //日志最大容?br />security = user //安全U别Quser需要用户名和密码,shareU别则不?br />[samba] //建立一个共享名为samba的共?br />comment = samba //描述信息
path = /home/suyang/samba //׃n路径
public = no //是否允许guest用户讉KQ相当于guest ok = yes/noQ?br />writable = yes //是否可写
write list = suyang //可以写入的用户列表(@代表用户l)
[root@sample ~]# chown -R nobody. /home/suyang/samba ← 讄专用目录归属?nobody
[root@sample ~]# chmod 777 /home/suyang/samba ← 专用目录属性设|ؓ 777
启动Fedora Samba 服务
在启动Fedora Samba 服务之前Q首先将防火墙设|中Fedora Samba 所用到的端口进行开放?br />[root@sample ~]# vi /etc/sysconfig/iptables ← ~辑 iptables 配置文g
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT ← 扑ֈ此行Q在下面d如下行:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 137 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 138 -j ACCEPT
[root@sample ~]# /etc/rc.d/init.d/iptables restart ← 重新启动 iptables Q新的规则生效
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]
最后,启动Fedora Samba 服务(含两个守护进E:smb,nmb)?/strong>
[root@sample ~]# chkconfig nmb on ← 讄 nmb 自启?br />[root@sample ~]# chkconfig --list nmb ← 认 nmb 启动标签Q确?2-5 ?on 的状?br />nmb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@sample ~]# /etc/rc.d/init.d/smb start ← 启动 Fedora Samba 服务
Starting SMB services: [ OK ]
[root@sample ~]# /etc/rc.d/init.d/nmb start ← 启动 nmb 服务
Starting NMB services: [ OK ]
1. smbd 监听139 TCP端口 讄׃n目录、打印等
2. nmbd 137. 138 UDP端口理组、NetBIOS {解析工?br />q?里要注意的是fedora9Z安全考虑Q把smb和nmb两个服务l分MQ^时我们在使用Fedora samba服务的时候,在启动smb服务的同时nmbq个服务也会跟着启动Qfedora9中则不然Q这造成了我们设|好fedora9中共享的时候, 只能使用[url=file://ip/]""ip[/url] 来访问,而不能用[url=file://计算机名/]""计算机名[/url] 来访问,解决的办法就是同时启动smb和nmb服务?/p>原文Qhttp://www.router.net.cn/Article/36807.html
]]>
]]>Bison的内?/a>
短说?/a>
]]>
PATH=:/sbin:/usr/sbin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/kiki/bin
echo $PATH
//
原文Qhttp://bbs.chinaunix.net/archiver/?tid-2056830.html
]]>
?Fedora 12 ZQ通过图文方式讲解 Fedora 的安装过E和配置信息?/p>
从?a title="开始{?Linux" >开始{?Linux》一文中提供?Fedora 12 的下载地址Q下载好之后可q行安装了。这套教E假设你没有M Linux 的技术背景,完全从头开始学习,所以我们首先在虚拟Zq行操作和学习?/p>
如何使用虚拟Z在本文讨_误行查扄兌料?/p>
作ؓq个教程中用的pȝQ徏议将 Fedora 的虚拟硬盘设|ؓ 8G。有?Fedora 分区的内容在以后的文章中在详l讨论?/p>
准备好了虚拟机和 Fedora 12 的光盘镜像,下面开始了……
?Fedora 12 的镜像蝲入虚拟机Qƈ讄从光盘启动,以下是q行 Fedora 12 安装光盘的首个菜单。选择W一?—?"Install or upgrade an existing system(安装新系l?或?升一个已存在的系l?"
然后会看C大片如下的检和准备信息Q等待就好了……
准备完成Q提C是否测试光盘。这一步的意思在正式安装前,?CD ?DVD 是否有损坏。因为我们直接从官方下蝲的境像,所以可以选择 Skip (略过)?—?实际上,使用光盘安装也没什么好,如果盘坏了,出来是坏盘也没什么太大帮?:D
之后出?Fedora 的安装向|到这里就说明 Fedora 开始收集基本配|信息了。直?Next
选择安装q程中的语言 —?English(English)。这个语a选择只对安装q程有效Q我们?EnglishQ之后会讨论如何讄中文界面?/p>
选择键盘cd —?U.S.EnglishQ下一?/p>
接下来设|计机名称Q大家ؓ机器取一个好听有名字吧,或者直接就?Fedora :DQ下一?/p>
选择时区。用上面的囑Ş也可以,使用下面的下拉框也行Q选择 Asia/ShanghaiQ下一?/p>
讄 root 密码(也称“根密?#8221;)。root 相当?Windows 下的 AdministratorQ这个̎户对整个pȝ有完全控制权。所以密码要讄得强悍一?:D
PS:W合复杂的密码的要求?#8220;长度大于6位,包含大写字母、小写字母、数字、符号四cM的三U?#8221;Q如果密码不够复杂,pȝ会提C?#8220;密码强度不够Q是否一定要使用”?/p>
到这里,Fedora 12 的基本安装信息就攉好了Q很单吧。坏消息是,整个安装q程q没完;好消息是Q接下来的内容也很简?:D
图文讲解 Fedora 的安装过E,说明安装q程中的基本配置信息?/p>
按照?a title="安装 Fedora 12 (一) - 基本讄" >安装 Fedora 12 (一) - 基本讄》和?a title="安装 Fedora 12 (? - 盘分区及Y件包选择" >安装 Fedora 12 (? - 盘分区及Y件包选择》安装好 Fedora 之后Q重启计机之后?Fedora q行最后的一些设|?/p>
重启计算Z后,启动 Fedora 便会看到一个欢q界面,左侧的菜单表C度,告诉我们接下来还要做的事情有 —?了解授权信息、创建用戗设|日期和旉、硬件信息。点?Forword (前进)?/p>
Fedora 授权信息Q下一?/p>
创徏新用?—?因ؓ Root (根用? Ҏ个系l有安装控制权限Q从安全性方面考虑Q要求创建普通用戗ؓ了方便,暂时先将用户名和命名讄?lugirQ相兛_容会在讲用户账户时提到?/p>
填写好用户名、全名、密码、确认密码栏之后Q下一步?/p>
讄旉日期Q然后下一?/p>
昄g信息Q保持默?"Do not send profile (不发送配|?"Q点?Finish (完成)
pȝ提示 “是否真的不发送硬仉|?#8221;Q选择 “No, do not send (不发?”
之后便会昄d界面Q以后每ơ开机都会看到这个界?/p>
选择你的用户名,输入密码Q登录,可以进入桌面了Q有Ҏ动h心吧Q哈?/p>
到这里,Fedora 12 的安装就全部完成了,在进行下一节之前,可以四处点点Q随便看?:D
原文Q?http://lugir.com/install-fedora-3.html
#!/bin/bash
#1.sh
#判断一文g是不是字W或块设备文Ӟ如果是将其拷贝到 /dev 目录?br />
#file executable: chmod 755 1.sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo -e “The program will Judge a file is or not a device file.\n\n”
read -p “Input a filename : ” filename
if [ -b "$filename" -o -c "$filename" ]
then
echo “$filename is a device file” && cp $filename /dev/ &
else
echo “$filename is not a device file” && exit 1
fi
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-
2. 设计一个shellE序Q添加一个新lؓclass1Q然后添加属于这个组?0个用P用户名的形式为stdxxQ其中xx?1?0?/p>
#!/bin/bash
#2.sh
#设计一个shellE序Q添加一个新lؓclass1Q然后添加属于这个组?0个用P用户名的形式为stdxxQ其中xx?1?0?br />
#file executable: chmod 755 2.sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
groupadd class1
for i in {9901..9930}
do
xx=`echo $i | sed ’s/99//g’`
useradd -g class1 std$xx
echo std$xx | passwd std$xx –stdin
echo -e “user std$xx password is std$xx” >> /root/newuser.txt
done
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?br /> 3Q编写shellE序Q实现自动删?0个̎L功能。̎号名为stud1至stud50?/p>
#!/bin/bash
#4.sh
#~写shellE序Q实现自动删?0个̎L功能。̎号名为stud1至stud50?br />
#file executable: chmod 755 3.sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
i=1
while [ i -le 50 ]
do
let i++
userdel -r stud$i
done
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?br />
4Q某pȝ理员需每天做一定的重复工作Q请按照下列要求Q编制一个解x案:
Q?Q在下午4 :50删除/abc目录下的全部子目录和全部文gQ?br />
Q?Q从?:00~下?:00每小时读?xyz目录下x1文g中每行第一个域的全部数据加入到/backup目录下的bak01.txt文g内;
Q?Q每逢星期一下午5:50?data目录下的所有目录和文g归档q压~ؓ文gQbackup.tar.gzQ?br />
Q?Q在下午5:55IDE接口的CD-ROM卸蝲Q假设:CD-ROM的设备名为hdcQ;
Q?Q在早晨8:00前开机后启动?/p>
vim /etc/crontab 在里面增加下面内容:
50 16 * * * root rm -rf /abc/* 2>&1 &
00 8-18 * * * root cat /xyz/x1|awk ‘{print $1}’ >> /backup/bak01.txt 2>&1 &
50 17 * * 1 root cd /data;tar -zcvf backup.tar.gz * 2>&1 &
55 17 * * * root umount /hdc 2>&1 &
5Q在早晨8:00前开机后启动 –> q个我不是很明白它的意?不知道是不是8点前开机就启动上面的设定,8点后才开机就不用启动的意思?br />
姑且用下面这个命令吧
chkconfig –level 2345 crond on
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?br />
5Q设计一个shellE序Q在每月W一天备份ƈ压羃/etc目录的所有内容,存放?root/bak目录里,且文件名
为如下Ş式yymmdd_etcQyy为年Qmm为月Qdd为日。ShellE序fileback存放?usr/bin目录下?/p>
vim /usr/bin/fileback.sh
#!/bin/bash
#fileback.sh
#file executable: chmod 755 fileback.sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
filename=`date +%y%m%d`_etc.tar.gz
cd /etc/
tar -zcvf $filename *
mv $filename /root/bak/
—————————————————?br />
vim /etc/crontab 加入
* * 1 * * root ./fileback.sh &
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-
6Q有一普通用h在每周日凌晨零点零分定期备䆾/user/backup?tmp目录下,该用户应如何做?
可以? contab -e 来做Q和上面一题差不多?/p>
7.设计一个ShellE序Q在/userdata目录下徏?0个目录,即user1~user50Qƈ讄每个目录的权限,?br /> 中其他用L权限为:读;文g所有者的权限为:诅R写、执行;文g所有者所在组的权限ؓQ读、执行?/p>
#!/bin/bash
#7.sh
#file executable: chmod 755 7.sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
for ((i=1;i<=50;i++))
do
mkdir -p /usrdata/user$i
cd /usrdata
chmod 754 user$i
done
原文Qhttp://www.intgoo.com/100555.html
本教E将会向你展C如何用vi──一个强大的可视化编辑器。通过使用特别?span class="emphasis">备忘?/span>ҎQ本教程可你成Z名熟l的vi用户Q而不要求大量的时间。在q个vi教程中,你将会学会如何移动、编辑文本、用插入模式、复制和_脓文本Q以及用诸如可视化模式和多H口~辑q样重要的vim扩展?
如果你没听说qviQ或者不习惯使用viQ那么你应该对自己负责Q利用本教程赶紧学习q个最行最强大的Linux/UNIX可视化编辑程序?
只有特别的一件事会学习vi很困䏔─vi有众多的命o。ؓ了有效地使用viQ你需要记住不命令。这会需要很长时_而本教程的目标之一是不占用你的很多时间。所以,我们一开始就有一个挑战──我是如何具体地帮助你在短期就C众多的命令?
Z处理q个挑战Q在我们q行本教E的q程中,会逐渐地生成一个vi备忘单。这个单子会包括所有重要的vi命o。当你完成本教程后,你将能在忘记了某个命 令的时候参考该备忘单。时间一长,׃你记住了命oQ你会渐渐地来不依赖于备忘单。通过使用备忘单的方式Q你能前所未有地更快学习如何用viQ?
在本指南中,我将使用几个技巧来帮助你学习。首先,我会描述某个命o是如何工作的Q正如之前你所期望的。然后,我将让你试着在vi中用该命oQؓ了练 习)。接下来我会让你该命o转录到备忘单上(以备来参考)。如果你x快地学习viQ执行所有这些步骤是很重要的。在vi中试用命令ƈ转录到备忘单? 会帮助你记忆该命o?
vi有很多版本,而我会向你展示如何使用一个叫?span class="code" dir="ltr">vim的版本。vim非常行Qƈ有vi漂亮了很多的众多扩展Q当我示范vim专用的命令时Q我会加以说明)。如果你需要安装vimQ可以从www.vim.org那里得到它。除了增强版的命令行viQvimq增加了gvimQ一个漂亮的囑Ş化编辑器Q可以被配置来调用优U的GTK+囑Ş化界面库。这是我pȝ上的gvim截图Q?
囄 1.1: VIM截图 |
![]() |
如果你是vi新手Q请让gvimq行在你的系l上。对于初学者来_在图形化界面下用vi可以使事情变得简单一些?
在用vi~辑文g之前Q你需要知道如何用vi在文件中Ud。vi有许多移动命令,而我们将会看到其中的很多。ؓ教程中的q一部分找一个不重要的文本文Ӟq过输入以下命o来将它蝲入到vi中:
代码 2.1: 文件蝲入vi |
$ vi myfile.txt |
如果你已安装了vimQ输?span class="code" dir="ltr">vim myfile.txt。如果你更喜Ƣ用gvimQ输?span class="code" dir="ltr">gvim myfile.txt?span class="path" dir="ltr">myfile.txt应该是你pȝ上的某个文本文g名?
vi启动之后Q你应该能在屏幕上看到蝲入的文本文g的一部分了。恭喜──你已l进入vi了!vi不像其他的编辑器Q当它启动时处于一个叫?span class="emphasis">命o模式的特D模式中。这意味着如果你按键盘上的l键,光标会向右移一位,而不是在当前光标位置上插入一?span class="code" dir="ltr">l。在命o模式下,键盘上的字符是用来向vi传送命令的Q而不是在文本中插入文字字W的。移动命令是最重要的命令类型之一Q让我们来看看其中的一些?
当在命o模式中时Q你可以分别使用h?span class="code" dir="ltr">j?span class="code" dir="ltr">k?span class="code" dir="ltr">l键来向左、下、上和右Ud。如果你正在使用C版本的viQ你也可以用方向键来达到同L目的?span class="code" dir="ltr">h?span class="code" dir="ltr">j?span class="code" dir="ltr">k?span class="code" dir="ltr">l键很方便Q这是因Z旦你适应了它们,你就可以不用把手指从主键盘上Ud在文g中四处移动。试着?span class="code" dir="ltr">h?span class="code" dir="ltr">j?span class="code" dir="ltr">k?span class="code" dir="ltr">l键(q有方向键)在文本文件中Ud吧。试着?span class="code" dir="ltr">h键直CUd了一行的开始处。注意,vi不允怽在行首时?span class="code" dir="ltr">h键{到前一行。同样地Q你也不能在行尾时用l键{C一行?
vi转到当前行的首或提供了特别的捷径。你可以?span class="code" dir="ltr">0Q零Q键来蟩转到一行的开始,以及$键蟩转到末尾。试试它们看看。由于vi有许多便LUd命oQ它也是一个伟大的“页工具”Q如同more或者less命oQ。用vi做翻也会帮助你q速学习所有的Ud命o?
你也可以?span class="code" dir="ltr"><CTR>F?span class="code" dir="ltr"><CTR>B来一ơ前q或后退一c现代版本的viQ比如vimQ也允许你用PGUP?span class="code" dir="ltr">PGDOWN键达到同L目的?
vi也允怽向左x词移动。按w键移C一个词?span class="emphasis">W一?/span>字符。按e键移C一个词?span class="emphasis">最后一?/span>字符。按b键移?span class="emphasis">前一?/span>词的W一个字W。试验一下它们?
玩过词语Ud命o之后Q可能你已经注意到vi像foo-bar-oniq样的词看做是五个分开的词Q这是因为vi默认地按照空?span class="emphasis">或?/span>标点来区分词语。因?span class="code" dir="ltr">foo-bar-oni被看做是五个词:foo?span class="code" dir="ltr">-?span class="code" dir="ltr">bar?span class="code" dir="ltr">-?span class="code" dir="ltr">oni?
有时q是你想要的Q而有时这却不是。幸q的是,vi也能理解“长词”的概cvi仅按?span class="emphasis">I格或是新行分解长词。这意味着?span class="code" dir="ltr">foo-bar-oni被看做是五个vi词语Ӟ却仅仅是一个vi长词?
你可以用一?span class="emphasis">大写?/span>词语Ud命o来蟩转到前一个或后一个长词。用W键来跌{C一个长词的W一个字W,?span class="emphasis">E键蟩转到下一个长词的最后一个字W,?span class="emphasis">B键蟩转到前一个长词的W一个字W。试验一下它们,然后比较一下匹配的单词和长词移动命令,直到你理解了它们之间的不同?
在我们开始把它们集中到备忘单之前Q再来看看几个命令。你可以?span class="code" dir="ltr">(?span class="code" dir="ltr">)键来Ud前一句或后一句的开始处。还有,你可以敲{?span class="code" dir="ltr">}键来转到当前D落或下一D落的开始处。试验一下它们?
我们已经讲过了基本的Ud命oQ但是你q需要知道其他一些命令。输?span class="code" dir="ltr">:q会退出vi。如果这个不灵,那你可能意外C改了文g某处。如要让vi攑ּ所有更改而退出,输入:q!。现在你应该位于命o提示W处了?
在vi中,所有以:开头的命o都被UCؓex模式命o。这是因为vi有一个内建的非可视化的编辑器Q叫?span class="emphasis">ex。它可以像sed那样用来做基于行的编辑操作。还有,它可以用来退出,像我们刚刚看到的那栗只要你在命令模式下敲了Q键,׃转到ex模式。如果这发生在你w上了,那你会面对一?提示W,而且输入回RW会使整个屏q向上翻ƈ退出。只要输入viq回车就能又回到vi模式?
我们已经讲过了许多命令,现在是把它们转录到备忘单的时候了。ؓ此你需要一张信U,或者A4大小的纸张(我们会把许多信息都记在q张单子上!Q。这张图 片展CZ我的备忘单,转录了到现在为止所有我们讲到的命o。如果可能的话请模仿我的布局Q这h们可以把所有的信息都集中在一张单子里?
囄 5.1: 备忘?/p> |
![]() |
让我们l学习命令的脚步。在命o模式中,你可以输?span class="code" dir="ltr">G键来跌{到特定的行。要跌{到文件的首行Q输?span class="code" dir="ltr">1G。注?span class="code" dir="ltr">G是大写的?
如果你想跌{C一处某个文本模式的出现Q输?span class="code" dir="ltr">/<regexp>后敲回R。用你正在寻扄正则表达式替?lt;regexp>。如果你不知道怎么使用正则表达式,不要烦躁──输入foo会移动到下一?span class="emphasis">foo出现的地斏V对此你唯一需要注意的是,当你惛_?span class="code" dir="ltr">^?span class="code" dir="ltr">.?span class="code" dir="ltr">$?span class="code" dir="ltr">\字符Ӟ用反斜线W号Q?span class="code" dir="ltr">\Q做q些W号的前~。比如,foo\.gif会搜索下一?#8220;foo.gif”的出现?
要向前重复搜索,?span class="code" dir="ltr">n键。要向后重复搜烦Q输?span class="code" dir="ltr">N。跟往怸P在你自己的vi~辑器里试q些命o。你也可以输?span class="code" dir="ltr">//来重复上一ơ搜索?
我们已经讲过了如何?span class="emphasis">ex命o:q来从vi中退出。如果你惌保存更改Q输?span class="code" dir="ltr">:w。如果你惌更改保存到另一个文Ӟ输入:w filename.txt来另存ؓfilename.txt。如果你想保存ƈ退出,输入:x或?span class="code" dir="ltr">:wq?
在vimQ还有其他高Uvi~辑器,像elvisQ中Q你可以同时打开多个~冲区。要在新H口中打开文gQ输?span class="code" dir="ltr">:sp filename.txt?span class="path" dir="ltr">filename.txt会在一个新的分割窗口中昄为编辑打开。要在各H口间切换,输入<CTR>w<CTR>wQcontrol-w两次Q。你输入的Q?span class="code" dir="ltr">:q?span class="code" dir="ltr">:q!?span class="code" dir="ltr">:w?span class="code" dir="ltr">:x命o只会作用于当前激zȝH口?
现在是开始学习一些简单编辑命令的时候了。此处我们将要涉及的命o被认为是单的Q是因ؓq些命o使你一直处于命令模式中。更复杂一些的命o会自动将你放到插入模式中──一U允怽从键盘输入文字数据的模式。我们也会涉及一点儿q些情况?
而现在,试着Ud一些字W上q复按x键。你会看?span class="code" dir="ltr">x会删除当前光标下的字W。现在,Ud到文本文件中某段落的中间Q然后按JQ大写)。你会看?span class="code" dir="ltr">J命o让vi下一行加到当前行末尾。现在,Ud一个字W上q按rQ然后输入一个新字符Q你会看到原始字W被替换掉了。最后,Ud文g中Q一行ƈ输入ddQ你会看?span class="code" dir="ltr">dd删除了文本的当前行?
你可以靠.键来重复M~辑命o。如果你试验一下,会看到输?span class="code" dir="ltr">dd...会删?行,?span class="code" dir="ltr">J......会加?行。与往怸Pvi提供了其他便L方式?
你也可以?span class="code" dir="ltr">d命o加上其他命o来删除文本。比方说Q?span class="code" dir="ltr">dw会从当前位置一直删C一个词的开始处Q?span class="code" dir="ltr">d)会一直删C一句ؓ止;?span class="code" dir="ltr">d}会删掉本D落的其余部分。试一?span class="code" dir="ltr">d命o和其他编辑命令,直到你适应了它们?
现在我们正在试验删除Q这也是学习如何撤消更改的好时候。按u键,原始版本的vi仅允怽撤消最后一ơ的~辑。然而,像vim之类的现代版本vi会允怽重复?span class="code" dir="ltr">u键l撤消对文g的更攏V试着一?span class="code" dir="ltr">d?span class="code" dir="ltr">u命o混合h?
到更新备忘单的时候了Q加上到目前为止我们讲过的命令后Q你的备忘单看v来应该是q样的:
囄 6.1: 含有~辑命o的备忘单 |
||||||||
![]() q今为止Q我们已l讲了如何在vi中移动,q行文g输入/输出Q以及一些基本的~辑操作。然而,我仍然没有向你展C如何实际地输入自由格式的文本!q是故意的,因ؓvi的插入模式一开始有点儿复杂。但是,当你适应了插入模式之后,它的复杂性(以及灉|性)会成Z炏V? 在vi?span class="emphasis">插入模式中,你将能直接向屏幕里输入文本,像在其他很多可视化~辑器中一栗一旦你输入完更改,可敲Esc键退回到命o模式。你可以?span class="code" dir="ltr">i键或a键进入插入模式。如果你?span class="code" dir="ltr">i键,你的文本会被插入?/span>当前字符之前Q而如果你?span class="code" dir="ltr">a键,你的文本会被l写到当前字W之后。记住,在你输入了文本之后,?span class="code" dir="ltr"><ESC>来回到命令模式? l箋试着使用a?span class="code" dir="ltr">i命o。敲a键或i键,输入一些文本,然后敲ESC回到命o模式。敲?span class="code" dir="ltr">a?span class="code" dir="ltr">i后,试着?span class="code" dir="ltr"><ENTER>看看会发生什么。试着使用方向键和<DEL>键来感受一下插入模式是怎样工作的。通过使用方向键和<DEL>键,你可以执行大量的~辑步骤Q而不用重复进出插入模式? q里有一些其他进入插入模式的便捷方式。不你当前处于当前行的什么位|,?span class="code" dir="ltr">A键(大写Q来开始在该行?span class="emphasis">末尾?/span>l写。同样地Q按I键(大写Q来开始在当前行的开始处插入文本。按o键来在当前行下面创徏一个新的可插入文本的空行,而按O键(大写Q可在当前行之上创徏一个新行。按cc可用新行当前行全部替换掉。要从当前位置到本行末之间的一切替换掉Q输?span class="code" dir="ltr">c$。要从本行开头到当前位置的一切替换掉Q输?span class="code" dir="ltr">c0? 除了执行特定的操作,q些命o都能你|于插入模式中。输入你的文本后Q敲<ESC>键退回到命o模式? q今为止我们已经使用了一?span class="code" dir="ltr">cQchangeQ即变更Q命令,包括cc?span class="code" dir="ltr">c0?span class="code" dir="ltr">c$?span class="code" dir="ltr">cc是变更命令的一U特DŞ式,?span class="code" dir="ltr">dd怼?span class="code" dir="ltr">c0?span class="code" dir="ltr">c$命o是将变更命o和移动命令结合用的例子。在q种形式中,c?span class="code" dir="ltr">d工作方式cMQ除了它你|于插入模式之中以让你能输入可替代删除区域的文本。将一些移动命令和cl合hQ在你的文g中试试看Q提C:cW?span class="code" dir="ltr">ce?span class="code" dir="ltr">c(。) 当你开始用复合(“套餐”Q命令,?span class="code" dir="ltr">d{?span class="code" dir="ltr">cwӞvi?span class="emphasis">真正?/span>变得强大h。除了这些命令,你也可以数字和MUd命ol合Q比?span class="code" dir="ltr">3wQ它会告诉vi向右跌{三个词。这里有一些移?#8220;套餐”命o的范例:12b?span class="code" dir="ltr">4j? vi除了允许Q数字)Q移动命令)的组合,q允?span class="code" dir="ltr">d?span class="code" dir="ltr">c和数字或Ud命ol合。所以,d3w会删除后面三个单词,d2j会删除当前行和下面两行,{等。试验一?span class="code" dir="ltr">c?span class="code" dir="ltr">d相结合的UdQ感受一下vi~辑是多么强大和z。一旦这些命令成ZW二天性,你将能以闪电般的速度~辑文g? 是再ơ更新备忘单的时候了。现在它看v来应该是q个样子Q?
|