Haste makes waste

linux-03-Linux基础命令(2)

Posted on By lijun

1. 修改文件的timestamp(touch)

每个文件都有最终更新时间,通过 ls -l可以进行确认,如果要修改最终更新时间的话,使用touch命令,不添加option的话是以当前时间更新。

touch [option] filename 

另外,如果后面的filename是不存在的文件,则新建一个0 byte的文件。

$ ls -l hosts.bak 
-rw-rw-r-- 1 okada okada 187 Jun 4 10:06 hosts.bak 

# 以当前时间进行更新
$ touch hosts.bak 
$ ls -l hosts.bak -rw-rw-r-- 1 okada okada 187 Jun 5 09:50 hosts.bak 

# 以指定的时间戳进行更新
$ touch -t 06030800 hosts.bak 
$ ls -l hosts.bak -rw-rw-r-- 1 okada okada 187 Jun 3 08:00 hosts.bak 

-t 是指定时间的option。 時間是 [[CC]YY]MMDDhhmm[.SS] 形式([] 内可以省略)。

2. 获取部分文件(head, tail)

只想查看文件的一部分,如文件头或文件尾时,使用head和tail命令。

head [option] filename

1. -n 行 选出前n行内容

2. -c byte 选出前c byte内容

tail与head类似

2.1 特別なオプション -f

通过这个option,可以实时输出最新的文件,在确认正在写入的log文件时非常有用,如tail -f log.txt,用Ctrl+c中断输入。

3 文件的排序(sort)

针对文件内容进行排序,排序单位为一行。

sort [option] filename

1. -r 逆向排序

2. -k n , 用第n列的数据的数据排序

3. -n 数值排序

  • 如果不添加-n的话,会将100排在最前面,因为是按100的文字列排序
$ sort -n -k 3 
score keiichi oka 70 
yoshinori kawazu 85 
toru minemura 100 

4. 去除重复行(uniq)

uniq コマンドを使うことで直前の行と同じ内容があった場合、対象行を出力しません。 連続している同じ内容の行を、1行にまとめることができます。

uniq ファイル名
  • 准备一份数据:
$ cat > uniq-sample 
AAA 
BBB 
AAA 
CCC 
CCC 
DDD
  • 去除前后两行重复的数据,AAA两行并不连续,所有不会去重复:
$ uniq uniq-sample 
AAA 
BBB 
AAA 
CCC 
DDD 

5. 替换文字列(tr)

tr 文字列1 文字列2 
  • 将abc替换为ABC
$ cat FILE | tr abc ABC 
  • 将on替换为ON,输出到新的文件translate2中
$ cat translate | tr on ON > translate2 

$ cat translate2 
ANdrOid 
iPhONe 
WiNdOws 
PhONe 

6. 文件的比较(diff)

diff [オプション] ファイル 1 ファイル 2 

1. -c, context diff 形式で差分を出力します。 
2. -u, unified diff 形式で差分を出力します。 

  • 准备两份数据
$ echo"testtext" >file1 
$ echo"testtext" >file2 
$ echo"new line" >>file2 
  • 比较差异
$ diff file1 file2 
1a2 
> new line 

添加了option的 -c和-u,可以自己试试。