我使用过的Linux命令之stty - 显示和修改终端行设置

我使用过的Linux命令之stty - 显示和修改终端行设置

本文链接:http://codingstandards.iteye.com/blog/826924   (转载请注明出处)

用途说明

stty命令用于显示和修改终端行设置(change and print terminal line settings)。

常用参数

stty命令不带参数可以打印终端行设置,加上-a参数可以打印得更详细些。

stty size可以显示终端的大小,即行数和列数。

stty命令还可以更改终端行的设置,格式如下:

stty SETTING CHAR

其中,SETTING可以是如下

    eof : 输入结束,文件结束,默认为Ctrl+D。比如:用cat >file来创建文件时,按Ctrl+D来结束输入。
    erase : 向后删除字符,擦除最后一个输入字符,默认为Ctrl+?。注意默认情况下退格键Backspace不是删除字符。
    intr : 中断当前程序,默认为Ctrl+C。
    kill : 删除整条命令,删除整行,默认为Ctrl+U。
    quit :退出当前程序,默认为Ctrl+\或Ctrl+|。
    start : 启动屏幕输出,默认为Ctrl+Q。
    stop :停止屏幕输出,默认为Ctrl+S。有时候终端突然僵死了,可能是不小心按了Ctrl+S的缘故,因为我们习惯性的按Ctrl+S来保存文件。
    susp : terminal stop当前程序,默认为Ctrl+Z。这样当前进程就会变成后台进程了。

   werase:删除最后一个单词,默认为Ctrl+W。

stty命令还有一些其他用法,如:

    stty -echo 关闭回显。比如在脚本中用于输入密码时。

    stty echo 打开回显。

输入密码的脚本片段:stty -echo; read var; stty echo; 或 read -s var

使用示例

示例一 打印终端行设置

[root@web ~]# stty
speed 38400 baud; line = 0;
-brkint -imaxbel
[root@web ~]# stty -a
speed 38400 baud; rows 41; columns 132; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

[root@web ~]#

 

示例二 打印当前终端的大小(行数和列数)

[root@web ~]# stty size
41 132

 

示例三 设置退格键Backspace的删除行为

在默认情况下,我们按退格键Backspace时,会在屏幕上回显^H,而不是把前一个字符删除。比如使用sftp/ftp/sqlplus/ij等命令时,就会碰到这种情况。我们可以使用stty命令把Backspace的行为变成删除前一个字符。

[root@web ~]# sftp 192.168.6.12
Connecting to 192.168.6.12...
root@192.168.6.12's password:
sftp> get abc^H^H^H^H
Couldn't stat remote file: No such file or directory
File "/root" not found.
sftp> quit
[root@web ~]#
[root@web ~]# stty erase ^H
[root@web ~]# sftp 192.168.6.12
Connecting to 192.168.6.12...
root@192.168.6.12's password:
sftp> get abc
Couldn't stat remote file: No such file or directory
File "/root/abc" not found.
sftp> quit
[root@web ~]#

 

示例四 在vi编辑文件时按Ctrl+Q来结束终端僵死的局面

[root@web ~]# vi 1.txt
1
2
3
Ctrl+S
~

注:按了Ctrl+S之后,就会禁止屏幕输出,从而出现终端僵死的情况。

这个时候,只要按Ctrl+Q就会结束这种局面,因为它会允许屏幕输出。

Ctrl+Q

 

示例五 在bash脚本中与tty命令配合使用

在下面的脚本中,先取得终端文件名称,以判断脚本是否运行在交互式方式还是在管道方式。

 

#!/bin/sh

CONSOLE_INPUT=$(tty)

echo "CONSOLE_INPUT=$CONSOLE_INPUT"

COMMAND_LINE="java -Xmx640m -classpath .:lib/hyjc.jar:lib/log4j-1.2.15.jar:lib/commons-logging-1.1.1.jar:lib/proxool-0.9.0RC3.jar:lib/mysql-connector-java-5.1.10-bin.jar:lib/poi-3.5-ZHY-20091107.jar:lib/jdom-1.1.jar hyjc.sql.DBCLI MhrDB.properties MhrDB"

if [ "$CONSOLE_INPUT" == "not a tty" ]; then
        $COMMAND_LINE
elif [ "$(whereis rlwrap)" == "rlwrap:" ]; then
        stty erase ^H
        $COMMAND_LINE
else
        rlwrap -f jdb.rlwrap $COMMAND_LINE
fi
 

 

问题思考

相关资料

【1】江枫渔火愁对面 使用stty修改终端设置

【2】飞诺网 stty使用

【3】Linux宝库 STTY使用方法

【4】英文资料 Linux解密 The TTY demystified

 

返回 我使用过的Linux命令系列总目录

 

Linux通过stty命令操作串口设备(linux串口操作命令) 阅读详情

相关推荐

电力现货交易市场-报价方式

电是一种能源,也是一种商品,既然是商品自然可以在市场中进行自由交易。

qq_38225433的博客 5117

linux终端显示数字,Linux使用stty显示修改终端行设置

stty是linux下改变和打印终端设置的常用命令。一、参数:1.打印终端行设置-a,--all 以人可读的方式打印所有当前设置;-a参数比单独的stty命令输出的终端信息更详细-g,--save 以stty可读的方式打印当前所有设置-F,--file=DEVICE 打开并使用特定的设备((DEVICE)以代替标准输入(stdin)--help 显示帮助并退出--version 显示版本并退出二:...

weixin_42322686的博客 1031

SAP数据导入避坑指南:财务期初上线实操全流程(含常见错误排查)

本文详细解析了SAP财务期初数据导入的全流程,包括数据准备、主数据标准化、余额与未清项导入等关键步骤,并提供了常见错误排查和解决方案。特别强调了过渡科目和存货价值的处理技巧,帮助企业在SAP系统上线时避免数据导入陷阱,确保财务数据的准确性和系统平稳运行。

weixin_30832143的博客 396

stty(1) command

stty 改变或打印终端行设置。

Doublelv 的博客专栏。 4129

ANSYS APDL 异类单元连接实战:MPC方法在壳-实体装配中的应用

本文详细介绍了在ANSYS APDL中使用MPC方法实现壳单元与实体单元高效连接的技术要点。通过分析工程仿真中的常见需求,阐述了MPC方法在解决异类单元连接问题上的优势,包括网格独立性、自由度耦合和载荷传递等特性,并提供了具体的APDL命令流操作示例和实用经验技巧。

weixin_33391446的博客 178

【科研】Michaelis–Menten 曲线(米氏曲线)中反应速率的计算

Michaelis–Menten 曲线 米氏曲线 纵坐标 反应速率求值 朗伯比尔定律

weixin_42809675的博客 2万+

stty 命令说明及使用讲解

stty 命令说明及使用讲解 UNIX系统的命令很多,但是巧妙使用命令的方法更多。随着经验的积累和观察学习其他用户的实践,我们也可学会解决特殊问题的方法。这里谈谈自己使用UNIX系统中stty命令的一些体会,希望能与你共享。 1.stty(set tty,设置tty)命令用于检查和修改当前注册的终端的通信参数。UNIX系统为键盘的输入和终端的输出提供了重要的控制手段,可以通过stty命令对特定

Helios的专栏 2740

AVDepthData、LiDAR 深度数据与人像模式全解析:iOS 真实景深图采集与处理实战

在 iOS 高端影像系统中,真实景深信息的采集与利用已成为区分旗舰设备与基础设备的重要能力。Apple 自 iPhone 7 Plus 引入双摄虚化以来,逐步发展出基于 AVDepthData、TrueDepth 与 LiDAR 的多维深度感知技术,并开放接口供开发者获取高精度深度图,构建背景虚化、人像分割、3D 重建等多种功能。本文将深入解析 AVDepthData 的结构与使用方式,系统讲解 LiDAR 采集架构、人像模式的景深融合逻辑,以及如何在实际项目中采集、预览并处理深度图数据,实现具备工程可用性

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1863

stty 命令

stty 命令 用途 设置、复位和报告工作站操作参数。 语法 stty [ -a] [ -g] [ Options] 描述 stty命令对当前为标准输入的设备设置某些 I/O 选项。该命令将输出写到当前为标准输出的设备中。 这个操作系统的版本使用标准《X/Open 可移植性指南,发行版 4》 接口来控制终端,保持与 POSIX 和 BSD 接口的兼容性。stty 命令支持

雜貨鋪 1416

2023年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题4)-网络部分解析-附详细代码

2023年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题4)-网络部分解析-附详细代码

bfq05234214的博客 441

STM32芯片解锁读写保护:更改Option Byte [Error已解决]

解锁读保护:STLink更改Option Byte 变Level从1变为0,点击Apply即可。(程序执行读保护,其实是将Level从0变为1) 默认情况下该保护功能是不开启的,若要开启该功能,需要改写内部FLASH选项字节(Option Bytes)中的配置。 RDP读保护级别 级别0,无保护, 级别1,使能读保护, 这种保护下,若使用调试功能(使用下载器、仿真器)或者从内部SRAM自举时都不能对内部FLASH及备份SRAM作任何访问(读写、擦除都被禁止); 当芯片处于级别1的时候,可以把选项字节

HowieXue 薛永浩的博客 2万+

stty 命令介绍和使用案例

命令通过与终端驱动程序交互,修改和查询终端的各种设置. 终端驱动程序是内核的一部分,负责处理进程和终端之间的数据传输和数据处理.命令用于显示和修改终端行设置,允许用户配置终端的各种选项,如波特率、字符大小和特殊字符功能。这将终端设置为原始模式,输入的字符会直接传递给程序,而不进行任何处理.. 它是优化终端交互、调试终端行为的重要工具.此命令会将输入和输出的波特率都设置为9600.这将终端设置为正常模式,输入会被行缓冲处理.此命令会列出当前终端的所有配置.执行后显示当前终端的波特率.恢复输入字符的显示.

1919

前言:为什么要学习爬虫和逆向,该如何学习?

学习爬虫和逆向技术是当今数字化时代的重要技能,尤其在数据分析、安全研究、自动化工具开发等领域有广泛应用。以下是详细的学习理由、路径和方法:

数据知道的博客 1万+

Linux shell编程学习笔记26:stty(set tty)

之前我们探讨了Linux中的tty,tty命令的主要功能是显示当前使用的终端名称。如果我们想进一步对tty进行设置,就要用到stty。stty的功能:显示和修改终端特性(Print or change terminal characteristics)。

Purpleendurer@优快云 1969

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Linux命令之stty - 显示和修改终端行设置

stty是linux下改变和打印终端设置的常用命令。 一、参数: 1.打印终端行设置 -a,--all   以人可读的方式打印所有当前设置;-a参数比单独的stty命令输出的终端信息更详细 -g,--save        以stty可读的方式打印当前所有设置 -F,--file=DEVICE    打开并使用特定的设备((DEVICE)以代替标准输入(stdin)

believe的专栏 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Linux命令之stty - 显示和修改终端行设置(转载)

用途说明 stty命令用于显示和修改终端行设置(change and print terminal line settings)。 常用参数 stty命令不带参数可以打印终端行设置,加上-a参数可以打印得更详细些。 stty size可以显示终端的大小,即行数和列数。 stty命令还可以更改终端行的设置,格式如下: stty SETTING CHAR 其中,S

爱拼才会赢 1713

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

使用stty修改终端设置 stty 用法!

在linux/unix平台上的 sqlplus中,如果输错了字符,要想删除,习惯性的按下backspace键后,发现非但没有删除想要删掉的字符,还多出了两个字符^H。当然,我们 可以同时按下ctrl+backspace键来删除,但对于习惯了用backspace来删除的用户,这样很不爽。这可以通过修改tty终端的设置来实现 backspace删除功能。通过使用stty命令,就可以查看或者修改终端的按...

boyemachao的专栏 2521

stty 命令中文使用详解

开源是一种精神,分享是一种美德! stty 相关命令:暂无相关命令 用法:stty [-F 设备 | --file=设备] [设置]...  或:stty [-F 设备 | --file=设备] [-a|--all]  或:stty [-F 设备 | --file=设备] [-g|--save] 输出或修改终端参数。   -a, --all             以可

lqxandroid2012的专栏 2万+

Linux命令-stty(显示/修改终端行设置)

(Set Teletype)用于显示和修改终端设备的行规程设置。它控制着终端输入输出的各种行为——比如密码输入时是否回显、Ctrl+C 是否中断进程、退格键的行为等。操作的是当前终端的行规程层,介于物理终端和 Shell 之间。它对用户透明的特性使其成为 Shell 脚本安全输入和终端控制的基石。是那种"你不知道它存在,但它一直在工作"的命令。每次登录终端、输入密码、按下 Ctrl+C 终止程序时,都是。是使用最频繁却没有图形界面的命令之一:每次你输入密码时,背后都是。,就是理解终端工作的底层原理。

RisunJan的博客 284

Linux命令:stty

转自:http://codingstandards.iteye.com/blog/826924  用途说明 stty命令用于显示和修改终端行设置(change and print terminal line settings)。 常用参数 stty命令不带参数可以打印终端行设置,加上-a参数可以打印得更详细些。 stty size可以显示终端的大小,即行数和列数。 stty命令

优快云 1964

linux串口多次打开_一文总结Linux命令之stty--显示和修改终端行设置

概述今天主要分享一个Linux命令--stty,这个是linux下改变和打印终端设置的常用命令。下面一起来看看吧!一、语法stty(选项)(参数)打印终端行设置参数说明-a,--all 以人可读的方式打印所有当前设置;-a参数比单独的stty命令输出的终端信息更详细-g,--save 以stty可读的方式打印当前所有设置-F,--file=DEVICE 打开并使用特定的设备((DEVICE)以代替...

weixin_39804620的博客 786

Linux中stty命令

终端设备的重要性与如何修改终端驱动程序的设置

suliangkuanjiayou的博客 1万+
上一篇: 我使用过的Linux命令之tty - 打印标准输入的文件名称
下一篇: 我使用过的Linux命令之yes - 重复输出字符串
codingstandards
博客等级 码龄16年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值