首页 > 系统相关 >linux命令大全(自用,所以可能不太符合大家)

linux命令大全(自用,所以可能不太符合大家)

时间:2024-08-18 12:22:58浏览次数:12  
标签:选项 文件 用户 语法 命令 自用 linux 目录 大全

第一章:linux目录结构

第一节:基本介绍

1. 文件系统根目录(/)

在 Linux 系统中,所有文件和目录都是从根目录 / 开始的。根目录是整个文件系统的起点,所有其他目录和文件都位于根目录下或其子目录中。

2. 目录结构

Linux 目录结构是层次化的,采用树状结构来组织文件和目录。每个目录可以包含子目录和文件,每个子目录又可以包含更多的子目录和文件。这样的结构便于管理和维护系统文件。

3. 磁盘挂载

在 Linux 系统中,除了根目录外,其他磁盘分区、设备和网络挂载点都被视为目录,并且它们都被挂载到某个目录下。例如,/mnt/media 目录常用于挂载外部设备(如 USB 驱动器、CD-ROM 等)。

第二节:linux具体目录结构

  1. / (根目录)

    • 根目录是文件系统的起点。所有其他目录和文件都在这个目录下。
  2. /bin

    • 存放系统启动和运行所需的基本命令(如 ls, cp, mv, cat)。这些命令在系统启动时必须可用,因此存放在 /bin
  3. /boot

    • 包含启动加载程序(如 GRUB)的文件和内核映像。这个目录用于系统引导过程。
  4. /dev

    • 包含设备文件。这些文件代表系统中的各种硬件设备(如磁盘、终端、打印机)。例如,/dev/sda1 代表第一块硬盘的第一个分区。
  5. /etc

    • 存放系统配置文件和全局配置脚本。此目录下的文件通常控制系统和应用程序的配置,如 /etc/fstab/etc/passwd
  6. /home

    • 用户主目录的默认位置。每个用户在 /home 下有一个子目录,例如 /home/user1。用户的个人文件、配置和数据通常存储在这个目录下。
  7. /lib

    • 包含系统库文件,这些文件是系统和应用程序运行时所需的共享库。通常与 /bin/sbin 中的程序一起使用。
  8. /media

    • 用于自动挂载可移动媒体(如 USB 驱动器、CD-ROM 等)。系统插入设备时,这些设备会被挂载到 /media 下的子目录中。
  9. /mnt

    • 通常用于临时挂载文件系统。系统管理员可以在这个目录下挂载不同的文件系统进行临时访问。
  10. /opt

    • 用于安装附加应用程序包。这个目录常用于存放第三方软件包和应用程序。
  11. /proc

    • 虚拟文件系统,提供系统内核和进程信息。/proc 下的文件和目录不实际存在于硬盘上,而是由内核动态生成的。
  12. /root

    • 系统管理员(root 用户)的主目录。这个目录与普通用户的主目录(/home/username)不同,通常只有 root 用户可以访问。
  13. /sbin

    • 存放系统管理命令和工具(如 fsck, ifconfig, reboot)。这些命令通常需要系统管理员权限才能运行。
  14. /srv

    • 包含由系统提供的服务的数据。这个目录用于存放网站、FTP 服务器等服务的数据。
  15. /tmp

    • 用于存放临时文件。系统和应用程序在运行时可能需要创建临时文件,这些文件通常会在系统重启时删除。
  16. /usr

    • 包含用户程序和数据。这个目录通常包含系统中安装的大多数应用程序和库文件。例如,/usr/bin 包含大多数用户命令,/usr/lib 包含库文件。
  17. /var

    • 包含变化的文件,如日志文件、邮件、缓存和其他经常变化的数据。常见目录有 /var/log(日志文件)、/var/mail(邮件)等。

第二章:linux常用命令

早知道:命令格式

在 Linux 中,命令通常有以下基本格式:

command [options] [arguments]

  • command: 要执行的命令名称。
  • [options]: 可选的参数,用于修改命令的行为。例如,-l-a 等。
  • [arguments]: 命令的操作对象,例如文件或目录的名称。

例如,ls -l /home 命令中,ls 是命令,-l 是选项,/home 是参数。

第一节:目录处理命令

  1. cd:切换目录

    1. 语法:cd 【目录】
    2. 参数:
      1. 目录:切换到对应目录
      2. ..:切换到上一级
      3. /:切换到下一级
  2. pwd:显示当前目录

    1. 语法:pwd
    2. 功能:显示当前工作目录的绝对路径
  3. ls:显示目录中的文件

    1. 语法:ls 【选项】【目录】
    2. 参数:
      1. -l: 以长格式显示文件信息,包括权限、所有者、大小和修改时间。(简化为ll)
      2. -a: 显示所有文件,包括隐藏文件(以 . 开头的文件)。
      3. -h: 以人类可读的格式显示文件大小(与 -l 一起使用)。
      4. -R: 递归显示子目录中的内容。
      5. -t: 按时间排序显示文件(最新的文件在前面)。
  4. mkdir:创建目录

    1. 语法:mkdir 【选项】目录
    2. 常用参数:
      1. -p: 创建多级目录(即使中间目录不存在)。
      2. -v: 显示每个目录创建的详细信息。
  5. rmdir:删除目录

    1. 语法:rmdir 空目录
    2. 功能:删除指定空目录,如果目录不为空,将会报错
  6. rm -r:递归删除目录及其内容

    1. 语法:rm 【选项】目录
    2. 常用参数:
      1. -r: 递归删除目录及其内容。
      2. -f: 强制删除文件或目录,不提示确认。
  7. lsblk:列出块设备

    1. 语法:lsblk 【选项】
    2. 常用参数:
      1. -f: 显示文件系统类型。
      2. -o: 自定义输出列。

第二节:文件处理命令

  1. cat:连接并查看文件内容

    1. 语法:cat 【选项】【文件】
    2. 常用参数:
      1. -n: 显示行号。
      2. -b: 显示行号,但不为空行。
      3. -E: 在行尾显示 $
  2. cp:复制文件或目录

    1. 语法:cp 【选项】源文件 目标文件
    2. 常用参数:
      1. -r: 递归复制目录及其内容。
      2. -i: 提示确认覆盖文件。
      3. -u: 仅在源文件比目标文件新时复制。
  3. mv:移动或者重命名文件和目录

    1. 语法:mv 【选项】源文件 目标文件
    2. 常用参数:
      1. -i: 提示确认覆盖文件。
      2. -u: 仅在源文件比目标文件新时移动。
  4. rm:删除文件

    1. 语法:rm 【选项】文件
    2. 常用选项:
      1. -r: 递归删除目录及其内容。
      2. -f: 强制删除文件,不提示确认。
      3. -i: 删除前提示确认。
  5. touch:创建新文件或更新文件的时间戳

    1. 语法:touch 【选项】文件
    2. 常用选项:
      1. -c: 不创建新文件,只更新文件的时间戳。
  6. find:查找文件

    1. find 【路径】【选项】【条件】
      1. 路径:就是在对应目录内查找
      2. 条件:就是查找的特点
    2. 创建参数:
      1. -name: 根据名称查找文件。
      2. -type: 根据文件类型查找(例如 f 为普通文件,d 为目录)。
      3. -size: 根据文件大小查找。(-、+数字单位表示小于或大于多少字节的文件)
  7. head:显示文件的开头部分

    1. 语法:head 【选项】【文件】
    2. 常用参数:
      1. -n: 显示前 N 行。
  8. tail:显示文件的结尾部分

    1. 语法:tail 【选项】【文件】
    2. 常用参数:
      1. -n: 显示最后 N 行。
      2. -f: 实时跟踪文件内容的变化(常用于日志文件)。
  9. chmod:修改文件权限

    1. 语法:chmod 【选项】模式 文件
      1. 模式:
        1. ugo表示对应用户,个人,组,其他,后跟+、-表示添加或删除权限
        2. all表示所有,就是ugo,后跟+、-表示添加或删除权限
        3. rwx表示文件权限,r读-4,w写-2,x执行-1。可以用数字替换
    2. 常用选项:
      1. -R: 递归更改目录及其内容的权限。

第三节:链接命令

  1. ln:创建连接

    1. 语法:ln 【选项】源文件 目标连接
    2. 常用参数:
      1. -s: 创建符号链接(软链接)。如果不指定此选项,将创建硬链接。
      2. -f: 强制创建链接,覆盖已存在的目标链接。
      3. -i: 提示确认覆盖目标链接。
  2. ls -l:查看文件连接

    1. 语法:ls -l 【目录】
    2. 功能:
      1. 显示文件的详细信息,包括文件类型、权限、所有者、文件大小和修改时间。符号链接会显示为 -> 后跟目标文件的路径。软连接才有。
  3. find:查找连接

    1. 语法:find 【路径】【选项】【条件】
    2. 常用参数:
      1. -type l: 查找符号链接(软链接)。
      2. -type f: 查找普通文件。
      3. -type d: 查找目录。
  4. 连接的区别

    1. 硬链接
      1. 硬链接是文件系统级别的链接,它直接指向文件的 inode(文件的存储结构),不同的硬链接实际上是相同文件的不同路径。
      2. 硬链接不能跨文件系统创建。
      3. 删除原文件不会影响硬链接,因为它们共享相同的 inode。
    2. 软链接(符号链接)
      1. 符号链接是一个特殊类型的文件,它包含对另一个文件或目录的路径引用。
      2. 符号链接可以跨文件系统创建。
      3. 如果原文件被删除,符号链接将成为一个无效的“悬挂链接”。

第四节:权限管理命令

  1. chmod:修改文件或目录权限

    1. 语法:chmod 【选项】模式 文件
      1. 模式:
        1. u: 文件所有者(user)。
        2. g: 文件所在组(group)。
        3. o: 其他用户(others)。
        4. a: 所有用户(all)。
        5. r: 读取权限(read)。
        6. w: 写入权限(write)。
        7. x: 执行权限(execute)。
        8. +: 添加权限。
        9. -: 移除权限。
        10. =: 赋予权限(覆盖现有权限)。
    2. 常用参数:
      1. -R: 递归更改目录及其内容的权限。
      2. --reference=文件: 使用指定文件的权限作为参考。
  2. chown:修改文件或目录拥有者

    1. 语法:chown 【选项】用户:组 文件
    2. 常用参数:
      1. -R: 递归更改目录及其内容的所有者和组。建议:root用户
  3. chgrp:修改文件或目录拥有组

    1. 语法:chgrp 【选项】组 文件
    2. 常用参数:
      1. -R: 递归更改目录及其内容的组。建议:root用户
  4. umask:设置与查看文件或目录默认权限

    1. 语法:umask 【掩码】
    2. 功能:
      1. 设置默认文件权限掩码,用于控制新创建文件和目录的默认权限。掩码是一个八进制数,指定了要从默认权限中去除的权限。不写掩码就是查看。
  5. ls -l:查看文件或目录权限

    1. 语法:ls -l 【目录】
    2. 功能:
      1. 显示文件的详细信息,包括权限、所有者、组、大小和修改时间。
      2. ls -l 命令的输出格式
        1. 比如:-rwxr-xr-- 1 owner group size date time filename
        2. 文件权限(-rwxr-xr--
          1. 第一个字符表示文件类型:
            1. -:普通文件
            2. d:目录
            3. l:符号链接
            4. 其他类型(例如,c 代表字符设备,b 代表块设备)
          2. 接下来的九个字符表示权限:
            1. 前三位(rwx):文件所有者的权限
              1. r:读权限(Read)
              2. w:写权限(Write)
              3. x:执行权限(Execute)
            2. 中间三位(r-x):文件所在组的权限
              1. r:读权限
              2. -:没有写权限
              3. x:执行权限
            3. 最后三位(r--):其他用户的权限
              1. r:读权限
              2. -:没有写权限
              3. -:没有执行权限
        3. 硬链接数(1
          1. 文件的硬链接数量。对于目录,表示该目录下的子目录数量(包括 ...)。
        4. 文件所有者(owner
          1. 文件的所有者用户名。
        5. 文件所属组(group
          1. 文件所在组的组名。
        6. 文件大小(size
          1. 文件的大小,单位为字节(bytes)。对于目录,这表示目录的大小(通常较小,因为它只存储目录项)。
        7. 修改日期(date
          1. 文件的最后修改日期,格式通常为 月 日 年
        8. 修改时间(time
          1. 文件的最后修改时间,格式通常为 小时:分钟
        9. 文件名(filename
          1. 文件的名称。对于目录,显示目录名称。对于符号链接,显示链接的目标。

第五节:文件搜索命令

  1. find:查找文件与目录

    1. 语法:find 【路径】【选项】【条件】
    2. 常用参数:
      1. -name: 按文件名搜索,支持通配符。
      2. -iname: 忽略大小写的文件名搜索。
      3. -type: 按文件类型搜索。
        • f:普通文件
        • d:目录
        • l:符号链接
      4. -size: 按文件大小搜索。
        • +100M:大于 100 MB
        • -10k:小于 10 KB
        • 500:等于 500 字节
      5. -mtime: 按文件修改时间搜索。
        • +7:修改时间超过 7 天
        • -30:修改时间在过去 30 天内
        • 0:今天
      6. -exec: 对查找到的文件执行命令。
      7. -print: 默认行为,输出找到的文件路径。
  2. locate:快速查找文件

    1. 语法:locate 【选项】模式
    2. 常用参数:
      1. -i: 忽略大小写。
      2. -r: 使用正则表达式。
      3. 注意: locate 依赖于预建的数据库,因此速度快,但可能不是最新的。可以使用 updatedb 命令更新数据库。
  3. grep:查找文件内容

    1. 语法:grep 【选项】 模式 【文件】
    2. 常用参数:
      1. -r: 递归搜索目录及其子目录。
      2. -i: 忽略大小写。
      3. -l: 仅输出包含匹配模式的文件名。
      4. -n: 显示匹配的行号。

第六节:帮助命令

  1. man:查看手册页

    1. 语法:man 【选项】【命令】
    2. 常见参数:
      1. -k: 搜索手册页中的关键字。
      2. -f: 显示命令的简要说明。
      3. -a: 显示所有匹配的手册页(通常按顺序显示)。
  2. info:查看info文档

    1. 语法:info 【选项】【命令】
    2. 常用参数:
      1. --apropos: 搜索 Info 文档中的关键字。
  3. --help:获取命令的帮助信息

    1. 语法:命令 --help
      1. 几乎所有的命令都支持 --help 选项,用于显示该命令的简要使用说明及选项说明
  4. whatis:显示命令的简要说明

    1. 语法:whatis 【命令】
  5. apropos:搜索手册页中的关键字

    1. 语法:apropos 【关键字】
  6. help:获取内置命令的帮助

    1. help 【内置命令】

第七节:用户管理命令(建议root)

  1. useradd:添加用户

    1. 语法:useradd 【选项】用户名
    2. 常用参数:
      1. -m: 创建用户主目录(/home/用户名),不写默认就有。
      2. -d: 指定用户主目录。
      3. -s: 指定用户的默认 Shell。
      4. -G: 将用户添加到指定的组中(多个组用逗号分隔)。
  2. usermod:修改用户属性

    1. 语法:usermod 【选项】用户名
    2. 常用参数:
      1. -aG: 将用户追加到指定的组中。
        1. usermod -aG groupname username
      2. -s: 修改用户的默认 Shell。
        1. usermod -s /bin/zsh username
      3. -d: 修改用户的主目录。
        1. usermod -d /new/home/dir username
  3. userdel:删除用户

    1. 语法:userdel 【选项】用户名
    2. 常用参数:
      1. -r: 删除用户的主目录及其内容。一定要用,不然不会删除目录
  4. passwd:修改密码

    1. 语法:passwd 【选项】【用户名】
    2. 常用参数:
      1. -d: 删除指定用户的密码(使其无法登录)。
        1. passwd -d username
          
      2. -l: 锁定用户账户。
        1. passwd -l username

      3. -u: 解锁用户账户。
        1. passwd -u username

    3. 不演示了,因为改了密码我怕忘了,passwd不加任何命令就是为新用户添加密码

  5. groups:显示用户所属组

    1. 语法:groups 【用户名】
    2. 不写用户名就是当前用户
  6. id:显示用户uid和gid

    1. 语法:id 【用户名】
    2. 不写用户名就是当前用户
  7. who:显示当前登录用户

    1. 语法:who
    2. 显示当前系统上所有登录用户
  8. w:显示系统上当前登录用户及其活动信息

    1. 语法:w 【选项】【用户名】
    2. 常用参数:
      1. -h: 不显示标题行。
      2. -s: 显示简洁的输出,不包括所有列。
    3. 输出字段说明
      1. USER: 当前登录的用户名。
      2. TTY: 用户登录的终端设备(如 tty1, pts/0 等)。
      3. FROM: 用户登录的源(IP 地址或主机名)。
      4. LOGIN@: 用户登录的时间。
      5. IDLE: 用户自上次活动以来的空闲时间。
      6. JCPU: 当前终端的所有进程所消耗的 CPU 时间。
      7. PCPU: 当前用户正在运行的进程所消耗的 CPU 时间。
      8. WHAT: 用户当前正在执行的命令或程序。
  9. su:用户切换

    1. 语法:su 【选项】【用户名】
    2. 常用参数:
      1. ---login: 启动一个登录 shell,模拟用户登录时的环境变量。这是最常用的选项,它会读取目标用户的登录环境设置,例如 .profile.bash_profile.bashrc 文件。
        1. su - 用户名
      2. -c: 执行指定的命令并退出。例如,使用 root 权限执行 ls 命令:
        1. su -c 'ls /root'
      3. -s: 使用指定的 shell。例如,使用 /bin/bash 作为 shell:
        1. su -s /bin/bash 用户名

第八节:用户组管理命令

  1. groupadd:添加组

    1. 语法:groupadd 【选项】 组名
    2. 常用参数:
      1. -g: 指定组 ID(GID)。
        • groupadd -g 1001 groupname
          
  2. groupmod:修改组信息

    1. 语法:groupdel 【选项】组名
    2. 常用参数:
      1. -g: 修改组 ID(GID)。
        1. groupmod -g 1002 groupname
      2. -n: 修改组名。
        1. groupmod -n newgroupname oldgroupname
  3. groupdel:删除组

    1. 语法:groupdel 组名
  4. gpasswd:管理组成员

    1. 语法:gpasswd 【选项】组名
  5. getent:获取组信息

    1. 语法:getent group 【组名】
    2. 最好是添加组名,不然一串我不知道的东西出来了
  6. id:显示uid与gid

    1. 语法:id 【用户名】

第九节:压缩与解压

  1. tar:归档与解归档

    1. 语法:tar 选项 【-zcf】 【归档后的文件】【要归档文件的目录】
    2. tar与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。
    3. 常用参数:
      1. -c:打包                
      2. -v:显示详细信息                
      3. -f:指定文件名           
      4. -z:打包同时压缩,用了z就可以不用gzip了,这是告诉tar调用gzip
      5. -x:解包,这个时候加z就是解包和解压
        1. 语法:tar 选项 【-zcf】 【归档后的文件】
  2. gzip和gunzip:压缩于解压缩

    1. gzip:压缩
      1. 语法:gzip 【文件】
      2. 压缩后文件格式:.gz,不可以压缩目录、链接
    2. gunzip:解压
      1. 语法:gunzip 【文件.gz】
      2. gunzip=gzip -d用别名替换了
  3. zip与unzip:(源文件存在,复制+压缩)

    1. 语法:zip 【选项】 【压缩后的文件名】【文件或目录】
    2. 常用参数:
      1. -r:压缩目录
    3. unzip 【压缩后的文件名】
  4. xz:

    1. 不写了,够用了
  5. bzip2:

    1. 不写了,够用了

第十节:网络命令

  1. ping:测试网络连通性

    1. 语法:ping 【选项】主机名或ip地址
    2. 常用参数:
      1. -c: 指定发送的请求数量。
        1. ping -c 4 example.com
      2. -i: 设置发送请求的时间间隔(秒)。
        1. ping -i 2 example.com
  2. ifconfig:配置网络接口

    1. 语法:ifconfig 【接口】【地址】【选项】
    2. 常用参数:
      1. up::启用网络接口。
        1. ifconfig 接口名 up
      2. down:禁用网络接口。
        1. ifconfig 接口名 down
  3. ip:现代网络接口配置

    1. 语法:ip 【选项】【参数】
    2. 常用参数:
      1. addr: 显示或配置 IP 地址。
        1. ip addr show
          ip addr add 192.168.1.100/24 dev eth0
      2. link: 显示或配置网络接口状态。
        1. ip link show
          ip link set eth0 up
      3. a:显示所有内容
  4. netstat:网络统计

    1. 语法:netstat 【选项】
    2. 常见参数:
      1. -t: 显示 TCP 连接。
      2. -u: 显示 UDP 连接。
      3. -l: 显示监听的套接字。
      4. -a: 显示所有连接和监听的套接字。
  5. ss:更现代的网络统计工具

    1. 语法:ss 【选项】
    2. 常用参数:
      1. -t: 显示 TCP 连接。
      2. -u: 显示 UDP 连接。
      3. -l: 显示监听的套接字。
      4. -a: 显示所有连接和监听的套接字。
  6. traceroute:追踪网络路径

    1. 语法:traceroute 【选项】 主机名或ip地址
    2. 常用参数:
      1. -m: 设置最大跳数。
      2. traceroute -m 20 example.com
  7. curl:下载或发送数据

    1. 语法:curl 【选项】【url】
    2. 常用参数:
      1. -O: 保存到文件(O泡果奶不是零)。
        1. curl -O http://example.com/file.txt
      2. -I: 仅获取 HTTP 头信息。
        1. curl -I http://example.com
  8. wall:广发消息

    1. 语法:wall 【文字,建议在双引号内】
    2. wall=write all
  9. write:给用户发信息,ctrl+d保存结束

    1. 语法:write  用户名【输入文字,建议在双引号内】

第十一节:关机重启命令

  1. shutdown:关机或重启

    1. 语法:shutdown 【选项】【时间】【消息】
    2. 常用参数:
      1. -h: 关机。
      2. -r: 重启。
      3. -P: 在关机时关闭电源(通常为默认设置)。
      4. -c: 取消计划的关机或重启。
  2. reboot:重启系统

    1. 语法:reboot [选项]
    2. 没什么常用选项单独用reboot,不演示了
  3. poweroff:

    1. 语法:poweroff [选项]
    2. 没什么常用选项单独用poweroff ,不演示了
  4. halt:

    1. 语法:halt [选项]
    2. 没什么常用选项单独用halt ,不演示了
  5. init:重启或关机

  6. 语法:reboot [选项]
    1. 语法:init 【级别】
    2. 常用参数:
      1. 0: 关机。
      2. 6: 重启。

第三章:文本编辑器vim

第一节:vim的常用操作(注意是vim)

  1. 快速入门操作流程

    1. 打开文件vim 文件名
    2. 进入插入模式:按 i
    3. 输入文本:编辑你的文件内容
    4. 退出插入模式:按 Esc
    5. 保存并退出:输入 :wq 然后按 Enter
    6. 图没什么好截屏的,简单就是笔记本操作,平时怎么用笔记本,就这么用它,当然要先按i。
  2. 纳尼,vim是vi?

    1. vi 提供了基础的文本编辑功能,没有现代的编辑器特性。
    2. vim 提供了多种增强功能,如语法高亮、插件支持、多级撤销等。
    3. vi 的界面简洁,没有太多提示或辅助信息,适合经验丰富的用户。
    4. vim 提供了更丰富的界面选项,如状态栏、光标位置信息、搜索提示等,用户体验更加友好。
    5. vi 几乎在所有 Unix 系统上都可用,是一种通用的文本编辑器。
    6. vim 在现代 Linux 发行版中很常见,但在一些精简的 Unix 系统中可能没有预装。
    7. 其实吧就是大杯(vi)和超大杯(vim),嗯~正经的。
  3. 打开文件:

    1. 语法:vim/vi 文件名
  4. 基本模式:

    1. 普通模式(Normal Mode):启动 Vim 时的默认模式,用于导航和操作文本。按 Esc 键可以进入普通模式。

    2. 插入模式(Insert Mode):用于插入和编辑文本。按 i 键进入插入模式。

    3. 命令模式(Command Mode):用于执行保存、退出等命令。按 :(shift不要忘了) 键进入命令模式。

    4. 可视模式(Visual Mode):用于选择文本。按 v 键进入可视模式。

  5. 关闭与保存文件:

    1. 保存并退出::wq:xZZ
    2. 仅保存::w
    3. 仅退出::q
    4. 强制退出(不保存)::q!
    5. 保存为另一个文件名::w 新文件名
  6. 插入模式:

    1. 进入插入模式:i

    2. 在当前字符后插入:a
    3. 在行首插入:I
    4. 在行末插入:A
    5. 在当前行下方插入新行:o
    6. 在当前行上方插入新行:O
    7. 退出插入模式:Esc
  7. 文本编辑:

    1. 删除当前字符:x
    2. 删除当前行:dd
    3. 删除光标到行末:D
    4. 删除一词:dw
    5. 撤销操作:u
    6. 恢复撤销:Ctrl + r
    7. 复制(或剪切)行:yydd
    8. 粘贴:p (在光标后粘贴) 或 P (在光标前粘贴)
  8. 搜索与替换:

    1. 搜索文本:/关键词,按 n 跳到下一个匹配项,N 跳到上一个匹配项。
    2. 向上搜索:?关键词
    3. 替换当前行中的第一个匹配项::s/旧文本/新文本/
    4. 替换当前行中的所有匹配项::s/旧文本/新文本/g
    5. 替换整个文件中的所有匹配项::%s/旧文本/新文本/g
    6. 替换整个文件中的所有匹配项,并询问确认::%s/旧文本/新文本/gc
  9. 移动光标:

    1. 上下左右移动:h(左)、j(下)、k(上)、l(右)
    2. 移动到行首:0^
    3. 移动到行末:$
    4. 移动到下一词:w
    5. 移动到上一词:b
    6. 移动到下一段:}
    7. 移动到上一段:{
    8. 跳转到指定行::行号 或按 G 移动到最后一行,gg 移动到第一行。
  10. 可视模式操作:

    1. 进入可视模式:v
    2. 可视行模式:V
    3. 块可视模式:Ctrl + v
    4. 选中后复制:y
    5. 选中后删除:d
    6. 选中后替换:进入插入模式后,直接输入替换文本,完成后按 Esc
  11. 其他常见命令:

    1. 显示行号::set nu
    2. 取消行号显示::set nonu
    3. 显示文件状态信息:Ctrl + g
    4. 查看和编辑多个文件::n 文件名:e 文件名
    5. 分屏编辑::split 文件名:vsplit 文件名
    6. 切换分屏:Ctrl + w 然后按 h/j/k/l 来切换

第四章:软件安装

第一节:软件包管理简介(可以跳过)

  1. 软件包管理简介:

    1. Linux 系统中的软件通常以“软件包”的形式发布。软件包包含程序的所有文件,包括二进制可执行文件、配置文件、文档和依赖项信息。软件包管理系统(Package Management System,PMS)用来处理这些包的安装、升级、查询和卸载。
  2. 常见的软件包格式:

    1. RPM (Red Hat Package Manager): 由 Red Hat 系列发行版(如 RHEL、CentOS、Fedora)使用的包管理格式。
    2. DEB (Debian Package): 由 Debian 系列发行版(如 Debian、Ubuntu、Mint)使用的包管理格式。
    3. TAR.GZ/ TAR.BZ2: 通常是源代码包,用户需要编译后安装。
  3. 常见的包管理工具:

    1. RPM: 管理 RPM 软件包。
    2. YUM/DNF: 基于 RPM 包管理的高级工具,支持在线安装、升级、卸载和解决依赖关系。
    3. APT (Advanced Package Tool): Debian 系列系统的包管理工具,用于管理 DEB 包。

第二节:rpm命令管理(要先有rpm包)

  1. 语法:rpm 选项 包名.rpm

  2. 常用参数:
    1. -i:安装软件包。
    2. -U:升级软件包,若未安装则安装。(大写)
    3. -e:卸载指定的软件包(使用包名而非文件名)。
    4. -q:查询软件包。
      1. 跟a:列出所有已安装的软件包。
      2. 跟i:显示详细信息。
      3. 跟l:列出软件包安装的文件。
    5. -V:验证软件包,检查文件是否被修改。(大写)
    6. -v:显示详细信息(可选)。
    7. -h:显示安装进度条(可选)。

第三节:yum在线管理

  1. 语法:yum 【选项】包名

  2. 常用参数:
    1. install:安装指定的软件包。
    2. update:升级指定的软件包,若不指定包名则升级所有包。
    3. remove:卸载指定的软件包。
    4. list available:显示所有可安装的软件包。
    5. list installed:显示所有已安装的软件包。
    6. search:根据关键字搜索软件包。
      1. yum search keyword
    7. yum clean [all|packages|headers|metadata|dbcache]
      1. clean all:清理所有缓存。
      2. clean packages:清理已下载的软件包。
      3. clean headers:清理 headers。
      4. clean metadata:清理元数据。
      5. clean dbcache:清理数据库缓存。
  3. 暂时如此,命令是这样的,至于细节我学到了,就会记录更新。

第五章:shell基础

第一节:shell的入门

  1. shell是什么:

    1. 我认为就是一种编程语言,用来控制linux这个库。简单的说就像是对css编程,好吧,越来越复杂了。
    2. 就是将一条一条的命令放在文件中,让系统一下子把文件这个命令一下子执行出来。
    3. 先记好,echo就是打印的意思
  2. shell的分类:

    1. Bourne Shell (sh)
      1. 简介: Bourne Shell 是最早的 Unix Shell,基本的命令行接口。它提供了脚本编写功能,并允许用户创建简单的自动化脚本。
      2. 特点: 语法简单,功能基础,适用于大多数 Unix 和 Linux 系统。
      3. #!/bin/sh
        echo "Hello, World!"
    2. Bourne Again Shell (Bash)(学的这个)
      1. 简介: Bash 是 Bourne Shell 的增强版,提供了更多的功能,如命令补全、历史记录、别名等。它是大多数 Linux 发行版的默认 Shell。
      2. 特点: 功能丰富,兼容性好,支持命令补全、命令历史、脚本调试等。
      3. #!/bin/bash
        echo "Hello, World!"
    3. C Shell (csh)
      1. 简介: C Shell 的语法类似于 C 语言,提供了类似于编程语言的特性,如更复杂的控制结构和条件语句。
      2. 特点: 提供了类似 C 语言的语法,支持历史命令编辑,适合编写复杂的脚本。
      3. #!/bin/csh
        echo "Hello, World!"
    4. Korn Shell (ksh)
      1. 简介: Korn Shell 结合了 Bourne Shell 和 C Shell 的功能,提供了更多的编程功能和增强的脚本处理能力。
      2. 特点: 功能强大,兼容 Bourne Shell,支持增强的编程功能和改进的用户界面。
      3. #!/bin/ksh
        echo "Hello, World!"
    5. Z Shell (zsh)
      1. 简介: Z Shell 是一种功能丰富的 Shell,提供了比 Bash 更多的功能,如扩展的自动补全、高级的脚本功能和主题支持。
      2. 特点: 支持高级的命令补全、插件系统、可自定义的主题,适合需要高度自定义的用户。
      3. #!/bin/zsh
        echo "Hello, World!"
    6. Fish Shell (fish)
      1. 简介: Fish Shell 是一个用户友好的 Shell,旨在提供易用的命令补全和语法高亮。它与其他 Shell 的语法不完全兼容。
      2. 特点: 高级命令补全、语法高亮、简化的语法,适合新手用户。
      3. #!/usr/bin/env fish
        echo "Hello, World!"
  3. shell文件的创建与使用

    1. 创建一个 Shell 文件
      1. vi 文件名.sh
      2. 通过vi想sh文件写入命令(i:编辑模式)
      3. :wq保存退出(普通模式)
    2. 查看权限并修改
      1. ls -l 文件名.sh
      2. 用chmod修改权限
    3. 使用
      1. ./文件名.sh(直接执行)
      2. bash 文件名.sh(bash执行)

第二节:shell的变量

  1. 变量的定义和使用

    1. 定义
      1. 语法:变量名=变量值
      2. 在 Shell 中,定义变量不需要使用 var 或其他关键字,只需要使用 = 进行赋值。赋值时,等号两边不能有空格
      3. 没有类型这一说法,这一点像py,好评
    2. 使用
      1. 语法:$【变量名】
  2. 变量的类型

    1. 位置参数
      1. 位置参数用于脚本中接收传递给脚本的参数。
      2. 比如:
        1. #!/bin/bash
          echo "The first argument is $1"
          echo "The second argument is $2"
        2. 运行时传递参数
          1. ./文件名.sh,使用./执行sh文件,不行就要用chmod改权限
          2. 在文件开头,#!/bin/bash,表示告诉系统用bash处理
    2. 环境变量
      1. 环境变量是在系统和用户环境中设置的变量,影响系统和应用程序的行为。
      2. 比如
        1. export PATH="$PATH:/usr/local/bin"
        2. 可以通过 printenvenv 查看所有环境变量。(看不懂,以后在说吧)
      3. #Shell常见的变量之二环境变量,主要是在程序运行时需要设置,环境变量详解如下:

        1. PATH          命令所示路径,以冒号为分割;

        2. HOME          打印用户家目录;

        3. SHELL         显示当前Shell类型;

        4. USER          打印当前用户名;

        5. ID            打印当前用户id信息;

        6. PWD           显示当前所在路径;

        7. TERM          打印当前终端类型;

        8. HOSTNAME    显示当前主机名;

        9. PS1         定义主机命令提示符的;

        10. HISTSIZE    历史命令大小,可通过 HISTTIMEFORMAT 变量设置命令执行时间;

        11. RANDOM      随机生成一个 0 至 32767 的整数;

        12. HOSTNAME    主机名

    3. 本地变量(暂时跳过)
      1. 本地变量只在定义它的 Shell 会话或脚本中有效。
      2. local LOCAL_VAR="Local Variable"
      3. 只能在函数中使用
    4. 特殊变量
      1. $?:上一个命令的退出状态。
      2. $$:当前 Shell 的进程 ID。
      3. $!:最后运行的后台命令的进程 ID。
      4. $0:脚本的名称。
      5. $#:传递给脚本的参数个数。
      6. $@$*:传递给脚本的所有参数。
      7. $-:显示当前 Shell 的选项标志(set 命令设置的选项)
      8. $_:上一个命令的最后一个参数或脚本中的最后一个命令的最后一个参数。
      9. shift:将所有位置参数左移一个位置。原来的 $1 被丢弃,$2 变为 $1,依此类推。
  3. 变量的操作

    1. 变量的引用:
      1. 单引号 ':引号中的内容会被原样保留,不会解析变量。
      2. 双引号 ":引号中的变量会被解析。
    2. 变量的拼接:
      1. CONCAT_VAR="${STRING_VAR} and more text"
        echo "$CONCAT_VAR"
    3. 变量的替换:
      1. 默认值: 如果变量未设置,可以提供默认值。
        1. echo "${VAR:-default_value}"
      2. 替换为空值: 如果变量存在,替换为空值。
        1. echo "${VAR:?Variable is unset}"
  4. 变量的命名规则

    1. 变量名 只能包含字母、数字和下划线,且必须以字母或下划线开头。
  5. 变量的作用范围

    1. 全局变量: 在整个 Shell 会话中有效。使用 export 命令使变量成为环境变量。
      1. 变量名=变量值
      2. 不同文件使用自定义的export变量
    2. 局部变量: 在当前 Shell 函数或脚本中有效。如果在函数中使用,需用 local 定义。
      1. my_function() {
          local 变量名=变量值
          echo "$LOCAL_VAR"
        }
    3. 用户变量呢?
      1. 来了,用户变量就是我们定义的变量,在 shell脚本中,我们到现在还没有真正搞一个脚本玩。因为用户变量还没说。
      2. 用户变量就是我们设置的变量,有什么特点吗?回看最开始的知识,就是用户自定义变量的全部特点。
      3. 来到了作用范围,就可以开始用户变量。
      4. 用户变量可以放在文件中的任意的地方,添加local表示局部,加export就是全局,什么都不加就是在本文件的全局变量。
      5. 还是抽象?就是你自己设置的变量,不是你学到的变量(比如PATH)。还是看看例子,看完就知道了。
      6. 突然发现不同文件使用export还是有点麻烦
  6. 变量的删除

    1. 使用 unset 命令删除变量
      1. unset 变量名

第三节:流程控制语句(每个符号都要有空格,最好有,不然你都不知道哪里错了)

  1. 条件语句

    1. if语句
      1. 语法
        1. if [ 条件 ]
          then
              命令1
          elif [ 另一个条件 ]
          then
              命令2
          else
              命令3
          fi
      2. 常见逻辑判断运算符
        1. 文件测试

          • -e filename:测试文件是否存在。
          • -f filename:测试是否为普通文件。
          • -d filename:测试是否为目录。
          • -r filename:测试文件是否可读。
          • -w filename:测试文件是否可写。
          • -x filename:测试文件是否可执行。
        2. 字符串测试

          • -z string:测试字符串是否为空。
          • -n string:测试字符串是否非空。
          • string1 = string2:测试两个字符串是否相等。
          • string1 != string2:测试两个字符串是否不等。
        3. 数值测试

          • num1 -eq num2:测试两个数是否相等。
          • num1 -ne num2:测试两个数是否不相等。
          • num1 -lt num2:测试 num1 是否小于 num2
          • num1 -le num2:测试 num1 是否小于或等于 num2
          • num1 -gt num2:测试 num1 是否大于 num2
          • num1 -ge num2:测试 num1 是否大于或等于 num2
        4. 逻辑操作符
          • 逻辑与 (&&):只有当所有条件都为真时,整体条件才为真。
          • 逻辑或 (||):只要有一个条件为真,整体条件就为真。
          • 逻辑非 (!):对条件取反。
    2. case 语句
      1. 语法:
        1. case 变量 in
              模式1)
                  命令1;;
              模式2)
                  命令2;;
              *)
                  默认命令;;
          esac
      2. 新函数read,从控制台读取
  2. 循环语句

    1. for循环
      1. 语法:
        1. for 变量 in 列表
          do
              命令
          done
    2. while循环
      1. 语法:
        1. while [ 条件 ]
          do
              命令
          done
    3. until 循环与 while 循环相反,条件为假时执行命令。
      1. 语法:
        1. until [ 条件 ]
          do
              命令
          done
  3. 跳出和继续控制

    1. break跳出循环语句
    2. continue跳出本次循环语句
    3. 配合判断使用

第四节:其他补充知识

  1. select:用于创建一个简单的菜单供用户选择,它常用于交互式脚本中。

    1. 语法:
      1. select 变量 in 选项1 选项2 选项3 ...
        do
            命令
            break
        done
  2. eval:用于将参数中的表达式求值并执行结果命令。它可以用于动态构造命令行。

    1. 语法:
      1. eval $变量
  3. exec:用于用一个新的命令替换当前 Shell 进程,从而不创建新的子进程。如果 exec 成功执行,新命令将直接替换当前脚本的 Shell 进程,后续脚本不再执行。

  4. trap:用于捕捉和处理信号,允许在收到特定信号时执行一些自定义操作。常见的应用包括清理临时文件或优雅地退出脚本。

    1. 语法:
      1. trap ‘命令’ 信号 【信号……】
      2. 常见信息
        1. INT:中断信号,通常由用户按下 Ctrl+C 触发。
        2. TERM:终止信号,用于请求程序结束。
        3. EXIT:脚本退出时触发的信号。
        4. HUP:挂起信号,通常在终端关闭时触发。
        5. KILL:立即终止信号,无法捕捉和处理。
  5. function:Shell 中的函数用于组织和重用代码。函数可以包含逻辑控制语句,也可以接受参数并返回值。

    1. 语法:
      1. function 函数名 {
            命令
        }
  6. 一些目前我没见过的命令
    1. sleep:用于暂停脚本的执行一段指定的时间。
      1. 语法:sleep 数字 【单位,不写默认为秒】
      2. 常用参数:
        1. s:秒(默认值,如果不指定后缀)。
        2. m:分钟。
        3. h:小时。
        4. d:天。
    2. mktemp:用于创建临时文件或目录的命令。它生成一个唯一的文件名或目录名,确保在创建时不会与其他文件或目录重名。
      1. 语法:mktemp 【选项】【模版】
      2. 常见参数:
        1. -d:创建一个临时目录,而不是临时文件。
        2. -p DIR:在指定的目录中创建临时文件或目录。
        3. -t:使用系统临时目录作为父目录来创建临时文件或目录。
        4. -u:生成的临时文件/目录的名称不会实际创建,这个选项不推荐使用,因为可能导致安全问题。
      3. 模版指定模板,通常包含至少三个连续的 X 字符,这些 X 会被替换为随机字符。如果不提供模板,mktemp 会使用默认的模板。
      4. 莫名其妙,不知道为什么搞不出来

第五节:bash的其他功能

1. 命令别名

定义命令别名
  • 命令alias
  • 用法alias [别名]='[命令]'
  • 示例alias ll='ls -l'
    • ls -l 定义为 ll,以后只需输入 ll 就可以执行 ls -l 命令,简化常用命令的输入。
查看别名
  • 命令alias
  • 用法:直接输入 alias 即可查看当前所有定义的别名。
取消别名
  • 命令unalias
  • 用法unalias [别名]
  • 示例unalias ll
    • 取消 ll 这个别名,使其恢复为未定义别名前的状态。

2. 历史记录

命令历史
  • 命令history
  • 用法:直接输入 history 可以查看当前 shell 会话中已执行的所有命令。
命令回放
  • 使用!n!!
  • 示例
    • !3:重新执行历史记录中的第 3 条命令。
    • !!:重新执行上一条命令。

3. 自动补全

命令自动补全
  • 用法:输入部分命令或文件名后按 Tab 键,Bash 会尝试自动补全。
    • 如果有多个匹配项,按 Tab 键两次可以显示所有可能的补全项。

4. 模式匹配

通配符
  • *:匹配任意数量的字符(包括零个字符)。
    • 例如,*.txt 匹配所有以 .txt 结尾的文件。
  • ?:匹配任意一个字符。
    • 例如,file?.txt 可以匹配 file1.txtfile2.txt,但不匹配 file10.txt
  • []:匹配指定范围内的任意一个字符。
    • 例如,file[1-3].txt 可以匹配 file1.txtfile2.txtfile3.txt
正则表达式
  • 在 Bash 脚本中,可以使用正则表达式进行高级模式匹配,通常与 grepsedawk 等命令结合使用。

5. 输入输出重定向

标准输入/输出
  • >:将输出重定向到文件(覆盖文件内容)。
    • 例如,echo "Hello" > file.txt 会将 "Hello" 写入 file.txt,如果文件已存在,内容会被覆盖。
  • >>:将输出追加到文件末尾。
    • 例如,echo "Hello" >> file.txt 会将 "Hello" 追加到 file.txt,而不是覆盖文件内容。
  • <:从文件读取输入。
    • 例如,wc -l < file.txt 读取 file.txt 的内容并计算行数。

6. 多命令执行与管道符

多命令执行
  • 用法:使用 ;&&|| 来串联多个命令。
    • command1; command2:依次执行 command1command2,无论 command1 是否成功。
    • command1 && command2:在 command1 成功时才执行 command2
    • command1 || command2:在 command1 失败时才执行 command2
管道符
  • 符号|
  • 用法:将一个命令的输出作为下一个命令的输入。
    • 例如,ls -l | grep ".txt":列出当前目录中所有以 .txt 结尾的文件。

总结:

写了两天终于写,完了,我专升本计算机科学技术,也不知道该学什么,索性就为自己写了这个文档,csdn上有很多好文档,但是,要么就只有命令,要么就只有shell,要么vip,要么收费,于是我结合,csdn列出目录,gpt作为知识来源,我个人实操。当然,本文档有遗留,放弃,但是差不多够了。后期如果我从事相关行业,我会一直更新下去的,大家如果发现有什么缺少的知识可以评论,shell中还有一些函数我没写,因为我认为,初学就像是一年级,一下子就是高数不太好。

标签:选项,文件,用户,语法,命令,自用,linux,目录,大全
From: https://blog.csdn.net/qq_62174860/article/details/141248148

相关文章

  • 中间件漏洞原理与复现大全【万字总结】
    文章目录IISHTTP.SYS远程代码执行漏洞(CVE-2015-1635)漏洞描述影响版本漏洞复现IIS短文件之目录扫描1、概念3、应用场景:4、漏洞利用:IIS文件解析漏洞IIS6解析漏洞IIS7解析漏洞IIS写权限漏洞简介条件漏洞复现NginxNginx文件名逻辑漏洞原理条件复现Nginx解......
  • Huawei Matebook e 2022 安装 archlinux 双系统
    本文同步发布于我的网站安装之前wifi名称修改为英文+数字的,以防之后没法联网准备好U盘并使用GPT分区表写入最新的arch镜像。基础安装开机按F2进入UEFI/BIOS设置,将SecureBoot(安全启动)关闭,按F10保存重启。开机按F12进入启动菜单,选择U盘启动。先按e在引......
  • Linux云计算 |【第二阶段】OPERATION-DAY6
    主要内容:RPM打包(生成目录结构、拷贝源码软件包、编写SPEC文件)、VPN服务器(GREVPN、PPTPVPN、L2TP+IPSecVPN)、Systemd服务管理(命令行工具、编写Unit配置文件)一、RPM软件打包RPM(RedHatPackageManager)是一种用于Linux系统的软件包管理系统,主要用于RedHat系列发行版(......
  • Linux云计算 |【第二阶段】OPERATION-DAY5
    主要内容:Tomcat概述、Tomcat部署安装、Tomcat应用案例(虚拟主机、地址重写、SSL加密站点、Tomcat日志)、Tomcat集群,maven应用一、Tomcat概述ApacheTomcat(简称Tomcat)是一个开源的JavaServlet容器,由Apache软件基金会开发和维护。它实现了JavaServlet和JavaServerPa......
  • Docker 命令大全,值得收藏!
    Docker服务管理启动服务:sudosystemctlstartdocker停止服务:sudosystemctlstopdocker重启服务:sudosystemctlrestartdocker查看状态:sudosystemctlstatusdocker开机自启:sudosystemctlenabledocker禁用自启:sudosystemctldisabledocker容器基本操作运行容器......
  • Linux下安装Trac1.6过程
    Linux下安装Trac1.6下载地址:https://trac.edgewall.org/wiki/TracDownload1.安装依赖包注意安装Trac1.6依赖包版本要求Python>3.5Jinja2>=2.9.3Babel2.10~2.2直接通过pip安装pipinstallsetuptoolspipinstallJinja2pipinstallBabel2.......
  • Linux ACL 访问控制
    今天给伙伴们分享一下LinuxACL访问控制,希望看了有所收获。我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!如果伙伴们看了文档觉得有用,欢迎大家关注我的公众号,获取相......
  • Linux 文件系统目录结构介绍和文件管理
    今天给伙伴们分享一下Linux文件系统目录结构介绍和文件管理,希望看了有所收获。我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!如果伙伴们看了文档觉得有用,欢迎大家关......
  • C#实现国产Linux视频录制生成mp4(附源码,银河麒麟、统信UOS)
    随着信创国产化浪潮的来临,在国产操作系统上的应用开发的需求越来越多,最近有个客户需要在银河麒麟或统信UOS上实现录制摄像头视频和麦克风声音,将它们录制成一个mp4文件。那么这样的功能要如何实现了?一.技术方案要完成这些功能,具体来说,需要解决如下几个技术问题:(1)麦克风数据采集......
  • 你知道Windows下的linux的神器WSL吗?
    我们在开发项目的时候经常需要部署,几乎都是部署在linux系统比较多,不知道你是否有遇到过部署到环境上会出现一些奇怪的问题,但是在本地却无法复现,然而我们的本地开发电脑大多数都是window系统,我们想要模拟对应的场景去调试,此时我们需要模拟对应的环境,这时候要怎么模拟呢?如果要是......