[精彩] [转载] linux技巧33条(转载) (转寄)

本文提供了33条实用的Linux技巧,包括系统监控、文件管理、网络查询等,帮助用户更高效地使用Linux系统。
部署运行你感兴趣的模型镜像
 原贴:http://www.chinaunix.net/jh/4/364778.html

[精彩] [转载] linux技巧33条(转载) (转寄)


http://www.chinaunix.net 作者:天外闲云  发表于:2004-07-27 13:49:21
发表评论】【查看原文】【Linux讨论区】【关闭

主题:           [转载] linux技巧33条(转载)        (转寄)
发信人:        tian.bbs@bbs.tju.edu.cn.no.spam ( 专 )
新闻组:        cn.bbs.comp.linux
日期:           05 Jul 2004 11:37:30 GMT

[1;37m【 以下文字转载自 [32mtian [37m的信箱 】
【 原文由[32m tyxin@smth.edu.cn[37m 所发表 】[m
发信人: angshan (流星雨), 信区: SS_SAST       
标  题: linux技巧33条(转载)
发信站: BBS 水木清华站 (Fri May 17 12:28:14 2002)


1:HOST的乐趣: Host能够用来查询域名,然而它可以得到更多的信息。host -t mx l
inux.com可以查询出Linux.com的MX记录,以及处理Mail的Host的名字。Host -l linux
.com会返回所有注册在linux.com下的域名。host -a linux.com则会显示这个主机的所
有域名信息。
2:找到命令需要的文件,也许你希望搞清楚一个命令它到底使用到了什么其他相关文件
和命令?试试ldd就可以了。如ldd traceroute,返回结果会是libc.so.6,lid-linux.s
o.2
3:定时!定时!你希望定时处理吗?你肯定希望能够让你轻松一些!crontab可以听候
您的指示。命令行中输入:crontab -e这进入文本编辑器,再在其中输入0 5 * * * wg
et -t3 -I/home/tom/URLs -N。这样每天早上5点就会运行这个wget命令。前五个是时间
参数:分 时 日 月 星期几。你可以 0 5 * * 6,0 command line here,这样就在每个
星期六和星期天5am运行。你需要man 5 crontab来得到更为详细的解释。随便说一下,
wget是一个取web页面的小程序。 console顶部显示现在时间:在/etc/bashrc或~/.bas
hrc中加入环境变量PROMPT_COMMAND。export PROMPT_COMMAND=echo -ne "33733[2;999
r33[1;1H33[00;44m33[K"`date`"33[00m338"
4:使用多达23个的虚拟终端(VT),假设你现在有6个,仿照/etc/inittab种的文件,
加入
8:234:respawn:/sbin/getty 38400 tty8
24:234:respawn:/sbin/getty 38400 tty24
要跳过VT7,因为X使用这个终端。然后telinit q以重新加载配置文件。使用左Alt+Fn在
1-6和8-12件切换,使用右Alt+Fn键在13-24之间切换。
5:Console切换:左Alt-方向键,循环切换console。效果和Alt+Fn一样。
6:简单的进行Dos转Unix:如果你的文本文件中每行结尾都有讨厌的Ctrl-M的话,使用
这句命令能够快速的解决问题 sed s/^M// filename >; newfilename
7:快速建立MP3播放列表:find /mnt/cdrom -name *.mp3 -print >;>; cd1.play.list.
这样就会把CDRom中的所有MP3文件建立一个名为cd1.play.list的文件。然后使用xmms
或 x11amp就能进行播放了。
8:/proc中的重要信息
cat /proc/cpuinfo - CPU (i.e. vendor, Mhz, flags like mmx)
cat /proc/interrupts - 中断
cat /proc/ioports - 设备IO端口
cat /proc/meminfo - 内存信息(i.e. mem used, free, swap size)
cat /proc/partitions - 所有设备的所有分区
cat /proc/pci - PCI设备的信息
cat /proc/swaps - 所有Swap分区的信息
cat /proc/version - Linux的版本号
9:真正的Console界面:说实话无论是KDE和GNome我都没什么喜欢的,毕竟受Windows熏
陶了这么长时间了。但是在Console下其实才是真正的Cool界面。使用SVGATextMode可以
让你的命令行界面达到132x60(标准是80x25)。我的486(Trident9440)上使用的是132
x43,那密密麻麻的字符真象Hollywood的几年前的电影(现在连电影里都是Windows了)
给人感觉神秘兮兮的。配置文件在/etc/TextConfig中,不过如果你的XWindow都无法正
常显示的话,那估计这也用不了了(毕竟是好几年前的东西了)。
10:让你的硬盘飞起来: Linux下也可以使用32Bit I/O和DMA。使用/sbin/hdparm -c1
/dev/hda(hdb,hdc..)打开32Bit传输模式,使用命令 /sbin/hdparm -d1 /dev/hda(hdb
,hdc...) 打开DMA。最后使用/sbin/hdparm -k1 /dev/hda 以使硬盘在Reset之后保持上
面的设定,这么一来,硬盘读写速度应该可以提高一倍以上。
11:微调你的Ext2: Linux下的命令tune2fs可以设定最大Mount次数(因为Linux即时在m
ounted clean状况下,达到一定的mount次数后,会强制e2fsck对于我这样的每天开关机
的来说很不方便),tune2fs命令的其他用途请参见man。
12:禁止在Netscape中显示闪烁(Blink)Tag: ~/.Xdefaults中修改 Netscape*blinki
ngEnabled: False 之后运行 xrdb -Load ~/.Xdefaults
13:随时改变XTerm的字体大小:shift加+/-
14:Ext2的文件属性: lsattr列出属性,chattr可以改变属性。如 chattr +A filenam
e 则系统不会修改其last access time属性;chattr +i 则可以避免被rm掉。
15:SIS6326显卡的配置:在Device中加入:DacSpeed 110 Option "no_bitblt" Optio
n "sw_cursor"
16:使用strings可以把字符串从Binary文件中分离出来
17:你大概已经习惯了使用Top来观察系统使用情况,那就使一使使用Vmstat 1来看看c
pu的空闲程度(显示结果的最后一项)。
18:使用Watch命令,反复执行特定命令,如"watch ls -l /tmp/blah",将一直观察文
件的大小改变。
19:使用pppstats得到ppp连接的数据。
20:显示远程机器的NFS: showmount -e hostname
21:使用autofs免去你每次mount和umount之苦,再RedHat6.0中带了autofs的rpm,只要安
装好之后便可以享受自动加载文件系统的方便。 在/misc目录下,创建一个cd目录,如
果使用其自带的auto.misc和auto.master的话,马上就可以实现自动加载功能了。
22:在Bash Shell中,可以用!重复上几次输入过的命令,这样就可以省去往上滚动的
麻烦了。使用ctl+R可以互动的检索以前使用过的命令行。
23:使用cd -在上两个cd /directory/操作中切换。如先是cd /home/foo接着是 cd /h
ome/maison则接着打cd - 会进入 /home/foo再打cd - 会进入 /home/maison。
24:Bash中的快捷键:ESCAPE-B 会向前条一个单词,Ctrl-K会删除从光标到行末所有字
符。
25:在PS命令中使用grep,例:ps auxw | grep gpm 会列出所有含有gpm字符的进程。

26:在同一个命令行上同时执行多条命令:用分号分隔。如编译一个源文件:type ./c
onfigure ; make ; make install 。之后你就可以去散步了(不要在电脑前花费了太多
时间了,生活中还有很多美好的东西。)
27:把运行结果输出到一个文件中,如 ls -l >; foo.file。
28:使用Top命令监视系统状况,内存使用情况,开机时间,进程状况,每个用户的使用
情况等等。使用S命令可以改变其刷新的时间:如.5将会使其每半秒钟更新一次。
29:同时Unzip多个文件,unzip *不正确,而是unzip "*"。
30:建立符号连结,这大概是最有用的功能了,ln -s real-file symbolic-file,无论
是设备,文档还是脚本程序。
31:改变显示的单位,如du -hm 将以M为单位输出结果,同样的du -hk则以K为单位输出

32:自动Logoff,在~/.bashrc中加入这么一句话:TMOUT=300则会在5分钟之后logoff,不
过如果less这类程序运行则不会启动。
33:在使用less 或 more时,直接启动编辑器:在less中打入v键,会立即启动vi或其他
你在环境变量中指明的编辑器,但是more只能使用vi。
来源:非常Linux

--

[m[34m※ 来源:・BBS 水木清华站 bbs.edu.cn・[FROM: 166.111.153.196][m
--
[m[1;34m※ 转载:.天大求实BBS bbs.tju.edu.cn.[FROM: 202.113.13.188][m



 leirenyuan 回复于:2004-07-11 21:51:34

好文


 零二年的夏天 回复于:2004-07-11 22:17:16

引用:26:在同一个命令行上同时执行多条命令:用分号分隔。如编译一个源文件:type ./c 
onfigure ; make ; make install 。之后你就可以去散步了(不要在电脑前花费了太多 
时间了,生活中还有很多美好的东西。)



感觉这个例子举的不好。无论使用 ;还是 && ,如果出错都会停止的。


 天外闲云 回复于:2004-07-11 22:24:28

加精了?但是为什么我的精华帖还是1呢?

夏天说的那个问题,的确不是很好,但是入门用的也不用管得太多了。


 零二年的夏天 回复于:2004-07-11 22:28:33

精彩是不算到精华里的。:D


 天外闲云 回复于:2004-07-11 22:33:15

原来是精彩啊,除了保留,精华,原创精华还有精彩来着?下个学期学校可能要建一个linux实验室,我得花时间写个dd和netcat的东东,备用,省得下学期被征召去,手忙脚乱。弄出来了在贴出来吧,我觉得肯定加精的说。


 零二年的夏天 回复于:2004-07-11 22:35:46

欢迎啊!:D


 天外闲云 回复于:2004-07-11 22:37:40

再说啦,最近大病一场,发烧38度+急性肠胃炎,当时差点打120急救,呵呵。

下了,休息去。


 aspbiz 回复于:2004-07-12 00:05:55

同志们,注意身体呀。


 fewgur 回复于:2004-07-12 00:24:41

终于成为cu里的成员了,我都哭了,感动的。

先不说太多了,本人正在编写linux启动与引导实验手册,各位高手有好的建议,小弟洗耳恭听。


 hcjia 回复于:2004-07-12 13:15:21

文章不错呀!


 blueidea 回复于:2004-07-12 15:37:29

linux启动与引导实验手册:
  这个还要写,Linux自带有吧?


 baolongzhou 回复于:2004-07-12 18:07:14

我觉的你们厉害呀


 Linux@初学者 回复于:2004-07-12 19:22:50

[root@server1 root]# host -l sohu.com
;; connection timed out; no servers could be reached

WHY???????????


 Linux@初学者 回复于:2004-07-12 22:13:09

顶!,没人知道啊?


 天外闲云 回复于:2004-07-12 23:12:36

可以查自己局域网的东东,但是国际网查不了,不知道是不是做了什么特别设置。


 sean810 回复于:2004-07-13 11:08:00

well done!


 第二场雪 回复于:2004-07-13 13:31:38

引用:原帖由 "Linux@初学者"]ver1 root 发表:
# host -l sohu.com
;; connection timed out; no servers could be reached

WHY???????????


www.sohu.com,这样才叫inter上的主机啊,ping 163.com也是不通的~~~
dns都找不到


 zxc1998 回复于:2004-07-13 15:21:20

谢谢楼主


 eagerlinuxer 回复于:2004-07-13 16:11:46

引用:原帖由 "天外闲云"]可以查自己局域网的东东,但是国际网查不了,不知道是不是做了什么特别设置。
 发表:



这个应该是对方的DNS主机上做了IP限制,只有指定的IP才能做zone传输。
在named.conf文件中可以用allow-transfer=xxx.xxx.xxx.xxx来限制。

 allow-transfer
         Specifies which hosts are allowed to receive zone transfers from the
         server.  allow-transfer may also be specified in the zone statement,
         in which case it overrides the options allow-transfer statement.  If
         not specified, the default is to allow transfers from all hosts.

[root@wy1 sbin]# host -l sina.com.cn
Host sina.com.cn not found: 9(NOTAUTH)
; Transfer failed.
应该是对方的DNS做了这个限制的原因。


 jincy 回复于:2004-07-14 13:23:12

使用cd -在上两个cd /directory/操作中切换。如先是cd /home/foo接着是 cd /home/maison则接着打cd - 会进入 /home/foo再打cd - 会进入 /home/maison。 
这条我喜欢! :em02:


 dlj2002 回复于:2004-07-27 13:49:21

"6:简单的进行Dos转Unix:如果你的文本文件中每行结尾都有讨厌的Ctrl-M的话,使用这句命令能够快速的解决问题 sed s/^M// filename >; newfilename"
   我试过,不行啊!




原文链接:http://linux.chinaunix.net/bbs/viewthread.php?tid=364778
转载请注明作者名及原文出处

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think>好的,用户现在有一个需求,需要将快递查询返回的数据插入到Qt的表格中。首先,我需要理解用户提供的这些字段的结构和数据类型。例如,EBusinessID是10位字符串,ShipperCode也是10位字符串,LogisticCode是30位字符串,Success是布尔值但后面括号里写的是10,可能需要确认是否是笔误,可能是Bool类型,长度可能不适用,但用户可能希望以某种方式显示。 接下来,用户提到了State和StateEx,其中State是普通物流状态,有0到6的状态码,而StateEx则是一个链接指向更详细的状态说明。需要确定如何处理这个链接,可能是在表格中显示链接,或者根据链接内容解析出具体状态。不过用户可能只是需要存储这个链接,或者展示对应的状态信息。 然后,Traces是一个包含多个字段的结构,比如AcceptTime、AcceptStation、Location、Action、Remark等,这些可能对应物流轨迹的多个目,每个轨迹点都有时间和描述。这意味着在Qt表格中可能需要一个子表格或者展开的方式来展示多个轨迹记录,因为每个快递单号可能有多个轨迹点。 用户还提到OrderCode、Callback、Station及其相关信息,这些字段相对简单,都是字符串类型,直接对应表格的列即可。DeliveryMan和DeliveryManTel是派件员的信息,同样直接展示。 接下来需要考虑的是Qt中如何实现这样的表格。QTableWidget或QTableView结合自定义模型可能是合适的选择。对于Traces这种嵌套结构,可能需要使用树形表格,或者每个主行下面展开显示子行。但用户可能希望在一个主行中显示所有Traces的信息,可能需要将Traces作为多行处理,或者合并成一个字段显示,比如用换行符分隔。 另外,数据类型转换需要注意,比如Success是Bool类型,但在Qt中表格项通常以文本显示,可能需要将布尔值转换为“是/否”或“true/false”。State的数字需要映射为对应的状态描述,如“0-暂无轨迹信息”等,这可以通过在表格中使用委托(Delegate)来实现,或者在插入数据时直接转换。 用户提到的链接StateEx可能需要处理为可点击的超链接,这可以通过自定义委托实现,使得该单元格可以点击并打开浏览器访问链接。同时,时间格式如AcceptTime需要正确解析和显示,可能需要将字符串转换为QDateTime,并格式化显示。 在代码实现部分,需要指导用户创建表格,设置列标题,然后逐行插入数据。对于Traces,可能需要遍历每个轨迹点,并插入到表格的相应位置。如果Traces是多个目,可能需要动态添加行,或者在主行的后面列中显示多个轨迹信息,但这样可能导致列数过多,不太现实。因此,更合理的方式可能是使用主从表结构,或者在一个列中使用多行文本。 另外,用户可能需要将数据从某种结构(如JSON)解析并填充到表格中,因此需要示例代码展示如何将数据插入到QTableWidget中。需要确保代码中包含必要的步骤,比如创建表格、设置列数、设置水平头标签、插入行数据,并处理可能的数据类型转换。 最后,需要注意Qt的模型/视图框架,如果数据量较大,使用QTableView和自定义模型会更高效,但对于简单应用,QTableWidget可能更直接。用户可能需要根据数据量选择合适的方法。同时,对于可扩展性,比如动态添加数据或更新数据,需要确保代码结构清晰,易于维护。 总结来说,用户的需求是将特定的快递数据插入到Qt表格中,涉及多个字段和嵌套结构,需要处理数据类型转换、状态映射、超链接显示以及时间格式化等问题。需要提供清晰的代码示例和步骤说明,确保用户能够理解和实现。</think>以下是使用Qt(C++)将快递物流数据插入表格的详细实现步骤和示例代码: --- ### 一、数据结构分析 根据字段定义,需处理两类数据: 1. **主表数据**:快递单基础信息(单行数据) 2. **子表数据**:物流轨迹信息(多行嵌套) --- ### 二、Qt表格方案选择 | 方案 | 适用场景 | 实现复杂度 | |------------------|-----------------------------------|------------| | `QTableWidget` | 简单数据展示,直接操作单元格 | ★★☆☆☆ | | `QTableView`+模型 | 动态数据、大数据量、自定义渲染逻辑 | ★★★★☆ | 推荐使用`QTableWidget`快速实现基础功能 --- ### 三、核心代码实现 #### 步骤1:创建表格并设置列标题 ```cpp // 创建表格控件 QTableWidget *table = new QTableWidget(this); table->setColumnCount(18); // 总列数 // 设置水平表头(示例部分字段) QStringList headers = { "用户ID", "快递公司", "快递单号", "成功状态", "失败原因", "物流状态", "扩展状态", "当前城市", "轨迹时间", "轨迹描述", "历史城市", "动作类型", "备注", "订单号", "回调字段", "网点名称", "网点电话", "派件员" }; table->setHorizontalHeaderLabels(headers); ``` #### 步骤2:插入单主数据 ```cpp // 添加新行 int row = table->rowCount(); table->insertRow(row); // 填充数据(示例) table->setItem(row, 0, new QTableWidgetItem("EB123456")); // EBusinessID table->setItem(row, 1, new QTableWidgetItem("SF")); // ShipperCode table->setItem(row, 2, new QTableWidgetItem("SF123456789")); // LogisticCode // 布尔值特殊处理 QTableWidgetItem *successItem = new QTableWidgetItem(); successItem->setCheckState(data.Success ? Qt::Checked : Qt::Unchecked); table->setItem(row, 3, successItem); // 状态码映射(使用委托更佳) QString stateDesc = getStateDescription(data.State); // 自定义转换函数 table->setItem(row, 5, new QTableWidgetItem(stateDesc)); ``` #### 步骤3:处理嵌套轨迹数据 ```cpp // 为每轨迹添加子行 foreach (const Trace &trace, data.Traces) { int traceRow = table->rowCount(); table->insertRow(traceRow); // 合并主数据单元格(可选) table->setSpan(traceRow, 0, 1, 5); // 合并前5列 // 填充轨迹数据 table->setItem(traceRow, 8, new QTableWidgetItem(trace.AcceptTime.toString("yyyy-MM-dd hh:mm"))); table->setItem(traceRow, 9, new QTableWidgetItem(trace.AcceptStation)); // 设置超链接(StateEx) QTableWidgetItem *linkItem = new QTableWidgetItem("查看详情"); linkItem->setData(Qt::UserRole, trace.StateEx); // 存储原始URL linkItem->setForeground(QBrush(Qt::blue)); table->setItem(traceRow, 6, linkItem); } ``` #### 步骤4:添加交互功能 ```cpp // 点击超链接处理 connect(table, &QTableWidget::cellClicked, [=](int row, int col) { if (col == 6) { // StateEx列 QTableWidgetItem *item = table->item(row, col); QUrl url(item->data(Qt::UserRole).toString()); QDesktopServices::openUrl(url); } }); ``` --- ### 四、界面优化建议 1. **列宽自适应**: ```cpp table->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); ``` 2. **交替行颜色**: ```cpp table->setAlternatingRowColors(true); table->setStyleSheet("alternate-background-color: #f0f0f0;"); ``` 3. **状态颜色标记**: ```cpp // 在插入数据时设置背景色 QColor stateColor = getStateColor(data.State); // 自定义颜色映射 table->item(row, 5)->setBackground(stateColor); ``` --- ### 五、完整数据结构参考(C++) ```cpp struct LogisticsData { // 主信息 QString EBusinessID; QString ShipperCode; QString LogisticCode; bool Success; QString Reason; QString State; QString StateEx; QString Location; // 轨迹信息 struct Trace { QDateTime AcceptTime; QString AcceptStation; QString Location; QString Action; QString Remark; }; QList<Trace> Traces; // 订单信息 QString OrderCode; QString Callback; QString Station; QString StationTel; QString StationAdd; QString DeliveryMan; QString DeliveryManTel; QString NextCity; }; ``` --- ### 六、注意事项 1. **性能优化**:当轨迹数据超过100时,建议改用`QTableView`+`QStandardItemModel` 2. **日期格式**:使用`QDateTime::fromString()`解析原始时间字符串时需要指定格式: ```cpp QDateTime::fromString("Thu Mar 30 05:37:57 CST 2023", "ddd MMM dd hh:mm:ss 'CST' yyyy"); ``` 3. **国际化**:中文状态描述可通过`QTranslator`实现多语言支持 如需实现更复杂的交互(如展开/折叠轨迹详情),建议使用`QTreeWidget`或自定义`QTableView`委托。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值