你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Tee命令行工具实例

[复制链接]
gaosmile 发布时间:2020-11-4 18:58
Tee命令是一个命令行工具,它从标准输入读取数据,同时将结果打印到文件中和标准输出到屏幕中。
) z, ^4 _  n$ C. I5 J
Tee 命令语法
$ g8 Y  V2 u& P, R% e
tee 选项 文件名7 i; x4 a, S0 j$ c# T

& c/ A; p8 d5 \9 H! b2 D& p
<以上代码可复制粘贴,可往左滑>
. n4 l& p9 T: w# Z
* [) }- o) Q! F" B# ]) d- M8 t
实例一:基本方式

$ V. g2 ^+ m& u( M) X: w$ i. {( w
9 s* ~5 W$ [2 H  _. u- O
tee命令的主要功能是显示命令的输出并将其保存到一个文件中。在下面的示例中,我们检查系统中的块设备并将结果发送到tee命令,tee命令将输出显示到终端,同时将其保存在devices.txt的文件中:

" N, S/ H9 u3 y! D5 ]
[root@localhost ~]# lsblk | tee devices.txt& x9 }7 Z/ {* M% o" D) x8 U" Z
<以上代码可复制粘贴,可往左滑>
( @$ e  [) f: d5 S/ T
微信图片_20201104185622.png

5 r5 n' |: L+ v, q# E可以使用cat命令检查devices.txt文件的内容,如下所示:

4 Z7 U4 V# R+ y9 M3 p7 L) g4 F
[root@localhost ~]# cat devices.txt4 ?, d" b9 p# ^
<以上代码可复制粘贴,可往左滑>
2 \) t5 \1 b, H) {7 n% _
微信图片_20201104185625.png
" a( S& ]) o0 ~+ M/ h3 D: Z0 A

; _# I. O  B+ l8 E# ~# C2 F
实例二:命令输出写入多个文件
) u- |# a; u, d1 c& i

* P3 U" D5 @6 e6 l
此外,可以将命令的输出写入多个文件,用空格分隔。如下所示:
7 ]7 [$ F8 k' {- J  w* @
[root@localhost ~]# hostnamectl | tee file1.txt file2.txt
9 I1 X0 ^( o) R- L" u
<以上代码可复制粘贴,可往左滑>
9 u+ T% ]7 ~/ @# c$ v  D! a
微信图片_20201104185628.png
我们调用了hostnamectl命令来打印系统的主机名以及其他详细信息,并将标准输出保存为两个文件file1.txt和file2.txt使用cat命令查看file1.txt和file2.txt:
微信图片_20201104185631.png

5 Q* L# U7 Z* h
5 e6 I% y1 n7 i* c2 H
实例三:静默输出到文件

* D2 G. H4 F. V! V! ~3 @  {. S( Y  J

, |  u2 m' B% ?9 R8 K! Q: g& U' u
如果你想隐藏或禁止tee命令在屏幕上打印输出,那么将输出重定向到/dev/null,如下所示:

& O" V5 }5 l+ ~. t
[root@localhost ~]# df -Th | tee file4.txt > /dev/null& ^& ?/ c7 f6 R3 Y( B  [! o& U0 S8 B
<以上代码可复制粘贴,可往左滑>

( `8 F+ H& t2 B. X0 j6 V1 r+ f
微信图片_20201104185634.png
+ G& Q5 N& ?. J6 ?
# \/ {* N5 T* U% ^( u
实例四:在文件中追加输出

! T2 P- \+ Q; B6 z, O

! e% w6 d, ~# A$ s+ T7 q: S- B$ @
默认情况下,tee命令覆盖文件的内容。若要追加输出并防止擦除当前内容,请使用-a或--append选项。

1 r/ d) ^- o$ G2 J
[root@localhost ~]# lsblk | tee file1.txt$ h! r' C3 x, W
[root@localhost ~]# date | tee -a file1.txt
6 a5 z  o: C* c& t9 A- d* D; }7 |[root@localhost ~]# cat file1.txt
4 ]2 C' B; N! P  s
: D+ S* Y1 a$ X. ?* u; m" x
<以上代码可复制粘贴,可往左滑>
微信图片_20201104185637.png
上面命令中,第一条命令是将内容输出到file1.txt,第二条命令tee命令加上了-a选项,就可以追加内容到file1.txt里面了,第三条命令用cat查看file1.txt,发现上面两条命令输出的内容都保存下来了。, q3 }( S2 P' U0 p

& F4 ~% B6 j4 K
实例五:tee命令和sudo一起使用
/ q* ~# _8 \* ^0 b4 j
假设只可以用一个sudo用户,希望写入root用户拥有权限的文件。任何提升操作都需要在命令之前调用sudo用户。要实现这一点,只需在tee命令前面加上sudo,如下所示:

/ E5 G: j6 K( Q  \* }, y
[bob@localhost ~]$ echo "10.200.50.20 db-01" | sudo tee -a /etc/hosts/
4 x4 A! Z5 ?- @8 F, K- ]8 ^
<以上代码可复制粘贴,可往左滑>
. d$ u9 O0 J6 C7 ]+ S! V
微信图片_20201104185640.png
6 G  G! W# z7 r2 Z( g
1 ]& i$ H  J6 `7 n" Y: v1 M
实例六:将一个命令的输出重定向到另一个命令

( h9 B9 ^4 u( h9 c* B1 H

0 ^2 U& v7 x1 e! q
使用tee命令,我们可以将一个命令的输出重定向到另一个命令。这里,第一个命令的输出将作为第二个命令的输入。示例如下:
9 C: k8 q, Q% r' Y' O9 s& N
[root@localhost ~]# grep 'root' /etc/passwd | tee /tmp/passwd.tmp | wc -l* w4 _  O. \! r% t. n" ^8 h# \
2
8 B- U- q! k4 ~& a& d[root@localhost ~]# cat /tmp/passwd.tmp ( m% k1 P& b/ h7 s2 _- H
root:x:0:0:root:/root:/bin/bash" z! `. I4 s2 l/ b. {
operator:x:11:0perator:/root:/sbin/nologin
3 b/ ^; X) r: r: s, m3 M  ^. P2 z[root@localhost ~]#
5 `9 g2 b3 X: ?( t% m6 S" s
<以上代码可复制粘贴,可往左滑>
3 ?8 R# j" ^* t# K/ ^
微信图片_20201104185643.png

; L' y( p0 P! C9 W
& Y) Q% i6 t* ~$ O: {* I6 e
实例七:在vim编辑器中使用tee
- U  d- |0 r" B
) K8 R) |1 l9 w% n( ]
假设你是一个非root用户,你正在修改root用户拥有的文件,忘记使用sudo权限打开文件,现在你想保存更改,示例如下:

! ^. p1 Q) v  S% n( D6 s
[bob@localhost ~]$ vim /etc/hosts5 Y; p& `2 l/ y) O+ v
<以上代码可复制粘贴,可往左滑>
% N! a0 @' {2 T4 K
微信图片_20201104185646.png

8 U1 [& m2 s" C0 L; [2 c现在要将更改保存到vim编辑器中的/etc/hosts文件,请运行:
: x1 {" e& i1 k  Q
:w !sudo tee %, }" O0 p' v! z. Z# M
<以上代码可复制粘贴,可往左滑>
8 d! Y$ G' Q& l9 G
微信图片_20201104185649.png

. v3 Y" h! a0 n, z9 a/ }' {上面提示输入用户的密码,输入完成之后即可保存成功。

7 U- g: A9 A1 \0 b& {/ d

" p0 A2 S) R' X/ m" a6 j6 n
总    结

: g1 ]! |# L" c8 N' G5 q
Tee命令是一个命令行工具,它从标准输入读取数据,同时将结果打印到文件中和标准输出到屏幕中。( D, D6 f7 n6 G- c
赞 收藏 评论0 发布时间:2020-11-4 18:58

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版