
Ubuntu 常用 Shell 命令入门ls / cd / mkdir / rm / mv / cp / cat / echo / find开篇什么是 Shell 命令打开 Ubuntu 后屏幕上那一行提示符例如ubuntuubuntu-virtual-machine:~$就是Shell在等你输入。Shell是用户和操作系统之间的命令行外壳你敲一行文字它负责解释再让内核去执行——列目录、建文件夹、复制文件都是通过它完成的。Ubuntu 默认一般是BashBourne Again Shell。所谓Shell 命令就是你在这个提示符后面输入的指令常见有两类内部命令由 Shell 自己提供例如cd、pwd、echo外部命令系统里的独立程序例如ls、mkdir、rm、cp、mv、cat、find一条命令的典型形态是命令[选项][参数]例如ls -l ~/shell_practicels是命令-l是选项路径是参数。多个命令还可以用管道|、重定向/组合把上一条的输出交给下一条或写入文件。学 Shell 不必一次记住全部手册先把文件和目录相关的一组命令练熟日常排错、写脚本就有底了。下面按「看位置 → 创建删除 → 复制移动 → 读写内容 → 查找」展开并配一套可在家目录里动手的小练习。建议单独建练习文件夹不要对系统目录使用rm -rf。一、先搞清楚你在哪、目录里有什么1. pwd查看当前路径pwd# 打印当前工作目录的绝对路径例如输出/home/ubuntu/shell_practice2. cd切换目录cd/var/log# 进入绝对路径cd~# 回到 home 目录也可直接敲 cdcd-# 回到上一次所在目录cd..# 回到上一级cd../..# 向上两级注意cd /进入的是根目录不是随便某个目录。~一般等于/home/用户名root 用户则是/root。cd只能进目录。对文件执行cd a.txt会报错不是目录。3. ls列出目录内容ls# 列出当前目录ls-a# 列出所有项包含隐藏项ls-A# 列出隐藏文件但不显示 . 和 ..ls-l# 详细信息权限、所有者、大小、时间ls-lh# 大小用 K/M 等易读单位ls-lt# 按修改时间排序ls-lS# 按文件大小排序ls-r# 反序排列Ubuntu 里有时会看到la它常常是ls -A一类别名效果和ls -a接近。隐藏文件是什么ls -a会多出两项名字含义.当前目录..上一级目录它们不是普通文件而是每个目录里都有的特殊项cd.# 留在当前目录cd..# 回到上一级真正的隐藏文件/目录名字以.开头例如~/.bashrc、~/.ssh/。练习目录若还没这类文件ls -a就只多出.和..。读懂ls -l示例总计 20 drwxrwxr-x 2 ubuntu ubuntu 4096 8月 18 20:15 a -rw-rw-r-- 1 ubuntu ubuntu 12 8月 19 10:20 a.txt列含义第一列类型 权限第二列硬链接数文件多为 1目录常 ≥ 2第三、四列所有者、所属组第五列大小文件是字节目录常显示 4096不是内部文件总和后面修改时间、名字第一列 10 个字符d rwx rwx r-x │ └─┘ └─┘ └─┘ │ │ │ └─ 其他人权限 │ │ └───── 组权限 │ └───────── 所有者权限 └──────────── 类型d目录-普通文件l软链接权限字母r读、w写、x执行对目录表示能否进入。二、创建与删除1. mkdir创建目录mkdirt# 当前目录下创建 tmkdira b c# 一次创建多个mkdir-p~/shell_practice# 家目录下创建练习目录mkdir-p/tmp/test/t1/t# 按路径逐级创建缺哪级补哪级mkdir-m755secure_dir# 指定权限创建mkdir与mkdir -p的差别mkdir 路径mkdir -p 路径上级必须已存在是否自动补齐目录已存在报错File exists不报错适合场景明确只建一层脚本、多层路径~/shell_practice在用户名为ubuntu时等价于/home/ubuntu/shell_practice。2. rm / rmdir删除目的命令删文件rm 文件删空目录rmdir 空目录更安全连内容一起删目录rm -r 目录rmfile.txt# 删文件rm-ifile.txt# 删除前确认rmdiremptydir# 只删空目录非空会失败rm-rdir/# 递归删除目录及内容rm-rfdir/# 强制递归删除不提示很危险安全提醒rm -rf几乎不可恢复。练习时只对自己建的目录用不要对/、/home、/*下手。三、复制、移动、重命名1. mv移动或重命名同一目录下mv就是改名目标是别的目录时就是移动也可顺便改名。mvtest.log test1.txt# 将 test.log 重命名为 test1.txtmvtest.log /tmp/# 移到 /tmp名字仍是 test.logmvtest.log /tmp/a.txt# 移到 /tmp并改名为 a.txt目标已存在同名文件时通常会覆盖。想先确认可加-i。2. cp复制cpa.txt b.txt# 复制并改名为 b.txtcpa.txt t/# 明确复制进目录 t得到 t/a.txtcpa.txt t/a_backup.txt# 复制进 t并改名cp-rdir1 dir2# 递归复制目录cp a.txt test的行为取决于test是什么test已是目录 → 复制为test/a.txttest不存在或是文件 → 生成/覆盖名为test的文件常见错误cpa.txtb.txt# 错误cp需要两个路径cp 源 目标。是 shell 重定向不会当成cp的目标于是报错「缺少要操作的目标文件」。你想做的事正确命令复制整个文件cp a.txt b.txt把 a.txt 内容追加到 b.txtcat a.txt b.txt用 a.txt 覆盖 b.txtcat a.txt b.txt或cp a.txt b.txt命令行里目标已存在时有的环境会询问是否覆盖脚本里不加-i往往直接覆盖。四、查看与写入文件内容1. cat查看、拼接、写入cata.txt# 显示文件内容cata.txt b.txt# 依次显示多个文件cata.txt b.txtc.txt# 合并写入 c.txt覆盖cata.txtb.txt# 把 a.txt 追加到 b.txt 末尾常用选项cat-na.txt# 显示行号从键盘写入文件cata.txt# 覆盖写入输入内容后 CtrlD 结束cata.txt# 追加写入注意Enter 换行CtrlD 结束输入并保存CtrlC 取消可能写不完整会清空原文件想保留原内容用一次性写多行heredoc适合脚本cata.txtEOF 这是文件 A 第一行内容 EOF最后单独一行的EOF必须顶格前面不能有空格。这种方式不用 CtrlD。cat适合看小文件。大文件更适合用less/more翻页查看。2. echo打印也可快速写文件echohello# 打印到屏幕echohello worldhello.txt# 覆盖写入一行echoappend mehello.txt# 追加一行echo-n不换行# 输出后不自动换行echo-e第一行\n第二行# 解释 \n 等转义echo$PWD# 打印当前路径echo$HOME# 打印家目录写法特点echo 内容 文件快速写一行不用 CtrlDcat 文件适合手动输入多行cat 文件 EOF ... EOF适合一次写好多行五、find在目录树里按条件查找基本格式find[从哪开始找][条件][找到后做什么]不写路径时默认从当前目录.开始。按名字、类型、深度find.-namea.txt# 精确匹配find.-name*.txt# 所有 txt通配符要加引号find.-nameshell*# 以 shell 开头find.-iname*.TXT# 忽略大小写find.-typef# 只找普通文件find.-typed# 只找目录find.-typed-nameproject# 名叫 project 的目录find.-maxdepth1-namea.txt# 只在当前这一层其它常见写法find~-nameshell_practicefind.-path*shell_practice*ls-d~/shell_practice# 已知大概位置时比全树 find 更快按时间、大小find.-mtime-7# 7 天内修改过find.-mtime7# 7 天前修改过find.-size10M# 大于 10MBfind.-size-1k# 小于 1KB找到后执行操作find.-name*.txt-print# 显式打印默认就是打印find.-name*.txt-execls-l{}\;# 对每个结果执行 ls -lfind.-name*.tmp-delete# 删除匹配项慎用{}代表找到的路径\;表示-exec命令结束。两个坑通配符要加引号否则可能被 shell 先展开find.-name*.txt# 当前目录已有 txt 时结果可能不对find.-name*.txt# 正确find /全盘搜索很慢练习用.或~即可。和ls、grep的分工ls列某个目录里有什么grep在文件内容里搜字符串find按路径/属性在目录树里找文件六、一张速查表命令一句话pwd我在哪cd去哪里ls这里有什么mkdir建文件夹rm/rmdir删文件 / 删空文件夹mv移动或改名cp复制cat看内容、拼接、写入echo打印或快速写一行find按条件在目录树里找小结Linux 文件操作可以记成四件事看位置、建东西、改名字/位置、找东西。先在~/shell_practice里把ls、cd、mkdir、cp、mv、cat、find走通再碰rm -r。不确定路径时先pwd、ls、find确认后再删。若本文对你有帮助欢迎点赞收藏。