Linux知识点(备赛华为ICT计算赛道)

1. awk命令的常见选项和含义

awk 是一种强大的文本处理工具,具有许多选项和功能。以下是 awk 命令的一些常见选项和它们的含义:

  1. -F--field-separator

    • 含义:指定字段分隔符,用于在输入行中划分字段。
    • 示例:awk -F':' '{print $1}' file.txt,指定冒号 : 为字段分隔符。
  2. -v var=value

    • 含义:定义一个变量,可以在 awk 程序中使用。
    • 示例:awk -v myvar=42 '{print $1, myvar}' file.txt,定义了变量 myvar 的值为 42
  3. -f file

    • 含义:从指定文件中读取 awk 脚本。
    • 示例:awk -f myscript.awk file.txt,从文件 myscript.awk 中读取 awk 脚本。
  4. -v RS=record_separator

    • 含义:指定输入记录(行)的分隔符。
    • 示例:awk -v RS='\n\n' '{print $1}' file.txt,指定两个换行符作为记录分隔符。
  5. -v OFS=output_field_separator

    • 含义:指定输出字段之间的分隔符。
    • 示例:awk -v OFS=',' '{print $1, $2}' file.txt,指定逗号 , 作为输出字段分隔符。
  6. -v ORS=output_record_separator

    • 含义:指定输出记录(行)之间的分隔符。
    • 示例:awk -v ORS='\n\n' '{print $1}' file.txt,指定两个换行符作为输出记录分隔符。
  7. -i inplace

    • 含义:在原始文件中进行就地编辑,而不是向标准输出写入结果。
    • 示例:awk -i inplace '{print $1}' file.txt,在原始文件中编辑,而不是输出到终端。
  8. 其他常见选项:

    • -F 指定字段分隔符。
    • -v 定义变量。
    • -f 从文件中读取 awk 脚本。
    • -W 控制一些 awk 的警告行为。

这些选项只是 awk 提供的众多选项中的一小部分。可以使用 man awk 命令在终端中查看 awk 的完整手册以获取更详细的信息。


2.bg命令的基本用法

bg 命令用于将作业(job)置于后台运行。在 Linux 系统中,当你在终端中运行一个命令时,它会成为前台作业(foreground job),占用终端会话。通过 bg 命令,你可以将一个在前台运行的作业切换到后台运行,从而使终端会话可用于执行其他任务。

bg 命令的基本用法:
bg [job_spec]
  • job_spec 是作业的标识符,可以是作业号(如 %1)、作业名或作业号前缀。如果省略 job_spec,则将当前前台作业切换到后台。

示例:

  1. 将当前前台作业切换到后台:

    # 按下 Ctrl+Z 将当前前台作业暂停
    # 然后输入 bg 将其切换到后台运行
    bg
    
  2. 将指定作业切换到后台:

    # 查看作业列表
    jobs
    
    # 将作业 %1 切换到后台运行
    bg %1
    
  3. 将上一个作业切换到后台:

    # 将上一个作业切换到后台运行
    bg %-
    

bg 命令通常与 Ctrl+Z 结合使用。按下 Ctrl+Z 可以将当前正在前台运行的命令暂停,并将其放入后台,然后使用 bg 命令将其继续在后台运行。

注意:bg 命令只是将作业切换到后台,并不会阻止它的输出。如果该作业产生输出并且输出到终端,它仍将显示在终端上。可以使用 disown 命令来断开作业与终端的关联,以便它继续在后台运行而不受终端影响。


3.usermod的用法

usermod 是一个 Linux 系统中用于修改用户账户属性的命令。以下是 usermod 命令的基本用法和一些常见选项:

usermod [options] username

其中 username 是要修改的用户名,而 [options] 是一系列选项,用于指定要进行的修改操作。

常见选项:

  1. -c, --comment COMMENT

    • 含义:修改用户账户的注释字段(用户描述)。
    • 示例:sudo usermod -c "John Doe" username
  2. -d, --home HOME_DIR

    • 含义:修改用户的主目录。
    • 示例:sudo usermod -d /new/home/directory username
  3. -e, --expiredate EXPIRE_DATE

    • 含义:设置账户的过期日期。日期格式通常是 YYYY-MM-DD。
    • 示例:sudo usermod -e 2023-12-31 username
  4. -g, --gid GROUP

    • 含义:修改用户的初始登录组。
    • 示例:sudo usermod -g newgroup username
  5. -G, --groups GROUPS

    • 含义:将用户添加到其他附加组。多个组名之间使用逗号分隔。
    • 示例:sudo usermod -G group1,group2 username
  6. -l, --login NEW_LOGIN

    • 含义:修改用户的登录名。
    • 示例:sudo usermod -l newusername oldusername
  7. -s, --shell SHELL

    • 含义:修改用户的默认 shell。
    • 示例:sudo usermod -s /bin/bash username
  8. -p, --password PASSWORD

    • 含义:设置用户的加密密码。可以使用 passwd 命令生成加密密码字符串。
    • 示例:sudo usermod -p '$6$...' username
  9. -u, --uid UID

    • 含义:修改用户的用户 ID。
    • 示例:sudo usermod -u 1001 username
  10. -L, --lock

    • 含义:锁定用户账户,禁止用户登录。
    • 示例:sudo usermod -L username
  11. -U, --unlock

    • 含义:解锁用户账户。
    • 示例:sudo usermod -U username

这只是 usermod 命令的一些常见选项,更多选项可以通过 man usermod 命令查看 usermod 的手册页。请注意,在使用 usermod 命令时,可能需要管理员权限,因此可能需要使用 sudo 或具有管理员权限的用户来执行这些操作。


4.哪些命令可以修改用户的主组或附加组信息?

在 Linux 系统中,有几个命令可以用来修改用户的主组或附加组信息。以下是其中的一些主要命令:

  1. usermod 命令:

    • usermod 命令是用于修改用户账户属性的通用命令,可以用来修改用户的主组或附加组。

    • 示例:将用户 “john” 的主组修改为 “newgroup”。

      sudo usermod -g newgroup john
      

      添加用户 “john” 到附加组 “additional_group”。

      sudo usermod -aG additional_group john
      
  2. useradd 命令:

    • useradd 命令用于创建新用户账户,同时也可以用来指定用户的主组和附加组。

    • 示例:创建新用户 “alice”,并将其主组设置为 “staff”,附加组设置为 “developers”。

      sudo useradd -g staff -G developers alice
      
  3. gpasswd 命令:

    • gpasswd 命令用于管理群组的用户成员,包括将用户添加到群组中。

    • 示例:将用户 “bob” 添加到群组 “developers”。

      sudo gpasswd -a bob developers
      
  4. 直接修改 /etc/passwd/etc/group 文件:

    • 可以手动编辑 /etc/passwd/etc/group 文件来修改用户的主组和附加组信息。但这种方法需要谨慎,因为直接编辑这些文件可能导致配置错误,应当在确保备份的情况下进行。

在使用这些命令时,请务必小心,确保输入正确并符合系统安全性和最佳实践。


5. setfacl-m.g:XS:rw /data/xs.txt 分析这条命令

这条命令使用 setfacl 命令来设置文件的 ACL(Access Control List)。ACL 是一种用于定义文件或目录访问权限的扩展权限系统。这里的命令含有一些选项和参数,让我们分析一下:

setfacl -m g:XS:rw /data/xs.txt
  • setfacl 命令本身,用于设置文件的 ACL。
  • -m 选项,表示修改 ACL。
  • g:XS:rw 这是 ACL 条目的规范格式:
    • g 表示组。
    • XS 是组的标识符或名称。
    • rw 表示给予读(read)和写(write)权限。
  • /data/xs.txt 目标文件路径,这是 ACL 将要被设置的文件。

因此,这条命令的含义是:给组 XS 分配 /data/xs.txt 文件的读写权限。ACL 允许在不改变传统 Unix 权限的前提下,对文件和目录进行更细粒度的访问控制。


6. chgrp XS /data/xs.txt 请分析这条命令

这条命令使用 chgrp 命令,用于修改文件或目录的所属组。下面是这个命令的分析:

chgrp XS /data/xs.txt
  • chgrp 修改组(change group)命令,用于修改文件或目录的所属组。
  • XS 目标组的名称或组标识符。
  • /data/xs.txt 目标文件路径,这是要修改所属组的文件。

因此,这条命令的含义是:将文件 /data/xs.txt 的所属组修改为 XS。文件所属组的改变可能会影响文件的访问权限,具体取决于文件的权限设置和组成员关系。


7. openEuler社区发布的LTS版本维护周期是多长时间-----》5年


8. openEuler1.0默认的文件系统是et4


9. rpm -ql命令的含义

rpm -ql 命令用于查询已安装的 RPM 软件包中的文件列表。这个命令通常被用于查看一个已安装软件包都安装了哪些文件,以及这些文件的路径。下面是这个命令的基本含义:

rpm -ql <package_name>
  • -q 查询软件包。
  • -l 列出软件包的文件列表。

示例:

rpm -ql openssl

这个命令将列出 openssl 软件包中所有文件的完整路径。这包括二进制可执行文件、库文件、配置文件、文档等。通过查看这个文件列表,你可以了解软件包的安装结构,以及软件包中包含的具体文件。

请注意,rpm -ql 命令只查询已安装的软件包。如果软件包尚未安装,你需要使用 rpm -qlp <package.rpm> 来查询 RPM 文件中的文件列表。


10. setfacl命令的常见用法

setfacl 命令用于设置文件和目录的 ACL(Access Control List),它提供了对文件和目录更细粒度的访问控制。以下是 setfacl 命令的一些常见用法:

  1. 添加 ACL 条目:

    setfacl -m user:username:permissions /path/to/file
    

    其中:

    • user:username 指定用户。
    • permissions 指定权限,例如 rwx 表示读、写、执行。
  2. 添加默认 ACL 条目(对于目录):

    setfacl -m d:u:username:permissions /path/to/directory
    

    这将设置目录的默认 ACL 条目,确保新创建的文件或子目录也继承这些权限。

  3. 删除 ACL 条目:

    setfacl -x user:username /path/to/file
    

    通过 -x 选项可以删除指定用户的 ACL 条目。

  4. 查看 ACL:

    getfacl /path/to/file
    

    使用 getfacl 命令查看文件或目录的 ACL。

  5. 递归设置 ACL(对目录递归生效):

    setfacl -R -m user:username:permissions /path/to/directory
    

    使用 -R 选项可以递归地对目录及其内容应用 ACL。

  6. 清空 ACL:

    setfacl --remove-all /path/to/file
    

    使用 --remove-all 可以清空文件或目录的所有 ACL 条目。

这些只是 setfacl 命令的一些基本用法,ACL 提供了更多高级的权限控制选项。确保在使用 setfacl 时,仔细查阅相关文档以了解更多详细信息。


11. linux系统中 /路径下面一系列目录的作用是什么

在 Linux 系统中,根目录 / 下有许多标准的系统目录,每个目录都有特定的用途。以下是一些常见的系统目录及其作用:

  1. /bin(Binary): 存放系统启动和运行时需要的基本命令(二进制文件),例如 lscpmv 等。

  2. /boot 包含启动系统时所需的文件,例如内核文件和启动加载程序(bootloader)配置文件。

  3. /dev(Device): 包含设备文件,用于与硬件设备通信。在 Linux 中,一切都被视为文件,硬件设备也通过文件来进行访问。

  4. /etc(Etcetera): 存放系统的配置文件,包括各种服务的配置文件、网络配置文件、用户账户配置等。

  5. /home 用户的主目录,每个用户通常都有一个子目录在这里。

  6. /lib(Library): 包含系统运行时所需的共享库文件。

  7. /media 空目录,用于挂载可移动媒体设备,例如 USB 驱动器。

  8. /mnt(Mount): 空目录,通常用于手动挂载其他文件系统。

  9. /opt(Optional): 可选的应用程序软件包安装目录。

  10. /proc 虚拟文件系统,提供关于内核、进程和系统状态的信息。

  11. /root 超级用户(root)的主目录。

  12. /run 临时文件系统,存储在系统引导过程中产生的临时运行时文件。

  13. /sbin(System Binary): 存放系统管理员使用的系统管理命令,这些命令通常只能由超级用户执行。

  14. /srv(Service): 用于存储服务数据,例如 Web 服务器的数据目录。

  15. /sys 虚拟文件系统,提供与内核及其配置参数交互的接口。

  16. /tmp 用于存储临时文件的目录,任何用户都可以访问,但定期被清理。

  17. /usr(Unix System Resources): 包含用户程序和数据,分为 binlibshare 等子目录。

  18. /var(Variable): 存储在系统运行过程中经常变化的文件,例如日志文件、缓存文件等。

这只是一个基本的概述,不同的 Linux 发行版和系统配置可能会有一些变化。


12. vgcreate的用法

vgcreate 是用于创建 LVM(Logical Volume Manager)卷组的命令。LVM 允许你管理硬盘分区和逻辑卷,提供了灵活性和动态性。

以下是 vgcreate 命令的基本用法:

vgcreate [options] <VolumeGroupName> <PhysicalVolumePath>
  • <VolumeGroupName> 要创建的卷组的名称。
  • <PhysicalVolumePath> 一个或多个物理卷的路径,用于构成卷组。

示例:

vgcreate myvg /dev/sdb1 /dev/sdc1

这个命令将创建一个名为 myvg 的卷组,使用 /dev/sdb1/dev/sdc1 作为物理卷。

常见选项:

  • -s, --physicalextentsize Size 指定物理区块的大小。
  • -p, --maxphysicalvolumes MaxPVs 设置卷组中的最大物理卷数。
  • -v, --verbose 显示详细的输出信息。

请注意,创建卷组之前,你需要确保物理卷已经存在且没有被用于其他卷组。卷组的创建将把这些物理卷组合在一起,以形成一个可用于创建逻辑卷的存储池。


13. 9 个 Linux Parted 命令示例

链接: 9 个 Linux Parted 命令示例-云社区-华为云 (huaweicloud.com)


14. Ps -eo pid.%mem,start,user请帮我分析这条命令

这是一个在Linux或类Unix系统上使用ps命令的命令行。让我们逐步解释它:

  1. ps: 这是一个用于显示当前运行进程的命令。

  2. -eo: 这是ps命令的选项,它指定了要显示的列。在这里,e表示显示所有进程,o表示用户自定义输出。

  3. pid: 这是输出中的第一列,表示进程ID(PID)。

  4. %mem: 这是输出中的第二列,表示内存使用的百分比。

  5. start: 这是输出中的第三列,表示进程启动的时间。

  6. user: 这是输出中的第四列,表示进程的拥有者(用户)。

所以,这个命令的目的是以定制的格式显示所有进程的PID、内存使用百分比、启动时间和拥有者信息。

如果你有具体的问题或需要更详细的解释,请告诉我!


15. man 后面都能跟什么数字?

在 Unix/Linux 系统中,man 命令后面可以跟着不同的节号(sections)。手册页被分为多个节,每个节包含特定类型的信息。以下是一些常见的 man 命令后数字代表的节号:

  • 1: 用户命令和可执行程序的手册页。
  • 2: 系统调用(内核提供的服务)和函数的手册页。
  • 3: 库函数的手册页。
  • 4: 特殊文件和设备的手册页。
  • 5: 配置文件和文件格式的手册页。
  • 6: 小游戏和屏幕保护程序的手册页。
  • 7: 杂项的手册页,如宏包和协议等。
  • 8: 系统管理员命令的手册页。

因此,man 1 通常用于查看用户命令的手册页,man 2 用于查看系统调用和函数的手册页,以此类推。例如:

  • man 1 ls: 查看 ls 命令的手册页。
  • man 2 open: 查看 open 系统调用的手册页。
  • man 3 printf: 查看 C 语言中的 printf 函数的手册页。

你可以使用 man 命令来查看关于系统的广泛文档,以便更好地了解命令、函数和其他系统资源。


16. sed命令详解

sed 是一种流编辑器,用于对文本进行流式处理。它可以在输入流(通常是文本文件或管道)上执行基本的文本转换操作。sed 主要用于在文本中进行查找、替换、删除和其他文本编辑操作。

以下是 sed 命令的一些基本用法和选项:

sed [选项] '动作' 文件
  • 选项:

    • -n:禁止默认输出,只输出经过脚本处理的结果。
    • -e:允许多个编辑命令。
    • -i:在原始文件上进行编辑,而不是将结果输出到标准输出。
    • -r(或 --regexp-extended):启用扩展正则表达式。
    • 其他选项用于执行其他高级操作,具体可以查看 man sed 获取详细信息。
  • 动作:

    • s/old/new/g:替换文本中所有匹配到的 “old” 字符串为 “new”。
    • p:打印当前模式空间(匹配到的行)。
    • d:删除模式空间中的行。
    • n:读取并打印下一行。
    • i:插入文本到当前行之前。
    • a:追加文本到当前行之后。
    • r filename:从文件 filename 中读取内容并将其附加到输出。
    • 等等…

示例:

  1. 替换文本中的字符串:

    sed 's/old/new/g' input.txt
    
  2. 删除包含特定字符串的行:

    sed '/pattern/d' input.txt
    
  3. 在指定行之前插入文本:

    sed '3i\This is a new line' input.txt
    
  4. 仅打印匹配行:

    sed -n '/pattern/p' input.txt
    
  5. 执行多个编辑动作:

    sed -e 's/old/new/g' -e 's/foo/bar/g' input.txt
    

注意:sed 的语法和功能强大,上述示例只是其中的一小部分。你可以使用 man sed 命令来查看完整的 sed 手册,以获取更详细和全面的信息。


17. dnf命令详解

dnf 是一种用于管理 RPM 软件包的工具,特别是在使用基于 RPM 的 Linux 发行版时,如 Fedora 和 CentOS。它是 RPM 包管理系统的下一代工具,旨在取代 yum

以下是一些常见的 dnf 命令和用法:

  1. 安装软件包:

    dnf install package_name
    

    用于安装指定的软件包。

  2. 卸载软件包:

    dnf remove package_name
    

    用于卸载指定的软件包。

  3. 更新系统:

    dnf update
    

    用于更新系统上安装的所有软件包。

  4. 搜索软件包:

    dnf search search_term
    

    用于在仓库中搜索包含指定关键字的软件包。

  5. 列出已安装的软件包:

    dnf list installed
    

    用于列出系统上已安装的所有软件包。

  6. 列出可用的软件包组:

    dnf group list
    

    用于列出可用的软件包组,例如 “Development Tools”。

  7. 安装软件包组:

    dnf group install group_name
    

    用于安装指定的软件包组。

  8. 列出可用的存储库:

    dnf repolist
    

    用于列出系统中已配置的存储库。

  9. 清理缓存:

    dnf clean all
    

    用于清理下载的软件包和元数据的缓存。

  10. 查看软件包信息:

    dnf info package_name
    

    用于查看有关指定软件包的详细信息。

这只是 dnf 的一些基本用法。dnf 支持许多其他选项和功能,具体的使用方法可以通过查看 man dnf 或者 dnf --help 来获取更详细的信息。


18. 详解/etc/dnf/dnf.conf 文件中的repository参数

/etc/dnf/dnf.conf 文件中,repository 参数用于定义 DNF (Dandified Yum) 存储库的配置。存储库是用于获取和安装软件包的源,通常包含了软件包的元数据和实际软件包文件。

以下是 repository 参数的一些常见配置选项:

  1. repositoryid

    • 描述: 存储库的唯一标识符。
    • 示例: repositoryid=myrepo
  2. name

    • 描述: 存储库的友好名称。
    • 示例: name=My Custom Repository
  3. baseurl

    • 描述: 存储库的基本 URL,指向存储库的位置。
    • 示例: baseurl=https://example.com/repo
  4. mirrorlist

    • 描述: 存储库的镜像列表 URL,包含多个可用的镜像。
    • 示例: mirrorlist=https://example.com/mirrorlist
  5. enabled

    • 描述: 存储库是否启用(1 表示启用,0 表示禁用)。
    • 示例: enabled=1
  6. gpgcheck

    • 描述: 是否检查软件包的 GPG 签名(1 表示检查,0 表示不检查)。
    • 示例: gpgcheck=1
  7. gpgkey

    • 描述: GPG 密钥的 URL,用于验证软件包。
    • 示例: gpgkey=https://example.com/RPM-GPG-KEY
  8. metadata_expire

    • 描述: 缓存的元数据的过期时间,以秒为单位。
    • 示例: metadata_expire=1h
  9. cost

    • 描述: 存储库的成本。当有多个存储库提供相同软件包时,DNF 可能会选择成本较低的存储库。
    • 示例: cost=1000
  10. skip_if_unavailable

    • 描述: 如果存储库不可用,是否跳过而不是等待它可用。
    • 示例: skip_if_unavailable=True

这只是 repository 参数的一些常见选项。你可以根据需要配置其他参数。配置文件中的注释也提供了有关每个参数的更详细的信息。

示例:

[myrepo]
name=My Custom Repository
baseurl=https://example.com/repo
enabled=1
gpgcheck=1
gpgkey=https://example.com/RPM-GPG-KEY
metadata_expire=1h
cost=1000
skip_if_unavailable=True

上述示例创建了一个名为 “myrepo” 的存储库,指定了存储库的名称、URL、启用状态、GPG 检查、GPG 密钥等信息。


19. diff命令详解

diff 是一个在 Unix/Linux 系统上用于比较文件之间差异的命令。它比较两个文本文件的内容,并显示它们之间的区别。diff 命令通常与 patch 命令一起使用,用于创建和应用补丁。

基本的 diff 命令语法如下:

diff [选项] 文件1 文件2

一些常用的选项包括:

  • -u--unified 以统一的格式显示差异。
  • -c--context 以上下文格式显示差异。
  • -r--recursive 递归比较目录。
  • -i--ignore-case 忽略大小写。
  • -q--brief 仅显示文件是否不同,而不显示具体差异。
  • -w--ignore-all-space 忽略所有空格。

示例用法:

  1. 基本比较:

    diff file1.txt file2.txt
    

    这将显示两个文件之间的差异。

  2. 统一格式显示差异:

    diff -u file1.txt file2.txt
    
  3. 递归比较目录:

    diff -r dir1 dir2
    

    这将递归地比较两个目录及其子目录中的文件。

  4. 忽略空格:

    diff -w file1.txt file2.txt
    

    这将忽略两个文件之间的空格差异。

  5. 生成补丁文件:

    diff -u file1.txt file2.txt > patchfile
    

    这将生成一个包含差异的补丁文件,可用于后续的文件修补。

diff 的输出通常以行为单位显示两个文件的差异,并使用符号表示增加、删除和修改的行。如果文件较大或差异较多,可以使用 -u-c 选项以更友好的方式显示。

请注意,diff 仅比较文本文件,如果你要比较二进制文件,可能需要使用其他工具,如 cmphexdump


20. 脚本分析

#!/bin/bash

for i in $(echo "4 5 6"); do
  echo $i
done

echo $i

现在,让我们分析这个脚本的运行过程:

  1. for i in $(echo "4 5 6"):这会将字符串 “4 5 6” 切割成三个单词,并将它们分配给变量 i。在每次循环中,i 的值分别为 “4”、“5” 和 “6”。

  2. echo $i:在 for 循环中,echo $i 会打印当前循环中 i 的值,即 “4”、“5” 和 “6”。

  3. echo $i:在 for 循环结束后,执行 echo $i,此时 i 的值是最后一次循环的值,即 “6”。

因此,脚本的运行结果将是:

4
5
6
6

21. 这个脚本的主要目的是检查系统中是否安装了指定的 RPM 软件包。下面是对脚本的分析:

#! /bin/bash
if rpm -q $1 &>/dev/null; then
    echo "!"
else
    echo "?"
fi
  1. #! /bin/bash:这是一个 shebang 行,指定了脚本使用的解释器,这里是 Bash。

  2. if rpm -q $1 &>/dev/null; then:这是一个条件语句,用于检查指定的 RPM 软件包是否已经安装。具体解释如下:

    • rpm -q $1:使用 rpm 命令查询是否安装了指定的软件包。$1 表示脚本的第一个参数,即要检查的软件包的名称。
    • &>/dev/null:将命令的标准输出和标准错误都重定向到 /dev/null,这样不会将查询结果打印到终端。
    • ; then:条件语句的开始。
  3. echo "!":如果软件包已经安装,则输出 “!”。

  4. else:条件语句的分支,表示软件包未安装。

  5. echo "?":如果软件包未安装,则输出 “?”。

脚本执行流程如下:

  • 如果指定的 RPM 软件包已经安装,rpm -q $1 查询将成功,条件为真,脚本将输出 “!”。
  • 如果指定的 RPM 软件包未安装,rpm -q $1 查询将失败,条件为假,脚本将输出 “?”。

这个脚本的输出将是 “!” 或 “?”,取决于系统中是否安装了指定的 RPM 软件包。


  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栖迟于一丘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值