tr命令,wc命令,stat命令,cut命令,diff命令,touch命令,dd命令

tr命令

tr 命令用于替换文本文件中的字符,格式为“tr [原始字符] [目标字符]”。
在很多时候,我们想要快速地替换文本中的一些词汇,又或者把整个文本内容都进行替
换,如果进行手工替换,难免工作量太大,尤其是需要处理大批量的内容时,进行手工替换更
是不现实。这时,就可以先使用 cat 命令读取待处理的文本,然后通过管道符(详见第 3 章)
把这些文本内容传递给 tr 命令进行替换操作即可。例如,把某个文本内容中的英文全部替换
为大写:

[root@localhost ~]# cat anaconda-ks.cfg  | tr [a-z] [A-Z]
#VERSION=DEVEL
# SYSTEM AUTHORIZATION INFORMATION
AUTH --ENABLESHADOW --PASSALGO=SHA512
# USE CDROM INSTALLATION MEDIA
CDROM
# USE GRAPHICAL INSTALL
GRAPHICAL
# RUN THE SETUP AGENT ON FIRST BOOT
FIRSTBOOT --ENABLE
IGNOREDISK --ONLY-USE=VDA
# KEYBOARD LAYOUTS
KEYBOARD --VCKEYMAP=CN --XLAYOUTS='CN'
# SYSTEM LANGUAGE
LANG ZH_CN.UTF-8

# NETWORK INFORMATION
NETWORK  --BOOTPROTO=STATIC --DEVICE=ETH0 --GATEWAY=192.168.1.1 --IP=192.168.1.6 --NAMESERVER=192.168.1.1 --NETMASK=255.255.255.0 --IPV6=AUTO --ACTIVATE
NETWORK  --HOSTNAME=LOCALHOST.LOCALDOMAIN

# ROOT PASSWORD
ROOTPW --ISCRYPTED $6$.W1Y5LCJA2PGKDQI$WJWUSXHSRSW.JUJIBSGZQC0TQHTCW3YMTMFYMIGZRIQY5A1BXCE2K2ACWCBMLV.U1IEJROF747TB92IO9DXLZ/
# SYSTEM TIMEZONE
TIMEZONE ASIA/SHANGHAI --ISUTC
USER --NAME=JINGPAN --PASSWORD=$6$KUDWINSUFYZ1.ULB$RG3WSHGF5SUZHGGZPSTNDGIX4ZKVGUGFLVZUJW7L7N8KFHCOUYK3QUKMDIFA1YHKBAPNUZP7XMNIPNF5OR9IS. --ISCRYPTED --GECOS="JINGPAN"
# SYSTEM BOOTLOADER CONFIGURATION
BOOTLOADER --APPEND=" CRASHKERNEL=AUTO" --LOCATION=MBR --BOOT-DRIVE=VDA
AUTOPART --TYPE=LVM
# PARTITION CLEARING INFORMATION
CLEARPART --NONE --INITLABEL

%PACKAGES
@^MINIMAL
@CORE
@DEVELOPMENT
KEXEC-TOOLS

%END

%ADDON COM_REDHAT_KDUMP --ENABLE --RESERVE-MB='AUTO'

%END

wc命令

wc 命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。

-l       只显示行数

-w    只显示单词数

-c   只显示字节数

在 Linux 系统中,passwd 是用于保存系统账户信息的文件,要统计当前系统中有多少个
用户,可以使用下面的命令来进行查询,是不是很神奇:

[root@localhost ~]# wc -l /etc/passwd
40 /etc/passwd

stat命令

stat 命令用于查看文件的具体存储信息和时间等信息,格式为“stat 文件名称”。
stat 命令可以用于查看文件的存储信息和时间等信息,命令 stat anaconda-ks.cfg 会显示出
文件的三种时间状态(已加粗):Access、Modify、Change。

[root@localhost ~]# stat anaconda-ks.cfg 
  File: "anaconda-ks.cfg"
  Size: 1441            Blocks: 8          IO Block: 4096   普通文件
Device: 801h/2049d      Inode: 262153      Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-08-04 10:27:17.372963432 +0800
Modify: 2017-11-06 11:50:09.013998957 +0800
Change: 2017-11-06 11:50:30.084998941 +0800

cut 命令

cut 命令用于按“列”提取文本字符,格式为“cut [参数] 文本”。
在 Linux 系统中,如何准确地提取出最想要的数据,这也是我们应该重点学习的内容。一般
而言,按基于“行”的方式来提取数据是比较简单的,只需要设置好要搜索的关键词即可。但是
如果按列搜索,不仅要使用-f 参数来设置需要看的列数,还需要使用-d 参数来设置间隔符号。
passwd 在保存用户数据信息时,用户信息的每一项值之间是采用冒号来间隔的,接下来我们使用
下述命令尝试提取出 passwd 文件中的用户名信息,即提取以冒号(:)为间隔符号的第一列内容:

[root@localhost ~]# head -n 2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@localhost ~]# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
uucp
operator
games
gopher
ftp
nobody
dbus
usbmuxd
rpc
rtkit
avahi-autoipd
vcsa
abrt
rpcuser
nfsnobody
haldaemon
ntp
apache
saslauth
postfix
gdm
pulse
sshd
tcpdump
jingpan
radvd
qemu
nignx
nginx
test
rich

diff命令

diff 命令用于比较多个文本文件的差异,格式为“diff [参数] 文件”。
在使用 diff 命令时,不仅可以使用--brief 参数来确认两个文件是否不同,还可以使用-c 参
数来详细比较出多个文件的差异之处,这绝对是判断文件是否被篡改的有力神器。例如,先
使用 cat 命令分别查看 diff_A.txt 和 diff_B.txt 文件的内容,然后进行比较:

接下来使用 diff --brief 命令显示比较后的结果,判断文件是否相同:

[root@localhost ~]# diff --brief diff_A.txt diff_B.txt 
Files diff_A.txt and diff_B.txt differ

 最后使用带有-c 参数的 diff 命令来描述文件内容具体的不同:

[root@localhost ~]# cat diff_B.txt
Welcome tooo linuxshell.com

Red Hat certified
Free Linux LeSSonS
/////////......////////
Professional guidance
Linux Course
[root@localhost ~]# diff -c diff_A.txt diff_B.txt 
*** diff_A.txt  2018-08-04 10:53:55.793962098 +0800
--- diff_B.txt  2018-08-04 10:58:14.587961708 +0800
***************
*** 1,5 ****
! Welcome to linuxshell.com
  Red Hat certified
! Free Linux Lessons
  Professional guidance
  Linux Course
--- 1,7 ----
! Welcome tooo linuxshell.com
! 
  Red Hat certified
! Free Linux LeSSonS
! /////////......////////
  Professional guidance
  Linux Course

touch命令

touch 命令用于创建空白文件或设置文件的时间,格式为“touch [选项] [文件]”。
在创建空白的文本文件方面,这个 touch 命令相当简捷,简捷到没有必要铺开去讲。
比如,touch linuxprobe 命令可以创建出一个名为 linuxprobe 的空白文本文件。对 touch 命
令来讲,有难度的操作主要是体现在设置文件内容的修改时间(mtime)、文件权限或属性
的更改时间(ctime)与文件的读取时间(atime)上面。
-a 仅修改“读取时间”(atime)
-m 仅修改“修改时间”(mtime)
-d 同时修改 atime 与 mtime
接下来,我们先使用 ls 命令查看一个文件的修改时间,然后修改这个文件,最后再通过 touch
命令把修改后的文件时间设置成修改之前的时间(很多黑客就是这样做的呢):

[root@localhost ~]# ls -l anaconda-ks.cfg 
-rw-------. 1 root root 1441 11月  6 2017 anaconda-ks.cfg
[root@localhost ~]# echo "Visit the linuxshell.com to learn linux skills" >> anaconda-ks.cfg 
[root@localhost ~]# ls -l anaconda-ks.cfg 
-rw-------. 1 root root 1488 8月   4 11:10 anaconda-ks.cfg
[root@localhost ~]# touch -d "2017-11-06 15:00" anaconda-ks.cfg 
[root@localhost ~]# ls -l anaconda-ks.cfg 
-rw-------. 1 root root 1488 11月  6 2017 anaconda-ks.cfg

dd命令

dd 命令用于按照指定大小和个数的数据块来复制文件或转换文件,格式为“dd [参数]”。
dd 命令是一个比较重要而且比较有特色的一个命令,它能够让用户按照指定大小和个数
的数据块来复制文件的内容。当然如果愿意的话,还可以在复制过程中转换其中的数据。Linux
系统中有一个名为/dev/zero 的设备文件,每次在课堂上解释它时都充满哲学理论的色彩。因
为这个文件不会占用系统存储空间,但却可以提供无穷无尽的数据,因此可以使用它作为 dd
命令的输入文件,来生成一个指定大小的文件。dd 命令的参数及其作用如下。
            if            输入的文件名称
            of           输出的文件名称
             bs         设置每个“块”的大小
             count     设置要复制“块”的个数
例如我们可以用 dd 命令从/dev/zero 设备文件中取出一个大小为 560MB 的数据块,然后
保存成名为 560_file 的文件。在理解了这个命令后,以后就能随意创建任意大小的文件了:

[root@localhost e]# dd if=/dev/zero of=560_file count=1 bs=560M
记录了1+0 的读入
记录了1+0 的写出
587202560字节(587 MB)已复制,88.8811 秒,6.6 MB/秒


dd 命令的功能也绝不仅限于复制文件这么简单。如果您想把光驱设备中的光盘制作成 iso 格
式的镜像文件,在 Windows 系统中需要借助于第三方软件才能做到,但在 Linux 系统中可以直接
使用 dd 命令来压制出光盘镜像文件,将它变成一个可立即使用的 iso 镜像:
[root@linuxprobe ~]# dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-LinuxProbe.Com.iso
7311360+0 records in
7311360+0 records out
3743416320 bytes (3.7 GB) copied, 370.758 s, 10.1 MB/s
考虑到有些读者会纠结 bs 块大小与 count 块个数的关系,下面举一个吃货的例子进行
解释。假设小明的饭量(即需求)是一个固定的值,用来盛饭的勺子的大小即 bs 块大小,
而用勺子盛饭的次数即 count 块个数。小明要想吃饱(满足需求),则需要在勺子大小(bs 块
大小)与用勺子盛饭的次数(count 块个数)之间进行平衡。勺子越大,用勺子盛饭的次数就越少。由上可见,bs 与 count 都是用来指定容量的大小,只要能满足需求,可随意组合搭配方
式。

猜你喜欢

转载自blog.csdn.net/tjjingpan/article/details/81408155