更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux命令 > Linux tr、tracepath、touch、tput命令的用法及解释

Linux tr、tracepath、touch、tput命令的用法及解释

更新时间:2022-01-19 11:35:41浏览次数:249+次

以下为你详细解释tr、tracepath、touch、tput命令的用法。

\

Linux tr命令的用法及解释

Linux tr命令可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。

1、语法

tr(选项)(参数)

2、选项

-c或——complerment:取代所有不属于第一字符集的字符;

-d或——delete:删除所有属于第一字符集的字符;

-s或--squeeze-repeats:把连续重复的字符以单独一个字符表示;

-t或--truncate-set1:先删除第一字符集较第二字符集多出的字符。

3、参数

字符集1:指定要转换或删除的原字符集。当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。但执行删除操作时,不需要参数“字符集2”;

字符集2:指定要转换成的目标字符集。

4、实例

将输入字符由大写转换为小写:

echo "HELLO WORLD" | tr 'A-Z' 'a-z'

hello world

'A-Z' 和 'a-z'都是集合,集合是可以自己制定的,例如:'ABD-}'、'bB.,'、'a-de-h'、'a-c0-9'都属于集合,集合里可以使用'\n'、'\t',可以可以使用其他ASCII字符。

使用tr删除字符:

echo "hello 123 world 456" | tr -d '0-9'

hello  world

将制表符转换为空格:

cat text | tr '\t' ' '

字符集补集,从输入文本中将不在补集中的所有字符删除:

echo aa.,a 1 b#$bb 2 c*/cc 3 ddd 4 | tr -d -c '0-9 \n'

1  2  3  4

此例中,补集中包含了数字0~9、空格和换行符\n,所以没有被删除,其他字符全部被删除了。

用tr压缩字符,可以压缩输入中重复的字符:

echo "thissss is      a text linnnnnnne." | tr -s ' sn'

this is a text line.

巧妙使用tr做数字相加操作:

echo 1 2 3 4 5 6 7 8 9 | xargs -n1 | echo $[ $(tr '\n' '+') 0 ]

删除Windows文件“造成”的'^M'字符:

cat file | tr -s "\r" "\n" > new_file

或:

cat file | tr -d "\r" > new_file

tr可以使用的字符类:

[:alnum:]:字母和数字

[:alpha:]:字母

[:cntrl:]:控制(非打印)字符

[:digit:]:数字

[:graph:]:图形字符

[:lower:]:小写字母

[:print:]:可打印字符

[:punct:]:标点符号

[:space:]:空白字符

[:upper:]:大写字母

[:xdigit:]:十六进制字符

使用方式:

tr '[:lower:]' '[:upper:]'

Linux tracepath命令的用法及解释

Linux tracepath命令用来追踪并显示报文到达目的主机所经过的路由信息。

1、语法

tracepath(参数)

2、参数

1].目的主机:指定追踪路由信息的目的主机;

2].端口:指定使用的UDP端口号。

3、实例

tracepath 域名

以下是输出示例:

1:  192.168.2.10 (192.168.2.10)                          20.150ms pmtu 1500

1:  unknown (192.168.2.1)                                9.343ms

2:  221.6.45.33 (221.6.45.33)                            34.430ms

3:  221.6.9.81 (221.6.9.81)                              19.263ms

4:  122.96.66.37 (122.96.66.37)                          54.372ms

5:  219.158.96.149 (219.158.96.149)                      asymm  6 128.526ms

6:  123.126.0.66 (123.126.0.66)                          138.281ms

7:  124.65.57.26 (124.65.57.26)                          166.244ms

8:  61.148.154.98 (61.148.154.98)                        103.723ms

9:  202.106.42.102 (202.106.42.102)                      asymm 10  78.099ms

10:  210.77.139.150 (210.77.139.150)                      asymm  9 199.930ms

11:  211.151.104.6 (211.151.104.6)                        asymm 10 121.965ms

12:  no reply

13:  211.151.111.30 (211.151.111.30)                      asymm 12 118.989ms reached

Resume: pmtu 1500 hops 13 back 12

Linux touch命令的用法及解释

Linux touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。

1、语法

touch(选项)(参数)

2、选项

-a:或--time=atime或--time=access或--time=use  只更改存取时间;

-c:或--no-create  不建立任何文件;

-d:<时间日期> 使用指定的日期时间,而非现在的时间;

-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;

-m:或--time=mtime或--time=modify  只更该变动时间;

-r:<参考文件或目录>  把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;

-t:<日期时间>  使用指定的日期时间,而非现在的时间;

--help:在线帮助;

--version:显示版本信息。

3、参数

文件:指定要设置时间属性的文件列表。

4、实例

touch ex2

在当前目录下建立一个空文件ex2,然后,利用ls -l命令可以发现文件ex2的大小为0,表示它是空文件。

Linux tput命令的用法及解释

Linux tput命令将通过 terminfo 数据库对您的终端会话进行初始化和操作。通过使用 tput,您可以更改几项终端功能,如移动或更改光标、更改文本属性,以及清除终端屏幕的特定区域。

什么是 terminfo 数据库?

UNIX 系统上的 terminfo 数据库用于定义终端和打印机的属性及功能,包括各设备(例如,终端和打印机)的行数和列数以及要发送至该设备的文本的属性。UNIX 中的几个常用程序都依赖 terminfo 数据库提供这些属性以及许多其他内容,其中包括 vi 和 emacs 编辑器以及 curses 和 man 程序。

与 UNIX 中的大多数命令一样,tput 命令既可以用在 shell 命令行中也可以用在 shell 脚本中。为让您更好地理解 tput,本文首先从命令行讲起,然后紧接着讲述 shell 脚本示例。

光标属性:

在 UNIX shell 脚本中或在命令行中,移动光标或更改光标属性可能是非常有用的。有些情况下,您可能需要输入敏感信息(如密码),或在屏幕上两个不同的区域输入信息。在此类情况下,使用 tput 可能会对您有所帮助。

tput clear # 清屏

tput sc # 保存当前光标位置

tput cup 10 13 # 将光标移动到 row col

tput civis # 光标不可见

tput cnorm # 光标可见

tput rc # 显示输出

exit 0

移动光标:

使用 tput 可以方便地实现在各设备上移动光标的位置。通过在 tput 中使用 cup 选项,或光标位置,您可以在设备的各行和各列中将光标移动到任意 X 或 Y 坐标。设备左上角的坐标为 (0,0)。

要在设备上将光标移动到第 5 列 (X) 的第 1 行 (Y),只需执行 tput cup 5 1。另一个示例是 tput cup 23 45,此命令将使光标移动到第 23 列上的第 45 行。

移动光标并显示信息:

另一种有用的光标定位技巧是移动光标,执行用于显示信息的命令,然后返回到前一光标位置:

(tput sc ; tput cup 23 45 ; echo “Input from tput/echo at 23/45” ; tput rc)

下面我们分析一下 subshell 命令:

tput sc

必须首先保存当前的光标位置。要保存当前的光标位置,请包括 sc 选项或“save cursor position”。

tput cup 23 45

在保存了光标位置后,光标坐标将移动到 (23,45)。

echo “Input from tput/echo at 23/45”

将信息显示到 stdout 中。

tput rc

在显示了这些信息之后,光标必须返回到使用 tput sc 保存的原始位置。要使光标返回到其上次保存的位置,请包括 rc 选项或“restore cursor position”。

注意:由于本文首先详细介绍了通过命令行执行 tput,因此您可能会觉得在自己的 subshell 中执行命令要比单独执行每条命令然后在每条命令执行之前显示提示更简洁。

更改光标的属性:

在向某一设备显示数据时,很多时候您并不希望看到光标。将光标转换为不可见可以使数据滚动时的屏幕看起来更整洁。要使光标不可见,请使用 civis 选项(例如,tput civis)。在数据完全显示之后,您可以使用 cnorm 选项将光标再次转变为可见。

文本属性:

更改文本的显示方式可以让用户注意到菜单中的一组词或警惕用户注意某些重要的内容。您可以通过以下方式更改文本属性:使文本加粗、在文本下方添加下划线、更改背景颜色和前景颜色,以及逆转颜色方案等。

要更改文本的颜色,请使用 setb 选项(用于设置背景颜色)和 setf 选项(用于设置前景颜色)以及在 terminfo 数据库中分配的颜色数值。通常情况下,分配的数值与颜色的对应关系如下,但是可能会因 UNIX 系统的不同而异:

0:黑色

1:蓝色

2:绿色

3:青色

4:红色

5:洋红色

6:黄色

7:白色

执行以下示例命令可以将背景颜色更改为黄色,将前景颜色更改为红色:

tput setb 6 tput setf 4

要反显当前的颜色方案,只需执行tput rev。

有时,仅为文本着色还不够,也就是说,您想要通过另一种方式引起用户的注意。可以通过两种方式达到这一目的:一是将文本设置为粗体,二是为文本添加下划线。

要将文本更改为粗体,请使用 bold 选项。要开始添加下划线,请使用 smul 选项。在完成显示带下划线的文本后,请使用 rmul 选项。

以下是实例示范:

使输出的字符串有颜色,底色,加粗:

#!/bin/bash

printf $(tput setaf 2; tput bold)'color show\n\n'$(tput sgr0)

for((i=0; i<=7; i++)); do

    echo $(tput setaf $i)"show me the money"$(tput sgr0)

done

printf '\n'$(tput setaf 2; tput setab 0; tput bold)'background color show'$(tput sgr0)'\n\n'

for((i=0,j=7; i<=7; i++,j--)); do

    echo $(tput setaf $i; tput setab $j; tput bold)"show me the money"$(tput sgr0)

done

exit 0

输出格式控制函数:

#!/bin/bash

# $1 str       print string

# $2 color     0-7 设置颜色

# $3 bgcolor   0-7 设置背景颜色

# $4 bold      0-1 设置粗体

# $5 underline 0-1 设置下划线

function format_output(){

    str=$1

    color=$2

    bgcolor=$3

    bold=$4

    underline=$5

    normal=$(tput sgr0)

    case "$color" in

        0|1|2|3|4|5|6|7)

            setcolor=$(tput setaf $color;) ;;

        *)

            setcolor="" ;;

    esac

    case "$bgcolor" in

        0|1|2|3|4|5|6|7)

            setbgcolor=$(tput setab $bgcolor;) ;;

        *)

            setbgcolor="" ;;

    esac

    if [ "$bold" = "1" ]; then

        setbold=$(tput bold;)

    else

        setbold=""

    fi

    if [ "$underline" = "1" ]; then

        setunderline=$(tput smul;)

    else

        setunderline=""

    fi

    printf "$setcolor$setbgcolor$setbold$setunderline$str$normal\n"

}

format_output "Yesterday Once more" 2 5 1 1

exit 0

光标属性例子:

#!/bin/bash

# clear the screen

tput clear

# Move cursor to screen location X,Y (top left is 0,0)

tput cup 3 15

# set a foreground colour using ANSI escape

tput setaf 3

echo "XYX Corp LTD."

tput sgr0

tput cup 5 17

# Set reverse video mode

tput rev

echo "M A I N - M E N U"

tput sgr0

tput cup 7 15

echo "1. User Management"

tput cup 8 15

echo "2. service Management"

tput cup 9 15

echo "3. Process Management"

tput cup 10 15

echo "4. Backup"

# Set bold mode

tput bold

tput cup 12 15

read -p "Enter your choice [1-4] " choice

tput clear

tput sgr0

tput rc

exit 0