[{"data":1,"prerenderedAt":1626},["ShallowReactive",2],{"doc-\u002Fdocs\u002Flinux-commands-cheatsheet":3,"docs-all":1444},{"id":4,"title":5,"body":6,"category":1429,"date":1430,"description":1431,"draft":1432,"extension":1433,"meta":1434,"navigation":1145,"path":1435,"seo":1436,"source":1437,"stem":1438,"tags":1439,"__hash__":1443},"docs\u002Fdocs\u002Flinux-commands-cheatsheet.md","Linux 常用命令与权限管理速查",{"type":7,"value":8,"toc":1403},"minimark",[9,13,17,26,100,107,147,154,191,204,207,271,274,342,345,436,439,498,501,567,571,586,590,597,685,688,770,776,842,873,877,945,948,986,992,1000,1003,1067,1070,1100,1103,1177,1180,1229,1232,1328,1331,1399],[10,11,5],"h1",{"id":12},"linux-常用命令与权限管理速查",[14,15,16],"h2",{"id":16},"文件操作核心命令",[18,19,21,22],"h3",{"id":20},"复制-cp","复制 ",[23,24,25],"code",{},"cp",[27,28,33],"pre",{"className":29,"code":30,"language":31,"meta":32,"style":32},"language-bash shiki shiki-themes github-light github-dark","cp file.txt ~\u002FDesktop\u002F          # 复制文件到目标目录\ncp file.txt newfile.txt         # 复制并重命名\ncp -r myfolder\u002F ~\u002FDesktop\u002F      # 复制整个目录（-r 递归）\ncp -rp myfolder\u002F ~\u002Fbackup\u002F      # 复制并保留权限、时间戳\n","bash","",[23,34,35,54,67,84],{"__ignoreMap":32},[36,37,40,43,47,50],"span",{"class":38,"line":39},"line",1,[36,41,25],{"class":42},"sScJk",[36,44,46],{"class":45},"sZZnC"," file.txt",[36,48,49],{"class":45}," ~\u002FDesktop\u002F",[36,51,53],{"class":52},"sJ8bj","          # 复制文件到目标目录\n",[36,55,57,59,61,64],{"class":38,"line":56},2,[36,58,25],{"class":42},[36,60,46],{"class":45},[36,62,63],{"class":45}," newfile.txt",[36,65,66],{"class":52},"         # 复制并重命名\n",[36,68,70,72,76,79,81],{"class":38,"line":69},3,[36,71,25],{"class":42},[36,73,75],{"class":74},"sj4cs"," -r",[36,77,78],{"class":45}," myfolder\u002F",[36,80,49],{"class":45},[36,82,83],{"class":52},"      # 复制整个目录（-r 递归）\n",[36,85,87,89,92,94,97],{"class":38,"line":86},4,[36,88,25],{"class":42},[36,90,91],{"class":74}," -rp",[36,93,78],{"class":45},[36,95,96],{"class":45}," ~\u002Fbackup\u002F",[36,98,99],{"class":52},"      # 复制并保留权限、时间戳\n",[18,101,103,104],{"id":102},"移动-重命名-mv","移动 \u002F 重命名 ",[23,105,106],{},"mv",[27,108,110],{"className":29,"code":109,"language":31,"meta":32,"style":32},"mv file.txt ~\u002FDesktop\u002F          # 移动文件\nmv oldname.txt newname.txt      # 重命名文件 mv 原名称 新名称\nmv myfolder\u002F ~\u002FDesktop\u002F         # 移动整个目录（不需要 -r）\n",[23,111,112,123,136],{"__ignoreMap":32},[36,113,114,116,118,120],{"class":38,"line":39},[36,115,106],{"class":42},[36,117,46],{"class":45},[36,119,49],{"class":45},[36,121,122],{"class":52},"          # 移动文件\n",[36,124,125,127,130,133],{"class":38,"line":56},[36,126,106],{"class":42},[36,128,129],{"class":45}," oldname.txt",[36,131,132],{"class":45}," newname.txt",[36,134,135],{"class":52},"      # 重命名文件 mv 原名称 新名称\n",[36,137,138,140,142,144],{"class":38,"line":69},[36,139,106],{"class":42},[36,141,78],{"class":45},[36,143,49],{"class":45},[36,145,146],{"class":52},"         # 移动整个目录（不需要 -r）\n",[18,148,150,151],{"id":149},"删除-rm","删除 ",[23,152,153],{},"rm",[27,155,157],{"className":29,"code":156,"language":31,"meta":32,"style":32},"rm file.txt                     # 删除文件\nrm -r myfolder\u002F                 # 删除目录及其内容\nrm -rf myfolder\u002F                # 强制删除，不提示（⚠️ 慎用）\n",[23,158,159,168,179],{"__ignoreMap":32},[36,160,161,163,165],{"class":38,"line":39},[36,162,153],{"class":42},[36,164,46],{"class":45},[36,166,167],{"class":52},"                     # 删除文件\n",[36,169,170,172,174,176],{"class":38,"line":56},[36,171,153],{"class":42},[36,173,75],{"class":74},[36,175,78],{"class":45},[36,177,178],{"class":52},"                 # 删除目录及其内容\n",[36,180,181,183,186,188],{"class":38,"line":69},[36,182,153],{"class":42},[36,184,185],{"class":74}," -rf",[36,187,78],{"class":45},[36,189,190],{"class":52},"                # 强制删除，不提示（⚠️ 慎用）\n",[192,193,194],"blockquote",{},[195,196,197,198,200,201,203],"p",{},"Linux 没有\"粘贴\"概念，",[23,199,25],{},"\u002F",[23,202,106],{}," 就是复制+粘贴、剪切+粘贴。",[14,205,206],{"id":206},"目录导航",[27,208,210],{"className":29,"code":209,"language":31,"meta":32,"style":32},"pwd                  # 显示当前所在路径\nls                   # 列出当前目录文件\nls -la               # 详细列表，包含隐藏文件\ncd ~                 # 回到用户主目录\ncd ..                # 返回上一级目录\ncd \u002Fpath\u002Fto\u002Fdir      # 进入指定目录\n",[23,211,212,220,228,238,249,260],{"__ignoreMap":32},[36,213,214,217],{"class":38,"line":39},[36,215,216],{"class":74},"pwd",[36,218,219],{"class":52},"                  # 显示当前所在路径\n",[36,221,222,225],{"class":38,"line":56},[36,223,224],{"class":42},"ls",[36,226,227],{"class":52},"                   # 列出当前目录文件\n",[36,229,230,232,235],{"class":38,"line":69},[36,231,224],{"class":42},[36,233,234],{"class":74}," -la",[36,236,237],{"class":52},"               # 详细列表，包含隐藏文件\n",[36,239,240,243,246],{"class":38,"line":86},[36,241,242],{"class":74},"cd",[36,244,245],{"class":45}," ~",[36,247,248],{"class":52},"                 # 回到用户主目录\n",[36,250,252,254,257],{"class":38,"line":251},5,[36,253,242],{"class":74},[36,255,256],{"class":45}," ..",[36,258,259],{"class":52},"                # 返回上一级目录\n",[36,261,263,265,268],{"class":38,"line":262},6,[36,264,242],{"class":74},[36,266,267],{"class":45}," \u002Fpath\u002Fto\u002Fdir",[36,269,270],{"class":52},"      # 进入指定目录\n",[14,272,273],{"id":273},"文件查看",[27,275,277],{"className":29,"code":276,"language":31,"meta":32,"style":32},"cat file.txt         # 查看文件全部内容\nless file.txt        # 分页查看（q 退出）\nhead -n 20 file.txt  # 查看前 20 行\ntail -n 20 file.txt  # 查看后 20 行\ntail -f log.txt      # 实时追踪文件内容（看日志常用）\n",[23,278,279,289,299,315,329],{"__ignoreMap":32},[36,280,281,284,286],{"class":38,"line":39},[36,282,283],{"class":42},"cat",[36,285,46],{"class":45},[36,287,288],{"class":52},"         # 查看文件全部内容\n",[36,290,291,294,296],{"class":38,"line":56},[36,292,293],{"class":42},"less",[36,295,46],{"class":45},[36,297,298],{"class":52},"        # 分页查看（q 退出）\n",[36,300,301,304,307,310,312],{"class":38,"line":69},[36,302,303],{"class":42},"head",[36,305,306],{"class":74}," -n",[36,308,309],{"class":74}," 20",[36,311,46],{"class":45},[36,313,314],{"class":52},"  # 查看前 20 行\n",[36,316,317,320,322,324,326],{"class":38,"line":86},[36,318,319],{"class":42},"tail",[36,321,306],{"class":74},[36,323,309],{"class":74},[36,325,46],{"class":45},[36,327,328],{"class":52},"  # 查看后 20 行\n",[36,330,331,333,336,339],{"class":38,"line":251},[36,332,319],{"class":42},[36,334,335],{"class":74}," -f",[36,337,338],{"class":45}," log.txt",[36,340,341],{"class":52},"      # 实时追踪文件内容（看日志常用）\n",[14,343,344],{"id":344},"文件创建与编辑",[27,346,348],{"className":29,"code":347,"language":31,"meta":32,"style":32},"touch file.txt       # 创建空文件\nmkdir myfolder       # 创建目录\nmkdir -p a\u002Fb\u002Fc       # 递归创建多级目录\nnano file.txt        # 简单编辑器（新手友好）\nvim file.txt         # 强大编辑器（i 进入编辑，:wq 保存退出）\necho \"内容\" > file.txt   # 写入内容（会覆盖）\necho \"内容\" >> file.txt  # 追加内容（不覆盖）\n",[23,349,350,360,371,384,394,404,421],{"__ignoreMap":32},[36,351,352,355,357],{"class":38,"line":39},[36,353,354],{"class":42},"touch",[36,356,46],{"class":45},[36,358,359],{"class":52},"       # 创建空文件\n",[36,361,362,365,368],{"class":38,"line":56},[36,363,364],{"class":42},"mkdir",[36,366,367],{"class":45}," myfolder",[36,369,370],{"class":52},"       # 创建目录\n",[36,372,373,375,378,381],{"class":38,"line":69},[36,374,364],{"class":42},[36,376,377],{"class":74}," -p",[36,379,380],{"class":45}," a\u002Fb\u002Fc",[36,382,383],{"class":52},"       # 递归创建多级目录\n",[36,385,386,389,391],{"class":38,"line":86},[36,387,388],{"class":42},"nano",[36,390,46],{"class":45},[36,392,393],{"class":52},"        # 简单编辑器（新手友好）\n",[36,395,396,399,401],{"class":38,"line":251},[36,397,398],{"class":42},"vim",[36,400,46],{"class":45},[36,402,403],{"class":52},"         # 强大编辑器（i 进入编辑，:wq 保存退出）\n",[36,405,406,409,412,416,418],{"class":38,"line":262},[36,407,408],{"class":74},"echo",[36,410,411],{"class":45}," \"内容\"",[36,413,415],{"class":414},"szBVR"," >",[36,417,46],{"class":45},[36,419,420],{"class":52},"   # 写入内容（会覆盖）\n",[36,422,424,426,428,431,433],{"class":38,"line":423},7,[36,425,408],{"class":74},[36,427,411],{"class":45},[36,429,430],{"class":414}," >>",[36,432,46],{"class":45},[36,434,435],{"class":52},"  # 追加内容（不覆盖）\n",[14,437,438],{"id":438},"查找文件",[27,440,442],{"className":29,"code":441,"language":31,"meta":32,"style":32},"find . -name \"*.txt\"           # 在当前目录递归查找 txt 文件\nfind \u002Fhome -name \"file.txt\"    # 在指定路径查找\nlocate filename                # 快速查找（需要数据库，更快）\nwhich python3                  # 查找命令所在路径\n",[23,443,444,461,476,487],{"__ignoreMap":32},[36,445,446,449,452,455,458],{"class":38,"line":39},[36,447,448],{"class":42},"find",[36,450,451],{"class":45}," .",[36,453,454],{"class":74}," -name",[36,456,457],{"class":45}," \"*.txt\"",[36,459,460],{"class":52},"           # 在当前目录递归查找 txt 文件\n",[36,462,463,465,468,470,473],{"class":38,"line":56},[36,464,448],{"class":42},[36,466,467],{"class":45}," \u002Fhome",[36,469,454],{"class":74},[36,471,472],{"class":45}," \"file.txt\"",[36,474,475],{"class":52},"    # 在指定路径查找\n",[36,477,478,481,484],{"class":38,"line":69},[36,479,480],{"class":42},"locate",[36,482,483],{"class":45}," filename",[36,485,486],{"class":52},"                # 快速查找（需要数据库，更快）\n",[36,488,489,492,495],{"class":38,"line":86},[36,490,491],{"class":74},"which",[36,493,494],{"class":45}," python3",[36,496,497],{"class":52},"                  # 查找命令所在路径\n",[14,499,500],{"id":500},"系统信息",[27,502,504],{"className":29,"code":503,"language":31,"meta":32,"style":32},"uname -a             # 查看系统内核信息\ndf -h                # 查看磁盘使用情况\ndu -sh myfolder\u002F     # 查看目录占用大小\nfree -h              # 查看内存使用情况\ntop                  # 实时进程监控（q 退出）\nhtop                 # 更好看的 top（需安装）\n",[23,505,506,517,528,541,551,559],{"__ignoreMap":32},[36,507,508,511,514],{"class":38,"line":39},[36,509,510],{"class":42},"uname",[36,512,513],{"class":74}," -a",[36,515,516],{"class":52},"             # 查看系统内核信息\n",[36,518,519,522,525],{"class":38,"line":56},[36,520,521],{"class":42},"df",[36,523,524],{"class":74}," -h",[36,526,527],{"class":52},"                # 查看磁盘使用情况\n",[36,529,530,533,536,538],{"class":38,"line":69},[36,531,532],{"class":42},"du",[36,534,535],{"class":74}," -sh",[36,537,78],{"class":45},[36,539,540],{"class":52},"     # 查看目录占用大小\n",[36,542,543,546,548],{"class":38,"line":86},[36,544,545],{"class":42},"free",[36,547,524],{"class":74},[36,549,550],{"class":52},"              # 查看内存使用情况\n",[36,552,553,556],{"class":38,"line":251},[36,554,555],{"class":42},"top",[36,557,558],{"class":52},"                  # 实时进程监控（q 退出）\n",[36,560,561,564],{"class":38,"line":262},[36,562,563],{"class":42},"htop",[36,565,566],{"class":52},"                 # 更好看的 top（需安装）\n",[14,568,570],{"id":569},"权限管理chmod-与-chown","权限管理：chmod 与 chown",[195,572,573,574,577,578,581,582,585],{},"两个核心命令：",[23,575,576],{},"chmod"," 改权限，",[23,579,580],{},"chown"," 改属主。需要管理员权限时在命令前加 ",[23,583,584],{},"sudo","。",[18,587,589],{"id":588},"chmod-改权限","chmod 改权限",[195,591,592,596],{},[593,594,595],"strong",{},"数字方式（最常用）","。权限是三组数字，分别对应属主 \u002F 属组 \u002F 其他人：",[598,599,600,616],"table",{},[601,602,603],"thead",{},[604,605,606,610,613],"tr",{},[607,608,609],"th",{},"数字",[607,611,612],{},"权限",[607,614,615],{},"含义",[617,618,619,633,646,659,672],"tbody",{},[604,620,621,625,630],{},[622,623,624],"td",{},"7",[622,626,627],{},[23,628,629],{},"rwx",[622,631,632],{},"读+写+执行",[604,634,635,638,643],{},[622,636,637],{},"6",[622,639,640],{},[23,641,642],{},"rw-",[622,644,645],{},"读+写",[604,647,648,651,656],{},[622,649,650],{},"5",[622,652,653],{},[23,654,655],{},"r-x",[622,657,658],{},"读+执行",[604,660,661,664,669],{},[622,662,663],{},"4",[622,665,666],{},[23,667,668],{},"r--",[622,670,671],{},"只读",[604,673,674,677,682],{},[622,675,676],{},"0",[622,678,679],{},[23,680,681],{},"---",[622,683,684],{},"无权限",[195,686,687],{},"常用组合：",[27,689,691],{"className":29,"code":690,"language":31,"meta":32,"style":32},"chmod 755 文件夹           # 属主全权限，其他人读+执行（目录常用）\nchmod 644 文件             # 属主读写，其他人只读（普通文件常用）\nchmod 700 文件夹           # 只有属主能访问（私密目录，如 ~\u002F.ssh）\nchmod 777 文件夹           # 所有人全权限（不推荐，仅临时调试用）\nchmod 600 文件             # 只有属主能读写（密钥文件常用）\nchmod -R 755 ~\u002Fmyproject   # -R 递归，文件夹及内部所有文件\n",[23,692,693,706,719,731,743,755],{"__ignoreMap":32},[36,694,695,697,700,703],{"class":38,"line":39},[36,696,576],{"class":42},[36,698,699],{"class":74}," 755",[36,701,702],{"class":45}," 文件夹",[36,704,705],{"class":52},"           # 属主全权限，其他人读+执行（目录常用）\n",[36,707,708,710,713,716],{"class":38,"line":56},[36,709,576],{"class":42},[36,711,712],{"class":74}," 644",[36,714,715],{"class":45}," 文件",[36,717,718],{"class":52},"             # 属主读写，其他人只读（普通文件常用）\n",[36,720,721,723,726,728],{"class":38,"line":69},[36,722,576],{"class":42},[36,724,725],{"class":74}," 700",[36,727,702],{"class":45},[36,729,730],{"class":52},"           # 只有属主能访问（私密目录，如 ~\u002F.ssh）\n",[36,732,733,735,738,740],{"class":38,"line":86},[36,734,576],{"class":42},[36,736,737],{"class":74}," 777",[36,739,702],{"class":45},[36,741,742],{"class":52},"           # 所有人全权限（不推荐，仅临时调试用）\n",[36,744,745,747,750,752],{"class":38,"line":251},[36,746,576],{"class":42},[36,748,749],{"class":74}," 600",[36,751,715],{"class":45},[36,753,754],{"class":52},"             # 只有属主能读写（密钥文件常用）\n",[36,756,757,759,762,764,767],{"class":38,"line":262},[36,758,576],{"class":42},[36,760,761],{"class":74}," -R",[36,763,699],{"class":74},[36,765,766],{"class":45}," ~\u002Fmyproject",[36,768,769],{"class":52},"   # -R 递归，文件夹及内部所有文件\n",[195,771,772,775],{},[593,773,774],{},"符号方式（增量修改）","：",[27,777,779],{"className":29,"code":778,"language":31,"meta":32,"style":32},"chmod +x script.sh   # 给所有人加执行权限\nchmod u+x script.sh  # 只给属主加执行权限\nchmod g-w file.txt   # 取消属组的写权限\nchmod o=r file.txt   # 设置其他人为只读\nchmod a+r file.txt   # all（所有人）加读权限\n",[23,780,781,794,806,818,830],{"__ignoreMap":32},[36,782,783,785,788,791],{"class":38,"line":39},[36,784,576],{"class":42},[36,786,787],{"class":45}," +x",[36,789,790],{"class":45}," script.sh",[36,792,793],{"class":52},"   # 给所有人加执行权限\n",[36,795,796,798,801,803],{"class":38,"line":56},[36,797,576],{"class":42},[36,799,800],{"class":45}," u+x",[36,802,790],{"class":45},[36,804,805],{"class":52},"  # 只给属主加执行权限\n",[36,807,808,810,813,815],{"class":38,"line":69},[36,809,576],{"class":42},[36,811,812],{"class":45}," g-w",[36,814,46],{"class":45},[36,816,817],{"class":52},"   # 取消属组的写权限\n",[36,819,820,822,825,827],{"class":38,"line":86},[36,821,576],{"class":42},[36,823,824],{"class":45}," o=r",[36,826,46],{"class":45},[36,828,829],{"class":52},"   # 设置其他人为只读\n",[36,831,832,834,837,839],{"class":38,"line":251},[36,833,576],{"class":42},[36,835,836],{"class":45}," a+r",[36,838,46],{"class":45},[36,840,841],{"class":52},"   # all（所有人）加读权限\n",[195,843,844,845,848,849,852,853,856,857,860,861,864,865,868,869,872],{},"符号含义：",[23,846,847],{},"u"," 属主 \u002F ",[23,850,851],{},"g"," 属组 \u002F ",[23,854,855],{},"o"," 其他人 \u002F ",[23,858,859],{},"a"," 所有人；",[23,862,863],{},"+"," 添加 \u002F ",[23,866,867],{},"-"," 移除 \u002F ",[23,870,871],{},"="," 设置为。",[18,874,876],{"id":875},"chown-改属主-属组","chown 改属主 \u002F 属组",[27,878,880],{"className":29,"code":879,"language":31,"meta":32,"style":32},"chown user file                        # 改属主\nchown user:group file                  # 同时改属主和属组\nchown -R user:group 文件夹             # 递归修改\nsudo chown -R $USER:$USER ~\u002Fmyproject  # 把目录所有权改给当前用户\n",[23,881,882,895,907,920],{"__ignoreMap":32},[36,883,884,886,889,892],{"class":38,"line":39},[36,885,580],{"class":42},[36,887,888],{"class":45}," user",[36,890,891],{"class":45}," file",[36,893,894],{"class":52},"                        # 改属主\n",[36,896,897,899,902,904],{"class":38,"line":56},[36,898,580],{"class":42},[36,900,901],{"class":45}," user:group",[36,903,891],{"class":45},[36,905,906],{"class":52},"                  # 同时改属主和属组\n",[36,908,909,911,913,915,917],{"class":38,"line":69},[36,910,580],{"class":42},[36,912,761],{"class":74},[36,914,901],{"class":45},[36,916,702],{"class":45},[36,918,919],{"class":52},"             # 递归修改\n",[36,921,922,924,927,929,933,936,939,942],{"class":38,"line":86},[36,923,584],{"class":42},[36,925,926],{"class":45}," chown",[36,928,761],{"class":74},[36,930,932],{"class":931},"sVt8B"," $USER",[36,934,935],{"class":45},":",[36,937,938],{"class":931},"$USER ",[36,940,941],{"class":45},"~\u002Fmyproject",[36,943,944],{"class":52},"  # 把目录所有权改给当前用户\n",[18,946,947],{"id":947},"查看当前权限",[27,949,951],{"className":29,"code":950,"language":31,"meta":32,"style":32},"ls -l 文件      # 看单个文件\nls -la 文件夹   # 看文件夹内所有文件（含隐藏）\nstat 文件       # 详细权限信息\n",[23,952,953,965,976],{"__ignoreMap":32},[36,954,955,957,960,962],{"class":38,"line":39},[36,956,224],{"class":42},[36,958,959],{"class":74}," -l",[36,961,715],{"class":45},[36,963,964],{"class":52},"      # 看单个文件\n",[36,966,967,969,971,973],{"class":38,"line":56},[36,968,224],{"class":42},[36,970,234],{"class":74},[36,972,702],{"class":45},[36,974,975],{"class":52},"   # 看文件夹内所有文件（含隐藏）\n",[36,977,978,981,983],{"class":38,"line":69},[36,979,980],{"class":74},"stat",[36,982,715],{"class":45},[36,984,985],{"class":52},"       # 详细权限信息\n",[195,987,988,991],{},[23,989,990],{},"ls -l"," 输出的解读：",[27,993,998],{"className":994,"code":996,"language":997},[995],"language-text","drwxr-xr-x 3 user group 4096 Nov 27 10:00 myproject\n│└┬┘└┬┘└┬┘   └┬─┘ └─┬─┘\n│ │  │  │    属主   属组\n│ │  │  └──── 其他人权限 r-x\n│ │  └─────── 属组权限 r-x\n│ └────────── 属主权限 rwx\n└──────────── d 表示目录（- 文件、l 软链）\n","text",[23,999,996],{"__ignoreMap":32},[18,1001,1002],{"id":1002},"实操速查",[598,1004,1005,1015],{},[601,1006,1007],{},[604,1008,1009,1012],{},[607,1010,1011],{},"场景",[607,1013,1014],{},"命令",[617,1016,1017,1027,1037,1047,1057],{},[604,1018,1019,1022],{},[622,1020,1021],{},"让脚本可执行",[622,1023,1024],{},[23,1025,1026],{},"chmod +x script.sh",[604,1028,1029,1032],{},[622,1030,1031],{},"标准代码目录",[622,1033,1034],{},[23,1035,1036],{},"chmod -R 755 项目目录",[604,1038,1039,1042],{},[622,1040,1041],{},"私密配置目录",[622,1043,1044],{},[23,1045,1046],{},"chmod 700 ~\u002F.ssh",[604,1048,1049,1052],{},[622,1050,1051],{},"把目录归属当前用户",[622,1053,1054],{},[23,1055,1056],{},"sudo chown -R $USER:$USER 目录",[604,1058,1059,1062],{},[622,1060,1061],{},"SSH 私钥（必须 600）",[622,1063,1064],{},[23,1065,1066],{},"chmod 600 ~\u002F.ssh\u002Fid_rsa",[18,1068,1069],{"id":1069},"常见坑",[1071,1072,1073,1088,1094],"ul",{},[1074,1075,1076,1077,1080,1081,1084,1085,1087],"li",{},"WSL 下 ",[23,1078,1079],{},"\u002Fmnt\u002Fc","、",[23,1082,1083],{},"\u002Fmnt\u002Ff"," 的 Windows 文件，",[23,1086,576],{}," 改不了真实权限（DrvFs 文件系统限制），只会改 metadata 显示。",[1074,1089,1090,1091,1093],{},"改权限前先 ",[23,1092,990],{}," 看看现状，避免改错。",[1074,1095,1096,1099],{},[23,1097,1098],{},"777"," 慎用，等于完全开放，安全风险高。",[14,1101,1102],{"id":1102},"压缩与解压",[27,1104,1106],{"className":29,"code":1105,"language":31,"meta":32,"style":32},"# tar.gz\ntar -czvf archive.tar.gz myfolder\u002F   # 压缩\ntar -xzvf archive.tar.gz             # 解压\n\n# zip\nzip -r archive.zip myfolder\u002F         # 压缩\nunzip archive.zip                    # 解压\n",[23,1107,1108,1113,1129,1141,1147,1152,1167],{"__ignoreMap":32},[36,1109,1110],{"class":38,"line":39},[36,1111,1112],{"class":52},"# tar.gz\n",[36,1114,1115,1118,1121,1124,1126],{"class":38,"line":56},[36,1116,1117],{"class":42},"tar",[36,1119,1120],{"class":74}," -czvf",[36,1122,1123],{"class":45}," archive.tar.gz",[36,1125,78],{"class":45},[36,1127,1128],{"class":52},"   # 压缩\n",[36,1130,1131,1133,1136,1138],{"class":38,"line":69},[36,1132,1117],{"class":42},[36,1134,1135],{"class":74}," -xzvf",[36,1137,1123],{"class":45},[36,1139,1140],{"class":52},"             # 解压\n",[36,1142,1143],{"class":38,"line":86},[36,1144,1146],{"emptyLinePlaceholder":1145},true,"\n",[36,1148,1149],{"class":38,"line":251},[36,1150,1151],{"class":52},"# zip\n",[36,1153,1154,1157,1159,1162,1164],{"class":38,"line":262},[36,1155,1156],{"class":42},"zip",[36,1158,75],{"class":74},[36,1160,1161],{"class":45}," archive.zip",[36,1163,78],{"class":45},[36,1165,1166],{"class":52},"         # 压缩\n",[36,1168,1169,1172,1174],{"class":38,"line":423},[36,1170,1171],{"class":42},"unzip",[36,1173,1161],{"class":45},[36,1175,1176],{"class":52},"                    # 解压\n",[14,1178,1179],{"id":1179},"网络常用",[27,1181,1183],{"className":29,"code":1182,"language":31,"meta":32,"style":32},"ping google.com          # 测试网络连通性\ncurl https:\u002F\u002Fexample.com # 发起 HTTP 请求\nwget https:\u002F\u002Fexample.com\u002Ffile.zip  # 下载文件\nssh user@192.168.1.1     # 远程连接\n",[23,1184,1185,1196,1207,1218],{"__ignoreMap":32},[36,1186,1187,1190,1193],{"class":38,"line":39},[36,1188,1189],{"class":42},"ping",[36,1191,1192],{"class":45}," google.com",[36,1194,1195],{"class":52},"          # 测试网络连通性\n",[36,1197,1198,1201,1204],{"class":38,"line":56},[36,1199,1200],{"class":42},"curl",[36,1202,1203],{"class":45}," https:\u002F\u002Fexample.com",[36,1205,1206],{"class":52}," # 发起 HTTP 请求\n",[36,1208,1209,1212,1215],{"class":38,"line":69},[36,1210,1211],{"class":42},"wget",[36,1213,1214],{"class":45}," https:\u002F\u002Fexample.com\u002Ffile.zip",[36,1216,1217],{"class":52},"  # 下载文件\n",[36,1219,1220,1223,1226],{"class":38,"line":86},[36,1221,1222],{"class":42},"ssh",[36,1224,1225],{"class":45}," user@192.168.1.1",[36,1227,1228],{"class":52},"     # 远程连接\n",[14,1230,1231],{"id":1231},"实用小技巧",[27,1233,1235],{"className":29,"code":1234,"language":31,"meta":32,"style":32},"Ctrl + C        # 终止当前命令\nCtrl + Z        # 暂停当前命令\nCtrl + L        # 清屏（等同于 clear）\nTab             # 自动补全命令\u002F路径\n↑ \u002F ↓          # 翻历史命令\nhistory         # 查看命令历史\ncommand --help  # 查看命令帮助\nman command     # 查看命令完整手册\n",[23,1236,1237,1251,1263,1275,1283,1297,1305,1316],{"__ignoreMap":32},[36,1238,1239,1242,1245,1248],{"class":38,"line":39},[36,1240,1241],{"class":42},"Ctrl",[36,1243,1244],{"class":45}," +",[36,1246,1247],{"class":45}," C",[36,1249,1250],{"class":52},"        # 终止当前命令\n",[36,1252,1253,1255,1257,1260],{"class":38,"line":56},[36,1254,1241],{"class":42},[36,1256,1244],{"class":45},[36,1258,1259],{"class":45}," Z",[36,1261,1262],{"class":52},"        # 暂停当前命令\n",[36,1264,1265,1267,1269,1272],{"class":38,"line":69},[36,1266,1241],{"class":42},[36,1268,1244],{"class":45},[36,1270,1271],{"class":45}," L",[36,1273,1274],{"class":52},"        # 清屏（等同于 clear）\n",[36,1276,1277,1280],{"class":38,"line":86},[36,1278,1279],{"class":42},"Tab",[36,1281,1282],{"class":52},"             # 自动补全命令\u002F路径\n",[36,1284,1285,1288,1291,1294],{"class":38,"line":251},[36,1286,1287],{"class":42},"↑",[36,1289,1290],{"class":45}," \u002F",[36,1292,1293],{"class":45}," ↓",[36,1295,1296],{"class":52},"          # 翻历史命令\n",[36,1298,1299,1302],{"class":38,"line":262},[36,1300,1301],{"class":74},"history",[36,1303,1304],{"class":52},"         # 查看命令历史\n",[36,1306,1307,1310,1313],{"class":38,"line":423},[36,1308,1309],{"class":74},"command",[36,1311,1312],{"class":74}," --help",[36,1314,1315],{"class":52},"  # 查看命令帮助\n",[36,1317,1319,1322,1325],{"class":38,"line":1318},8,[36,1320,1321],{"class":42},"man",[36,1323,1324],{"class":45}," command",[36,1326,1327],{"class":52},"     # 查看命令完整手册\n",[14,1329,1330],{"id":1330},"路径符号速记",[598,1332,1333,1342],{},[601,1334,1335],{},[604,1336,1337,1340],{},[607,1338,1339],{},"符号",[607,1341,615],{},[617,1343,1344,1357,1367,1377,1386],{},[604,1345,1346,1351],{},[622,1347,1348],{},[23,1349,1350],{},"~",[622,1352,1353,1354],{},"当前用户主目录 ",[23,1355,1356],{},"\u002Fhome\u002Fusername",[604,1358,1359,1364],{},[622,1360,1361],{},[23,1362,1363],{},".",[622,1365,1366],{},"当前目录",[604,1368,1369,1374],{},[622,1370,1371],{},[23,1372,1373],{},"..",[622,1375,1376],{},"上一级目录",[604,1378,1379,1383],{},[622,1380,1381],{},[23,1382,200],{},[622,1384,1385],{},"根目录",[604,1387,1388,1392],{},[622,1389,1390],{},[23,1391,867],{},[622,1393,1394,1395,1398],{},"上一次所在目录（",[23,1396,1397],{},"cd -"," 快速切换）",[1400,1401,1402],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":32,"searchDepth":69,"depth":69,"links":1404},[1405,1413,1414,1415,1416,1417,1418,1425,1426,1427,1428],{"id":16,"depth":56,"text":16,"children":1406},[1407,1409,1411],{"id":20,"depth":69,"text":1408},"复制 cp",{"id":102,"depth":69,"text":1410},"移动 \u002F 重命名 mv",{"id":149,"depth":69,"text":1412},"删除 rm",{"id":206,"depth":56,"text":206},{"id":273,"depth":56,"text":273},{"id":344,"depth":56,"text":344},{"id":438,"depth":56,"text":438},{"id":500,"depth":56,"text":500},{"id":569,"depth":56,"text":570,"children":1419},[1420,1421,1422,1423,1424],{"id":588,"depth":69,"text":589},{"id":875,"depth":69,"text":876},{"id":947,"depth":69,"text":947},{"id":1002,"depth":69,"text":1002},{"id":1069,"depth":69,"text":1069},{"id":1102,"depth":56,"text":1102},{"id":1179,"depth":56,"text":1179},{"id":1231,"depth":56,"text":1231},{"id":1330,"depth":56,"text":1330},"toolchain","2026-05-28","cp\u002Fmv\u002Frm、目录导航、查找、压缩、网络等基础命令速查，以及 chmod\u002Fchown 的数字与符号写法、常用组合和 WSL 下的坑。",false,"md",{},"\u002Fdocs\u002Flinux-commands-cheatsheet",{"title":5,"description":1431},null,"docs\u002Flinux-commands-cheatsheet",[1440,1441,1442],"linux","wsl2","cheatsheet","G2Y97uzwNgishCkzDWjOFXdixFR4vWCQbPFk8xriqoQ",[1445,1455,1461,1466,1471,1473,1484,1491,1497,1507,1514,1523,1528,1535,1540,1546,1552,1559,1566,1573,1582,1588,1594,1600,1605,1610,1615,1620],{"path":1446,"title":1447,"description":1448,"date":1449,"category":1429,"tags":1450},"\u002Fdocs\u002Fbabel-basics","Babel 转译基础与构建集成","Babel 7 的 CLI、preset、plugin、目标环境以及 Gulp、Webpack 和 JSX 转译配置摘录。","2026-09-09",[1451,1452,1453,1454],"javascript","es6","webpack","notes",{"path":1456,"title":1457,"description":1458,"date":1449,"category":1459,"tags":1460},"\u002Fdocs\u002Fes6-arrays-objects","ES6 数组与对象扩展","展开运算符、Array.from、Object.assign、属性描述符与图片预加载示例。","fundamentals",[1451,1452,1454],{"path":1462,"title":1463,"description":1464,"date":1449,"category":1459,"tags":1465},"\u002Fdocs\u002Fes6-basics","ES6 基础：作用域、解构与模板字符串","从课程示例整理 let、const、暂时性死区、全局对象、数组与对象解构及模板字符串。",[1451,1452,1454],{"path":1467,"title":1468,"description":1469,"date":1449,"category":1459,"tags":1470},"\u002Fdocs\u002Fjs-promise-async","Promise、Generator 与 async\u002Fawait","从回调到 Promise 链、组合方法、Generator 执行与 async 错误处理的课程示例整理。",[1451,1452,1454],{"path":1435,"title":5,"description":1431,"date":1430,"category":1429,"tags":1472},[1440,1441,1442],{"path":1474,"title":1475,"description":1476,"date":1477,"category":1478,"tags":1479},"\u002Fdocs\u002Ffrontend-coding-standards","前端团队编码规范","HTML \u002F CSS \u002F JavaScript 三端统一的团队编码约定，含缩进、命名、语法与禁用项，可直接作为 Code Review 依据。","2025-12-17","standards",[1480,1481,1451,1452,1482,1483],"html","css","best-practice","guide",{"path":1485,"title":1486,"description":1487,"date":1488,"category":1429,"tags":1489},"\u002Fdocs\u002Fwindows-mklink","Windows mklink 符号链接用法","mklink 各参数区别与实用场景：目录联接、符号链接与硬链接的选择。","2024-12-18",[1490,1442],"windows",{"path":1492,"title":1493,"description":1494,"date":1495,"category":1429,"tags":1496},"\u002Fdocs\u002Frandom-color-utils","JS 随机颜色生成方法","几种生成随机 RGB \u002F HEX 颜色的实现方式与各自适用场景。","2024-12-11",[1451,1442],{"path":1498,"title":1499,"description":1500,"date":1501,"category":1502,"tags":1503},"\u002Fdocs\u002Fcanvas-vs-svg","Canvas 与 SVG 绘图方案选型","对比 Canvas 与 SVG 两种绘图方案的优缺点与适用场景，给出选型判断依据。","2024-12-09","visualization",[1504,1505,1506,1482],"canvas","svg","performance",{"path":1508,"title":1509,"description":1510,"date":1511,"category":1429,"tags":1512},"\u002Fdocs\u002Ffree-commercial-fonts","免费可商用字体整理","整理思源黑体、思源宋体等可商用中文字体，规避字体版权风险。","2024-11-03",[1513,1481,1454],"font",{"path":1515,"title":1516,"description":1517,"date":1511,"category":1518,"tags":1519},"\u002Fdocs\u002Finterview-browser-network","浏览器与网络考点","从输入 URL 到页面呈现的完整链路，涵盖渲染流程、回流重绘、HTTP 报文与状态码、跨域同源策略与常见攻击方式。","interview",[1520,1521,1522,1506,1454],"browser","http","network",{"path":1524,"title":1525,"description":1526,"date":1511,"category":1518,"tags":1527},"\u002Fdocs\u002Finterview-css-layout","CSS 与布局考点","em 与 rem 的区别、移动端三种适配方案对比、viewport 标准设置与 REM 布局的媒体查询实现。",[1481,1480,1482,1454],{"path":1529,"title":1530,"description":1531,"date":1511,"category":1518,"tags":1532},"\u002Fdocs\u002Finterview-framework-tooling","框架与工程化考点","React diff 与 setState 机制、Redux 核心组成、Vue 常考清单，以及 Webpack、Vite、Git 的面试要点。",[1533,1451,1453,1534,1454],"vue","vite",{"path":1536,"title":1537,"description":1538,"date":1511,"category":1518,"tags":1539},"\u002Fdocs\u002Finterview-javascript-core","JavaScript 核心考点","数据类型、this 绑定、闭包、原型链、异步与数组方法，前端面试中 JS 部分的高频考点与代码示例。",[1451,1452,1454],{"path":1541,"title":1542,"description":1543,"date":1511,"category":1459,"tags":1544},"\u002Fdocs\u002Fjs-module-systems","JavaScript 模块化方案","梳理 CommonJS、AMD、ES Module 等模块化方案的差异与使用方式。",[1451,1545,1452,1454],"module-system",{"path":1547,"title":1548,"description":1549,"date":1511,"category":1459,"tags":1550},"\u002Fdocs\u002Fwebsocket-basics","WebSocket 基础","WebSocket 全双工通信协议的事件、方法与基本用法整理。",[1551,1522,1451,1454],"websocket",{"path":1553,"title":1554,"description":1555,"date":1556,"category":1429,"tags":1557},"\u002Fdocs\u002Fmarkdown-syntax","Markdown 语法速查","Markdown 标题、强调、列表、区块引用、代码、表格、转义与 Mermaid 图表语法整理。","2024-10-18",[1558,1442,1454],"markdown",{"path":1560,"title":1561,"description":1562,"date":1563,"category":1502,"tags":1564},"\u002Fdocs\u002Fgojs-getting-started","GoJS 入门实战","从引入方式、画布初始化到节点模板与数据绑定，一份可直接上手的 GoJS 流程图开发笔记。","2024-08-22",[1565,1451,1454],"gojs",{"path":1567,"title":1568,"description":1569,"date":1570,"category":1502,"tags":1571},"\u002Fdocs\u002Fecharts-options-notes","ECharts 配置项速查","整理 ECharts 常用 option 配置：数据格式、坐标轴、图例与交互项的实际用法。","2024-08-09",[1572,1451,1442],"echarts",{"path":1574,"title":1575,"description":1576,"date":1577,"category":1429,"tags":1578},"\u002Fdocs\u002Fyarn-npm-install-errors","yarn \u002F npm 安装报错处理","yarn 引擎版本不兼容时的 ignore-engines 绕过、Windows 刷新 DNS 解析缓存、npm 缓存清理与校验。","2024-08-06",[1579,1580,1490,1581],"npm","nodejs","troubleshooting",{"path":1583,"title":1584,"description":1585,"date":1586,"category":1502,"tags":1587},"\u002Fdocs\u002Fgojs-grid-panel","GoJS 网格面板用法","Diagram.grid 默认网格与网格捕捉、单元格尺寸定制，用 LineH\u002FLineV\u002FBarH\u002FBarV 自定义网格样式，以及把 Grid 面板当作节点元素使用。","2024-07-01",[1565,1451,1454],{"path":1589,"title":1590,"description":1591,"date":1592,"category":1459,"tags":1593},"\u002Fdocs\u002Fhttp-status-codes","HTTP 响应状态码详解","按 1xx 到 5xx 分类梳理 HTTP 状态码的含义与典型使用场景。","2024-06-27",[1521,1522,1442],{"path":1595,"title":1596,"description":1597,"date":1598,"category":1459,"tags":1599},"\u002Fdocs\u002Fes6-functions-classes","ES6 函数与 Class","默认参数、rest、箭头函数的 this、Class 方法、访问器、静态成员与继承。","2023-04-26",[1451,1452,1454],{"path":1601,"title":1602,"description":1603,"date":1598,"category":1429,"tags":1604},"\u002Fdocs\u002Fgulp-basics","Gulp 4 任务与文件流","Gulp 任务完成信号、串并行组合、文件流、资源处理、分阶段输出和文件监听。",[1451,1580,1454],{"path":1606,"title":1607,"description":1608,"date":1598,"category":1459,"tags":1609},"\u002Fdocs\u002Fjs-proxy-reflect","Proxy 与 Reflect 入门","通过属性读取和赋值示例理解 Proxy、Reflect、receiver 与拦截限制。",[1451,1452,1454],{"path":1611,"title":1612,"description":1613,"date":1598,"category":1429,"tags":1614},"\u002Fdocs\u002Fless-basics","Less 语法与编译笔记","变量、嵌套、混合、extend、导入、内置函数和递归生成列的课程示例。",[1481,1454,1442],{"path":1616,"title":1617,"description":1618,"date":1598,"category":1429,"tags":1619},"\u002Fdocs\u002Fwebpack-basics","Webpack 4 配置与开发服务器笔记","课程中的入口出口、loader、plugin、source map、开发代理以及 React 环境配置片段。",[1453,1451,1580,1454],{"path":1621,"title":1622,"description":1623,"date":1624,"category":1459,"tags":1625},"\u002Fdocs\u002Fhtml-basics","HTML 基础笔记","HTML 语法规范、常用标签、表格、表单、Canvas 入门与 JavaScript 输出方式速查。","2022-06-10",[1480,1454,1442],1789635934286]