[{"data":1,"prerenderedAt":4536},["ShallowReactive",2],{"series:index":3,"content:\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fshells":972,"surround:\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fshells":4533},[4,15,25,35,45,54,64,74,82,91,101,110,120,129,138,147,152,162,172,181,189,194,203,213,223,233,243,253,263,273,283,293,303,313,323,333,339,348,357,366,372,381,391,401,410,420,429,439,448,457,467,476,485,494,504,513,522,531,540,549,559,569,578,587,596,605,610,620,629,638,644,649,658,666,674,679,687,692,700,708,716,724,732,740,749,758,766,774,779,787,796,805,814,823,831,836,845,850,855,863,871,879,887,895,900,905,914,923,931,939,947,955,963],{"stem":5,"path":6,"title":7,"date":8,"collapsed":9,"readingTime":10},"posts\u002F2024\u002FXZZD-Aquire-Score","\u002F2024\u002F10\u002F23\u002FXZZD-Aquire-Score","XZZD_Aquire_Score","2024-10-23 15:08:30",false,{"text":11,"minutes":12,"time":13,"words":14},"3 min read",2.955,177300,591,{"stem":16,"path":17,"title":18,"date":19,"collapsed":9,"readingTime":20},"posts\u002F2024\u002Felec-design-contest-2024","\u002F2024\u002F07\u002F07\u002Felec-design-contest-2024","东四——隐秘的角落","2024-07-07 11:44:32",{"text":21,"minutes":22,"time":23,"words":24},"2 min read",1.74,104400,348,{"stem":26,"path":27,"title":28,"date":29,"collapsed":9,"readingTime":30},"posts\u002F2024\u002Fmechanics","\u002F2024\u002F07\u002F08\u002Fmechanics","about力学","2024-07-08 14:14:07",{"text":31,"minutes":32,"time":33,"words":34},"9 min read",8.54,512400,1708,{"stem":36,"path":37,"title":38,"date":39,"collapsed":9,"readingTime":40},"posts\u002F2025\u002F25GElecDesignContest","\u002F2025\u002F08\u002F26\u002F25GElecDesignContest","纪念最好的大二五组 - Soleil 的 电赛回忆录","2025-08-26 11:06:33",{"text":41,"minutes":42,"time":43,"words":44},"30 min read",29.99,1799400,5998,{"stem":46,"path":47,"title":48,"date":49,"collapsed":9,"readingTime":50},"posts\u002F2025\u002FEngineering-Innovation","\u002F2025\u002F01\u002F20\u002FEngineering-Innovation","工程实践与创新能力大赛","2025-01-20 22:20:59",{"text":21,"minutes":51,"time":52,"words":53},1.365,81900,273,{"stem":55,"path":56,"title":57,"date":58,"collapsed":9,"readingTime":59},"posts\u002F2025\u002FTOP","\u002F2025\u002F01\u002F20\u002FTOP","置顶","3025-01-20 21:53:36",{"text":60,"minutes":61,"time":62,"words":63},"1 min read",0.285,17100,57,{"stem":65,"path":66,"title":67,"date":68,"collapsed":9,"readingTime":69},"posts\u002FUGCourses\u002F1.freshman-spring\u002Fengineering-drawing-notes","\u002F2024\u002F06\u002F30\u002Fengineering-drawing-notes","工程图学期末复习","2024-06-30 21:02:09",{"text":70,"minutes":71,"time":72,"words":73},"15 min read",14.78,886800,2956,{"stem":75,"path":76,"title":77,"date":78,"collapsed":9,"readingTime":79},"posts\u002FUGCourses\u002F1.freshman-spring\u002Findex","\u002Fugcourses\u002Ffreshman-spring","大一春夏","2024-06-30 19:15:28",{"text":80,"minutes":81,"time":81,"words":81},"0 min read",0,{"stem":83,"path":84,"title":85,"date":86,"collapsed":9,"readingTime":87},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002FComplex-Analysis","\u002F2025\u002F01\u002F21\u002FComplex-Analysis","复变函数与积分变换","2025-01-21 13:23:59",{"text":11,"minutes":88,"time":89,"words":90},2.855,171300,571,{"stem":92,"path":93,"title":94,"date":95,"collapsed":9,"readingTime":96},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002FFundamentalsMarxism","\u002F2025\u002F06\u002F06\u002FFundamentalsMarxism","马克思主义基本原理","2025-06-06 00:22:45",{"text":97,"minutes":98,"time":99,"words":100},"6 min read",5.54,332400,1108,{"stem":102,"path":103,"title":104,"date":105,"collapsed":9,"readingTime":106},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002FMathematical-Modeling","\u002F2024\u002F09\u002F22\u002FMathematical-Modeling","数学建模（课程）","2024-09-22 19:07:42",{"text":11,"minutes":107,"time":108,"words":109},2.475,148500,495,{"stem":111,"path":112,"title":113,"date":114,"collapsed":9,"readingTime":115},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002FMicroelectronic-Circuits","\u002F2025\u002F01\u002F20\u002FMicroelectronic-Circuits","电基小子","2025-01-20 23:02:49",{"text":116,"minutes":117,"time":118,"words":119},"5 min read",4.225,253500,845,{"stem":121,"path":122,"title":123,"date":124,"collapsed":9,"readingTime":125},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002FMumerical-Analysis","\u002F2024\u002F09\u002F19\u002FMumerical-Analysis","数值分析方法","2024-09-19 17:12:56",{"text":11,"minutes":126,"time":127,"words":128},2.1,126000,420,{"stem":130,"path":131,"title":132,"date":133,"collapsed":9,"readingTime":134},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002FProbability-Theory","\u002F2025\u002F01\u002F21\u002FProbability-Theory","概率论与数理统计","2025-01-21 12:52:11",{"text":11,"minutes":135,"time":136,"words":137},2.205,132300,441,{"stem":139,"path":140,"title":141,"date":142,"collapsed":9,"readingTime":143},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002Fengineering-training","\u002F2024\u002F09\u002F17\u002Fengineering-training","工程训练","2024-09-17 21:40:26",{"text":11,"minutes":144,"time":145,"words":146},2.385,143100,477,{"stem":148,"path":149,"title":150,"date":78,"collapsed":9,"readingTime":151},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002Findex","\u002Fugcourses\u002Fsophomore-autumn","大二秋冬",{"text":80,"minutes":81,"time":81,"words":81},{"stem":153,"path":154,"title":155,"date":156,"collapsed":9,"readingTime":157},"posts\u002FUGCourses\u002F2.sophomore-autumn\u002Fsolid-state-physics","\u002F2024\u002F09\u002F11\u002Fsolid-state-physics","固体物理基础","2024-09-11 19:15:26",{"text":158,"minutes":159,"time":160,"words":161},"4 min read",3.21,192600,642,{"stem":163,"path":164,"title":165,"date":166,"collapsed":9,"readingTime":167},"posts\u002FUGCourses\u002F3.sophomore-spring\u002FAIFrontier","\u002Fugcourses\u002Fsophomore-spring\u002Faifrontier","人工智能前沿","2025-06-12 14:58:16",{"text":168,"minutes":169,"time":170,"words":171},"25 min read",24.02,1441200,4804,{"stem":173,"path":174,"title":175,"date":166,"collapsed":9,"readingTime":176},"posts\u002FUGCourses\u002F3.sophomore-spring\u002FDigitalSys","\u002Fugcourses\u002Fsophomore-spring\u002Fdigitalsys","数字系统设计",{"text":177,"minutes":178,"time":179,"words":180},"45 min read",44.87,2692200,8974,{"stem":182,"path":183,"title":184,"date":166,"collapsed":9,"readingTime":185},"posts\u002FUGCourses\u002F3.sophomore-spring\u002FMaoTheory","\u002F2025\u002F06\u002F12\u002FMaoTheory","毛概",{"text":70,"minutes":186,"time":187,"words":188},14.63,877800,2926,{"stem":190,"path":191,"title":192,"date":78,"collapsed":9,"readingTime":193},"posts\u002FUGCourses\u002F3.sophomore-spring\u002Findex","\u002Fugcourses\u002Fsophomore-spring","大二春夏",{"text":80,"minutes":81,"time":81,"words":81},{"stem":195,"path":196,"title":197,"date":198,"collapsed":9,"readingTime":199},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture1","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture1","Lecture 1：摩尔定律与 CMOS","2026-09-09 19:39:00",{"text":60,"minutes":200,"time":201,"words":202},0.535,32100,107,{"stem":204,"path":205,"title":206,"date":207,"collapsed":9,"readingTime":208},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture10","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture10","Lecture 10：从 MOS 电容到 MOSFET","2026-09-10 00:10:00",{"text":209,"minutes":210,"time":211,"words":212},"18 min read",17.615,1056900,3523,{"stem":214,"path":215,"title":216,"date":217,"collapsed":9,"readingTime":218},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture11","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture11","Lecture 11：亚阈值效应与 MOSFET 尺寸缩放","2026-09-10 00:20:00",{"text":219,"minutes":220,"time":221,"words":222},"23 min read",22.35,1341000,4470,{"stem":224,"path":225,"title":226,"date":227,"collapsed":9,"readingTime":228},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture12","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture12","Lecture 12：MOSFET 尺寸缩微","2026-09-10 00:30:00",{"text":229,"minutes":230,"time":231,"words":232},"35 min read",34.225,2053500,6845,{"stem":234,"path":235,"title":236,"date":237,"collapsed":9,"readingTime":238},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture13","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture13","Lecture 13：MOS 新范式","2026-09-10 00:40:00",{"text":239,"minutes":240,"time":241,"words":242},"24 min read",23.25,1395000,4650,{"stem":244,"path":245,"title":246,"date":247,"collapsed":9,"readingTime":248},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture2","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture2","Lecture 2：半导体基础","2026-09-09 19:39:31",{"text":249,"minutes":250,"time":251,"words":252},"7 min read",6.02,361200,1204,{"stem":254,"path":255,"title":256,"date":257,"collapsed":9,"readingTime":258},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture3","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture3","Lecture 3：费米能级、载流子散射与迁移率","2026-09-09 21:00:00",{"text":259,"minutes":260,"time":261,"words":262},"13 min read",12.565,753900,2513,{"stem":264,"path":265,"title":266,"date":267,"collapsed":9,"readingTime":268},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture4","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture4","Lecture 4：漂移电流、扩散电流与产生复合","2026-09-09 23:00:00",{"text":269,"minutes":270,"time":271,"words":272},"10 min read",9.22,553200,1844,{"stem":274,"path":275,"title":276,"date":277,"collapsed":9,"readingTime":278},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture5","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture5","Lecture 5：PN 结与耗尽区","2026-09-09 23:10:00",{"text":279,"minutes":280,"time":281,"words":282},"14 min read",13.515,810900,2703,{"stem":284,"path":285,"title":286,"date":287,"collapsed":9,"readingTime":288},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture6","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture6","Lecture 6：正向偏置 PN 结与理想二极管方程","2026-09-09 23:20:00",{"text":289,"minutes":290,"time":291,"words":292},"20 min read",19.095,1145700,3819,{"stem":294,"path":295,"title":296,"date":297,"collapsed":9,"readingTime":298},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture7","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture7","Lecture 7：金半接触","2026-09-09 23:40:00",{"text":299,"minutes":300,"time":301,"words":302},"16 min read",15.195,911700,3039,{"stem":304,"path":305,"title":306,"date":307,"collapsed":9,"readingTime":308},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture8","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture8","Lecture 8：PN 结在光电领域的应用","2026-09-09 23:50:00",{"text":309,"minutes":310,"time":311,"words":312},"54 min read",53.955,3237300,10791,{"stem":314,"path":315,"title":316,"date":317,"collapsed":9,"readingTime":318},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FLecture9","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Flecture9","Lecture 9：MOS 电容","2026-09-10 00:00:00",{"text":319,"minutes":320,"time":321,"words":322},"21 min read",20.355,1221300,4071,{"stem":324,"path":325,"title":326,"date":327,"collapsed":9,"readingTime":328},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FMidtermExam","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Fmidtermexam","期中复习题","2026-09-09 23:30:00",{"text":329,"minutes":330,"time":331,"words":332},"8 min read",7.595,455700,1519,{"stem":334,"path":335,"title":336,"date":337,"collapsed":9,"readingTime":338},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002FMockExam","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices\u002Fmockexam","押题密卷","2026-09-10 00:50:00",{"text":21,"minutes":51,"time":52,"words":53},{"stem":340,"path":341,"title":342,"date":198,"collapsed":343,"readingTime":344},"posts\u002FUGCourses\u002F4.junior-autumn\u002F1.microelectronic-devices\u002Findex","\u002Fugcourses\u002Fjunior-autumn\u002Fmicroelectronic-devices","微电子器件",true,{"text":158,"minutes":345,"time":346,"words":347},3.055,183300,611,{"stem":349,"path":350,"title":351,"date":352,"collapsed":9,"readingTime":353},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F1.HistoryMetaCharacters","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fhistorymetacharacters","History & Meta Characters","2026-09-10 20:25:44",{"text":269,"minutes":354,"time":355,"words":356},9.36,561600,1872,{"stem":358,"path":359,"title":360,"date":361,"collapsed":9,"readingTime":362},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F10.PastExams\u002F1.ExamAutumn2223","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fpastexams\u002Fexamautumn2223","22-23 秋冬历年卷","2026-09-10 20:26:49",{"text":319,"minutes":363,"time":364,"words":365},20.295,1217700,4059,{"stem":367,"path":368,"title":369,"date":370,"collapsed":9,"readingTime":371},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F10.PastExams\u002F2.Exam2021","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fpastexams\u002Fexam2021","20-21 历年卷","2026-09-10 20:26:50",{"text":289,"minutes":290,"time":291,"words":292},{"stem":373,"path":374,"title":375,"date":376,"collapsed":9,"readingTime":377},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F10.PastExams\u002F3.ExamRecall1","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fpastexams\u002Fexamrecall1","不知名回忆卷 1","2026-09-10 20:26:51",{"text":116,"minutes":378,"time":379,"words":380},4.215,252900,843,{"stem":382,"path":383,"title":384,"date":385,"collapsed":9,"readingTime":386},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F10.PastExams\u002F4.ExamRecall23","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fpastexams\u002Fexamrecall23","不知名回忆卷 2\u002F3","2026-09-10 20:26:52",{"text":387,"minutes":388,"time":389,"words":390},"12 min read",11.235,674100,2247,{"stem":392,"path":393,"title":394,"date":395,"collapsed":9,"readingTime":396},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F1.Chapter1-Introduction","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter1-introduction","Chapter 1：Introduction","2026-09-10 20:27:26",{"text":397,"minutes":398,"time":399,"words":400},"19 min read",18.435,1106100,3687,{"stem":402,"path":403,"title":404,"date":405,"collapsed":9,"readingTime":406},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F2.Chapter2-IntroductionToUnix","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter2-introductiontounix","Chapter 2：Introduction to Unix","2026-09-10 20:27:40",{"text":168,"minutes":407,"time":408,"words":409},24.895,1493700,4979,{"stem":411,"path":412,"title":413,"date":414,"collapsed":9,"readingTime":415},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F3.Chapter3-ViAndShell","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter3-viandshell","Chapter 3：Vi and Shell","2026-09-10 20:27:41",{"text":416,"minutes":417,"time":418,"words":419},"32 min read",31.035,1862100,6207,{"stem":421,"path":422,"title":423,"date":424,"collapsed":9,"readingTime":425},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F4.Chapter4-Network","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter4-network","Chapter 4：Network","2026-09-10 20:27:49",{"text":239,"minutes":426,"time":427,"words":428},23.975,1438500,4795,{"stem":430,"path":431,"title":432,"date":433,"collapsed":9,"readingTime":434},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F5.Chapter5-Administration","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter5-administration","Chapter 5：Administration","2026-09-10 20:27:51",{"text":435,"minutes":436,"time":437,"words":438},"36 min read",35.41,2124600,7082,{"stem":440,"path":441,"title":442,"date":443,"collapsed":9,"readingTime":444},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F6.Chapter6-Xwindow","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter6-xwindow","Chapter 6：Xwindow","2026-09-10 20:27:53",{"text":319,"minutes":445,"time":446,"words":447},20.235,1214100,4047,{"stem":449,"path":450,"title":451,"date":452,"collapsed":9,"readingTime":453},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F7.Chapter7-SoftwareDevelopmentTools","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter7-softwaredevelopmenttools","Chapter 7：Software Development Tools","2026-09-10 20:27:54",{"text":209,"minutes":454,"time":455,"words":456},17.85,1071000,3570,{"stem":458,"path":459,"title":460,"date":461,"collapsed":9,"readingTime":462},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F11.Detailed\u002F8.Chapter8-CProgrammingInUnix","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fdetailed\u002Fchapter8-cprogramminginunix","Chapter 8：C Programming in Unix","2026-09-10 20:27:57",{"text":463,"minutes":464,"time":465,"words":466},"17 min read",16.855,1011300,3371,{"stem":468,"path":469,"title":470,"date":471,"collapsed":9,"readingTime":472},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F2.LinuxUnix","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Flinuxunix","Linux & Unix","2026-09-10 20:25:46",{"text":41,"minutes":473,"time":474,"words":475},29.33,1759800,5866,{"stem":477,"path":478,"title":479,"date":480,"collapsed":9,"readingTime":481},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F3.Vi","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fvi","Vi","2026-09-10 20:25:47",{"text":329,"minutes":482,"time":483,"words":484},7.95,477000,1590,{"stem":486,"path":487,"title":488,"date":489,"collapsed":9,"readingTime":490},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F4.ViCopy","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fvicopy","Vi（详细版）","2026-09-10 20:25:49",{"text":279,"minutes":491,"time":492,"words":493},13.785,827100,2757,{"stem":495,"path":496,"title":497,"date":498,"collapsed":9,"readingTime":499},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F5.Shells","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fshells","Shells","2026-09-10 20:25:51",{"text":500,"minutes":501,"time":502,"words":503},"22 min read",21.21,1272600,4242,{"stem":505,"path":506,"title":507,"date":508,"collapsed":9,"readingTime":509},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F6.Network","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fnetwork","Network","2026-09-10 20:25:54",{"text":319,"minutes":510,"time":511,"words":512},20.595,1235700,4119,{"stem":514,"path":515,"title":516,"date":517,"collapsed":9,"readingTime":518},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F7.SystemAdministration","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fsystemadministration","System Administration","2026-09-10 20:26:44",{"text":329,"minutes":519,"time":520,"words":521},7.12,427200,1424,{"stem":523,"path":524,"title":525,"date":526,"collapsed":9,"readingTime":527},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F8.XWindow","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fxwindow","XWindow","2026-09-10 20:26:45",{"text":97,"minutes":528,"time":529,"words":530},5.105,306300,1021,{"stem":532,"path":533,"title":534,"date":535,"collapsed":9,"readingTime":536},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F9.SystemDevelopmentTools","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad\u002Fsystemdevelopmenttools","System Development Tools","2026-09-10 20:26:47",{"text":387,"minutes":537,"time":538,"words":539},11.35,681000,2270,{"stem":541,"path":542,"title":543,"date":544,"collapsed":343,"readingTime":545},"posts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002Findex","\u002Fugcourses\u002Fjunior-autumn\u002Ficcad","面向 ICCAD 的软件基础技术","2026-09-10 12:37:00",{"text":60,"minutes":546,"time":547,"words":548},0.185,11100,37,{"stem":550,"path":551,"title":552,"date":553,"collapsed":9,"readingTime":554},"posts\u002FUGCourses\u002F4.junior-autumn\u002F3.HDL\u002FFeiQilai1","\u002Fugcourses\u002Fjunior-autumn\u002Fhdl\u002Ffeiqilai1","飞起来1.0","2026-09-10 12:51:49",{"text":555,"minutes":556,"time":557,"words":558},"105 min read",104.655,6279300,20931,{"stem":560,"path":561,"title":562,"date":563,"collapsed":9,"readingTime":564},"posts\u002FUGCourses\u002F4.junior-autumn\u002F3.HDL\u002FFeiQilai2","\u002Fugcourses\u002Fjunior-autumn\u002Fhdl\u002Ffeiqilai2","飞起来2.0","2026-09-10 12:52:06",{"text":565,"minutes":566,"time":567,"words":568},"29 min read",28.755,1725300,5751,{"stem":570,"path":571,"title":572,"date":573,"collapsed":9,"readingTime":574},"posts\u002FUGCourses\u002F4.junior-autumn\u002F3.HDL\u002FFeiQilai3","\u002Fugcourses\u002Fjunior-autumn\u002Fhdl\u002Ffeiqilai3","飞起来3.0","2026-09-10 12:52:12",{"text":116,"minutes":575,"time":576,"words":577},4.49,269400,898,{"stem":579,"path":580,"title":581,"date":582,"collapsed":9,"readingTime":583},"posts\u002FUGCourses\u002F4.junior-autumn\u002F3.HDL\u002FLecture13","\u002Fugcourses\u002Fjunior-autumn\u002Fhdl\u002Flecture13","Lecture 13：浮点数标准","2026-09-10 12:51:27",{"text":11,"minutes":584,"time":585,"words":586},2.575,154500,515,{"stem":588,"path":589,"title":590,"date":591,"collapsed":9,"readingTime":592},"posts\u002FUGCourses\u002F4.junior-autumn\u002F3.HDL\u002FLecture6","\u002Fugcourses\u002Fjunior-autumn\u002Fhdl\u002Flecture6","Lecture 6：Behavioral Modeling，非阻塞赋值","2026-09-10 12:51:12",{"text":97,"minutes":593,"time":594,"words":595},5.34,320400,1068,{"stem":597,"path":598,"title":599,"date":600,"collapsed":9,"readingTime":601},"posts\u002FUGCourses\u002F4.junior-autumn\u002F3.HDL\u002FPPTCorrespondence","\u002Fugcourses\u002Fjunior-autumn\u002Fhdl\u002Fpptcorrespondence","与PPT的对应","2026-09-10 12:52:18",{"text":269,"minutes":602,"time":603,"words":604},9.275,556500,1855,{"stem":606,"path":607,"title":608,"date":544,"collapsed":343,"readingTime":609},"posts\u002FUGCourses\u002F4.junior-autumn\u002F3.HDL\u002Findex","\u002Fugcourses\u002Fjunior-autumn\u002Fhdl","硬件描述语言原理与应用",{"text":60,"minutes":61,"time":62,"words":63},{"stem":611,"path":612,"title":613,"date":614,"collapsed":9,"readingTime":615},"posts\u002FUGCourses\u002F4.junior-autumn\u002F4.analogICDesign\u002F1.BeforeMidterm","\u002Fugcourses\u002Fjunior-autumn\u002Fanalogicdesign\u002Fbeforemidterm","期中前","2026-09-10 20:28:52",{"text":616,"minutes":617,"time":618,"words":619},"11 min read",10.835,650100,2167,{"stem":621,"path":622,"title":623,"date":624,"collapsed":9,"readingTime":625},"posts\u002FUGCourses\u002F4.junior-autumn\u002F4.analogICDesign\u002F2.MidtermExam2425","\u002Fugcourses\u002Fjunior-autumn\u002Fanalogicdesign\u002Fmidtermexam2425","24-25 期中","2026-09-10 20:29:00",{"text":21,"minutes":626,"time":627,"words":628},1.22,73200,244,{"stem":630,"path":631,"title":632,"date":633,"collapsed":9,"readingTime":634},"posts\u002FUGCourses\u002F4.junior-autumn\u002F4.analogICDesign\u002F3.FinalExamReview","\u002Fugcourses\u002Fjunior-autumn\u002Fanalogicdesign\u002Ffinalexamreview","期末考试整理","2026-09-10 20:29:09",{"text":387,"minutes":635,"time":636,"words":637},11.36,681600,2272,{"stem":639,"path":640,"title":641,"date":642,"collapsed":343,"readingTime":643},"posts\u002FUGCourses\u002F4.junior-autumn\u002F4.analogICDesign\u002Findex","\u002Fugcourses\u002Fjunior-autumn\u002Fanalogicdesign","模拟集成电路设计","2026-09-10 20:00:00",{"text":80,"minutes":81,"time":81,"words":81},{"stem":645,"path":646,"title":647,"date":78,"collapsed":9,"readingTime":648},"posts\u002FUGCourses\u002F4.junior-autumn\u002Findex","\u002Fugcourses\u002Fjunior-autumn","大三秋冬",{"text":80,"minutes":81,"time":81,"words":81},{"stem":650,"path":651,"title":652,"date":653,"collapsed":9,"readingTime":654},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F1.Chapter3-Device","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter3-device","Chapter 3：器件 Device","2026-09-10 21:14:41",{"text":249,"minutes":655,"time":656,"words":657},6.055,363300,1211,{"stem":659,"path":660,"title":661,"date":653,"collapsed":9,"readingTime":662},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F10.Chapter12-Arithmetic","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter12-arithmetic","Chapter 12：算术运算电路 Arithmetic",{"text":168,"minutes":663,"time":664,"words":665},24.245,1454700,4849,{"stem":667,"path":668,"title":669,"date":653,"collapsed":9,"readingTime":670},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F11.Chapter13-Memory","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter13-memory","Chapter 13：存储器 Memory",{"text":229,"minutes":671,"time":672,"words":673},34.235,2054100,6847,{"stem":675,"path":676,"title":677,"date":653,"collapsed":9,"readingTime":678},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F12.Chapter14","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter14","Chapter 14",{"text":80,"minutes":81,"time":81,"words":81},{"stem":680,"path":681,"title":682,"date":653,"collapsed":9,"readingTime":683},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F13.PastExams\u002F1.Midterm2022","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fpastexams\u002Fmidterm2022","2022 期中试题",{"text":60,"minutes":684,"time":685,"words":686},0.075,4500,15,{"stem":688,"path":689,"title":690,"date":653,"collapsed":9,"readingTime":691},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F13.PastExams\u002F2.Midterm2023","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fpastexams\u002Fmidterm2023","2023 期中试题",{"text":80,"minutes":81,"time":81,"words":81},{"stem":693,"path":694,"title":695,"date":653,"collapsed":9,"readingTime":696},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F13.PastExams\u002F3.FinalPolished","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fpastexams\u002Ffinalpolished","期末历年卷（AI 润色版）",{"text":21,"minutes":697,"time":698,"words":699},1.575,94500,315,{"stem":701,"path":702,"title":703,"date":653,"collapsed":9,"readingTime":704},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F14.ExamRecall2026","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fexamrecall2026","数字集成电路回忆 2026",{"text":60,"minutes":705,"time":706,"words":707},0.49,29400,98,{"stem":709,"path":710,"title":711,"date":653,"collapsed":9,"readingTime":712},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F2.Chapter4-Wire","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter4-wire","Chapter 4：导线 Wire",{"text":397,"minutes":713,"time":714,"words":715},18.65,1119000,3730,{"stem":717,"path":718,"title":719,"date":653,"collapsed":9,"readingTime":720},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F3.Chapter5-Inverter","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter5-inverter","Chapter 5：CMOS 反相器 Inverter",{"text":269,"minutes":721,"time":722,"words":723},9.385,563100,1877,{"stem":725,"path":726,"title":727,"date":653,"collapsed":9,"readingTime":728},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F4.Chapter6-LogicGate","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter6-logicgate","Chapter 6：逻辑门 Logic Gate",{"text":31,"minutes":729,"time":730,"words":731},8.635,518100,1727,{"stem":733,"path":734,"title":735,"date":653,"collapsed":9,"readingTime":736},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F5.Chapter7-SequentialLogic","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter7-sequentiallogic","Chapter 7：时序逻辑 Sequential Logic",{"text":463,"minutes":737,"time":738,"words":739},16.645,998700,3329,{"stem":741,"path":742,"title":743,"date":653,"collapsed":9,"readingTime":744},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F6.Chapter8-Speed","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter8-speed","Chapter 8：延迟与速度 Speed",{"text":745,"minutes":746,"time":747,"words":748},"33 min read",32.885,1973100,6577,{"stem":750,"path":751,"title":752,"date":653,"collapsed":9,"readingTime":753},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F7.Chapter9-Power","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter9-power","Chapter 9：功耗 Power",{"text":754,"minutes":755,"time":756,"words":757},"31 min read",31.005,1860300,6201,{"stem":759,"path":760,"title":761,"date":653,"collapsed":9,"readingTime":762},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F8.Chapter10-Interconnect","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter10-interconnect","Chapter 10：互连 Interconnect",{"text":463,"minutes":763,"time":764,"words":765},16.32,979200,3264,{"stem":767,"path":768,"title":769,"date":653,"collapsed":9,"readingTime":770},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002F9.Chapter11-Timing","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign\u002Fchapter11-timing","Chapter 11：时序 Timing",{"text":289,"minutes":771,"time":772,"words":773},19.68,1180800,3936,{"stem":775,"path":776,"title":777,"date":653,"collapsed":343,"readingTime":778},"posts\u002FUGCourses\u002F5.junior-spring\u002F1.digitalICDesign\u002Findex","\u002Fugcourses\u002Fjunior-spring\u002Fdigitalicdesign","数字集成电路设计",{"text":80,"minutes":81,"time":81,"words":81},{"stem":780,"path":781,"title":782,"date":653,"collapsed":9,"readingTime":783},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F1.L1-Intro","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl1-intro","L1：计算机发展史与体系结构导论",{"text":397,"minutes":784,"time":785,"words":786},18.695,1121700,3739,{"stem":788,"path":789,"title":790,"date":653,"collapsed":9,"readingTime":791},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F10.L8-9-Memory","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl8-9-memory","L8-9：存储器层次结构",{"text":792,"minutes":793,"time":794,"words":795},"128 min read",127.1,7626000,25420,{"stem":797,"path":798,"title":799,"date":653,"collapsed":9,"readingTime":800},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F11.L10-11-Parallelism","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl10-11-parallelism","L10-11：并行性",{"text":801,"minutes":802,"time":803,"words":804},"159 min read",158.86,9531600,31772,{"stem":806,"path":807,"title":808,"date":653,"collapsed":9,"readingTime":809},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F12.L12-CacheCoherence","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl12-cachecoherence","L12：缓存一致性 Cache Coherence",{"text":810,"minutes":811,"time":812,"words":813},"76 min read",75.395,4523700,15079,{"stem":815,"path":816,"title":817,"date":653,"collapsed":9,"readingTime":818},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F13.L13-14-ComplexPipeline","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl13-14-complexpipeline","L13-14：复杂流水线（衔接 L7）",{"text":819,"minutes":820,"time":821,"words":822},"44 min read",43.985,2639100,8797,{"stem":824,"path":825,"title":826,"date":653,"collapsed":9,"readingTime":827},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F14.L15","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl15","L15：期末复习问答",{"text":269,"minutes":828,"time":829,"words":830},9.105,546300,1821,{"stem":832,"path":833,"title":834,"date":653,"collapsed":9,"readingTime":835},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F2.L2-Binary","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl2-binary","L2：二进制数制",{"text":80,"minutes":81,"time":81,"words":81},{"stem":837,"path":838,"title":839,"date":653,"collapsed":9,"readingTime":840},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F3.L3-CMemory","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl3-cmemory","L3：C 语言与内存模型",{"text":841,"minutes":842,"time":843,"words":844},"98 min read",97.32,5839200,19464,{"stem":846,"path":847,"title":848,"date":653,"collapsed":9,"readingTime":849},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F4.L4a-wbx","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl4a-wbx","L4a：wbx",{"text":80,"minutes":81,"time":81,"words":81},{"stem":851,"path":852,"title":853,"date":653,"collapsed":9,"readingTime":854},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F5.L4b-MachineCode","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl4b-machinecode","L4b：机器码 Machine Code",{"text":80,"minutes":81,"time":81,"words":81},{"stem":856,"path":857,"title":858,"date":653,"collapsed":9,"readingTime":859},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F6.L5-DSD","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl5-dsd","L5：数字系统设计 Digital System Design",{"text":269,"minutes":860,"time":861,"words":862},9.955,597300,1991,{"stem":864,"path":865,"title":866,"date":653,"collapsed":9,"readingTime":867},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F7.L6a-SingleCycle","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl6a-singlecycle","L6a：单周期处理器设计",{"text":219,"minutes":868,"time":869,"words":870},22.125,1327500,4425,{"stem":872,"path":873,"title":874,"date":653,"collapsed":9,"readingTime":875},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F8.L6b-Microcode","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl6b-microcode","L6b：微码处理器架构",{"text":387,"minutes":876,"time":877,"words":878},11.86,711600,2372,{"stem":880,"path":881,"title":882,"date":653,"collapsed":9,"readingTime":883},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002F9.L7-Pipeline","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization\u002Fl7-pipeline","L7：流水线处理器",{"text":177,"minutes":884,"time":885,"words":886},44.505,2670300,8901,{"stem":888,"path":889,"title":890,"date":653,"collapsed":343,"readingTime":891},"posts\u002FUGCourses\u002F5.junior-spring\u002F2.computerOrganization\u002Findex","\u002Fugcourses\u002Fjunior-spring\u002Fcomputerorganization","计算机组成与系统结构",{"text":60,"minutes":892,"time":893,"words":894},0.12,7200,24,{"stem":896,"path":897,"title":898,"date":78,"collapsed":9,"readingTime":899},"posts\u002FUGCourses\u002F5.junior-spring\u002Findex","\u002Fugcourses\u002Fjunior-spring","大三春夏",{"text":80,"minutes":81,"time":81,"words":81},{"stem":901,"path":902,"title":903,"date":78,"collapsed":9,"readingTime":904},"posts\u002FUGCourses\u002Findex","\u002Fugcourses","本科课程",{"text":80,"minutes":81,"time":81,"words":81},{"stem":906,"path":907,"title":908,"date":909,"collapsed":9,"readingTime":910},"posts\u002Fubuntu\u002F1.config","\u002Fubuntu\u002Fconfig","ubuntu 系统配置","2025-08-26 19:38:06",{"text":158,"minutes":911,"time":912,"words":913},3.815,228900,763,{"stem":915,"path":916,"title":917,"date":918,"collapsed":9,"readingTime":919},"posts\u002Fubuntu\u002F2.cadence\u002F1.mmsim","\u002Fubuntu\u002Fcadence\u002Fmmsim","在 Ubuntu 24.04 上安装 Cadence MMSIM 15.1 的兼容性问题","2026-09-09 14:06:40",{"text":158,"minutes":920,"time":921,"words":922},3.5,210000,700,{"stem":924,"path":925,"title":926,"date":918,"collapsed":9,"readingTime":927},"posts\u002Fubuntu\u002F2.cadence\u002F2.innovus","\u002Fubuntu\u002Fcadence\u002Finnovus","Innovus安装",{"text":11,"minutes":928,"time":929,"words":930},2.08,124800,416,{"stem":932,"path":933,"title":934,"date":918,"collapsed":9,"readingTime":935},"posts\u002Fubuntu\u002F2.cadence\u002Findex","\u002Fubuntu\u002Fcadence","Ubuntu24.04安装Cadence 系列软件",{"text":269,"minutes":936,"time":937,"words":938},9.98,598800,1996,{"stem":940,"path":941,"title":942,"date":918,"collapsed":9,"readingTime":943},"posts\u002Fubuntu\u002F3.synopsys","\u002Fubuntu\u002Fsynopsys","Ubuntu 24.04 安装 Synopsys",{"text":269,"minutes":944,"time":945,"words":946},9.555,573300,1911,{"stem":948,"path":949,"title":950,"date":918,"collapsed":9,"readingTime":951},"posts\u002Fubuntu\u002F4.vivado","\u002Fubuntu\u002Fvivado","Ubuntu 24.04 安装 Vivado 2020.1",{"text":60,"minutes":952,"time":953,"words":954},0.62,37200,124,{"stem":956,"path":957,"title":958,"date":918,"collapsed":9,"readingTime":959},"posts\u002Fubuntu\u002F5.migrate","\u002Fubuntu\u002Fmigrate","硬盘迁移系统",{"text":60,"minutes":960,"time":961,"words":962},0.64,38400,128,{"stem":964,"path":965,"title":966,"date":967,"collapsed":9,"readingTime":968},"posts\u002Fubuntu\u002Findex","\u002Fubuntu","Ubuntu装进移动硬盘","2025-08-25 19:38:06",{"text":269,"minutes":969,"time":970,"words":971},9.26,555600,1852,{"id":973,"title":497,"body":974,"categories":4517,"collapsed":9,"date":498,"description":4518,"draft":9,"extension":4519,"hideInArchive":343,"hideInList":343,"image":4520,"meta":4521,"navigation":343,"path":496,"permalink":4520,"published":4520,"readingTime":4523,"recommend":4520,"references":4520,"seo":4524,"sitemap":4525,"stem":495,"tags":4528,"type":4531,"updated":498,"__hash__":4532},"content\u002Fposts\u002FUGCourses\u002F4.junior-autumn\u002F2.ICCAD\u002F5.Shells.md",{"type":975,"value":976,"toc":4452},"minimark",[977,982,993,1048,1052,1168,1172,1210,1214,1576,1580,1585,1680,1687,1691,1866,1984,2037,2041,2141,2147,2151,2243,2249,2253,2461,2503,2509,2513,2564,2596,2608,2626,2630,2641,2646,2671,2674,2685,2688,2722,2731,2734,2739,2745,2759,2762,2768,2772,2798,2800,2806,2823,2929,2935,2941,2949,2955,2959,2979,2985,2989,2995,3075,3078,3184,3191,3204,3268,3272,3275,3281,3287,3291,3307,3315,3318,3324,3364,3401,3407,3415,3421,3425,3429,3434,3462,3468,3476,3482,3488,3492,3499,3505,3529,3533,3536,3541,3547,3586,3592,3596,3617,3622,3671,3682,3685,3809,3815,3819,3845,3849,3990,3994,3997,4001,4173,4198,4205,4208,4256,4259,4266,4355,4358,4361,4364,4369],[978,979,981],"h2",{"id":980},"shell-types","Shell Types",[983,984,985],"blockquote",{},[986,987,988,992],"p",{},[989,990,991],"code",{"code":991},"echo $SHELL"," #查看当前使用的是什么 shell",[994,995,996,1014,1027],"ol",{},[997,998,999,1003,1004,1008,1009],"li",{},[1000,1001,1002],"strong",{},"Bourne Shell (sh)","：良好的输入\u002F输出控制，常用于脚本；不适合交互式用户；",[1005,1006,1007],"mark",{},"默认提示为"," ",[1005,1010,1011],{},[989,1012,1013],{"code":1013},"$",[997,1015,1016,1019,1020,1008,1022],{},[1000,1017,1018],{},"C Shell (csh)","：invented by Bill Joy；语法和 C 语言类似；输入输出不如 sh；对交互式用户更为友好；工作控制、历史记录等新功能；",[1005,1021,1007],{},[1005,1023,1024],{},[989,1025,1026],{"code":1026},"%",[997,1028,1029,1032,1033,1008,1036,1040,1043],{},[1000,1030,1031],{},"Bourne-Again Shell (bash)","：GNU 开发的自由软件；提供 csh 的所有交互式特征；编程语言和 sh 兼容；",[1005,1034,1035],{},"默认提示是",[1005,1037,1038],{},[989,1039,1013],{"code":1013},[1005,1041,1042],{},"，root是",[1005,1044,1045],{},[989,1046,1047],{"code":1047},"#",[978,1049,1051],{"id":1050},"wild-card通配符","Wild card(通配符)",[1053,1054,1055,1077],"table",{},[1056,1057,1058],"thead",{},[1059,1060,1061,1065,1068,1071,1074],"tr",{},[1062,1063,1064],"th",{},"符号",[1062,1066,1067],{},"名称",[1062,1069,1070],{},"作用",[1062,1072,1073],{},"匹配机制",[1062,1075,1076],{},"示例",[1078,1079,1080,1098,1114,1134,1151],"tbody",{},[1059,1081,1082,1086,1089,1092,1095],{},[1083,1084,1085],"td",{},"*",[1083,1087,1088],{},"星号",[1083,1090,1091],{},"匹配 0 到无穷个字符",[1083,1093,1094],{},"文件匹配 (Glob)",[1083,1096,1097],{},"*.log",[1059,1099,1100,1103,1106,1109,1111],{},[1083,1101,1102],{},"?",[1083,1104,1105],{},"问号",[1083,1107,1108],{},"匹配确切的 1 个字符",[1083,1110,1094],{},[1083,1112,1113],{},"test?.py",[1059,1115,1116,1121,1124,1127,1129],{},[1083,1117,1118],{},[1119,1120],"span",{},[1083,1122,1123],{},"方括号",[1083,1125,1126],{},"匹配指定范围内的 1 个字符",[1083,1128,1094],{},[1083,1130,1131,1085],{},[1119,1132,1133],{},"a-z",[1059,1135,1136,1139,1142,1145,1148],{},[1083,1137,1138],{},"{}",[1083,1140,1141],{},"花括号",[1083,1143,1144],{},"生成任意字符串序列",[1083,1146,1147],{},"字符串扩展 (Expansion)",[1083,1149,1150],{},"{a,b}.txt",[1059,1152,1153,1156,1159,1162,1165],{},[1083,1154,1155],{},"~",[1083,1157,1158],{},"波浪号",[1083,1160,1161],{},"当前用户的主目录",[1083,1163,1164],{},"路径扩展",[1083,1166,1167],{},"~\u002FDesktop",[978,1169,1171],{"id":1170},"standard-file-descriptors","Standard File Descriptors",[1173,1174,1175,1187,1199],"ul",{},[997,1176,1177,1182,1183,1186],{},[1000,1178,1179],{},[989,1180,1181],{"code":1181},"(0) stdin","：给程序的",[1000,1184,1185],{},"标准输入","，通常来自键盘，也可以重定向来自文件或命令",[997,1188,1189,1194,1195,1198],{},[1000,1190,1191],{},[989,1192,1193],{"code":1193},"(1) stdout","：来自程序的",[1000,1196,1197],{},"标准输出","，通常输出到终端屏幕，也可以重定向到文件或命令",[997,1200,1201,1206,1207,1198],{},[1000,1202,1203],{},[989,1204,1205],{"code":1205},"(2) stderr","：",[1000,1208,1209],{},"标准错误输出",[978,1211,1213],{"id":1212},"file-redirection-文件重定向","File Redirection | 文件重定向",[994,1215,1216,1254,1326,1368,1557],{},[997,1217,1218,1221],{},[1000,1219,1220],{},"重定向标准输入",[1173,1222,1223],{},[997,1224,1225,1008,1230,1233,1008,1238,1241,1246,1008,1249],{},[1005,1226,1227],{},[989,1228,1229],{"code":1229},"\u003C",[1005,1231,1232],{},"从",[1005,1234,1235],{},[1000,1236,1237],{},"文件重定向输入",[1005,1239,1240],{},"，从",[1005,1242,1243],{},[989,1244,1245],{"code":1245},"infile",[1005,1247,1248],{},"读入作为输入",[1005,1250,1251],{},[989,1252,1253],{"code":1253},"command \u003C infile",[997,1255,1256,1259],{},[1000,1257,1258],{},"重定向标准输出",[994,1260,1261,1301],{},[997,1262,1263,1264],{},"重定向覆盖输出\n",[1173,1265,1266],{},[997,1267,1268,1273,1274,1277,1280,1283,1008,1288,1291,1008,1296],{},[1005,1269,1270],{},[989,1271,1272],{"code":1272},">","  ",[1005,1275,1276],{},"重定向",[1005,1278,1279],{},"（",[1005,1281,1282],{},"覆盖）",[1005,1284,1285],{},[1000,1286,1287],{},"标准输出到文件",[1005,1289,1290],{},"，不输出到终端屏幕，输出到",[1005,1292,1293],{},[989,1294,1295],{"code":1295},"outfile",[1005,1297,1298],{},[989,1299,1300],{"code":1300},"command > outfile",[997,1302,1303,1304],{},"重定向追加输出\n",[1173,1305,1306],{},[997,1307,1308,1008,1313,1318,1008,1321],{},[1005,1309,1310],{},[989,1311,1312],{"code":1312},">>",[1005,1314,1315],{},[1000,1316,1317],{},"追加标准输出",[1005,1319,1320],{},"到文件， 不覆盖，写到文件末尾",[1005,1322,1323],{},[989,1324,1325],{"code":1325},"command >> outfile",[997,1327,1328,1331,1363],{},[1000,1329,1330],{},"重定向标准错误输出",[994,1332,1333],{},[997,1334,1335,1008,1340,1342,1347,1350,1355,1358],{},[1005,1336,1337],{},[989,1338,1339],{"code":1339},"2> file",[1005,1341,1276],{},[1005,1343,1344],{},[1000,1345,1346],{},"标准错误",[1005,1348,1349],{},"到文件，",[1005,1351,1352],{},[989,1353,1354],{"code":1354},"2",[1005,1356,1357],{},"代表",[1005,1359,1360],{},[989,1361,1362],{"code":1362},"stderr",[1173,1364,1365],{},[997,1366,1367],{},"这一块不同shell各不相同，相见本节下小节",[997,1369,1370,1373,1008,1380,1387],{},[1000,1371,1372],{},"管道符与命令",[1005,1374,1375],{},[1000,1376,1377],{},[989,1378,1379],{"code":1379},"|",[1005,1381,1382],{},[1000,1383,1384],{},[989,1385,1386],{"code":1386},"tee",[1173,1388,1389,1438],{},[997,1390,1391,1008,1395,1397,1402,1405,1410,1413,1418,1421,1426,1428,1008,1433],{},[1005,1392,1393],{},[989,1394,1379],{"code":1379},[1005,1396,1047],{},[1005,1398,1399],{},[1000,1400,1401],{},"命令 1 的标准输出作为命令 2 的标准输入",[1005,1403,1404],{},"，也就是把",[1005,1406,1407],{},[989,1408,1409],{"code":1409},"command1",[1005,1411,1412],{},"的",[1005,1414,1415],{},[989,1416,1417],{"code":1417},"stdout",[1005,1419,1420],{},"接到",[1005,1422,1423],{},[989,1424,1425],{"code":1425},"command2",[1005,1427,1412],{},[1005,1429,1430],{},[989,1431,1432],{"code":1432},"stdin",[1005,1434,1435],{},[989,1436,1437],{"code":1437},"command1 | command2",[997,1439,1440,1008,1444,1447,1452,1455,1460,1465,1468],{},[1005,1441,1442],{},[989,1443,1386],{"code":1386},[1005,1445,1446],{},"#复制标准输出：从",[1005,1448,1449],{},[1000,1450,1451],{},"标准输入读",[1005,1453,1454],{},"，再",[1005,1456,1457],{},[1000,1458,1459],{},"写入标准输出和文件",[1005,1461,1462],{},[1000,1463,1464],{},"（三通）",[1005,1466,1467],{},"（replicate the standard output）",[1173,1469,1470],{},[997,1471,1472,1273,1475,1480],{},[1005,1473,1474],{},"举例：",[1005,1476,1477],{},[989,1478,1479],{"code":1479},"ls -l | tee lslist",[1173,1481,1482,1507,1525],{},[997,1483,1484,1008,1487,1008,1491,1008,1494,1008,1499,1008,1502],{},[1005,1485,1486],{},"此时",[1005,1488,1489],{},[989,1490,1386],{"code":1386},[1005,1492,1493],{},"会在屏幕上打印",[1005,1495,1496],{},[989,1497,1498],{"code":1498},"ls -l",[1005,1500,1501],{},"的内容，并将结果写入",[1005,1503,1504],{},[989,1505,1506],{"code":1506},"lslist",[997,1508,1509,1008,1514,1517,1522],{},[1005,1510,1511],{},[989,1512,1513],{"code":1513},"-a",[1005,1515,1516],{},"选项为",[1005,1518,1519],{},[1000,1520,1521],{},"追加append",[1005,1523,1524],{},"，不覆盖，追加到文件的末尾",[997,1526,1527,1008,1530,1008,1535,1538,1542,1547,1552],{},[1005,1528,1529],{},"可以通过",[1005,1531,1532],{},[989,1533,1534],{"code":1534},"tee test1.txt test2.txt",[1005,1536,1537],{},"来写入两个文件，这样",[1005,1539,1540],{},[1000,1541,1493],{},[1005,1543,1544],{},[1000,1545,1546],{},"一",[1005,1548,1549],{},[1000,1550,1551],{},"次",[1005,1553,1554],{},[1000,1555,1556],{},"（两次应该是版本问题）",[997,1558,1559,1564],{},[1005,1560,1561],{},[1000,1562,1563],{},"丢弃输出 ｜ To discard output",[1173,1565,1566],{},[997,1567,1568,1573],{},[1005,1569,1570],{},[989,1571,1572],{"code":1572},"> \u002Fdev\u002Fnull",[1005,1574,1575],{},"：将输出送到垃圾箱（黑洞）",[1577,1578,1579],"h3",{"id":1579},"标准输出流与标准错误输出流",[1581,1582,1584],"h4",{"id":1583},"csh中标准输出流与标准错误输出流","Csh中标准输出流与标准错误输出流",[994,1586,1587,1614,1625,1637],{},[997,1588,1589,1008,1594,1597,1602,1604,1609],{},[1005,1590,1591],{},[989,1592,1593],{"code":1593},">& file",[1005,1595,1596],{},"重定向（覆盖）",[1005,1598,1599],{},[1000,1600,1601],{},"标准输出和标准错误",[1005,1603,1349],{},[1005,1605,1606],{},[989,1607,1608],{"code":1608},"&",[1005,1610,1611],{},[1000,1612,1613],{},"意思可以理解为带上错误",[997,1615,1616,1008,1619,1624],{},[989,1617,1618],{"code":1618},">>& file",[1005,1620,1621],{},[1000,1622,1623],{},"追加","标准输出和标准错误到文件，与上一点相同",[997,1626,1627,1630,1631,1633,1634,1636],{},[989,1628,1629],{"code":1629},"|& command"," 输送标准输出和标准错误到命令，也就是，把",[989,1632,1417],{"code":1417},"和",[989,1635,1362],{"code":1362},"一起通过管道送给下一个命令",[997,1638,1639,1642,1643,1646],{},[989,1640,1641],{"code":1641},"(command > outfile) >& errfile"," 重定向标准输出和标准错误到",[1000,1644,1645],{},"不同的文件",[1173,1647,1648,1663],{},[997,1649,1650,1651,1653],{},"第一步：",[989,1652,1300],{"code":1300},[1173,1654,1655,1660],{},[997,1656,1657,1658],{},"把 stdout(1) 写到 ",[989,1659,1295],{"code":1295},[997,1661,1662],{},"stderr(2) 仍然默认到屏幕",[997,1664,1665,1666,1669],{},"第二步：外层的 ",[989,1667,1668],{"code":1668},">& errfile",[1173,1670,1671,1674],{},[997,1672,1673],{},"它作用的是整个括号里的“命令组”的输出环境",[997,1675,1676,1677],{},"把“剩余的输出”（主要是 stderr）也重定向到 ",[989,1678,1679],{"code":1679},"errfile",[983,1681,1682],{},[986,1683,1684],{},[1005,1685,1686],{},"这些命令在 bash 中也适用",[1581,1688,1690],{"id":1689},"shbash中标准输出流与标准错误输出流","Sh\u002Fbash中标准输出流与标准错误输出流",[994,1692,1693,1717,1820,1830,1839],{},[997,1694,1695,1008,1699,1701,1705,1707,1711,1713],{},[1005,1696,1697],{},[989,1698,1339],{"code":1339},[1005,1700,1276],{},[1005,1702,1703],{},[1000,1704,1346],{},[1005,1706,1349],{},[1005,1708,1709],{},[989,1710,1354],{"code":1354},[1005,1712,1357],{},[1005,1714,1715],{},[989,1716,1362],{"code":1362},[997,1718,1719,1008,1721,1724,1725,1729,1730,1802,1812],{},[989,1720,1272],{"code":1272},[989,1722,1723],{"code":1723},"file 2>&1"," 重定向",[1005,1726,1727],{},[1000,1728,1601],{},"到文件",[1173,1731,1732,1781],{},[997,1733,1734,1735,1738,1743,1744],{},"拆开来理解（",[1000,1736,1737],{},"类似于",[1005,1739,1740],{},[1000,1741,1742],{},"C语言指针的思想","）\n",[994,1745,1746,1757,1763,1771],{},[997,1747,1748,1751,1752,1729,1754],{},[989,1749,1750],{"code":1750},"> file","是指重定向标准输出",[989,1753,1272],{"code":1272},[989,1755,1756],{"code":1756},"file",[997,1758,1759,1762],{},[989,1760,1761],{"code":1761},"2>","处理标准错误输出",[997,1764,1765,1768,1769],{},[989,1766,1767],{"code":1767},"&1","，不是文件1，而是",[989,1770,1417],{"code":1417},[997,1772,1773,1774,1777,1778],{},"所以",[989,1775,1776],{"code":1776},"2>&1","的意思是：",[1000,1779,1780],{},"让 stderr（2）指向 stdout（1）当前指向的地方",[997,1782,1783,1008,1786,1008,1791,1794,1799],{},[1005,1784,1785],{},"在",[1005,1787,1788],{},[1000,1789,1790],{},"bash\u002Fzsh",[1005,1792,1793],{},"里有一个更短的语法糖",[1005,1795,1796],{},[989,1797,1798],{"code":1798},"&> file",[1005,1800,1801],{},"，等价于这个，即",[1803,1804,1810],"pre",{"className":1805,"code":1807,"language":1808,"meta":1809},[1806],"language-bash","command &> file\ncommand > file 2>&1\n","bash","",[989,1811,1807],{"__ignoreMap":1809},[1173,1813,1814],{},[997,1815,1816,1819],{},[1000,1817,1818],{},"语法糖(Syntactic Sugar)",": 就是\"更甜的语法\",让你写起来更简单、更爽,但底层做的事情是一样的。",[997,1821,1822,1008,1825,1827,1828],{},[989,1823,1824],{"code":1824},">> file 2>&1",[1000,1826,1623],{},"标准输出和标准错误到文件，和上面的区别就是",[989,1829,1312],{"code":1312},[997,1831,1832,1835,1836,1838],{},[989,1833,1834],{"code":1834},"2>&1 | command"," 输送",[1000,1837,1601],{},"到某个命令command",[997,1840,1841,1844,1845],{},[989,1842,1843],{"code":1843},"command > outfile 2> errfile"," #重定向标准输出和标准错误到不同的文件",[1173,1846,1847,1857],{},[997,1848,1849,1851,1852,1854,1855],{},[989,1850,1272],{"code":1272}," 代表正常的输出",[989,1853,1417],{"code":1417},"，写到",[989,1856,1295],{"code":1295},[997,1858,1859,1861,1862,1854,1864],{},[989,1860,1761],{"code":1761},"代表错误输出",[989,1863,1362],{"code":1362},[989,1865,1679],{"code":1679},[1867,1868,1870,1889],"alert",{"type":1869},"warning",[1581,1871,1873,1008,1878,1008,1881,1008,1886],{"id":1872},"与-区别",[1005,1874,1875],{},[989,1876,1877],{"code":1877},">&",[1005,1879,1880],{},"与",[1005,1882,1883],{},[989,1884,1885],{"code":1885},"&>",[1005,1887,1888],{},"区别",[1173,1890,1891,1950],{},[997,1892,1893,1895,1896,1899,1900,1902,1903],{},[989,1894,1776],{"code":1776}," 的含义：",[1000,1897,1898],{},"将标准错误输出重定向到标准输出","。注意：符号 ",[989,1901,1877],{"code":1877}," 是一个整体，不可分开，分开后就不是上述含义了。可以比对以下例子进行理解：\n",[994,1904,1905,1928],{},[997,1906,1907,1910],{},[989,1908,1909],{"code":1909},"cat test > file 2>&1",[1173,1911,1912,1917,1922],{},[997,1913,1914,1916],{},[989,1915,1750],{"code":1750}," 先执行，stdout 指向 file",[997,1918,1919,1921],{},[989,1920,1776],{"code":1776}," 后执行，stderr 指向 stdout 的当前位置（即 file）",[997,1923,1924,1927],{},[1000,1925,1926],{},"结果","：stdout 和 stderr 都输出到 file",[997,1929,1930,1933],{},[989,1931,1932],{"code":1932},"cat test 2>&1 > file",[1173,1934,1935,1940,1945],{},[997,1936,1937,1939],{},[989,1938,1776],{"code":1776}," 先执行，此时 stdout 还指向终端，所以 stderr 也指向终端",[997,1941,1942,1944],{},[989,1943,1756],{"code":1756}," 后执行，stdout 改为指向 file，但 stderr 已经固定指向终端",[997,1946,1947,1949],{},[1000,1948,1926],{},"：stderr 输出到终端，stdout 输出到 file（分离了！）",[997,1951,1952,1008,1955,1008,1959,1962,1966,1008,1969,1008,1973,1976,1981],{},[1005,1953,1954],{},"注意与",[1005,1956,1957],{},[989,1958,1885],{"code":1885},[1005,1960,1961],{},"的区别，",[1005,1963,1964],{},[989,1965,1885],{"code":1885},[1005,1967,1968],{},"是在",[1005,1970,1971],{},[1000,1972,1790],{},[1005,1974,1975],{},"里一个更短的语法糖——也就是约定俗成的把",[1005,1977,1978],{},[989,1979,1980],{"code":1980},"stdout stderror",[1005,1982,1983],{},"一起重定向了，将标准错误和标准输出全部送到一个地方",[1053,1985,1986,2005],{},[1056,1987,1988],{},[1059,1989,1990,1993,1996,1999,2002],{},[1062,1991,1992],{},"语法符号",[1062,1994,1995],{},"作用 (重定向 STDOUT 和 STDERR)",[1062,1997,1998],{},"Csh \u002F Tcsh",[1062,2000,2001],{},"Bash",[1062,2003,2004],{},"Sh (POSIX)",[1078,2006,2007,2023],{},[1059,2008,2009,2011,2014,2017,2020],{},[1083,2010,1593],{},[1083,2012,2013],{},"将标准输出和错误都写入文件",[1083,2015,2016],{},"原生支持 (常用)",[1083,2018,2019],{},"支持 (兼容写法)",[1083,2021,2022],{},"不支持 (通常报错或行为不同)",[1059,2024,2025,2027,2029,2032,2035],{},[1083,2026,1798],{},[1083,2028,2013],{},[1083,2030,2031],{},"不支持",[1083,2033,2034],{},"原生支持 (推荐语法糖)",[1083,2036,2031],{},[978,2038,2040],{"id":2039},"other-special-command-symbols","Other Special Command Symbols",[1173,2042,2043,2084,2098,2116,2131],{},[997,2044,2045,1008,2050,2053,2058,2061,2066,2069,2074,2077,2081],{},[1005,2046,2047],{},[989,2048,2049],{"code":2049},";",[1005,2051,2052],{},"# 命令分隔符，就是",[1005,2054,2055],{},[989,2056,2057],{"code":2057},"cmd1 ; cmd2",[1005,2059,2060],{},"，",[1005,2062,2063],{},[989,2064,2065],{"code":2065},"cmd1",[1005,2067,2068],{},"执行完之后执行",[1005,2070,2071],{},[989,2072,2073],{"code":2073},"cmd2",[1005,2075,2076],{},"，哪怕",[1005,2078,2079],{},[989,2080,2065],{"code":2065},[1005,2082,2083],{},"执行失败",[997,2085,2086,1008,2090,2093],{},[1005,2087,2088],{},[989,2089,1608],{"code":1608},[1005,2091,2092],{},"# 在后台运行命令",[1005,2094,2095],{},[989,2096,2097],{"code":2097},"cmd &",[997,2099,2100,1008,2105,2108,2113],{},[1005,2101,2102],{},[989,2103,2104],{"code":2104},"&&",[1005,2106,2107],{},"#只有上一条命令成功完成才运行下一条命令，逻辑与，",[1005,2109,2110],{},[989,2111,2112],{"code":2112},"make && .\u002Fa.out",[1005,2114,2115],{},"编译成功才运行程序",[997,2117,2118,1008,2123,2126],{},[1005,2119,2120],{},[989,2121,2122],{"code":2122},"||",[1005,2124,2125],{},"#只有上一条命令没有成功完成才运行下一条命令，比如：",[1005,2127,2128],{},[989,2129,2130],{"code":2130},"cd \u002Fsome\u002Fdir || echo \"no such dir\"",[997,2132,2133,1008,2138],{},[1005,2134,2135],{},[989,2136,2137],{"code":2137},"()",[1005,2139,2140],{},"#圆括号中的分组子命令在子 shell 中执行",[1803,2142,2145],{"className":2143,"code":2144,"language":1808,"meta":1809},[1806],"(cd \u002Ftmp; ls)\npwd   # 你会发现外面还是原来的目录\n",[989,2146,2144],{"__ignoreMap":1809},[978,2148,2150],{"id":2149},"quoting","Quoting",[1173,2152,2153,2179,2203,2233],{},[997,2154,2155,1008,2160,2163,2168,2171,2176],{},[1005,2156,2157],{},[989,2158,2159],{"code":2159},"\\",[1005,2161,2162],{},"#对待下一个字符为纯文本，比如",[1005,2164,2165],{},[989,2166,2167],{"code":2167},"echo \\$HOME",[1005,2169,2170],{},"，输出的是",[1005,2172,2173],{},[989,2174,2175],{"code":2175},"$HOME",[1005,2177,2178],{},"而不是实际的HOME",[997,2180,2181,1008,2186,2188,2193,1008,2196,1008,2200],{},[1005,2182,2183],{},[989,2184,2185],{"code":2185},"' '",[1005,2187,1047],{},[1005,2189,2190],{},[1000,2191,2192],{},"单引号内不允许变量和命令替代",[1005,2194,2195],{},"，即",[1005,2197,2198],{},[989,2199,1013],{"code":1013},[1005,2201,2202],{},"失效，就是按字符串对待",[997,2204,2205,1008,2210,2212,2217,1008,2220,1008,2224,1008,2226,2230],{},[1005,2206,2207],{},[989,2208,2209],{"code":2209},"\" \"",[1005,2211,1047],{},[1005,2213,2214],{},[1000,2215,2216],{},"双引号内允许变量和命令替代",[1005,2218,2219],{},"，不在字符串中禁用",[1005,2221,2222],{},[989,2223,1013],{"code":1013},[1005,2225,1633],{},[1005,2227,2228],{},[989,2229,2159],{"code":2159},[1005,2231,2232],{},"，和单引号区分一下",[997,2234,2235,2238,2239,2242],{},[989,2236,2237],{"code":2237},"command"," 或 ",[989,2240,2241],{"code":2241},"$(command)"," #用命令的输出代替命令输入",[1803,2244,2247],{"className":2245,"code":2246,"language":1808,"meta":1809},[1806],"echo \"today is $(date)\"\n",[989,2248,2246],{"__ignoreMap":1809},[978,2250,2252],{"id":2251},"job-control","Job Control",[1173,2254,2255,2260,2290,2304,2336,2399,2437],{},[997,2256,2257,2259],{},[989,2258,1608],{"code":1608}," #命令在后台执行",[997,2261,2262,1008,2267,2270,2272,2277,2282,2285],{},[1005,2263,2264],{},[989,2265,2266],{"code":2266},"^Z",[1005,2268,2269],{},"#当正在运行时",[1005,2271,2060],{},[1005,2273,2274],{},[1000,2275,2276],{},"停止",[1005,2278,2279],{},[1000,2280,2281],{},"该工作",[1005,2283,2284],{},"，该工作",[1005,2286,2287],{},[1000,2288,2289],{},"在后台挂起",[997,2291,2292,2295,2296,2301],{},[989,2293,2294],{"code":2294},"^C"," #",[1005,2297,2298],{},[1000,2299,2300],{},"结束",[1000,2302,2303],{},"当前工作",[997,2305,2306,1008,2311,1008,2314,2319,2322,2327],{},[1005,2307,2308],{},[989,2309,2310],{"code":2310},"bg",[1005,2312,2313],{},"#继续在后台挂起的工作",[1005,2315,2316],{},[989,2317,2318],{"code":2318},"bg = back-ground",[1005,2320,2321],{},"，注意是",[1005,2323,2324],{},[1000,2325,2326],{},"在后台继续",[1173,2328,2329],{},[997,2330,2331],{},[1005,2332,2333],{},[989,2334,2335],{"code":2335},"bg + 任务号",[997,2337,2338,1008,2343,2346,2351,2356,2361],{},[1005,2339,2340],{},[989,2341,2342],{"code":2342},"fg [%n]",[1005,2344,2345],{},"#将工作",[1005,2347,2348],{},[1000,2349,2350],{},"返回到前台",[1005,2352,2353],{},[1000,2354,2355],{},"（sh被堵住了）",[1005,2357,2358],{},[989,2359,2360],{"code":2360},"fg = fore-ground",[1173,2362,2363],{},[997,2364,2365,2370,2373,1008,2378,1008,2383,2388,1008,2391,1008,2396],{},[1005,2366,2367],{},[989,2368,2369],{"code":2369},"fg + 任务号",[1005,2371,2372],{},"，这里的",[1005,2374,2375],{},[1000,2376,2377],{},"任务号都是",[1005,2379,2380],{},[989,2381,2382],{"code":2382},"jobs",[1005,2384,2385],{},[1000,2386,2387],{},"中的",[1005,2389,2390],{},"，不是",[1005,2392,2393],{},[989,2394,2395],{"code":2395},"ps",[1005,2397,2398],{},"进程号",[997,2400,2401,1008,2405,2408],{},[1005,2402,2403],{},[989,2404,2382],{"code":2382},[1005,2406,2407],{},"#列出后台工作（list background jobs）",[1173,2409,2410,2419,2428],{},[997,2411,2412,2415,2416],{},[989,2413,2414],{"code":2414},"-l"," 列出 pid ",[989,2417,2418],{"code":2418},"l = list",[997,2420,2421,2424,2425],{},[989,2422,2423],{"code":2423},"-r"," 正在后台 run 的工作 ",[989,2426,2427],{"code":2427},"r = run",[997,2429,2430,2433,2434],{},[989,2431,2432],{"code":2432},"-s"," 后台中暂停的工作 ",[989,2435,2436],{"code":2436},"s = stop",[997,2438,2439,1008,2443,2446,1008,2451,1008,2454,1008,2458],{},[1005,2440,2441],{},[989,2442,2395],{"code":2395},[1005,2444,2445],{},"可以查看进程状态，",[1005,2447,2448],{},[989,2449,2450],{"code":2450},"top",[1005,2452,2453],{},"进行动态进程监控，而",[1005,2455,2456],{},[989,2457,2382],{"code":2382},[1005,2459,2460],{},"可以查看后台任务",[983,2462,2463,2473,2490,2495],{},[986,2464,2465,1008,2470],{},[1005,2466,2467],{},[989,2468,2469],{"code":2469},"ps\u002Ftop",[1005,2471,2472],{},"看的是系统层面的进程",[986,2474,2475,1008,2479,2482,1008,2487],{},[1005,2476,2477],{},[989,2478,2382],{"code":2382},[1005,2480,2481],{},"看的是",[1005,2483,2484],{},[1000,2485,2486],{},"当前这个 shell",[1005,2488,2489],{},"启动并管理的任务",[986,2491,2492],{},[989,2493,2494],{"code":2494},"[1]+ 27335 Running                 xeyes &",[1173,2496,2497,2500],{},[997,2498,2499],{},"1是任务号",[997,2501,2502],{},"27335是进程号",[978,2504,2506],{"id":2505},"process-commands",[1005,2507,2508],{},"Process Commands",[1577,2510,2511],{"id":2395},[1005,2512,2395],{},[1173,2514,2515],{},[997,2516,2517,1008,2522,1008,2525,2529,1008,2532,2537,2540],{},[1005,2518,2519],{},[989,2520,2521],{"code":2521},"ps [options]",[1005,2523,2524],{},"#report a",[1005,2526,2527],{},[1000,2528,986],{},[1005,2530,2531],{},"hoto",[1005,2533,2534],{},[1000,2535,2536],{},"s",[1005,2538,2539],{},"napshot of the current processes, show status of process，显示进程状态",[1173,2541,2542],{},[997,2543,2544,1008,2549,1008,2551,1008,2556,2561],{},[1005,2545,2546],{},[989,2547,2548],{"code":2548},"-ef",[1005,2550,1047],{},[1005,2552,2553],{},[989,2554,2555],{"code":2555},"e=every process",[1005,2557,2558],{},[989,2559,2560],{"code":2560},"f=full format",[1005,2562,2563],{},"使用标准语法查看系统上的每个进程，即显示进程详细信息并显示进程父子关系",[983,2565,2566,2569,2572,2578,2584,2590],{},[986,2567,2568],{},"UID          PID    PPID  C STIME TTY          TIME CMD",[986,2570,2571],{},"root           1       0  0 14:19 ?        00:00:03 \u002Fsbin\u002Finit splash",[986,2573,2574,2575],{},"root           2       0  0 14:19 ?        00:00:00 ",[1119,2576,2577],{},"kthreadd",[986,2579,2580,2581],{},"root           3       2  0 14:19 ?        00:00:00 ",[1119,2582,2583],{},"pool_workqueue_release",[986,2585,2586,2587],{},"root           4       2  0 14:19 ?        00:00:00 ",[1119,2588,2589],{},"kworker\u002FR-rcu_gp",[986,2591,2592,2593],{},"root           5       2  0 14:19 ?        00:00:00 ",[1119,2594,2595],{},"kworker\u002FR-sync_wq",[983,2597,2598],{},[986,2599,2600,2603,2604,2607],{},[1000,2601,2602],{},"PPID","（Parent Process ID） ",[1000,2605,2606],{},"PID"," ( Process ID )",[1173,2609,2610],{},[997,2611,2612,1008,2616,1008,2618,2623],{},[1005,2613,2614],{},[989,2615,2414],{"code":2414},[1005,2617,1047],{},[1005,2619,2620],{},[1000,2621,2622],{},"l",[1005,2624,2625],{},"ong format，显示长信息",[1577,2627,2628],{"id":2450},[1005,2629,2450],{},[1173,2631,2632],{},[997,2633,2634,1008,2638],{},[1005,2635,2636],{},[989,2637,2450],{"code":2450},[1005,2639,2640],{},"#display Linux processes，显示更新的进程信息和系统使用，间隔为 5s",[1577,2642,2644],{"id":2643},"pstree",[1005,2645,2643],{},[1173,2647,2648],{},[997,2649,2650,1008,2654,2657,2662,1008,2665,1008,2668],{},[1005,2651,2652],{},[989,2653,2643],{"code":2643},[1005,2655,2656],{},"#显示进程之间的",[1005,2658,2659],{},[1000,2660,2661],{},"层次关系",[1005,2663,2664],{},"（show the",[1005,2666,2667],{},"hierarchical",[1005,2669,2670],{},"relations between processes）",[1577,2672,2673],{"id":2673},"uptime",[1173,2675,2676],{},[997,2677,2678,2680,2681,2684],{},[989,2679,2673],{"code":2673}," #显示该系统的",[1000,2682,2683],{},"运行时长","（tell how long the system has been running）",[1577,2686,2687],{"id":2687},"kill",[1173,2689,2690],{},[997,2691,2692,1008,2696,2699],{},[1005,2693,2694],{},[989,2695,2687],{"code":2687},[1005,2697,2698],{},"#terminate or signal processes，终止或示意进程",[1173,2700,2701,2706,2712],{},[997,2702,2703],{},[989,2704,2705],{"code":2705},"kill [-signal] processID",[997,2707,2708,2711],{},[989,2709,2710],{"code":2710},"kill -l"," #列出可用的 kill 信号",[997,2713,2714,1008,2719],{},[1005,2715,2716],{},[989,2717,2718],{"code":2718},"kill -9 processID",[1005,2720,2721],{},"强制杀死进程",[978,2723,2725,1008,2728],{"id":2724},"environment-variables",[1005,2726,2727],{},"Environment",[1005,2729,2730],{},"Variables",[986,2732,2733],{},"先搞懂两类变量：local vs environment",[983,2735,2736],{},[986,2737,2738],{},"对应sz的 export PATH=$PAT",[1577,2740,2742],{"id":2741},"shell-变量local-shell-variable",[1005,2743,2744],{},"Shell 变量（local shell variable）",[1173,2746,2747,2753],{},[997,2748,2749,2750,2752],{},"只在",[1000,2751,2486],{},"里有效",[997,2754,2755,2756],{},"你开一个新终端或启动一个子进程，",[1000,2757,2758],{},"它不一定能看到",[986,2760,2761],{},"例子（bash）：",[1803,2763,2766],{"className":2764,"code":2765,"language":1808,"meta":1809},[1806],"name=Alice\necho $name\n",[989,2767,2765],{"__ignoreMap":1809},[1577,2769,2771],{"id":2770},"环境变量environment-variable","环境变量（environment variable）",[1173,2773,2774,2777,2795],{},[997,2775,2776],{},"会被“导出（export）”，变成环境的一部分",[997,2778,2779,2780,2783,2784,2783,2787,2789,2790],{},"启动子进程（比如运行 ",[989,2781,2782],{"code":2782},"python","、",[989,2785,2786],{"code":2786},"grep",[989,2788,1808],{"code":1808},"）时，",[1005,2791,2792],{},[1000,2793,2794],{},"子进程会继承这些变量",[997,2796,2797],{},"这就是为什么它叫 environment：它是程序运行的“环境”",[986,2799,2761],{},[1803,2801,2804],{"className":2802,"code":2803,"language":1808,"meta":1809},[1806],"export NAME=Alice\n",[989,2805,2803],{"__ignoreMap":1809},[983,2807,2808,2811],{},[1581,2809,2810],{"id":2810},"一句话记忆",[1173,2812,2813,2818],{},[997,2814,2815],{},[1000,2816,2817],{},"local：只给自己用",[997,2819,2820],{},[1000,2821,2822],{},"env：给自己 + 子进程用",[1173,2824,2825,2850,2869,2888,2919],{},[997,2826,2827,2830],{},[1000,2828,2829],{},"Set global environment variable",[1173,2831,2832,2838,2844],{},[997,2833,2834,2837],{},[989,2835,2836],{"code":2836},"setenv NAME value"," #csh设置环境变量的方式",[997,2839,2840,2843],{},[989,2841,2842],{"code":2842},"NAME=value; export NAME"," #sh设置环境变量",[997,2845,2846,2849],{},[989,2847,2848],{"code":2848},"export NAME=value"," #bash（export 用于将 shell 变量输出为环境变量）",[997,2851,2852,2855],{},[1000,2853,2854],{},"Set local shell variable",[1173,2856,2857,2863],{},[997,2858,2859,2862],{},[989,2860,2861],{"code":2861},"set name=value"," #csh设置shell变量",[997,2864,2865,2868],{},[989,2866,2867],{"code":2867},"name=value"," #sh\u002Fbash设置shell变量",[997,2870,2871,2874],{},[1000,2872,2873],{},"Unset",[1173,2875,2876,2882],{},[997,2877,2878,2881],{},[989,2879,2880],{"code":2880},"unsetenv \u002F unset"," #csh取消变量",[997,2883,2884,2887],{},[989,2885,2886],{"code":2886},"unset"," #sh\u002Fbash取消变量",[997,2889,2890,2893],{},[1000,2891,2892],{},"Showing\u002FGetting Variables",[1173,2894,2895,2901,2911],{},[997,2896,2897,2900],{},[989,2898,2899],{"code":2899},"env"," #csh，bash 也可，只看环境变量",[997,2902,2903,2906,2907,2910],{},[989,2904,2905],{"code":2905},"set"," #sh\u002Fbash，但 set 会显示更多，因为",[1000,2908,2909],{},"显示所有变量","，env 只是环境变量",[997,2912,2913,1273,2916],{},[989,2914,2915],{"code":2915},"echo $NAME",[989,2917,2918],{"code":2918},"echo + $变量名 = 打印变量值",[997,2920,2921,2922,2925,2926,2928],{},"当给环境变量赋多个值时，需要用 ",[989,2923,2924],{"code":2924},":"," 间隔不同值 #When assigning multiple values to the variable they must be separated by the colon ",[989,2927,2924],{"code":2924}," character",[986,2930,2931,2932],{},"典型就是 ",[989,2933,2934],{"code":2934},"PATH",[1803,2936,2939],{"className":2937,"code":2938,"language":1808,"meta":1809},[1806],"echo $PATH\n\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin:...\n",[989,2940,2938],{"__ignoreMap":1809},[1173,2942,2943],{},[997,2944,2945,2946,2948],{},"用",[989,2947,2924],{"code":2924},"分割多个目录，shell 查找命令时，会按 PATH 列表顺序去这些目录找",[978,2950,2952],{"id":2951},"shell-controls",[1005,2953,2954],{},"Shell Controls",[1577,2956,2958],{"id":2957},"if-条件","if 条件",[1173,2960,2961],{},[997,2962,2963,2964,2967,2968,2971,2972,2060,2975,2978],{},"最基本的用法，",[989,2965,2966],{"code":2966},"[ ]"," 单括号为判断，也叫",[1000,2969,2970],{},"测试","，注意",[989,2973,2974],{"code":2974},"[ \u003C-左右两边要有空格-> ]",[989,2976,2977],{"code":2977},"if then elif else fi"," 的格式，记忆一下格式即可",[1803,2980,2983],{"className":2981,"code":2982,"language":1808,"meta":1809},[1806]," if [ $grade -gt 90 ]; then\n     echo \"good\"\n elif [ $grade -gt 70 ]; then\n     echo \"pass\"\n else\n     echo \"no\"\n fi\n",[989,2984,2982],{"__ignoreMap":1809},[1581,2986,2988],{"id":2987},"options-选项","options 选项",[1803,2990,2993],{"className":2991,"code":2992,"language":1808,"meta":1809},[1806],"#这些 -r\u002F-w\u002F-x\u002F... 都是用来判断 某个文件\u002F路径的属性\n[ -r filename ]   # 可读？\n[ -d dirname ]    # 是目录？\n",[989,2994,2992],{"__ignoreMap":1809},[1173,2996,2997,3006,3016,3026,3035,3045,3055,3065],{},[997,2998,2999,3001,3002,3005],{},[989,3000,2423],{"code":2423}," #存在且可读\ntrue if it exists and is ",[1000,3003,3004],{},"r","eadable, otherwise return false (0)",[997,3007,3008,3011,3012,3015],{},[989,3009,3010],{"code":3010},"-w"," #存在且可写\ntrue if it exists and is ",[1000,3013,3014],{},"w","ritable",[997,3017,3018,3021,3022,3025],{},[989,3019,3020],{"code":3020},"-x"," #存在且可执行\ntrue if it exists and is e",[1000,3023,3024],{},"x","ecutable",[997,3027,3028,3031,3032],{},[989,3029,3030],{"code":3030},"-f"," #存在且是常规文件\ntrue if it exists and is ",[1000,3033,3034],{},"a regular file",[997,3036,3037,3040,3041,3044],{},[989,3038,3039],{"code":3039},"-d"," #存在且是目录\ntrue if it exists and is a ",[1000,3042,3043],{},"d","irectory",[997,3046,3047,3050,3051,3054],{},[989,3048,3049],{"code":3049},"-e"," #存在\ntrue if the file ",[1000,3052,3053],{},"e","xists",[997,3056,3057,3060,3061,3064],{},[989,3058,3059],{"code":3059},"-o"," #使用者拥有该文件\ntrue if the user ",[1000,3062,3063],{},"o","wns the file",[997,3066,3067,3070,3071,3074],{},[989,3068,3069],{"code":3069},"-z"," #文件大小为 0 \u002F 文件为空\ntrue if the file has ",[1000,3072,3073],{},"z","ero length (empty)",[1581,3076,3077],{"id":3077},"比较运算",[1173,3079,3080,3136],{},[997,3081,3082,3083,1279,3086,3089,3090,3093,3094,1279,3097,3099,3100,3093,3102,1279,3105,3108,3109,1279,3112,3115,3116,3118,3119,1279,3122,3124,3125,3118,3127,1279,3130,3132,3133,3135],{},"只能用于数字：",[989,3084,3085],{"code":3085},"-gt",[1000,3087,3088],{},"g","reater ",[1000,3091,3092],{},"t","han）、",[989,3095,3096],{"code":3096},"-lt",[1000,3098,2622],{},"ess ",[1000,3101,3092],{},[989,3103,3104],{"code":3104},"-eq",[1000,3106,3107],{},"eq","ual）、",[989,3110,3111],{"code":3111},"-ne",[1000,3113,3114],{},"n","ot ",[1000,3117,3053],{},"qual）、",[989,3120,3121],{"code":3121},"-le",[1000,3123,2622],{},"ess or ",[1000,3126,3053],{},[989,3128,3129],{"code":3129},"-ge",[1000,3131,3088],{},"reater or ",[1000,3134,3053],{},"qual）",[997,3137,3138,1279,3140,3143,3144,1279,3146,3148,3149,3152,3153],{},[989,3139,1513],{"code":1513},[1000,3141,3142],{},"a","nd）、",[989,3145,3059],{"code":3059},[1000,3147,3063],{},"r）、",[989,3150,3151],{"code":3151},"!","（not）\n",[1173,3154,3155],{},[997,3156,3157,3158,3161,3162,3164,3165,3167,3168,2783,3170,2783,3172,3174,3175,3177,3178],{},"在 ",[989,3159,3160],{"code":3160},"[]"," 中不能直接使用 ",[989,3163,2104],{"code":2104}," 和 ",[989,3166,2122],{"code":2122},"，只能使用 ",[989,3169,1513],{"code":1513},[989,3171,3059],{"code":3059},[989,3173,3151],{"code":3151},"；但在 ",[989,3176,3160],{"code":3160}," 外面是可以使用的，如：\n",[1803,3179,3182],{"className":3180,"code":3181,"language":1808,"meta":1809},[1806],"if [ -f $line ] && [ -x $line ]; then\n    code...\nelse\n    code...\nfi\n",[989,3183,3181],{"__ignoreMap":1809},[1577,3185,3187,3190],{"id":3186},"的使用方法",[989,3188,3189],{"code":3189},"[[ ]]"," 的使用方法",[983,3192,3193,3195,3198,3201],{},[986,3194,2001],{},[986,3196,3197],{},"Zsh",[986,3199,3200],{},"Ksh (Korn Shell)",[986,3202,3203],{},"这三者才兼容这个语法",[1173,3205,3206,3233,3247,3259],{},[997,3207,3157,3208,3210,3211,2783,3213,3215,3216,3218,3219,3221,3222,1008,3224,3226,3227],{},[989,3209,3189],{"code":3189}," 中使用 ",[989,3212,1272],{"code":1272},[989,3214,1229],{"code":1229}," 等符号不需要转义文字，即",[989,3217,1272],{"code":1272},"不会被当成重定向，但是注意",[989,3220,1272],{"code":1272},"比较的是字符串不是数字，数字比较要用",[989,3223,3085],{"code":3085},[989,3225,3096],{"code":3096},"，如：",[1803,3228,3231],{"className":3229,"code":3230,"language":1808,"meta":1809},[1806],"if [[ $1 > 5 ]]; then\n    echo \"$1 的值大于 5\"\nelse\n    echo \"$1 的值小于 5\"\nfi\n",[989,3232,3230],{"__ignoreMap":1809},[997,3234,3235,3236,3164,3238,3240,3241],{},"支持 ",[989,3237,2104],{"code":2104},[989,3239,2122],{"code":2122}," 的括号内使用，如：",[1803,3242,3245],{"className":3243,"code":3244,"language":1808,"meta":1809},[1806]," if [[ $a != 3 && $a != 10 ]]; then\n     echo \"hello i am linux\"\n fi\n",[989,3246,3244],{"__ignoreMap":1809},[997,3248,3249,3250,3252,3253],{},"如果不使用 ",[989,3251,3189],{"code":3189}," 的话则需要这样写：",[1803,3254,3257],{"className":3255,"code":3256,"language":1808,"meta":1809},[1806]," if [ $a != 3 -a $a != 10 ]; then\n     echo \"hello i am linux\"\n fi\n",[989,3258,3256],{"__ignoreMap":1809},[997,3260,3261,3262],{},"或者",[1803,3263,3266],{"className":3264,"code":3265,"language":1808,"meta":1809},[1806]," if [ $a != 3 ] && [ $a != 10 ]; then\n     echo \"hello i am linux\"\n fi \n",[989,3267,3265],{"__ignoreMap":1809},[1577,3269,3271],{"id":3270},"for-循环语句","for 循环语句",[1581,3273,3274],{"id":3274},"基本用法",[986,3276,3277,3280],{},[989,3278,3279],{"code":3279},"for 变量名 in 取值列表; do ... done","，如下",[1803,3282,3285],{"className":3283,"code":3284,"language":1808,"meta":1809},[1806],"for Host in $(seq 1 254); do\n     code...\n done\n for i in $(find \u002F -name $filename); do\n     code...\n done\n for i in {1..5}; do\n     code...\n done \n",[989,3286,3284],{"__ignoreMap":1809},[1581,3288,3290],{"id":3289},"进阶用法","进阶用法：",[986,3292,3293,1008,3296,1008,3299,1008,3301,1008,3304],{},[1000,3294,3295],{},"如果想依次处理传入程序的参数，可以使用",[989,3297,3298],{"code":3298},"for",[1000,3300,1880],{},[989,3302,3303],{"code":3303},"$*",[1000,3305,3306],{},"的结合",[1173,3308,3309],{},[997,3310,3311,3314],{},[989,3312,3313],{"code":3313},"$1\u002F$2\u002F$3..."," 是什么？",[986,3316,3317],{},"当你运行：",[1803,3319,3322],{"className":3320,"code":3321,"language":1808,"meta":1809},[1806]," .\u002Fdemo a b c d\n",[989,3323,3321],{"__ignoreMap":1809},[983,3325,3326],{},[1173,3327,3328,3334,3340,3346,3352],{},[997,3329,3330,3333],{},[989,3331,3332],{"code":3332},"$0"," = 脚本名（demo）",[997,3335,3336,3339],{},[989,3337,3338],{"code":3338},"$1"," = a",[997,3341,3342,3345],{},[989,3343,3344],{"code":3344},"$2"," = b",[997,3347,3348,3351],{},[989,3349,3350],{"code":3350},"$3"," = c",[997,3353,3354,3357,3358,3361],{},[989,3355,3356],{"code":3356},"$4"," = d\n记忆：",[1000,3359,3360],{},"$N = 第 N 个参数",[1000,3362,3363],{},"，超过10要加${10}",[1173,3365,3366,3378,3386],{},[997,3367,3368,3370,3371,2783,3373,2783,3375,3377],{},[989,3369,3338],{"code":3338},"：脚本中第一个参数，",[989,3372,3344],{"code":3344},[989,3374,3350],{"code":3350},[989,3376,3356],{"code":3356}," 以此类推",[997,3379,3380,3382,3383],{},[989,3381,3303],{"code":3303},"：以一个字符串显示所有向脚本传递的参数，等于 ",[989,3384,3385],{"code":3385},"\"$1 $2 $3 ...\"",[997,3387,3388,3389,3392,3393,3396,3397,3400],{},"示例：假设脚本叫 ",[989,3390,3391],{"code":3391},"demo.bash","，终端输入 ",[989,3394,3395],{"code":3395},".\u002Fdemo a b c d","，则参数依次为 ",[989,3398,3399],{"code":3399},"$1 $2 $3 $4","，脚本内容如下：",[1803,3402,3405],{"className":3403,"code":3404,"language":1808,"meta":1809},[1806],"#!\u002Fbin\u002Fbash\n\n for i in $*; do\n     echo \"$i\"\n done\n",[989,3406,3404],{"__ignoreMap":1809},[1173,3408,3409],{},[997,3410,3411,3412,3414],{},"这样会依次遍历 ",[989,3413,3399],{"code":3399}," 并处理（这里是打印到屏幕上）",[986,3416,3417],{},[3418,3419],"img",{"alt":3418,"src":3420},"\u002Fimg\u002FICCAD\u002FShells-01.png",[1577,3422,3424],{"id":3423},"while-循环语句","while 循环语句",[1581,3426,3428],{"id":3427},"基本用法-1","基本用法：",[986,3430,3431],{},[989,3432,3433],{"code":3433},"while 表达式; do 内容 done",[1173,3435,3436,3459],{},[997,3437,3438,3439,3442,3443,3446,3447],{},"可以与 ",[989,3440,3441],{"code":3441},"break"," 与 ",[989,3444,3445],{"code":3445},"continue"," 结合，和C语言类似的\n",[1173,3448,3449,3454],{},[997,3450,3451,3453],{},[989,3452,3441],{"code":3441}," 是终止循环",[997,3455,3456,3458],{},[989,3457,3445],{"code":3445}," 是跳出当前循环",[997,3460,3461],{},"例子如下：在死循环中，满足条件终止循环",[1803,3463,3466],{"className":3464,"code":3465,"language":1808,"meta":1809},[1806]," while true; do\n     let N++\n     if [ $N -eq 5 ]; then\n         break\n     fi\n     echo $N\n done\n",[989,3467,3465],{"__ignoreMap":1809},[1173,3469,3470],{},[997,3471,3472,3473,3475],{},"又如：利用 ",[989,3474,3445],{"code":3445}," 跳过一次循环",[1803,3477,3480],{"className":3478,"code":3479,"language":1808,"meta":1809},[1806],"N=0\n while [ $N -lt 5 ]; do\n     let N++\n     if [ $N -eq 3 ]; then\n         continue\n     fi\n     echo $N\n done\n",[989,3481,3479],{"__ignoreMap":1809},[986,3483,3484,3485],{},"结果输出：",[989,3486,3487],{"code":3487},"1 2 4",[1581,3489,3491],{"id":3490},"进阶技巧","进阶技巧：",[986,3493,3494,3495,3498],{},"利用 ",[989,3496,3497],{"code":3497},"while"," 依次读入文件内容进行处理",[1803,3500,3503],{"className":3501,"code":3502,"language":1808,"meta":1809},[1806],"while read line; do\n     echo \"$line\"\n done \u003C temp.txt\n",[989,3504,3502],{"__ignoreMap":1809},[1173,3506,3507,3520],{},[997,3508,3509,3512,3513,3515,3516,3519],{},[989,3510,3511],{"code":3511},"line"," 是一个变量名，这里 ",[989,3514,3497],{"code":3497}," 将依次读取 ",[989,3517,3518],{"code":3518},"temp.txt"," 每行的内容，并打印",[997,3521,3522,3523,3525,3526,3528],{},"这个技巧同上面的 ",[989,3524,3298],{"code":3298}," 进阶技巧一样，非常好用且重要：可以把要处理的内容保存到文本文件中，再用这个 ",[989,3527,3497],{"code":3497}," 逐行处理",[1577,3530,3532],{"id":3531},"case-选择语句","case 选择语句",[1581,3534,3428],{"id":3535},"基本用法-2",[986,3537,3538],{},[989,3539,3540],{"code":3540},"case 变量 in 模式1) ... ;; 模式2) ... ;; esac",[1803,3542,3545],{"className":3543,"code":3544,"language":1808,"meta":1809},[1806],"case 模式名 in\n 模式1)\n     命令\n     ;;\n 模式2)\n     命令\n     ;;\nesac\n",[989,3546,3544],{"__ignoreMap":1809},[1173,3548,3549,3561,3577,3583],{},[997,3550,3551,3552,1008,3555,1008,3558,3560],{},"每个",[1000,3553,3554],{},"模式必须以右括号",[989,3556,3557],{"code":3557},")",[1000,3559,2300],{},"（可以是数字或英文）",[997,3562,3563,3564,1008,3567,1008,3570,2060,3572,3574,3575],{},"每个分支的",[1000,3565,3566],{},"命令必须以双分号",[989,3568,3569],{"code":3569},";;",[1000,3571,2300],{},[989,3573,3569],{"code":3569},"就相当于",[989,3576,3441],{"code":3441},[997,3578,3579,3582],{},[989,3580,3581],{"code":3581},"esac"," 表示 case 结束",[997,3584,3585],{},"示例：",[1803,3587,3590],{"className":3588,"code":3589,"language":1808,"meta":1809},[1806],"case $choice in\n 1)\n     操作\n     ;;\n Start)\n     操作\n     ;;\nesac\n",[989,3591,3589],{"__ignoreMap":1809},[1577,3593,3595],{"id":3594},"终端命令与-history","终端命令与 History",[1173,3597,3598,3612],{},[997,3599,3600,3601,3604],{},"终端：定义指的是与计算机系统相连的一种",[1000,3602,3603],{},"输入输出设备",[1173,3605,3606],{},[997,3607,3608,3611],{},[989,3609,3610],{"code":3610},"tty"," #print the file name of the terminal connected to standard input",[997,3613,3614],{},[989,3615,3616],{"code":3616},"tty = tell terminal type\u002Fdevice",[983,3618,3619],{},[986,3620,3621],{},"显示当前终端设备的文件名",[1173,3623,3624,3630,3635],{},[997,3625,3626,3629],{},[989,3627,3628],{"code":3628},"stty"," #change and print terminal line settings，改变终端设置",[997,3631,3632],{},[989,3633,3634],{"code":3634},"stty = set tty",[997,3636,3637,3640,3641],{},[1000,3638,3639],{},"History"," #GNU history library\n",[1173,3642,3643,3649,3655,3665],{},[997,3644,3645,3648],{},[989,3646,3647],{"code":3647},"history [nn]"," #显示过去 nn 条命令",[997,3650,3651,3654],{},[989,3652,3653],{"code":3653},"!!"," #重复上一条命令",[997,3656,3657,3660,3661,3664],{},[989,3658,3659],{"code":3659},"!nn"," #重复",[989,3662,3663],{"code":3663},"history","中编号为 nn 的命令",[997,3666,3667,3670],{},[989,3668,3669],{"code":3669},"!string"," #重复最近的以 string 开头的命令",[1577,3672,3674,1008,3677],{"id":3673},"magic-symbol",[1005,3675,3676],{},"Magic Symbol",[1005,3678,3679],{},[989,3680,3681],{"code":3681},"#!",[986,3683,3684],{},"脚本解释器，告诉系统：这个脚本应该用哪个解释器来运行",[1173,3686,3687,3710,3743,3779],{},[997,3688,3689,3694],{},[1005,3690,3691],{},[1000,3692,3693],{},"sh\u002Fbash",[1173,3695,3696,3703],{},[997,3697,3698],{},[1005,3699,3700],{},[989,3701,3702],{"code":3702},"#!\u002Fbin\u002Fsh",[997,3704,3705],{},[1005,3706,3707],{},[989,3708,3709],{"code":3709},"#!\u002Fbin\u002Fbash",[997,3711,3712,3717],{},[1005,3713,3714],{},[1000,3715,3716],{},"csh",[1173,3718,3719],{},[997,3720,3721,3726,3728,1008,3732,1008,3735,3740],{},[1005,3722,3723],{},[989,3724,3725],{"code":3725},"#!\u002Fbin\u002Fcsh -f",[1005,3727,1279],{},[1005,3729,3730],{},[989,3731,3030],{"code":3030},[1005,3733,3734],{},"option，without parsing",[1005,3736,3737],{},[989,3738,3739],{"code":3739},".cshrc",[1005,3741,3742],{},"）",[997,3744,3745,3748],{},[1005,3746,3747],{},"如果没有 Magic Symbol 指示，那么执行脚本命令前必须加上对应的解释器",[1173,3749,3750],{},[997,3751,3752,1008,3757,1008,3760,1008,3765,1008,3767,1008,3772,1008,3774],{},[1005,3753,3754],{},[989,3755,3756],{"code":3756},"sh sh_script",[1005,3758,3759],{},"\u002F",[1005,3761,3762],{},[989,3763,3764],{"code":3764},"csh csh_script",[1005,3766,3759],{},[1005,3768,3769],{},[989,3770,3771],{"code":3771},"bash bash_script",[1005,3773,3759],{},[1005,3775,3776],{},[989,3777,3778],{"code":3778},"app_prog app_script",[997,3780,3781,1008,3784,1008,3789,3792],{},[1005,3782,3783],{},"但在加上 Magic Symbol 并且",[1005,3785,3786],{},[989,3787,3788],{"code":3788},"chmod +x script",[1005,3790,3791],{},"后，我们即可直接运行脚本",[1173,3793,3794],{},[997,3795,3796,3799,3800,3799,3803,3799,3806],{},[989,3797,3798],{"code":3798},"sh_script"," \u002F ",[989,3801,3802],{"code":3802},"csh_script",[989,3804,3805],{"code":3805},"bash_script",[989,3807,3808],{"code":3808},"app_script",[978,3810,3812],{"id":3811},"meta-characters-and-rep",[1005,3813,3814],{},"Meta-Characters And REP",[1577,3816,3818],{"id":3817},"meta-characters-as-wild-cards","Meta-Characters as Wild Cards",[986,3820,3821,3822,2783,3825,2783,3828,2783,3831,2783,3834,3837,3838,3840,3841,3844],{},"这些是 shell 里的通配符（wildcards \u002F globbing），主要用于 ",[989,3823,3824],{"code":3824},"ls",[989,3826,3827],{"code":3827},"cp",[989,3829,3830],{"code":3830},"mv",[989,3832,3833],{"code":3833},"rm",[989,3835,3836],{"code":3836},"find","（注意：",[989,3839,3836],{"code":3836}," 本身也有通配\u002F正则的用法）等命令里做",[1000,3842,3843],{},"文件名\u002F路径匹配","。",[1581,3846,3848],{"id":3847},"meta-character-rules","Meta-Character Rules",[1173,3850,3851,3868,3918,3928,3934,3948,3974,3979,3985],{},[997,3852,3853,3855,3856,3859,3860],{},[989,3854,1102],{"code":1102}," 匹配当前位置任意一个字符，即当前位置",[1000,3857,3858],{},"必须","有一个字符（不多不少）\n",[1173,3861,3862],{},[997,3863,3864,3867],{},[989,3865,3866],{"code":3866},"ls m?n"," #m4n, man, m!n",[997,3869,3870,3872,3873,3876],{},[989,3871,1085],{"code":1085}," 匹配当前位置任意 0 个或多个字符，即当前位置可以匹配 ",[1000,3874,3875],{},"0 个或多个字符",[1173,3877,3878,3884,3890,3907],{},[997,3879,3880,3883],{},[989,3881,3882],{"code":3882},"ls *"," #不是 . 开头的任意文件",[997,3885,3886,3889],{},[989,3887,3888],{"code":3888},"ls [a-z]*"," #小写字母开头的任意文件",[997,3891,3892,3895,3896,2783,3898,2783,3901,2783,3904],{},[989,3893,3894],{"code":3894},"a*"," 匹配：",[989,3897,3142],{"code":3142},[989,3899,3900],{"code":3900},"ab",[989,3902,3903],{"code":3903},"abc.txt",[989,3905,3906],{"code":3906},"a___",[997,3908,3909,3895,3912,2783,3915],{},[989,3910,3911],{"code":3911},"*.c",[989,3913,3914],{"code":3914},"main.c",[989,3916,3917],{"code":3917},"test.c",[997,3919,3920,3923,3924,3927],{},[989,3921,3922],{"code":3922},"[abc]"," #匹配括号内的任意",[1005,3925,3926],{},"一个","字符",[997,3929,3930,3933],{},[989,3931,3932],{"code":3932},"[a-d]"," #匹配括号内范围的任意字符",[997,3935,3936,3939,3940],{},[989,3937,3938],{"code":3938},"[!abc]"," #匹配任意字符不在封闭集内\n",[1173,3941,3942],{},[997,3943,3944,3947],{},[989,3945,3946],{"code":3946},"ls chpt[1-4]"," #chpt1, chpt2, chpt3, chpt4",[997,3949,3950,3953,3954],{},[989,3951,3952],{"code":3952},"{abc,bcd,cde}"," #匹配任一一组中的任一字符，注意用逗号分隔，花括号展开\n",[1173,3955,3956,3965],{},[997,3957,3958,3961,3962],{},[989,3959,3960],{"code":3960},"echo {a,b,c}"," 会展开成：",[989,3963,3964],{"code":3964},"echo a b c",[997,3966,3967,3970,3971],{},[989,3968,3969],{"code":3969},"ls {src,include}\u002F*.h"," 等价于：",[989,3972,3973],{"code":3973},"ls src\u002F*.h include\u002F*.h",[997,3975,3976,3978],{},[989,3977,1155],{"code":1155}," #当前用户的 home 目录",[997,3980,3981,3984],{},[989,3982,3983],{"code":3983},"~user"," #指定 user 的 home 目录",[997,3986,3987,3989],{},[989,3988,2159],{"code":2159}," #对待下一个字符为纯文本",[978,3991,3993],{"id":3992},"regular-expression-syntax","Regular Expression Syntax",[986,3995,3996],{},"这些是正则表达式（Regular Expression, regex）的基础语法，和通配符很像，但含义不一样，主要给“文本内容匹配”用",[1577,3998,4000],{"id":3999},"rep-rules","REP Rules",[1173,4002,4003,4009,4023,4047,4075,4101,4108,4121,4135,4155],{},[997,4004,4005,4008],{},[989,4006,4007],{"code":4007},"cat"," #字符串 cat",[997,4010,4011,4014,4015],{},[989,4012,4013],{"code":4013},"."," #匹配除换行以外的任意单个字符\n",[1173,4016,4017],{},[997,4018,4019,4022],{},[989,4020,4021],{"code":4021},".at"," #cat, rat, mat, bat",[997,4024,4025,4027,4028,4031],{},[989,4026,1102],{"code":1102}," #匹配之前单个字符的 ",[1000,4029,4030],{},"0 个或 1 个",[1173,4032,4033],{},[997,4034,4035,4038,4039,4042,4043,4046],{},[989,4036,4037],{"code":4037},"colou?r","匹配：",[989,4040,4041],{"code":4041},"color","（u 出现 0 次）、",[989,4044,4045],{"code":4045},"colour","（u 出现 1 次）",[997,4048,4049,4051,4052,4055],{},[989,4050,1085],{"code":1085}," #匹配之前的单个字符的 ",[1000,4053,4054],{},"0 或更多实例",[1173,4056,4057,4063,4069],{},[997,4058,4059,4062],{},[989,4060,4061],{"code":4061},"xy*z","匹配：xz（y 0 次）、xyz（1 次）、xyyz（2 次）、xyyyz（3 次）......",[997,4064,4065,4068],{},[989,4066,4067],{"code":4067},"[A-Z][A-Z]*"," #A, CD, GPIO，第一位必须是大写字母，后面可以跟 0 或更多个大写字母",[997,4070,4071,4074],{},[989,4072,4073],{"code":4073},"[A-Z]*"," #  , A, CD，0 或更多个大写字母",[997,4076,4077,3923,4079,4081,4082],{},[989,4078,3922],{"code":3922},[1000,4080,3926],{},"字符\n",[1173,4083,4084,4095],{},[997,4085,4086,4038,4089,2238,4092],{},[989,4087,4088],{"code":4088},"gr[ae]y",[989,4090,4091],{"code":4091},"gray",[989,4093,4094],{"code":4094},"grey",[997,4096,4097,4100],{},[989,4098,4099],{"code":4099},"[cC]at"," #cat 或 Cat",[997,4102,4103,4105,4106,3927],{},[989,4104,3932],{"code":3932}," #匹配括号内范围的任意",[1000,4107,3926],{},[997,4109,4110,3939,4113],{},[989,4111,4112],{"code":4112},"[^abc]",[1173,4114,4115],{},[997,4116,4117,4120],{},[989,4118,4119],{"code":4119},"[^a-zA-Z]"," #任意非字母字符",[997,4122,4123,4126,4127],{},[989,4124,4125],{"code":4125},"^exp"," #以该表达式开头的行\n",[1173,4128,4129],{},[997,4130,4131,4134],{},[989,4132,4133],{"code":4133},"^cat"," #cat 在行首",[997,4136,4137,4140,4141],{},[989,4138,4139],{"code":4139},"exp$"," #以该表达式结尾的行\n",[1173,4142,4143,4149],{},[997,4144,4145,4148],{},[989,4146,4147],{"code":4147},"cat$"," #cat 在行尾",[997,4150,4151,4154],{},[989,4152,4153],{"code":4153},"[0-9]$"," #以数字结尾的行",[997,4156,4157,4159,4160],{},[989,4158,2159],{"code":2159}," #对待下一个字符为纯文本\n",[1173,4161,4162],{},[997,4163,4164,4167,4168],{},[989,4165,4166],{"code":4166},"\\*"," #对待为纯文本星号\n",[1005,4169,4170],{},[1000,4171,4172],{},"通配符（Wildcards\u002FGlobbing）主要用于管理文件，而正则表达式（Regular Expressions）主要用于处理文本内容。",[983,4174,4175,4178,4181,4189,4192],{},[986,4176,4177],{},"特殊字符总结",[986,4179,4180],{},"正则中的特殊字符(需要转义来匹配字面意思)",[1803,4182,4187],{"className":4183,"code":4185,"language":4186},[4184],"language-text",". * + ? ^ $ { } [ ] ( ) | \\\n","text",[989,4188,4185],{"__ignoreMap":1809},[986,4190,4191],{},"转义序列(需要反斜杠来表示特殊含义)",[1803,4193,4196],{"className":4194,"code":4195,"language":4186},[4184],"\\s  空白字符\n\\d  数字\n\\w  单词字符\n\\n  换行\n\\t  制表符\n",[989,4197,4195],{"__ignoreMap":1809},[1173,4199,4200],{},[997,4201,4202,4204],{},[989,4203,1379],{"code":1379}," #表示或",[986,4206,4207],{},"来个具体例子",[983,4209,4210,4216,4221],{},[1803,4211,4214],{"className":4212,"code":4213,"language":1808,"meta":1809},[1806],"❯ ls | grep -E '\\(Answer format: \"[^\"]+\"\\)'                                  \n(Answer format: \"edlin, edit\")\n",[989,4215,4213],{"__ignoreMap":1809},[986,4217,4218],{},[1000,4219,4220],{},"匹配过程:",[994,4222,4223,4231,4241,4248],{},[997,4224,4225,4228,4229],{},[989,4226,4227],{"code":4227},"\""," → 匹配第一个双引号 ",[989,4230,4227],{"code":4227},[997,4232,4233,4236,4237,4240],{},[989,4234,4235],{"code":4235},"[^\"]+"," → 捕获 ",[989,4238,4239],{"code":4239},"edlin, edit"," (所有非引号字符)",[997,4242,4243,4245,4246],{},[989,4244,4227],{"code":4227}," → 匹配第二个双引号 ",[989,4247,4227],{"code":4227},[997,4249,4250,4253,4254],{},[989,4251,4252],{"code":4252},"\\)"," → 匹配右括号 ",[989,4255,3557],{"code":3557},[1577,4257,4258],{"id":4258},"条件判断部分",[986,4260,4261,4262,4265],{},"第一行包含三个逻辑判断，通常用于决定是否执行后续的 ",[989,4263,4264],{"code":4264},"diff"," 或拷贝操作：",[1173,4267,4268,4291,4315],{},[997,4269,4270,4275,4276],{},[1000,4271,4272],{},[989,4273,4274],{"code":4274},"(if -d)",":\n",[1173,4277,4278,4285],{},[997,4279,4280,4281,4284],{},"通常用于检查某个",[1000,4282,4283],{},"路径是否存在且是一个目录","（Directory）。",[997,4286,4287,4288,3844],{},"完整写法一般是 ",[989,4289,4290],{"code":4290},"if [ -d $DIR_PATH ]",[997,4292,4293,4275,4298],{},[1000,4294,4295],{},[989,4296,4297],{"code":4297},"(if !-w)",[1173,4299,4300,4312],{},[997,4301,4302,4303,3844,4306,4308,4309,4311],{},"检查文件或目录是否",[1000,4304,4305],{},"不可写",[989,4307,3151],{"code":3151}," 是取反符号，",[989,4310,3010],{"code":3010}," 代表可写（Writable）。",[997,4313,4314],{},"这通常是为了确认目标位置是否有权限限制，或者是否需要提升权限。",[997,4316,4317,4322,4275,4327],{},[1000,4318,4319],{},[989,4320,4321],{"code":4321},"if [ \\",[1000,4323,3610,4324],{},[989,4325,4326],{"code":4326}," != \"console\" ]",[1173,4328,4329,4332,4339],{},[997,4330,4331],{},"检查当前的终端类型。",[997,4333,4334,4338],{},[1000,4335,4336],{},[989,4337,3610],{"code":3610}," 命令会返回当前控制台的设备名。",[997,4340,4341,1206,4344,4347,4352],{},[1000,4342,4343],{},"意思",[1005,4345,4346],{},"如果当前用户",[1005,4348,4349],{},[1000,4350,4351],{},"不是",[1005,4353,4354],{},"在物理控制台（Console）上直接操作（例如是通过 SSH 远程登录），则条件成立。",[4356,4357],"hr",{},[1577,4359,4360],{"id":4360},"命令执行部分",[986,4362,4363],{},"第二行是一个文件对比命令：",[986,4365,4366],{},[989,4367,4368],{"code":4368},"diff $SYNOPSYS\u002Fadmin\u002Fsetup\u002F$f $LIBX11 >& \u002Fdev\u002Fnull",[1173,4370,4371,4394],{},[997,4372,4373,4377,4378],{},[1000,4374,4375],{},[989,4376,4264],{"code":4264},": 比较两个文件的差异。\n",[1173,4379,4380,4387],{},[997,4381,4382,4383,4386],{},"源文件：",[989,4384,4385],{"code":4385},"$SYNOPSYS\u002Fadmin\u002Fsetup\u002F$f","（通常是 Synopsys EDA 软件的安装配置模板）。",[997,4388,4389,4390,4393],{},"目标文件：",[989,4391,4392],{"code":4392},"$LIBX11","（系统路径下的配置文件）。",[997,4395,4396,4275,4401],{},[1000,4397,4398],{},[989,4399,4400],{"code":4400},">& \u002Fdev\u002Fnull",[1173,4402,4403,4409,4416],{},[997,4404,4405,4406,4408],{},"这是一个",[1000,4407,1276],{},"操作。",[997,4410,4411,4412,4415],{},"它将“标准输出”和“标准错误”全部丢弃到 ",[989,4413,4414],{"code":4414},"\u002Fdev\u002Fnull","（黑洞）。",[997,4417,4418,4421,4422,4424,4425],{},[1000,4419,4420],{},"目的","：脚本并不想让你看到具体的差异内容，它只是通过 ",[989,4423,4264],{"code":4264}," 的**退出状态码（Exit Status）**来判断两个文件是否一致。\n",[1173,4426,4427,4440],{},[997,4428,4429,1008,4432,4437],{},[1005,4430,4431],{},"如果状态码为",[1005,4433,4434],{},[989,4435,4436],{"code":4436},"0",[1005,4438,4439],{},"：文件完全一致。",[997,4441,4442,1008,4444,4449],{},[1005,4443,4431],{},[1005,4445,4446],{},[989,4447,4448],{"code":4448},"1",[1005,4450,4451],{},"：文件有差异。",{"title":1809,"searchDepth":4453,"depth":4453,"links":4454},4,[4455,4457,4458,4459,4468,4469,4470,4471,4478,4485,4507,4512],{"id":980,"depth":4456,"text":981},2,{"id":1050,"depth":4456,"text":1051},{"id":1170,"depth":4456,"text":1171},{"id":1212,"depth":4456,"text":1213,"children":4460},[4461],{"id":1579,"depth":4462,"text":1579,"children":4463},3,[4464,4465,4466],{"id":1583,"depth":4453,"text":1584},{"id":1689,"depth":4453,"text":1690},{"id":1872,"depth":4453,"text":4467},">& 与 &> 区别",{"id":2039,"depth":4456,"text":2040},{"id":2149,"depth":4456,"text":2150},{"id":2251,"depth":4456,"text":2252},{"id":2505,"depth":4456,"text":2508,"children":4472},[4473,4474,4475,4476,4477],{"id":2395,"depth":4462,"text":2395},{"id":2450,"depth":4462,"text":2450},{"id":2643,"depth":4462,"text":2643},{"id":2673,"depth":4462,"text":2673},{"id":2687,"depth":4462,"text":2687},{"id":2724,"depth":4456,"text":4479,"children":4480},"Environment Variables",[4481,4482],{"id":2741,"depth":4462,"text":2744},{"id":2770,"depth":4462,"text":2771,"children":4483},[4484],{"id":2810,"depth":4453,"text":2810},{"id":2951,"depth":4456,"text":2954,"children":4486},[4487,4491,4493,4497,4501,4504,4505],{"id":2957,"depth":4462,"text":2958,"children":4488},[4489,4490],{"id":2987,"depth":4453,"text":2988},{"id":3077,"depth":4453,"text":3077},{"id":3186,"depth":4462,"text":4492},"[[ ]] 的使用方法",{"id":3270,"depth":4462,"text":3271,"children":4494},[4495,4496],{"id":3274,"depth":4453,"text":3274},{"id":3289,"depth":4453,"text":3290},{"id":3423,"depth":4462,"text":3424,"children":4498},[4499,4500],{"id":3427,"depth":4453,"text":3428},{"id":3490,"depth":4453,"text":3491},{"id":3531,"depth":4462,"text":3532,"children":4502},[4503],{"id":3535,"depth":4453,"text":3428},{"id":3594,"depth":4462,"text":3595},{"id":3673,"depth":4462,"text":4506},"Magic Symbol #!",{"id":3811,"depth":4456,"text":3814,"children":4508},[4509],{"id":3817,"depth":4462,"text":3818,"children":4510},[4511],{"id":3847,"depth":4453,"text":3848},{"id":3992,"depth":4456,"text":3993,"children":4513},[4514,4515,4516],{"id":3999,"depth":4462,"text":4000},{"id":4258,"depth":4462,"text":4258},{"id":4360,"depth":4462,"text":4360},[903],"Shell 基础与常用命令","md",null,{"slots":4522},{},{"text":500,"minutes":501,"time":502,"words":503},{"title":497,"description":4518},{"loc":496,"images":4526},[4527],{"loc":3420},[4529,4530],"Linux","课程笔记","tech","V6mbETeZwy6CHVyXJDhKZURUdTD9QQzel8mdHoCQPT4",[4534,4535],{"title":488,"path":487,"stem":486,"date":489,"type":4531,"children":-1},{"title":507,"path":506,"stem":505,"date":508,"type":4531,"children":-1},1789057276110]