一、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
使用指定的日期时间,而非现在的时间。
3.命令功能
touch
命令参数可更改文档或目录的日期时间,包括存取时间和更改时间。
4.使用范例
实例一
创建不存在的文件,用法如下所示 -
命令:
touch log1.log log2.log
输出:
[tianyuanmengniu@localhost test]$ ll
total 4
-rw-rw-r--. 1 yiibai yiibai 25 Feb 12 22:43 log2.txt
-rw-rw-r--. 1 yiibai yiibai 0 Feb 12 22:44 log3.txt
[tianyuanmengniu@localhost test]$ touch log1.log log2.log
[tianyuanmengniu@localhost test]$ ll
total 4
-rw-rw-r--. 1 yiibai yiibai 0 Feb 13 01:42 log1.log
-rw-rw-r--. 1 yiibai yiibai 0 Feb 13 01:42 log2.log
-rw-rw-r--. 1 yiibai yiibai 25 Feb 12 22:43 log2.txt
-rw-rw-r--. 1 yiibai yiibai 0 Feb 12 22:44 log3.txt
[tianyuanmengniu@localhost test]$
如果log-noexists.log
不存在,则不创建文件
[tianyuanmengniu@localhost test]$ ll
total 4
-rw-rw-r--. 1 yiibai yiibai 0 Feb 13 01:42 log1.log
-rw-rw-r--. 1 yiibai yiibai 0 Feb 13 01:42 log2.log
-rw-rw-r--. 1 yiibai yiibai 25 Feb 12 22:43 log2.txt
-rw-rw-r--. 1 yiibai yiibai 0 Feb 12 22:44 log3.txt
[tianyuanmengniu@localhost test]$ touch -c log-noexists.log
[tianyuanmengniu@localhost test]$ ll
total 4
-rw-rw-r--. 1 yiibai yiibai 0 Feb 13 01:42 log1.log
-rw-rw-r--. 1 yiibai yiibai 0 Feb 13 01:42 log2.log
-rw-rw-r--. 1 yiibai yiibai 25 Feb 12 22:43 log2.txt
-rw-rw-r--. 1 yiibai yiibai 0 Feb 12 22:44 log3.txt
[tianyuanmengniu@localhost test]$
实例二
更新log2.log
的时间和log2.txt
时间戳相同
命令:
touch -r log2.log log2.txt
输出:
[tianyuanmengniu@localhost test]$ ll
total 4
-rw-rw-r--. 1 yiibai yiibai 0 Feb 13 01:42 log1.log
-rw-rw-r--. 1 yiibai yiibai 0 Feb 13 01:42 log2.log
-rw-rw-r--. 1 yiibai yiibai 25 Feb 12 22:43 log2.txt
-rw-rw-r--. 1 yiibai yiibai 0 Feb 12 22:44 log3.txt
[tianyuanmengniu@localhost test]$ touch -r log2.log log2.txt
[tianyuanmengniu@localhost test]$ ll
total 4
-rw-rw-r--. 1 yiibai yiibai 0 Feb 13 01:42 log1.log
-rw-rw-r--. 1 yiibai yiibai 0 Feb 13 01:42 log2.log
-rw-rw-r--. 1 yiibai yiibai 25 Feb 13 01:42 log2.txt
-rw-rw-r--. 1 yiibai yiibai 0 Feb 12 22:44 log3.txt
[tianyuanmengniu@localhost test]$
实例三
设定文件的时间戳
命令:
touch -t 201910102034.50 log1.log
输出:
[tianyuanmengniu@localhost test]$ ll
total 4
-rw-rw-r--. 1 yiibai yiibai 0 Oct 10 2019 log1.log
-rw-rw-r--. 1 yiibai yiibai 0 Feb 13 01:42 log2.log
-rw-rw-r--. 1 yiibai yiibai 25 Feb 13 01:42 log2.txt
-rw-rw-r--. 1 yiibai yiibai 0 Feb 12 22:44 log3.txt
[tianyuanmengniu@localhost test]$ [yiibai@localhost test]$ ll
-rw-rw-r--. 1 yiibai yiibai 0 Feb 13 01:42 log1.log
-rw-rw-r--. 1 yiibai yiibai 0 Feb 13 01:42 log2.log
-rw-rw-r--. 1 yiibai yiibai 25 Feb 13 01:42 log2.txt
-rw-rw-r--. 1 yiibai yiibai 0 Feb 12 22:44 log3.txt
[tianyuanmengniu@localhost test]$ touch -t 201910102034.50 log1.log
[tianyuanmengniu@localhost test]$ ll
total 4
-rw-rw-r--. 1 yiibai yiibai 0 Oct 10 2019 log1.log
-rw-rw-r--. 1 yiibai yiibai 0 Feb 13 01:42 log2.log
-rw-rw-r--. 1 yiibai yiibai 25 Feb 13 01:42 log2.txt
-rw-rw-r--. 1 yiibai yiibai 0 Feb 12 22:44 log3.txt
[tianyuanmengniu@localhost test]$
说明:-t
time 使用指定的时间值 time 作为指定文件相应时间戳记的新值。此处的 time 规定为如下形式的十进制数:
[[CC]YY]MMDDhhmm[.SS]
这里,CC为年数中的前两位,即”世纪数”;YY为年数的后两位,即某世纪中的年数.如果不给出CC的值,则 touch
将把年数CCYY限定在1969--2068
之内.MM为月数,DD为天将把年数CCYY限定在1969--2068
之内.MM
为月数,DD
为天数,hh
为小时数(几点),mm
为分钟数,SS
为秒数.此处秒的设定范围是0--61
,这样可以处理闰秒.这些数字组成的时间是环境变量TZ指定的时区中的一个时间。由于系统的限制,早于1970年1月1日的时间是错误的。
二、cat命令
cat
命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
1.命令格式
cat [选项] [文件]…
2.命令功能
cat
主要有三大功能:
- 一次显示整个文件:
cat filename
- 从键盘创建一个文件:
cat > filename
只能创建新文件,不能编辑已有文件. - 将几个文件合并为一个文件:
cat file1 file2 > file
命令参数:-A
,--show-all
等价于-vET
-b
,--number-nonblank
对非空输出行编号-e
等价于-vE
-E
,--show-ends
在每行结束处显示$
-n
,--number
对输出的所有行编号,由1开始对所有输出的行数编号-s
,--squeeze-blank
有连续两行以上的空白行,就代换为一行的空白行-t
与-vT
等价-T
,--show-tabs
将跳格字符显示为^I
-u
(被忽略)-v
,--show-nonprinting
使用^
和M-
引用,除了LFD
和TAB
之外
4.使用实例
实例一
把 mylog1.log
的文件内容加上行号后输入 mylog2.log
这个文件里。
命令:
cat -n mylog1.log mylog2.log
输出:
[tianyuanmengniu@localhost test]$ cat mylog1.log
this is line 1
this is line 2
[tianyuanmengniu@localhost test]$ cat mylog2.log
log2 this is line 1
log2 this is line 2
log2 this is line 3
[tianyuanmengniu@localhost test]$ cat -n mylog1.log mylog2.log
1 this is line 1
2 this is line 2
3 log2 this is line 1
4 log2 this is line 2
5 log2 this is line 3
[tianyuanmengniu@localhost test]$
实例二
把 mylog1.log
和 mylog2.log
的文件内容加上行号(空白行不加)之后将内容附加到 log.log
里。
命令:
cat -b mylog1.log mylog2.log log.log
输出:
[tianyuanmengniu@localhost test]$ cat -b mylog1.log mylog2.log >> log.log
[tianyuanmengniu@localhost test]$ cat log.log
1 this is line 1
2 this is line 2
3 log2 this is line 1
4 log2 this is line 2
5 log2 this is line 3
[tianyuanmengniu@localhost test]$
实例三
使用here doc来生成文件
[tianyuanmengniu@localhost test]$ cat >log.txt <<EOF
> Hello
> World
> Linux command
> PWD=$(pwd)
> EOF
[tianyuanmengniu@localhost test]$ ls -l log.txt
-rw-rw-r--. 1 yiibai yiibai 49 Feb 13 03:20 log.txt
[tianyuanmengniu@localhost test]$ cat log.txt
Hello
World
Linux command
PWD=/home/yiibai/test
[tianyuanmengniu@localhost test]$
三、nl命令
nl命令在linux系统中用来计算文件中行号。nl可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n
有点不太一样, nl
可以将行号做比较多的显示设计,包括位数与是否自动补齐 0
等等的功能。
1.命令格式
nl
[选项]… [文件]…
2.命令参数
-b
:指定行号指定的方式,主要有两种:-b a
:表示不论是否为空行,也同样列出行号(类似cat -n
);-b t
:如果有空行,空的那一行不要列出行号(默认值);-n
:列出行号表示的方法,主要有三种:-n ln
:行号在萤幕的最左方显示;-n rn
:行号在自己栏位的最右方显示,且不加 0 ;-n rz
:行号在自己栏位的最右方显示,且加 0 ;-w
:行号栏位的占用的位数。-p
在逻辑定界符处不重新开始计算。
3.命令功能
nl
命令读取 File
参数(缺省情况下标准输入),计算输入中的行号,将计算过的行号写入标准输出。 在输出中,nl
命令根据您在命令行中指定的标志来计算左边的行。 输入文本必须写在逻辑页中。每个逻辑页有头、主体和页脚节(可以有空节)。 除非使用 -p
标志,nl
命令在每个逻辑页开始的地方重新设置行号。可以单独为头、主体和页脚节设置行计算标志(例如,头和页脚行可以被计算然而文本行不能)。
4.使用实例
实例一
用 nl
列出 log.log
的内容
命令:
nl log.log
输出:
[tianyuanmengniu@localhost test]$ cat log.log
this is line 1.
this is line 2.
this is line 3.
this is line 4.
this is line 5.
-----------------end
[tianyuanmengniu@localhost test]$ nl log.log
1 this is line 1.
2 this is line 2.
3 this is line 3.
4 this is line 4.
5 this is line 5.
6 -----------------end
[tianyuanmengniu@localhost test]$
说明:文件中的空白行,
nl
不会加上行号。
实例二
用 nl
列出 log.log
的内容,空本行也加上行号。
命令:
nl -b a log.log
输出:
[tianyuanmengniu@localhost test]$ nl -b a log.log
1 this is line 1.
2 this is line 2.
3 this is line 3.
4 this is line 4.
5
6 this is line 5.
7
8 -----------------end
[tianyuanmengniu@localhost test]$
实例三
让行号前面自动补上0
,统一输出格式。
[tianyuanmengniu@localhost test]$ nl -b a -n rz log.log
000001 this is line 1.
000002 this is line 2.
000003 this is line 3.
000004 this is line 4.
000005
000006 this is line 5.
000007
000008 -----------------end
[tianyuanmengniu@localhost test]$ nl -b a -n rz -w 3 log.log
001 this is line 1.
002 this is line 2.
003 this is line 3.
004 this is line 4.
005
006 this is line 5.
007
008 -----------------end
[tianyuanmengniu@localhost test]$
说明:nl -b a -n rz
命令行号默认为六位,要调整位数可以加上参数 -w 3
调整为3
位。