前言本文旨在讲解Linux的基础操作命令让新人上手熟悉相关操作。常用省流版命令作用pwd查找当前目录路径绝对路径cdcd切换home目录、cd..(返回父目录)lsls -lh、ll、ls -Rdudu -sh生产环境中统计当前目录下所有文件大小并显示磁盘水位过高情况mkdirmkdir -ptouch通配符批量创建{ }lnln -s软链接、ln硬链接cpcp -v file.txt{,.bak}常用备份rmrm -rf 递归强删注意虚拟机快照mv同目录重命名、跨文件移动findfind -name -size -type -user 、andor、*find [路径] [条件] -exec 命令 {} \;一、Shell1.1 Shell是什么我们从四点来解释shell名词、方向、关键词、目的/效果。shell本质上是Linux的一种应用程序作用于内核用户之间通过翻译来达到指令转换的目的。二、Linux命令2.1 Linux命令行格式命令关键字 [选项] [参数]注意英文大小写命令本身表示我们要执行的基本功能。例如ls选项附加、额外的功能 例如-l参数命令执行时操作的对象对象可以是文件、路径等 数量可以是0~N个2.2 Linux命令2.2.1 内部命令内部命令通常直接构建在shell之中shell执行命令时进程速度快。例如cd命令简单切换当前目录。​2.2.2 外部命令外部命令不在shell中通常保存在独立的文件当中。当外部命令被执行时进程需要创建命令且执行。例如ls命令通常保存在/bin目录下然后/bin/ls运行。​2.2.3 查询命令type 命令常用的内嵌命令如cd改变当前工作目录、ls列出目录内容、mkdir创建目录、rmdir删除空目录、touch创建空文件、cp复制文件或目录、mv移动或重命名文件和目录等。history用于显示命令行历史记录。新输入的命令会被记录到本次缓冲区当Shell关闭时这些记录会被追加到.bash_history文件中供下次使用。alias/unaliasalias用于创建一个别名unalias用于移除一个别名。type查询可执行命令属于Shell内建命令还是别名命令、外置命令、函数、关键字等。unset将shell环境中已定义的变量或函数进行删除以阻止后面去调用。eval将字符串中的数据当做命令在bash中执行。exec用于调用并执行指定的命令。如果在当前终端中使用命令则当指定的命令执行完毕后会立即退出终端。export/declare可将自定义变量转化为环境变量。pwdx查看进程启动时的工作目录。注意内嵌命令的具体功能和选项可能会因不同的Shell如Bash、Zsh等而有所差异。如果需求了解某个特定命令的详细信息可以使用man或info命令获取帮助手册。三、Linux常用命令3.1 Linux 命令行辅助操作命令作用tab自动补齐\反斜杠强制换行CtrlU清空到行首CtrlK清空到行尾CtrlA光标跳转行头CtrlE光标跳转行尾CtrlL清屏CtrlC取消当下命令编辑3.2:help -help 命令帮助显示命令、选项、参数、作用3.3 Man手册常规格式[rootlocalhost]# 查看Man手册 [rootlocalhost] man ls 按Q退出阅读 man ls转换为txt 补充[rootlocalhost ~] man ls | col -b Manhelp.txt man ls输出结果 | 管道符输入 col -b 过滤 重定向 输出TXT文本3.4 pwd 查看当前目录绝对路径注意在定向目录操作时多使用pwd命令确认当前目录路径是否正确。3.5 cd 切换当前工作目录命令作用cd切换当前用户家目录homecd ~#切换当前用户家目录homecd ~user切换指定用户家目录root才行 否则只有用户家目录cd -切换到上一次操作执行目录cd ..切换到上一层目录父目录cd /home后接绝对路径切换到家目录homecd ./home后接相对路径切换到家目录home3.5.1 cd cd ~切换到当前用户家目录cd cd ~ 两者作用相同cd更为方便。3.5.2 cd ~user 切换指定用户家目录一般root用户使用用户家目录通常保存在/home下cd ~user可以快速切换到某个用户家目录。3.5.3 cd - 切换到上一次操作执行目录3.5.4 cd .. 切换到上一层目录父目录cd .. 切换到上一层目录3.5.5 cd /home cd ./home相对路径绝对路径补充绝对路径从根目录/开始的完整路径始终以/开头。相对路径相对路径相对于当前工作目录的路径不以/开头。如果当前目录为/home/user相对路径Documents/file.txt实际指向/home/user/Documents/file.txt。表现形式说明示例使用目录名、文件名当前工作目录中的子目录、文件位置grub.conf一点.开头当前工作目录作为起点./grub.conf两点..开头以当前目录上一层目录作为起点../vmlinuz~用户名开头以指定用户目录作为起点~teacher3.6 ls 显示当前目录内容显示目录中内容包括子目录和文件相关属性信息 ls [选项] [文件、目录] “?”匹配文件名中的一个未知字符 “*”匹配文件名中的任意多个字符选项作用-a遍历所有文件目录ls内文件名、目录名开头为.视为隐藏不会列出-A功能大部分同-a 不同不列出当前目录和上一层目录父目录-l详细列出文件信息属性常用ll-R递归显示将目录下所有目录和文件一起列出-h友好显示大小以单位显示通常ls -lh-d查看目录信息不显示目录内容-i显示inode值3.6.1 -a -A-a 遍历所有文件目录ls内文件名、目录名开头为.视为隐藏不会列出-A 功能大部分同-a 不同不列出当前目录和上一层目录父目录3.6.2 -l 详细列出文件信息属性 通常ll ls -lh3.6.3 -R 递归显示将目录下所有目录和文件一起列出3.6.4 -h 友好显示大小以单位显示通常ls -lh3.6.5 -d 查看目录信息不显示目录内容3.6.6 -i 显示inode值3.7 alias 命令设置别名3.7.1 alias unalias命令 临时生效alias 使用alias命令和unalias命令都是临时生效的即重启系统后别名会失效 alias 命令别名 命令 unalias 别名命令 删除别名 alias #查看系统当前所有可用别名#设置别名别名是llt #alias [别名] 命令 alias lltls -lt注意设置别名时等号两边不能有空格shell无法判断空格。空格或特殊字符仅在命令中包含时才需要引号。删除别名 #unalias [别名] unalias llt3.7.2 alias命令 永久生效命令作用vim /etc/bashrc修改后全部用户生效vim /root/.bashrc修改后当前用户生效注意别名优先级内部命令hash外部命令3.8du 查询目录、文件空间占用情况***du -sh 在生产环境中统计当前目录下所有文件大小并显示磁盘水位过高情况 du [选项] [文件、目录]选项作用-s显示文件、整个目录大小默认KB不显示-h显示每个文件及大小带KB MB GB单位-a显示目录下所有文件大小*** du -sh-s -a -s显示整个目前大小 -a显示目录下全部文件-h 显示存储大小 友好显示3.9 mkdir 创建新目录#mkdir [选项] [参数] mkdir [选项] 目录位置及名称绝对路径、相对路径 #mkdir -p [选项] [参数] -p递归创建创建一个已有的目录会报错加-p则不会报错/当父目录不存在时因为没有这个test目录创建失败。-p递归创建后成功补充通配符创建实用#mkdir [参数]{参数..参数}.[参数] #mkdir test[1..3].txt #mkdir demo[a..c].log mkdir ceshi{1..5} touch access_{1..7}.log3.10 touch 创建新文件#touch [文件].[文件格式] #touch [文件...] touch test.txt touch test1.log注意若文件已存在touch转为修改文件或目录时间属性。若文件不存在则创建新文件。补充touch 并行创建多个文件通配符{ X..Z }#通配符快速创建 #touch {X..Z}.[文件格式] touch {1,2,3}.txt touch {5..8}.txt touch {a..d}.log touch {P,R,T,S}.txt ls [PRTS].txt #匹配字符查询3.11ln 创建链接文件(软链接为主、硬链接)ln 命令作用为目标文件、目标目录创建链接文件与windows快捷方式相同ln [-s] 源文件或目录... 链接文件或目标位置 #示例 ln -s /bin/bzip2 /bin/wx/命令作用ln -s创建软链接创建一个快捷方式ln创建硬链接复制了指定对象一份副本注意软链接创建时源文件可以不存在软连接可以跨设备、可以支持文件夹创建软连接删除源文件后无法访问。软链接删除源文件之后又新建源文件那么软链接可正常使用。软链接文件的大小就是软链接文件本身的文件名字符长度可以给目录做软链接为了防止目录被删。硬链接不能跨分区建立连接无法对文件夹、创建硬链接删除源文件可以继续访问。删除源文件 软链接无法打开 硬链接可以3.12cp 复制文件或目录cp [选项] [源文件或目录/目标文件或目录]选项作用-p连带属性一起复制-a保留文件权限复制软链接递归复制-r递归复制-f强制复制-j提示复制补充cp 备份 常用操作cp -v file.txt{ ,.bak }3.13 rm 删除文件、目录#rm [选项] [要删除的的文件、目录] rm [选项] [参数]选项作用-j通过用户确认后删除-r递归删除目录工作环境中谨慎使用-f强制删除补充通常使用 rm -rf [参数] rm -rf /*注意虚拟机中使用rm -rf 时及时做好快照存档#rm -rf [参数] rm -rf tmpcs/backupcs 递归删除backupcs整个目录内容backupcs目录也删除 #rm -rf /* rm -f tmpcs/* 递归删除backupcs下目录内容backupcs保留3.14 mv 移动 重命名#mv 移动文件 到目标目录 mv [文件名] [目录名] #mv 修改文件 新文件名 mv [文件名] [文件名]补充同一目录下 mv 就是重命名 跨目录 mv 就是移动相当于windows的剪切、拖拽功能。#mv [文件名] [目录名] mv 6.txt ../ #将6.txt移动到父目录 (../)#mv [文件名] [文件名] mv 6.txt cs6.txt #6.txt 重命名为 cs6.txt略微复杂你发现日志文件 /var/log/app/error.log 应该属于 /var/log/app/old/ 目录并且想把它改名为 error_20250101.log 。请用一条 mv 命令完成移动和重命名。3.15 which 查询命令#which [参数] which 命令 which cp PS一般不常用3.16 find 查询文件、目录find 匹配条件精确查看目录或文件绝对路径位置 find [查找范围] [查找条件表达式] PS查找范围查找文件或子目录的目录位置 查找条件表达式查找条件类型常用查找条件类型查找类型关键字作用名称查找-name目标文件名称查找允许使用通配符*、?大小查找-size目标文件大小查找常用、-、等于作为条件单位kB、MB、GB归属查找-user目标文件是否属于目标用户查找类型查找-type目标文件类型查找,普通文件f、目录d块设备文件b字符设备文件c等3.16.1 find -name#查找test目录以.txt结尾的文件 find test/ -name *.txt #查找test目录以大写字母开头的文件 find test/ -name [A-Z]* #查找test/目录以test开头的文件 find test/ -name test*find *.txtfind [A-Z]*find test*略微复杂当前目录下有 app.conf 、db.conf 、 cache.conf 三个文件。请用一条 find 配合 -exec 或循环将所有 .conf 文件重命名为 .conf.bak 例如 app.conf.bak 请写出命令。find dq/ -name *.conf -exec mv {} {}.conf.bak \;3.16.2 find -size#查文件大小大于10kB的文件 find test/ -size 15kb #-size 10kB 表示10kB以上不包括10kB #查文件大小为10kb的文件 find test/ -size 10kb #-size 10kB 表示9kB到10KB且不包括9kB #查文件大小小于10kb的文件 find test/ -size -10kb #-size -10kB 表示10kB以内不包括10kB #1G 1024 代表1023M - 1024M 不包括1023M略微复杂 /var/log/ 目录下有大量 .log 文件。你需要找出所有文件名包含 journal 且大小大于 1M 的文件并将它(们)复制到 /tmp/error_logs/ 目录下请写出命令。#搭建环境 touch varzy/logzy/journal{1..9}.log #查找复制 find varzy/logzy/ -name journal*.log -size -1M -exec cp -v {} tmpzy/error_logszy/ \;3.16.3 find -type#查找test/目录下的文件夹 find test/ -type d #查找test/目录下的非文件夹 find test/ ! -type d #查找test/目录下的链接文件 find test/ -type l查询文件夹查询非文件夹查询链接文件3.16.4 find -user#查找PRTS用户文件 find /home -user PRTS PS管理员用户家目录为/root非管理员用户的家目录是/home补充-a -o 条件组合两个条件必须同时满足 -a 表示而且 (and) 只需满足其中任何一个条件即可 -o 表示或者 (or)-a-o补充exec 实用find [路径] [条件] -exec 命令 {} \; find ./ -name *.txt -exec rm {} \ ;批量重命名# 所有 .jpg 添加 .bak 后缀 find . -name *.jpg -exec mv {} {}.bak \;查找文件并统计行数# 查找包含 TODO 的 Python 文件并统计行数 find . -name *.py -exec grep -l TODO {} \; | wc -l总结等待后续施工中 orz...