Linux入门之命令行

概述

   

Unix 和 Linux 都是类 Unix 操作系统,它们有许多相似的特性和设计理念,但也有一些区别。

  1. 开发历史:Unix 最早于 1969 年诞生,由贝尔实验室的肯·汤普逊和丹尼斯·里奇等人开发。而 Linux 则是由芬兰的林纳斯·托瓦兹(Linus Torvalds)于 1991 年开发的。

  2. 内核:Unix 和 Linux 的内核不同。Unix 内核通常有多个版本,如 System V、BSD、AIX 等,而 Linux 内核则只有一个版本,但经过了多次开发和优化,而且开放源代码,可以自由地进行修改和定制。

  3. 发行版:Unix 的发行版通常都是商业化的,需要付费购买或许可证。而 Linux 的发行版则有很多免费的版本,如 Ubuntu、Debian、Fedora、CentOS 等,而且这些版本都是开放源代码的,可以免费使用和修改。

  4. 应用软件:Unix 和 Linux 的应用软件也有一些差异。由于 Unix 发行版需要付费购买或许可证,因此 Unix 上的商业应用软件相对较多,比如 Oracle 数据库、IBM WebSphere 等。而 Linux 则有大量的免费开源软件,如 Apache、MySQL、PHP 等,这些软件也可以在 Unix 上运行。

  5. 用户群体:由于 Unix 的商业化和高昂的成本,Unix 的用户群体主要是企业和大型机构。而 Linux 的免费和开源特性,使得它在个人计算机、服务器、移动设备等领域有着广泛的应用,并且吸引了大量的开发者和爱好者。

Linux目录介绍

f0220fdaa1724689905dd3e918b0ff91.png

根目录 

  • /bin: 存放一些基本的系统工具和命令,如ls、cp、mv等。
  • /boot: 存放启动Linux时所需的一些文件,如内核文件和引导程序。
  • /dev: 存放设备文件,包括硬件设备和虚拟设备。
  • /etc: 存放系统的配置文件和目录,如网络配置、用户账户和密码等。
  • /home: 存放用户的主目录,每个用户都有一个独立的子目录。
  • /lib、/lib32、/lib64、/libx32: 存放系统库文件,这些库文件包含了系统和应用程序所需的函数和代码。
  • /lost+found: 存放由于系统崩溃或磁盘出现问题而被系统恢复的文件。
  • /media: 存放可移动媒体设备,如U盘、光盘等。
  • /mnt: 存放临时挂载的文件系统,通常用于挂载其他硬盘或网络文件系统。
  • /opt: 存放可选的应用程序,如第三方应用程序。
  • /proc: 存放系统内存映射文件,可以用于访问系统内核的信息。
  • /root: 存放root用户的主目录。
  • /run: 存放系统运行时需要的临时文件,如PID文件和锁文件。
  • /sbin: 存放一些基本的系统管理工具和命令,通常只有管理员才能使用。
  • /snap: 存放使用snap包管理器安装的应用程序。
  • /srv: 存放服务相关的数据文件。
  • /sys: 存放Linux内核的接口和信息。
  • /tmp: 存放临时文件,该目录的文件在系统重启时会被清空。
  • /usr: 存放用户和系统应用程序的相关文件,包括二进制文件、库文件、头文件等。
  • /var: 存放系统运行时产生的变化和日志文件,如日志文件、缓存文件、数据库文件等。

补充:在/dev目录中,设备文件的名称通常由三个部分组成:第一部分是设备类型,第二部分是设备名称,第三部分是分区编号。其中,设备类型以字母“sd”开头,表示一个SCSI(Small Computer System Interface)磁盘设备。设备名称后面的数字表示设备的编号,例如第一个SCSI设备为sda,第二个为sdb,以此类推。分区编号则用数字表示,例如sdb1表示sdb设备上的第一个分区。(需要注意的是,对于扩展分区中的逻辑分区,设备名称的命名方式略有不同,逻辑分区的设备名称从/dev/sdX5开始)

当我们使用命令如“mount /dev/sdb1 /media”时,指定的是将sdb设备上的第一个分区挂载到/media目录下。 

/etc/fstab(文件系统表):包含了文件系统的信息,包含哪些文件系统应该在系统启动时挂载

/etc/mount:该文件是一个用于存储文件系统挂载选项的配置文件。在系统启动时,系统会读取/etc/fstab文件中的内容,并将其中列出的文件系统挂载到指定的挂载点(静态)。

/etc/mtab:该文件是一个动态文件,它显示了当前已经挂载的文件系统的信息

常见文件

  • 文件/etc/passwd包含有关系统上所有用户帐户的信息
  • 文件/etc/profile和~/.bash_profile用于在登录时配置用户的环境
  • 文件/etc/shadow包含加密的用户帐户密码信息(只能由系统的超级用户访问)。

下面是文件 /etc/passwd详情

每一行表示一个用户账号,由冒号分隔为七个字段,分别是:

  1. 用户名(Username):s213361、s213387、s215321等。
  2. 密码占位符(Password):通常是"x",表示密码已加密并存储在/etc/shadow文件中。
  3. 用户ID(UID):唯一标识每个用户的数字,每个用户的UID必须是唯一的。
  4. 主组ID(GID):该用户所属的主组的数字ID。
  5. 用户信息(User Info):用于描述用户,通常是空白。
  6. 主目录路径(Home directory):该用户的主目录路径。
  7. 登录Shell(Login shell):用于用户登录后启动的Shell程序路径。

例如第一行的意思是:用户名为s213361,密码占位符为x,用户ID为1712,主组ID为1537,用户信息为空,主目录路径为/home/s213361,登录Shell为/bin/bash。

注:每个用户都属于一个或多个用户组。用户组是一组用户的集合,用于管理文件和目录的权限。每个用户组都有一个唯一的数字ID,称为GID。

在/etc/passwd文件中,每个用户都有一个主组ID(GID),它是该用户所属的主要用户组的数字ID。主组通常是用户创建文件和目录时默认的组。例如,如果用户创建了一个文件,则该文件的组将设置为该用户的主组。

$ 表示变量

$PATH 表示环境变量

PATH=$PATH:. 将当前目录添加到PATH环境变量中,:是路径分隔符,.表示当前目录

echo "$PATH" 打印出PATH环境变量路径(双引号括住字符串会解析字符串里的特殊字符)

echo '$PATH' 打印"$PATH"这个字符串(也可写成echo \$PATH\是转义符)

sudo 以超级用户身份执行某命令

sudo vi a.txt 以超级用户身份打开a.txt读写

su 切换到超级管理员身份

su - xxx 切换到xxx身份

man 查看某命令的帮助手册

man ls 查看ls的帮助手册

pwd 查看当前目录 与 自动补全

e594621e459344e7a3d25a0dae21ef4b.png

文件详情 

89031f113fad4bb3962fbb4274a84470.png  

96c3bbede9a04245b62cab4abe6e533a.png

drwxrwxr-x d代表目录 -代表文件

其中rwx rwx r-x r是可读 w是可写 x 执行

第一组(前三个)指文件拥有者的权限

第二组(中三个)代表文件拥有的组的权限

第三组(后三个)代表其他用户的权限

文件权限(二进制)

通过数字修改权限

0代表没有权限,1代表可执行2代表可写4代表可读,故7代表读写执行,5代表可读可执行。

新建文件(或目录)初始权限=文件(或目录)最大默认权限&~(umask值),umask权限掩码默认是022。其中,文件的最大默认权限是666,目录的是777【目录最大是7是因为进入目录要目录的执行权限。后续可以通过chmod修改,比如将文件变成可执行即7(超过6)】。777&~022=755(与取反的掩码相与相当于同1‘减去’,如666&~033=644,6即110,3即011,同是1的位减去)。

chmod 755 1.txt 给1.txt一个755的权限,第一个位置7是创造文件的用户的权限,第二个位置5是组用户权限,第三个位置5是其他用户权限

通过字母修改权限

chmod u-x 1.txt 给文件拥有者去掉执行的权限

chmod g+w 1.txt 给组用户加上写的权限

chmod o=rw 1.txt 给其他用户读写的权限

cd 切换文件夹

cd /home 绝对路径(以根目录开头)

cd admin 相对路径,表示进入该目录的下一级叫做admin的文件夹

cd .. 返回上一级目录

cd ../同级文件 进入同级目录下的“同级文件”(先上一级再下一级即同级)

cd / 回到根目录(“/”即根目录)

cdcd ~ 回到自己家的的目录,即/home/admin(这里假设admin是自己的家,~即表示家目录)

cd - 回退(在最近操作过的两个目录里来回切换)

ls 查看当前目录的内容

ls 查看当前目录的内容

ls -a 显示所有的文件(a即all),即包含隐藏文件,隐藏文件是以“.”开头的文件

ls -l 显示当前目录的详细内容(包括文件大小、创建时间等)

ls -lh 显示详情并把文件大小以人性化的方式显示,如4096变成4.0K(省略了bit比特)

ls -lah 显示所有文件的详情并把文件大小人性化(l a h顺序不定,任意组合)

ll 等价于 ls -l ,那么比如ll-h就相当于ls-lh

扩展

8bd729160e6c4f40898d2721071c53a1.png

bf31ebb3cfd745c4bfad9de2b429b4c8.png

mkdir 创建文件夹

mkdir 文件夹 相对路径,在当前目录下创建文件夹

mkdir /home/admin/文件夹 绝对路径,注意在自己家里才有权限

mkdir /home/admin/a/b -p 如果上级目录不存在,加-p自动创建父目录

mkdir a b 在当前目录创建多个文件夹(Linux不强制要求文件要有扩展名,但是建议有)

mkdir a/{c,d} 在指定目录下创建多个文件夹

mkdir .abc 创建隐藏目录或文件夹(隐藏文件以.开头 )

touch 创建空文件

touch abc.txt 在当前目录下创建 如果指定了目录,必须保证上级目录存在

touch .abc 创建隐藏文件

gedit 创建或打开文件

gedit a.txt 使用记事本打开a.txt,如果没有就创建再打开(因此touch单纯只是创建文件用的少)

rm 删除文件

rm a.txt 删除文件a.txt

rm -rf a 其中-r递归地删除目录\文件夹(递归即包括子目录),-f为不提示确认的情况下强制删除

rm * 删除当前目录下的所有内容 ,不删除隐藏文件(rm .a才能删隐藏文件). 和 .. 是删不掉的

rm *.tmp 删除后缀为.tmp的文件

rm [12].tmp 删除1.tmp与2.tmp

rm [^1-3].tmp 删除除1.tmp,2.tmp和3.tmp外的.tmp文件(也可写成rm [!1-3].tmp

cp 复制

cp 1.txt 2.txt 将1.txt拷贝到2.txt(会覆盖)

cp a b -r 拷贝a到b文件夹

mv 移动(重命名)

同目录下是重命名,不同目录下是移动

mv 1.txt 2.txt 重命名(将1.txt重命名为2.txt)

mv 1.txt a 将1.txt移动到a目录下

mv 1.txt a/2.txt 将1.txt移动到a目录下并重命名为2.txt

mv a b 如果b不存在表示将a重命名为b,如果b存在表示将a放到b目录下

重定向

ls > 1.txt 把命令返回的结果输出到文件中,会覆盖之前的数据,结果显示在屏幕上

ls > >1.txt 把命令返回的结果输出到文件中,追加的方式

cat 1.txt 将文件中的内容返回到屏幕中(可显示多个),就不用像gedit打开一个文件程序查看

cat 1.txt 2.txt >3.txt 把多个文件的内容合并到新文件中

tr a-z A-Z < 1.txt 把1.txt里的小写英文字母全部转换成大写英文字母

sort 排序

下面是sort命令的一些常用选项:

  • -r:倒序排序。
  • -n:按照数字顺序排序。
  • -t:指定字段分隔符。
  • -k:指定排序字段。

sort -t ',' -k 3 -r file.txt 对第三个字段从大到小排序 

sort -k4 -nr 1.txt > result 把1.txt里第四个字段的数字内容按从大到小排序并保存到result文件里

sort file.txt | uniq 删除重复的行

more 查看多内容的文件

more 1.txt cat是显示全部内容(适合小文件),more从头开始一页一页来显示。按空格键向下翻页按b往回翻页,按q退出

tail 显示文件末尾内容

tail -3 显示文件的末尾三行内容(不写-3是默认10行)

“|”管道(把简单的命令组合成复杂的命令)

ls -l / | more 把左边命令的输出作为右边命令的输入进行处理("/"是根目录

who | wc -l who列出当前登录的账号,wc统计一共多少,这样即可知道目前有多少人登录系统

grep xxx /tmp/login.txt | awk '$4~/Wed/ && $7~/^0[89]/{print $1,$4,$5,$6}' | sort | uniq | wc -l

查看自己在星期三的8-9点登录系统的次数(uniq需排序后才能去重)

alias 设置命令的别名

alias 查看当前所有命令的别名

alias rm='rm -i' 将'rm -i'取个别名叫rm(这样直接输rm也能提示是否删除的信息)

unalias rm 取消设置的rm别名

ln 链接

软链接

软链接本事不存储内容,只记录源文件名称(即如果删了该文件再创建一个同名的文件链接还在)

ln -s 1.txt 1_link 给1.txt创建一个软链接叫1_link,相当于Windows中的快捷方式

ln -s /home/adime/1.txt ~/1_link 给其他目录创建一个软链接时源文件要写绝对路径,~是家目录

ln -s a a_link 给目录创建软链接

硬链接

硬链接本身占空间,相当于把源文件复制一份,与源文件同步变化,不能给目录创建硬链接

使用ll查看时,有一个数字在,代表有几个文件能同步发生变化即有几个拷贝

ln 1.txt 1hard_link 给1.txt创建硬链接叫1hard_link(没有-s Symbolic Link软链接标志即硬链接)

tr 转换(单个字符)

tr : , < /etc/passwd 将/etc/passwd中的':'改成','

cat /etc/passwd | tr a-z A-Z 将/etc/passwd中的小写字母改成大写字母

cut分割

cut -d: -f3,1 /etc/passwd 把第3和第1个字段显示出来(-d:表示以':'为分隔符)

grep 查找文件内容

grep hello text.txt 在text.txt中查找包含hello的内容,只要一行中有hello就会显示

grep ^h text.txt 在text.txt中查找h开头的内容,即可用正则表达式

grep -niv hello text.txt 其中n显示查找到的内容的行号i 查找时不区分大小写v反向查找即查找不包含hello的行,可以组合着用,比如-n就单单显示行号

grep -n hello . -r 表示找当前目录下有hello的,“.”表示当前目录,“..”表示上层目录

grep -n hello /home/admin -r 查找该目录所有文件包含hello的内容(-r递归搜索包括子目录

grep '^.\{2\}9' /etc/passwd 其中^表示匹配行首,.\{2\}匹配任意两个字符,然后再匹配数字9

sed 编辑文件

sed -i 3a\abc 1.txt 在文件1.txt的第三行(需要保证文件第三行不为空,这样它会在第四行填写abc,然后原来第四行的内容移到第五行以此类推。其中\转义如果写成/abc就会增加内容/abc,-i会直接修改文件,如果不加则在终端输出假设修改后的结果但并不修改文件)后增加(a代表增加即add)内容abc(新起一行)

sed 's/a/b/g' 1.txt 将1.txt中的a替换(s代表替换)成b(\g表示全局匹配而不仅仅是匹配第一个)

sed '1,3d' 1.txt 删除文件1.txt中的第一到第三行(d代表删除)

sed -i '/aa/d' 1.txt 删除1.txt中含有字符串“aa”的行

sed -n '1,3p' 1.txt 显示1.txt中的一到三行(p是显示常与-n连用)

sed -i '/^$/d' /tmp/student_record 删除/tmp/student_record中的空行

awk 文本处理

其中NF代表的是一个文本文件中一行中的字段个数(),NR代表的是这个文本文件的

awk '{print$1,$3}' 1.txt 打印1.txt中的第一列和第三列(以空格来分隔列,否则当成一列)

awk 'length>3' 1.txt 显示出1.txt中长度大于3的行

awk -F, '{print$1,$3}' 1.txt 打印1.txt中的第一列和第三列,以逗号分隔(-F可以指定分隔符) 

awk -va=2 '{print$1,$1+a}' 1.txt 比如第一列是1,那么打印1 3(-v设置变量 a是变量)

awk -F: '$1~/^s21/ && $3==1001' /etc/passwd | wc -l 第一个字段以s21开头,wc -l为统计数量

awk -F: '$1~/^s[0-9]{6}/{print $1}' /etc/passwd > ids.txt 将以s开头且跟着6个数字的$1存ids.txt

grep、sed和awk的主要区别:grep适用于快速搜索文本文件中的特定字符串sed适用于批量编辑文本文件,而awk适用于处理结构化数据文件中的特定数据。

打印前五行

head -5 /etc/passwd 或 sed '1,5p' -n /etc/passwd 或 awk 'NR<=5' /etc/passwd

打印以s21开头:

grep '^s21' /etc/passwd sed -n '/^s21/p' /etc/passwd  awk '/^s21/' /etc/passwd

打印不包含bash的:

grep -v 'bash' /etc/passwd 或 sed -n '/bash/!p' /etc/passwdawk '!/bash/' /etc/passwd

find 查找文件

find /home -name 1.txt 在home目录下查找文件名为1.txt 的文件

find /home -name '*txt' 在home 目录下查找以txt 结尾的文件

find /home -name '*txt' 2> /dev/null 把找不到的错误信息(错误输出以2为标识符)放在null里(null永远为空,即会自动清空),只输出找到的信息

find /home -name '*txt' 2> /dev/null > result 把找不到的错误信息去掉,找的到的信息放在result

find /home -name '*txt' >& result 把错误信息和正确信息都放在result里

tar 归档 打包

  • "c" 表示创建一个新的归档文件。
  • "v" 表示在归档过程中输出详细信息,以便用户可以查看正在处理的文件。
  • "f" 表示指定归档文件的名称和路径。
  • "x" 表示从归档文件中提取文件。
  • "t" 表示列出文件列表
  • "r" 表示递归压缩指定目录下的所有文件
  • "-d" 表示解压缩(decompress)一个已经被 gzip 压缩的文件
  • "z" 表示对归档文件使用 gzip 压缩。

打包

tar cvf a.tar 1.txt 2.txt f必须放在最后,f后面的第一个参数代表要生成的文件名,后面所有参数是要打包的文件

tar tf a.tar 列出包里面的文件

解包

tar xvf a.tar 如果没写目录,把包里面的文件解开放到当前目录

tar xvf a.tar -C tar 解包到指定文件夹tar,文件夹需要提前创建好

压缩

1.打包

tar cf a.tar 生成a.tar文件

2.压缩

gzip -r a.tar 生成a.tar.ze文件

解压

1.解压

gzip -d a.tar.gz 生成a.tar 文件

2.解包

tar xf a.tar -C ~/atar 解压到指定文件夹

一步到位 打包并且压缩

tar czf b.tar.gz *txt 把所有的txt文件以gzip的格式打包并且压缩成b.tar.gz

一步到位解压并且解包

tar zxf b.tar.gz -C btar 以gzip 的方式解压并解包到btar

bzip2

压缩

tar jcf j.tar.bz2 *txt

解压

tar xjf j.tar.bz2 -C jtatr

zip

zip -r zz *txt 生成的压缩文件为zz,不需要写扩展名,它会自动生成zip扩展名

unzip -d z zz.zip 将zz.zip解压到z,解压时会自动创建目录

压缩率

zip<gzip<bzip2

通用性

zip>gzip>bzip2

vim 

vi有三种基本工作模式

  • 命令模式
  • 文本输入模式
  • 末行模式

按:w保存,:q退出,:q!不保存强制退出,:wq保存并退出 或直接 按shift+z+z保存退出

进入插入模式

i:插入光标前一个字符

I:插入行首

a:插入光标后一个字符

A:插入行末

o:向下新开一行,插入行首

O:向上新开一行,插入行首

进入命令模式

ESC:从插入模式或末行模式进入命令模式

h:左移

j:下移

k:上移

l:右移

M:光标移动到中间行

L:光标移动到屏幕最后一行

G:移动到指定行,行号-G

w:向后一次移动一个字

b:向前一次移动一个字

{:按段移动,上移

}:按段移,下移

Ctr -d:向下翻半屏

Ctr-u:向上翻半屏

Ctr-f:向下翻一屏

Ctr-b:向上翻一屏

gg:光标移动到文件开头

G:光标移动到文件末尾

删除命令:

x:删除光标后一个字符

X:删除光标前一个字符

dd:删除光标所在行,n dd 删除指定的行数

dD:删除光标前本行所有内容,不包含光标所在字符

dw:删除光标开始位置的字,包括光标所在的字符

撤销指令

u:一步一步撤销

Ctr-r:反撤销

重复命令

.:重复上一次操作的命令

文本行移动:

>>:文本行右移

<<:文本行左移

复制粘贴

yy:复制当前行,n yy 复制 n 行

p:在光标所在位置向下新开辟一行,粘贴

可视模式

v:按字符移动,选中文本

V:按行移动,选中文本可视模式可以配合d,y,>>,<<实现对文本的删除,复制,左右移动

替换操作

r:替换当前字符

R:替换当前行光标后的字符,直到按ESC

查找命令

/:str查找

n:下一个

N:上一个

nano 文本编辑

nano 1.txt 编辑1.txt文件,Ctrl+X退出编辑(退出时会提示Y/N保存或不保存)

ps 查看某一时刻的进程信息 

ps -l 查看某时刻进程的详情信息

nice 修改进程优先级

nice -n 10 ps -l 优先级的值增加10,优先级的值越小优先级越高(超级用户才能设置负数如-10)

top 查看实时的进程信息

jobs 查看进程的状态

前后台进程切换

fg 默认将最后一个进入后台的进程放到前台运行

bg 默认将最后一个进入前台的进程放到后台运行

fg %2 将2的进程放到前台运行(%符号用于指示进程标识符,其后跟着进程的标识符)

bg %2 将2的进程放到后台运行

kill 常用来终止进程

kill -l 列出系统共有64个信号量

kill 3897973 终止id为3897973的进程(默认发送15这个信号量,一般可以杀死进程)

kill -9 3897973 一定会终止3897973的进程(9这个信号量是确保杀死进程)

nohup 设置进程不挂起

nohup 任务 将任务设置不挂起而在后台运行,因为默认父进程退出会给子进程一个挂起的信号量

at 设置一次性定时任务

at 23:59 5/29/2023 开始设置23:59 5/29/2023的定时任务,按Ctrl+d退出

at -l 查看设置的全部一次性定时任务

at -c 2 查看2这个定时任务的详情

at -d 2 删除2这个定时任务

crontab 设置周期性定时任务

crontab -e 进入定时任务编辑模式(删除任务则直接删掉或者注释#),按格式:分钟 小时 几号 几月 星期几 任务(每号/月等用*表示) 编辑任务。

如在每周五晚上23:00执行文件binbackup:0 23 * * 5 /bin/backup

crontab -l 查看周期性定时任务

ip 

ip link 列出连接层(都有哪些网络接口)

ip a 列出系统的全部ip地址

ip a | grep '10.188.2.251' 查看10.188.2.251对应的是哪个接口(网卡)

ip addr show dev ens160 查看ens160这个网卡的详情信息,其中10.188.2.251/24中的24是子网掩码,共32位,24表示前24位都是1,即255.255.255.0。

ip n 列出ARP(地址解析协议)表,即网络地址与物理地址的对应关系

sudo ip link set dev docker0 up/down 打开/关闭docker0接口(超级用户才有此权限)

Dynamic(dhcp)动态分配ip地址

dhclient ens160 给ens160接口动态分配ip地址

Static静态分配ip地址

ip addr add/del 10.188.2.252/24 dev ens160 给ens160增加/删除10.188.2.252/24这个ip地址(一个网卡可以有多个ip地址)

路由

ip route [show] 查看路由信息,show可写可不写

ip route add/del default via 10.188.2.254 设置/删除10.188.2.254这个默认网关

ping -c 2 www.baidu.com 向www.baidu.com发两个数据包(不加-c 2默认就一直发)

traceroute/tracepath -n www.baidu.com 显示出访问www.baidu.com的过程(-n显示简洁信息)

插口

ss -tnlp 显示网络的插口信息

sudo ss -4 -tnlp | grep -w 80 查看有没有进程在监听80端口(-4表示ipv4)

测试服务器是否访问正常

curl 10.188.2.251 如果返回html文档说明可以访问该网站

DNS

host www.baidu.com 查看www.baidu.com的ip地址

nslookup www.baidu.com 查看www.baidu.com的ip地址

dig www.baidu.com 查看www.baidu.com的域名信息(包含ip地址)

远程登录服务器

ssh 10.188.2.251 远程登录服务器

查看磁盘情况

df /etc 查看etc的磁盘使用情况

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

北边一颗小星星

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

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

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

打赏作者

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

抵扣说明:

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

余额充值