Linux命令行与shell编程

个人向的知识备忘录

Posted by John Young on June 20, 2025

前言

最近因为需要两地跑,工作环境于是变成了两套:windows & Mac。其中我对mac系统其实非常陌生,于是决定积极探索mac系统下的工作流。unity在mac下除了ide与我之前使用的visual studio不同,使用的是rider,其他的其实体验上差不太多。 但是我对于unix命令行以及shell编程涉及的不多,因此读了一下《Linux命令行与shell脚本编程大全》这部书,这里记录一下我个人需要备忘的东西。

1. 常用shell指令

  • man:manual, 用于查看指令的详细用法,相当于shell的内置文档
  • ls:list,列出工作目录下的文件。-F区分文件与目录;-a显示所有文件(包括隐藏文件);-R会遍历子目录;-l显示长列表,文件详细信息;ls + 参数即可过滤,支持正则表达式,例如:
    • ls f*ll
    • ls f[a-z]ll
  • touch:创建空文件,或者更新文件时间戳
  • cp:copy, 复制文件。 -i进行文件覆盖前的询问;-R递归拷贝目录;cp也可以使用正则通配符
  • ln:link,软链接或硬链接一个文件。-s创建软链接,软连接类似于windows的快捷方式,是一个独立的文件,有自己的inode编号,硬链接本质上与原文件是同一个文件,二者的inode编号是一致的。硬链接只能在同一磁盘,且不能是目录,只能是文件。
  • mv:move,移动或者重命名文件/目录。
  • rm:remove,删除文件。-i给予询问;-f强制删除无询问;-r递归删除子文件,再删除目录本身。
  • rmdir:删除空文件夹
  • mkdir:创建空文件夹。-p选项可以创建深层目录,例如:
    • mkdir -p Dir1/Dir2/Dir3
  • file:查看文件类型
  • cat:查看文本文件所有内容。-n添加行号。
  • more/less:通过分页工具查看文本文件内容
  • tail:查看文本文件末尾,默认10行;-n指定显示行数;-f可以一直刷新,在显示日志输出的时候很好用
  • head:和tail类似,但查看的是文件前n行的内容

2. 常用shell指令

  • man:manual, 用于查看指令的详细用法,相当于shell的内置文档
  • ls:list,列出工作目录下的文件。-F区分文件与目录;-a显示所有文件(包括隐藏文件);-R会遍历子目录;-l显示长列表,文件详细信息;ls + 参数即可过滤,支持正则表达式,例如:
    • ls f*ll
    • ls f[a-z]ll
  • touch:创建空文件,或者更新文件时间戳
  • cp:copy, 复制文件。 -i进行文件覆盖前的询问;-R递归拷贝目录;cp也可以使用正则通配符
  • ln:link,软链接或硬链接一个文件。-s创建软链接,软连接类似于windows的快捷方式,是一个独立的文件,有自己的inode编号,硬链接本质上与原文件是同一个文件,二者的inode编号是一致的。硬链接只能在同一磁盘,且不能是目录,只能是文件。
  • mv:move,移动或者重命名文件/目录。
  • rm:remove,删除文件。-i给予询问;-f强制删除无询问;-r递归删除子文件,再删除目录本身。
  • rmdir:删除空文件夹
  • mkdir:创建空文件夹。-p选项可以创建深层目录,例如:
    • mkdir -p Dir1/Dir2/Dir3
  • file:查看文件类型
  • cat:查看文本文件所有内容。-n添加行号。
  • more/less:通过分页工具查看文本文件内容
  • tail:查看文本文件末尾,默认10行;-n指定显示行数;-f可以一直刷新,在显示日志输出的时候很好用
  • head:和tail类似,但查看的是文件前n行的内容