linux基础

记录linux常用命令

Posted by Momoka7 on June 5, 2024

常用命令

文件和目录操作

  1. ls:列出目录内容
    • ls -l:详细信息列表,包括权限、所有者、大小和修改时间
    • ls -a:显示所有文件(包括隐藏文件)
    • ls -h:以人类可读的格式显示文件大小
    • ls -R:递归列出子目录内容
    • ls -t:按修改时间排序
  2. cd:改变当前目录
    • cd ~:进入当前用户的主目录
    • cd -:返回上一次所在的目录
  3. pwd:显示当前目录
    • pwd -P:显示物理路径而不是符号链接路径
  4. mkdir:创建新目录
    • mkdir -p dir1/dir2:递归创建多级目录
  5. rmdir:删除空目录
    • rmdir --ignore-fail-on-non-empty:忽略非空目录上的错误
  6. rm:删除文件或目录
    • rm -r:递归删除目录及其内容
    • rm -f:强制删除,不提示确认
    • rm -i:删除前逐个确认
  7. cp:复制文件或目录
    • cp -r:递归复制目录
    • cp -i:覆盖前提示确认
    • cp -u:仅在源文件比目标文件更新时复制
  8. mv:移动或重命名文件或目录
    • mv -i:移动或重命名前提示确认
    • mv -u:仅在源文件比目标文件更新时移动或重命名

文件查看

  1. cat:显示文件内容
    • cat -n:显示行号
    • cat -E:显示行尾字符$
  2. less:分页查看文件内容
    • less -N:显示行号
    • less -S:单行太长时不换行
  3. head:显示文件的开头部分
    • head -n 10:显示前 10 行
    • head -c 20:显示前 20 个字节
  4. tail:显示文件的结尾部分
    • tail -n 10:显示最后 10 行
    • tail -f:动态追踪文件内容的变化

文件编辑

  1. nano:简单易用的文本编辑器
    • nano +linenumber filename:打开文件并跳转到指定行
  2. vim:功能强大的文本编辑器
    • vim +linenumber filename:打开文件并跳转到指定行
  3. echo:回显字符,echo xxx > filename,将 xxx 内容写入到 filename 中
  4. touch:更新文件修改时间,若文件不存在,则创建一个空的新文件

权限管理

  1. chmod:更改文件权限
    • chmod -R 755 dir:递归更改目录及其内容的权限
    • chmod u+x file:为文件所有者添加执行权限
  2. chown:更改文件所有者
    • chown -R user:group dir:递归更改目录及其内容的所有者

系统管理

  1. sudo:以超级用户权限执行命令
    • sudo -i:进入超级用户 Shell
  2. df:显示磁盘空间使用情况
    • df -h:以人类可读的格式显示
    • df -T:显示文件系统类型
  3. du:显示目录空间使用情况
    • du -h:以人类可读的格式显示
    • du -s:显示每个参数的总计
  4. ps:显示当前进程
    • ps aux:显示所有进程的详细信息
    • ps -ef:以另一种格式显示所有进程
  5. top:实时显示系统资源使用情况
    • top -u username:显示特定用户的进程
    • top -p PID:显示特定进程
  6. kill:终止进程
    • kill -9 PID:强制终止进程
    • killall:终止所有指定名称的进程

网络操作

  1. ping:测试网络连通性
    • ping -c 4 hostname:发送指定次数的请求包
  2. wget:下载文件
    • wget -c url:断点续传
    • wget -r url:递归下载
  3. curl:传输数据
    • curl -O url:下载文件
    • curl -I url:获取 HTTP 头信息
  4. ssh:远程登录
    • ssh user@hostname:登录到远程主机
    • ssh -p port user@hostname:指定端口登录

vi 编辑器常用命令

截图

  1. 模式

    • i/a/o:进入 insert/append/open 模式,都是文本编辑模式

      截图

    • Esc:退出插入模式,返回命令模式
    • :w:保存文件
    • :q:退出 vi
    • :wq:保存并退出
    • :q!:不保存退出
    • :set number:显示行号
    • :set nonumber:不显示行号
    • :set ic:忽略大小写匹配
  2. 光标移动
    • h:左移光标
    • j:下移光标
    • k:上移光标
    • l:右移光标
    • 0:移动到行首
    • $:移动到行尾
    • gg:移动到文件开头
    • G:移动到文件结尾
    • w:跳到下一个单词开头
    • b:跳到上一个单词开头
    • nG:跳到第 n 行
  3. 文本编辑
    • x:删除光标所在字符(可在前面加入数字表示操作次数)
    • dd:删除当前行(可在前面加入数字表示操作次数,2dd 表示删除 2 行)
    • yy:复制当前行(可在前面加入数字表示操作次数)
    • p:粘贴复制的行或字符(可在前面加入数字表示操作次数)
    • u:撤销
    • Ctrl + r:重做
    • ctrl+f:向前翻页
    • cttl+b:向后翻页
    • ctrl+u:向上翻半页
    • ctrl+d:向下翻半页
  4. 搜索和替换
    • /pattern:向下搜索pattern/pattern\c不区分大小写
    • ?pattern:向上搜索pattern?pattern\c不区分大小写
    • n:跳到下一个匹配
    • N:跳到上一个匹配
    • :s/old/new/g:替换当前行的所有oldnewn,m:s/old/new/g,替换第 n 到第 m 行(特殊符号:^文件开头,$文件末尾)
    • :%s/old/new/g:替换文件中所有oldnew

这些命令可以帮助你在 Linux 系统上有效地操作文件和管理系统,以及使用 vi 编辑器编辑文本文件。希望这些信息对你有所帮助!

链接

在 Linux 和类 Unix 系统中,链接文件是一种指向另一个文件的特殊文件。它们有两种主要类型:硬链接符号链接(软链接)

硬链接是指向文件内容的直接指针。创建一个硬链接实际上是为一个文件内容创建了另一个目录项,指向同一个数据块。硬链接有以下特点:

  • 共享相同的 inode:硬链接与原文件共享相同的 inode 号,因此它们是完全等价的,可以互换使用。
  • 文件内容不重复:硬链接只是创建了一个新的目录项,而不复制文件内容。
  • 删除文件:只有当所有指向文件内容的硬链接都被删除后,文件内容才会从磁盘上删除。

创建硬链接

1
ln source_file hard_link

符号链接是指向另一个文件或目录的引用,它们包含的是目标文件的路径,而不是文件内容本身。符号链接有以下特点:

  • 独立的 inode:符号链接拥有自己的 inode,与目标文件不同。
  • 可以跨文件系统:符号链接可以指向不同文件系统上的文件或目录。
  • 目标不存在:如果符号链接的目标文件被删除或移动,符号链接会变成“断裂的链接”,无法访问。

创建符号链接

1
ln -s target_file symbolic_link

区别总结

  • 硬链接:指向相同的数据块,共享相同的 inode,不能跨文件系统,删除一个硬链接不会影响其他硬链接和文件内容。
  • 符号链接:指向文件路径,拥有独立的 inode,可以跨文件系统,删除符号链接不影响目标文件,目标文件删除后符号链接会变成无效链接。

示例

假设有一个文件 file.txt

  1. 创建硬链接

    1
    
    ln file.txt hardlink.txt
    

    现在,file.txthardlink.txt 指向相同的文件内容,删除其中任何一个,文件内容依然存在,另一个仍然有效。

  2. 创建符号链接

    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 系统中,有一些重要的目录扮演着关键的角色,它们存储了系统的核心文件、配置文件和其他重要的数据。以下是一些常见的重要目录:

  1. /bin:存放系统命令(二进制可执行文件),这些命令对于系统的基本操作非常重要,如 ls、cp 等。
  2. /boot:存放启动系统时使用的文件,包括内核文件和引导加载程序(例如 GRUB)的配置文件。
  3. /dev:存放设备文件,Linux 中一切皆文件,该目录中的文件代表系统中的设备,如硬盘、键盘、鼠标等。
  4. /etc:存放系统配置文件,包括各种服务的配置文件、网络配置文件等。
  5. /home:普通用户的家目录,每个用户通常都有一个以用户名命名的子目录,用于存放用户的个人文件和配置。
  6. /lib/lib64:存放系统库文件,包括一些用于程序运行的共享库文件。
  7. /mnt/media:用于挂载外部设备的目录,如 USB 驱动器、光盘等。
  8. /opt:存放可选的应用软件包(Optional Software),一些软件包可能会安装到这个目录。
  9. /proc:虚拟文件系统,提供系统内核和进程信息的动态文件系统。
  10. /root:超级用户(root)的家目录。
  11. /run:用于存放运行时信息,例如 PID 文件和 Unix 域套接字。
  12. /sbin:存放系统命令(二进制可执行文件),这些命令通常只能由超级用户执行,用于系统管理和维护。
  13. /srv:存放服务数据,例如 Web 服务器或 FTP 服务器的数据。
  14. /sys:虚拟文件系统,提供了对内核数据结构的访问。
  15. /tmp:存放临时文件,系统重启时会清空该目录。
  16. /usr:用于存放用户程序和文件,类似于 Windows 系统中的“Program Files”。
  17. /var:存放可变数据,例如日志文件、邮件、缓存文件等。

注:本笔记截图来源于 Geekhour 的 linux 入门视频