常用命令
文件和目录操作
- ls:列出目录内容
ls -l:详细信息列表,包括权限、所有者、大小和修改时间ls -a:显示所有文件(包括隐藏文件)ls -h:以人类可读的格式显示文件大小ls -R:递归列出子目录内容ls -t:按修改时间排序
- cd:改变当前目录
cd ~:进入当前用户的主目录cd -:返回上一次所在的目录
- pwd:显示当前目录
pwd -P:显示物理路径而不是符号链接路径
- mkdir:创建新目录
mkdir -p dir1/dir2:递归创建多级目录
- rmdir:删除空目录
rmdir --ignore-fail-on-non-empty:忽略非空目录上的错误
- rm:删除文件或目录
rm -r:递归删除目录及其内容rm -f:强制删除,不提示确认rm -i:删除前逐个确认
- cp:复制文件或目录
cp -r:递归复制目录cp -i:覆盖前提示确认cp -u:仅在源文件比目标文件更新时复制
- mv:移动或重命名文件或目录
mv -i:移动或重命名前提示确认mv -u:仅在源文件比目标文件更新时移动或重命名
文件查看
- cat:显示文件内容
cat -n:显示行号cat -E:显示行尾字符$
- less:分页查看文件内容
less -N:显示行号less -S:单行太长时不换行
- head:显示文件的开头部分
head -n 10:显示前 10 行head -c 20:显示前 20 个字节
- tail:显示文件的结尾部分
tail -n 10:显示最后 10 行tail -f:动态追踪文件内容的变化
文件编辑
- nano:简单易用的文本编辑器
nano +linenumber filename:打开文件并跳转到指定行
- vim:功能强大的文本编辑器
vim +linenumber filename:打开文件并跳转到指定行
- echo:回显字符,
echo xxx > filename,将 xxx 内容写入到 filename 中 - touch:更新文件修改时间,若文件不存在,则创建一个空的新文件
权限管理
- chmod:更改文件权限
chmod -R 755 dir:递归更改目录及其内容的权限chmod u+x file:为文件所有者添加执行权限
- chown:更改文件所有者
chown -R user:group dir:递归更改目录及其内容的所有者
系统管理
- sudo:以超级用户权限执行命令
sudo -i:进入超级用户 Shell
- df:显示磁盘空间使用情况
df -h:以人类可读的格式显示df -T:显示文件系统类型
- du:显示目录空间使用情况
du -h:以人类可读的格式显示du -s:显示每个参数的总计
- ps:显示当前进程
ps aux:显示所有进程的详细信息ps -ef:以另一种格式显示所有进程
- top:实时显示系统资源使用情况
top -u username:显示特定用户的进程top -p PID:显示特定进程
- kill:终止进程
kill -9 PID:强制终止进程killall:终止所有指定名称的进程
网络操作
- ping:测试网络连通性
ping -c 4 hostname:发送指定次数的请求包
- wget:下载文件
wget -c url:断点续传wget -r url:递归下载
- curl:传输数据
curl -O url:下载文件curl -I url:获取 HTTP 头信息
- ssh:远程登录
ssh user@hostname:登录到远程主机ssh -p port user@hostname:指定端口登录
vi 编辑器常用命令

-
模式
-
i/a/o:进入 insert/append/open 模式,都是文本编辑模式
Esc:退出插入模式,返回命令模式:w:保存文件:q:退出 vi:wq:保存并退出:q!:不保存退出- :set number:显示行号
- :set nonumber:不显示行号
- :set ic:忽略大小写匹配
-
- 光标移动
h:左移光标j:下移光标k:上移光标l:右移光标0:移动到行首$:移动到行尾gg:移动到文件开头G:移动到文件结尾w:跳到下一个单词开头b:跳到上一个单词开头- nG:跳到第 n 行
- 文本编辑
x:删除光标所在字符(可在前面加入数字表示操作次数)dd:删除当前行(可在前面加入数字表示操作次数,2dd 表示删除 2 行)yy:复制当前行(可在前面加入数字表示操作次数)p:粘贴复制的行或字符(可在前面加入数字表示操作次数)u:撤销Ctrl + r:重做- ctrl+f:向前翻页
- cttl+b:向后翻页
- ctrl+u:向上翻半页
- ctrl+d:向下翻半页
- 搜索和替换
/pattern:向下搜索pattern,/pattern\c不区分大小写?pattern:向上搜索pattern,?pattern\c不区分大小写n:跳到下一个匹配N:跳到上一个匹配:s/old/new/g:替换当前行的所有old为new,n,m:s/old/new/g,替换第 n 到第 m 行(特殊符号:^文件开头,$文件末尾):%s/old/new/g:替换文件中所有old为new
这些命令可以帮助你在 Linux 系统上有效地操作文件和管理系统,以及使用 vi 编辑器编辑文本文件。希望这些信息对你有所帮助!
链接
在 Linux 和类 Unix 系统中,链接文件是一种指向另一个文件的特殊文件。它们有两种主要类型:硬链接和符号链接(软链接)。
硬链接 (Hard Link)
硬链接是指向文件内容的直接指针。创建一个硬链接实际上是为一个文件内容创建了另一个目录项,指向同一个数据块。硬链接有以下特点:
- 共享相同的 inode:硬链接与原文件共享相同的 inode 号,因此它们是完全等价的,可以互换使用。
- 文件内容不重复:硬链接只是创建了一个新的目录项,而不复制文件内容。
- 删除文件:只有当所有指向文件内容的硬链接都被删除后,文件内容才会从磁盘上删除。
创建硬链接
1
ln source_file hard_link
符号链接 (Symbolic Link)
符号链接是指向另一个文件或目录的引用,它们包含的是目标文件的路径,而不是文件内容本身。符号链接有以下特点:
- 独立的 inode:符号链接拥有自己的 inode,与目标文件不同。
- 可以跨文件系统:符号链接可以指向不同文件系统上的文件或目录。
- 目标不存在:如果符号链接的目标文件被删除或移动,符号链接会变成“断裂的链接”,无法访问。
创建符号链接
1
ln -s target_file symbolic_link
区别总结
- 硬链接:指向相同的数据块,共享相同的 inode,不能跨文件系统,删除一个硬链接不会影响其他硬链接和文件内容。
- 符号链接:指向文件路径,拥有独立的 inode,可以跨文件系统,删除符号链接不影响目标文件,目标文件删除后符号链接会变成无效链接。
示例
假设有一个文件 file.txt:
-
创建硬链接:
1
ln file.txt hardlink.txt现在,
file.txt和hardlink.txt指向相同的文件内容,删除其中任何一个,文件内容依然存在,另一个仍然有效。 -
创建符号链接:
1
ln -s file.txt symlink.txt
现在,
symlink.txt是一个指向file.txt的符号链接。删除file.txt后,symlink.txt会变成断裂链接,指向一个不存在的文件。
检查链接
-
查看符号链接:
1
ls -l symlink.txt
输出类似
symlink.txt -> file.txt表示symlink.txt指向file.txt。 -
查看硬链接计数:
1
ls -l file.txt
文件的链接计数(硬链接数)会显示在文件权限后,表示有多少个硬链接指向同一文件内容。
通过理解硬链接和符号链接,你可以更灵活地管理文件系统中的文件和目录。这在组织文件、节省空间和创建快捷方式时非常有用。

文件权限
在 Linux 和类 Unix 系统中,你可以使用 ls 命令结合 -l 参数来查看文件权限。这将以长格式列出文件和目录,并包括文件的权限信息。
1
ls -l filename
这将显示类似以下的输出:
1
-rw-r--r-- 1 user group 12345 Jun 4 10:00 filename
在这个输出中:
- 第一个字符表示文件类型:
-表示普通文件,d表示目录,l表示符号链接等。 - 后面的九个字符表示文件的权限,分为三组,每组三个字符:
- 第一组是文件所有者的权限。
- 第二组是与文件所属组用户相关的权限。
- 第三组是其他用户的权限。
- 后续列是文件的硬链接数。
- 接下来是文件的所有者和所属组。
- 然后是文件的大小(以字节为单位)。
- 接着是文件的最后修改日期和时间。
- 最后是文件名。
例如,-rw-r--r-- 表示文件权限为 -rw-r--r--:
- 所有者(user)有读写权限,没有执行权限;
- 所属组(group)有读权限,没有写和执行权限;
- 其他用户有读权限,没有写和执行权限。
如果要查看目录中的所有文件的权限,可以使用 ls -l 命令,不加文件名参数即可。
除了 ls -l 之外,还有其他命令和工具可以查看文件权限,例如 stat 命令,它会给出更详细的文件信息,包括权限、文件类型和 inode 等。
1
stat filename
修改权限
要修改文件权限,可以使用 chmod 命令。chmod 命令允许你改变文件或目录的权限。你可以使用数字表示法或符号表示法来更改权限。
数字表示法
数字表示法直接指定权限的数字值。每种权限都有一个数字对应:
- 读权限:4
- 写权限:2
- 执行权限:1
你可以将它们相加来表示文件的权限。例如:
- rwx:读、写和执行权限(4+2+1=7)
- rw-:读和写权限(4+2=6)
- r–:只读权限(4)
以下是一些示例:
- 给所有用户读、写和执行权限:
1
chmod 777 filename - 给所有者读、写权限,给所属组和其他用户读权限:
1
chmod 644 filename
符号表示法
符号表示法使用 u(所有者)、g(所属组)、o(其他用户)和 a(所有用户)来表示权限。操作符号包括 +(添加权限)、-(移除权限)和 =(设置权限)。例如:
- 给所有用户读、写和执行权限:
1
chmod a+rwx filename - 给所有者添加执行权限,移除所属组和其他用户的写权限:
1
chmod u+x,go-w filename
组合使用
你还可以组合数字和符号表示法来更改权限。例如:
- 给所有用户读、写和执行权限,移除所属组和其他用户的执行权限:
1 2
chmod 777 filename chmod go-x filename
注意事项
- 如果你不是文件的所有者且没有超级用户权限,你可能无法更改文件的权限。
- 修改文件权限可能会影响文件的安全性和可用性,因此请谨慎操作。
希望这个解释能帮到你!
目录

在 Linux 系统中,有一些重要的目录扮演着关键的角色,它们存储了系统的核心文件、配置文件和其他重要的数据。以下是一些常见的重要目录:
- /bin:存放系统命令(二进制可执行文件),这些命令对于系统的基本操作非常重要,如 ls、cp 等。
- /boot:存放启动系统时使用的文件,包括内核文件和引导加载程序(例如 GRUB)的配置文件。
- /dev:存放设备文件,Linux 中一切皆文件,该目录中的文件代表系统中的设备,如硬盘、键盘、鼠标等。
- /etc:存放系统配置文件,包括各种服务的配置文件、网络配置文件等。
- /home:普通用户的家目录,每个用户通常都有一个以用户名命名的子目录,用于存放用户的个人文件和配置。
- /lib和/lib64:存放系统库文件,包括一些用于程序运行的共享库文件。
- /mnt和/media:用于挂载外部设备的目录,如 USB 驱动器、光盘等。
- /opt:存放可选的应用软件包(Optional Software),一些软件包可能会安装到这个目录。
- /proc:虚拟文件系统,提供系统内核和进程信息的动态文件系统。
- /root:超级用户(root)的家目录。
- /run:用于存放运行时信息,例如 PID 文件和 Unix 域套接字。
- /sbin:存放系统命令(二进制可执行文件),这些命令通常只能由超级用户执行,用于系统管理和维护。
- /srv:存放服务数据,例如 Web 服务器或 FTP 服务器的数据。
- /sys:虚拟文件系统,提供了对内核数据结构的访问。
- /tmp:存放临时文件,系统重启时会清空该目录。
- /usr:用于存放用户程序和文件,类似于 Windows 系统中的“Program Files”。
- /var:存放可变数据,例如日志文件、邮件、缓存文件等。
注:本笔记截图来源于 Geekhour 的 linux 入门视频