Linux学习笔记(二十一):shell编程
深入探索Linux世界:shell编程的艺术
基础篇:shell的世界与脚本的力量
Linux中的shell,本质上是一种基于C语言编写的脚本语言,它赋予用户在终端交互的强大能力,如grep、sed、awk等工具的无缝连接。bash,作为默认的命令处理器,不仅支持命令的执行,更具备逻辑控制功能,让非交互式操作变得灵活高效。脚本,就是这些命令与逻辑的集合,通过shebang(#!/bin/sh)标记,指定执行的解释器。
- 变量的奥秘:在shell编程中,变量是构建动态逻辑的基础。定义变量时,需注意规则:无空格、避免关键字、无标点,且大小写敏感,只允许字母、数字和下划线组合。变量类型包括:默认字符串(单引号强引用,双引号弱引用,反引号执行命令并保留结果),以及需谨慎处理的无引号变量。
- 变量的疆界:局部变量仅限于脚本内部,而全局变量(如PATH)则影响整个系统。通过source(保留变量)和直接执行(新建进程)两种方式,控制变量的生命周期。
深入理解变量的维度
shell中的变量世界丰富多元:
- 局部与全局:局部变量局限于脚本范围,而全局变量则可在整个系统中共享,如环境变量。
- 特殊变量的魔法:
- 参数传递:特殊参数变量如$0(脚本名)、$1-$n掌控着命令行参数的传递和解析。
- 状态追踪:状态变量如$?、$$、$!、$_,分别记录上一条命令状态、当前脚本PID、上一后台进程PID和上一条命令的最后一个参数。
环境变量的艺术与bash内置魔法
环境变量不仅能在临时或永久设置中生效,还可以通过set、env、declare、export和unset等命令管理。bash内置命令如echo、printf、eval等,为高效编程提供了强大支持。
字符串操作与编程策略
在shell编程中,要善用内置命令处理字符串,如计时循环。同时,避免过度使用管道符,合理操作变量,如字符串截取、替换,以及智能判断与处理空值。
实战演示与技巧
通过实际示例,掌握批量修改文件名(mv)、字符串替换、获取文件名、for循环处理等技巧。清理过期数据时,find与xargs的组合得心应手,变量路径处理则借助${path:=/xxxt/xx/xxx}来简化。
父子shell:多层级操作的艺术
理解shell层级关系,通过子shell避免阻塞,利用小括号开启子shell进行多进程操作。变量BASH_SUBSHELL揭示了当前shell环境层次,嵌套小括号实现子shell的灵活应用。
内置与外置:效率与执行方式
Linux命令分为内置(内存中常驻,如systemctl)与外置(硬盘加载,如/bin下的命令),理解两者在效率和执行方式上的差异,是高效编程的关键。
绛旓細绗崄鍥涢樁娈碉細Linux Shell缂栫▼浼佷笟妗堜緥瀹炴垬 绗崄浜旈樁娈碉細浼佷笟绾т唬鐮佸彂甯冧笂绾挎柟妗堬紙SVN鍜孏it锛夌鍗佸叚闃舵浼佷笟绾vm铏氭嫙鍖栦笌OpenStack浜戣绠 绗崄涓冮樁娈靛叕鏈変簯闃块噷浜8澶х粍浠舵瀯寤洪泦缇ゅ疄鎴 绗崄鍏樁娈碉細Docker鎶鏈紒涓氬簲鐢ㄥ疄璺 绗崄涔濋樁娈碉細Python鑷姩鍖栧叆闂ㄥ強杩涢樁 绗浜屽崄闃舵锛氳亴涓氳鍒掍笌楂樿柂灏变笟鎸囧 Linux瀛︿範鍛ㄦ湡...
绛旓細瀵逛簬Linux鍩烘湰鐭ヨ瘑鐨勫涔狅紝瀵逛竴浜涘垵瀛﹁呮潵璇存槸鏋嚗涔忓懗鐨勶紝鍙互閫氳繃鐞嗚В鍐嶈儗璇电殑鏂瑰紡鍏堣繘琛屼唬鐮佸強璇硶鐨勫涔狅紝鐒跺悗杩涜瀹炶返鎿嶄綔锛屽繀椤绘墜鍔ㄨ緭鍏ュ懡浠よ锛屼笉瑕佸熷姪宸ュ叿锛岃繖鏍峰彲浠ユ洿蹇熸湁鏁堢殑鎺屾彙Linux銆2. 瀛︿互鑷寸敤 Linux瀛︿範鐨勭洰鐨勬槸搴旂敤锛孡inux鍩烘湰鐭ヨ瘑鏄竴浜涢浂鏁g殑鎶鏈紝褰撴病鏈夊簲鐢ㄥ湪椤圭洰涓婃椂锛屾垜浠棤娉曠悊瑙...
绛旓細瀛︿範Linux姝ラ锛1銆佸厛浜嗚В浜嗚В鍩虹鍚э紝鎵句竴鏈杽涓鐐圭殑锛屾祬涓鐐圭殑涔︼紝浜嗚В涓涓嬩粈涔堟槸linux銆傛湁涓熀鏈簡瑙e嵆鍙備笉寤鸿椹笂鐪嬨婇笩鍝ョ殑Linux绉佹埧鑿溿嬶紝杩欐湰涔﹀緢涓嶉敊锛屽鏋滀綘浜嗚Вlinux鍩虹涔嬪悗鍐嶇湅锛屽浣犲彲浠ヨ鏄笉鍙楃泭鍖祬閮戒笉琛屻傛病鍩虹鐪嬨婇笩鍝ョ殑Linux绉佹埧鑿溿嬫瘮杈冪棝鑻︼紝鍐呭寰堝銆2銆佷簡瑙d箣鍚庯紝鍦ㄨ嚜宸...
绛旓細鐩墠鍥藉唴鍏充簬 linux鐨涔︾睄鏈夊緢澶氫笉杩囩簿鍝佺殑涓嶅,绗旇呭己鐑堝缓璁槄璇汇婇笩鍝ョ殑Linux绉佹埧鑿 鍩虹绡囥,鐜板湪鍑哄埌浜嗙涓夌増銆傛柊鎵嬫渶濂借兘澶熶拱涓鏈焊鐗堜功鏉ヤ粩缁嗙爺璇,骞惰鐪熷仛濂瀛︿範绗旇銆傚綋鐒,濡傛灉涔犳儻鐪嬬數瀛愪功,涔熷彲浠ヤ粠杩欓噷 涓嬭浇 PDF鐢靛瓙涔︺ 涓夈佸吇鎴愬湪鍛戒护琛屼笅宸ヤ綔鐨勪範鎯 涓瀹氳鍏绘垚鍦ㄥ懡浠よ涓嬪伐浣滅殑涔犳儻,瑕佺煡閬揦-window...
绛旓細璋堝埌linux鐨勫彂琛岀増鏈,澶浜,鍙兘璋佷篃涓嶈兘缁欏嚭涓涓噯纭殑鏁板瓧,浣嗘槸鏈変竴鐐规槸鍙互鑲畾鐨,linux姝e湪鍙樺緱瓒婃潵瓒婃祦琛, 闈㈠杩欎箞澶氱殑Linux 鍙戣鐗,鎵撶畻浠庡叾浠栫郴缁熻浆鍒linux绯荤粺鏉ョ殑鍒濆鑰呭彲鑳戒細鎰熷埌鍥版儜,鍗充究鏄繝瀹炵殑 Linux 鐢ㄦ埛涔熸病鏈夋椂闂村拰绮惧姏鍘绘尐涓皾璇,鍥犳鍒濆鑰呭湪瀛︿範linux鐨涔嬪墠,闇瑕佹湁涓涓槑纭殑鏂瑰悜,閫夋嫨涓涓...
绛旓細瀵逛簬Linux鐨勫涔锛屽彲浠ュ垎涓哄洓涓樁娈碉紝Linux鍒濈骇鍏ラ棬闃舵鈫扡inux涓骇杩涢樁鈫扡inux楂樼骇杩涢樁鈫扡inux璧勬繁鏂瑰悜缁嗗寲闃舵 绗竴闃舵锛氬垵绾ч樁娈 鍒濈骇闃舵闇瑕佹妸linux瀛︿範璺嚎鎼炴竻妤氾紝浠讳綍瀛︿範閮芥槸寰簭娓愯繘鐨勶紝鎵浠ュlinux涔熸槸闇瑕佹湁涓瀹氱殑璺嚎銆1. Linux鍩虹鐭ヨ瘑銆佸熀鏈懡浠わ紱2. Linux鐢ㄦ埛鍙婃潈闄愬熀纭锛3. Linux绯荤粺杩涚▼绠$悊...
绛旓細褰揊ILE1鍜孎ILE2鏈夊悓鏍风殑device鍜宨node鍙锋椂涓虹湡(璇︾粏瑙linux鏂囦欢瀛︿範绗旇)test FILE1 鈥搉t FILE2 褰揊ILE1淇敼鏃堕棿姣擣ILE2鏂版椂鍊间负鐪焧est FILE1 鈥搊t FILE2 褰揊ILE1淇敼鏃堕棿姣擣ILE2鏃ф椂鍊间负鐪焧est 鈥揵 FILE FILE瀛樺湪骞朵笖鍐呭鏄痓lock绫诲瀷鐨則est 鈥揷 FILE FILE瀛樺湪骞朵笖鏄瓧绗︾被鍨嬬殑test 鈥揹 FILE FILE瀛樺湪骞朵笖鏄...
绛旓細涓锛Linux闇瑕瀛︿範浠涔 1锛岃绠楁満缃戠粶鍩虹锛岃绠楁満甯哥敤鑻辫鍗曡瘝銆2锛孡inux鍩虹鍛戒护鍜屽父鐢ㄩ夐」鐨勫惈涔夛紙鎺屾彙锛岀悊瑙e惈涔夌敤娉曪紝涓鑸负鑻辨枃鍗曡瘝鐨勭缉鍐欙紝鎬荤粨甯哥敤鍛戒护鎵撳嵃涓嬫潵闅忔椂璁帮紝琛ュ厖娌 鏈夎褰曠殑锛3锛宻hell鑴氭湰锛堥噸鐐癸紝澶氱粌涔狅紝涔﹀啓鏍煎紡瑙勮寖锛4锛屾湇鍔″櫒鐨勬惌寤猴紝鍜岄厤缃紝绠$悊銆傦紙鐔熺粌鎺屾彙锛屽伐浣滃氨闈犺繖涓悆楗...
绛旓細1. 璁$畻鏈虹‖浠躲佺粍鎴愬師鐞嗐佹搷浣滅郴缁熷熀纭銆丩inux璧锋簮銆佹牳蹇冧粙缁嶅強Linux瀹夎瀹炴垬鍏ラ棬 2. Xshell杩滅▼缃戠粶杩炴帴Linux銆佸熀纭浼樺寲銆佽繙绋嬭繛鎺ョ綉缁滃熀纭銆乆shell杩炴帴鏁呴殰鎺掗敊銆佹牳蹇冨熀纭鍛戒护璁茶В 3. Linux绯荤粺鏍稿績閫氶厤绗︿綋绯汇佷笁鍓戝锛坓rep,sed,awk锛夋牳蹇冩鍒欒〃杈惧紡绮捐鍙婁紒涓氱骇妗堜緥瀹炴垬妯℃嫙绮捐 4. Bash鏍稿績绗﹀彿銆佸揩鎹烽敭...
绛旓細缇庡仴(澶ц繛)鏃ョ敤鍝佹湁闄愬叕鍙告槸2007-03-21鍦ㄦ硶鐨勬嫵澶,鐪肩湅鍔涙皵鐧戒娇浜嗙殑涓や汉涓嶇敇蹇冪殑鍙堟湞寰愰哥劧鎵戝幓,...杩欓棬璇句笂鐨勫紓甯稿悆鍔,濂瑰敮涓鑳藉仛鐨,灏辨槸濂藉ソ璁绗旇,鍒掗噸鐐广 涓鏃︽姇鍏瀛︿範,鑻忓辜灏辨病绌烘兂鍒殑浜嗐