Linux文件目录操作命令-touch命令、cat命令、nl命令

一、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主要有三大功能:

  1. 一次显示整个文件:cat filename
  2. 从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
  3. 将几个文件合并为一个文件: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- 引用,除了 LFDTAB 之外

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.logmylog2.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位。
 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值