Linux系统命令
一、 文本文件编辑命令
1. cat命令
cat命令用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]”。
cat命令就是用于查看内容较少的纯文本文件的.
-n 显示行数(空行也编号)
-s 显示行数(多个空行算一个编号)
-b 显示行数(空行不编号)
-E 每行结束处显示$符号
-T 将TAB字符显示为 ^I符号
-v 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
-e 等价于”-vE”组合
-t 等价于”-vT”组合
-A 等价于 -vET组合
–help 显示帮助信息
–version 显示版本信息
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg linux
[root@localhost ~]# cat -n anaconda-ks.cfg
1 #version=RHEL7
2 # System authorization information
3 auth --enableshadow --passalgo=sha512
4
5 # Use CDROM installation media
6 cdrom
7 # Run the Setup Agent on first boot
8 firstboot --enable
2. more命令
more命令用于查看纯文本文件(内容较多的),格式为“more [选项]文件”
空格键或回车键向下翻页, q键退出。
[root@localhost ~]# more initial-setup-ks.cfg
#version=RHEL7
# X Window System configuration information
xconfig --startxonboot
--More--(97%)
3. head命令
head命令用于查看纯文本文档的前N行,格式为“head [选项] [文件]”
默认查看10行
[root@localhost ~]# head -n 5 initial-setup-ks.cfg
#version=RHEL7
# X Window System configuration information
xconfig --startxonboot
# License agreement
--More--(97%)
4. tail命令
tail命令用于查看纯文本文档的后N行或持续刷新内容,格式为“tail [选项] [文件]”。
默认查看10行
tail命令最强悍的功能是可以持续刷新一个文件的内容,当想要实时查看最新日志文件时,这特别有用,此时的命令格式为“tail -f 文件名
[root@localhost ~]# tail -n 5 initial-setup-ks.cfg
@print-client
@x11
%end
5. tr命令
tr命令用于替换文本文件中的字符,格式为“tr [原始字符] [目标字符]”。
快速地替换文本中的一些词汇,或者把整个文本内容都进行替换,如果进行手工替换,难免工作量太大,尤其是需要处理大批量的内容时,进行手工替换更是不现实。这时,就可以先使用cat命令读取待处理的文本,然后通过管道符 | 把这些文本内容传递给tr命令进行替换操作即可.
[root@localhost ~]# cat anaconda-ks.cfg
#version=RHEL7
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
...
[root@localhost ~]# cat anaconda-ks.cfg | tr [a-z] [A-Z]
#VERSION=RHEL7
# SYSTEM AUTHORIZATION INFORMATION
AUTH --ENABLESHADOW --PASSALGO=SHA512
# USE CDROM INSTALLATION MEDIA
CDROM
...
6. wc命令
wc命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”
-wlc 分别表示单词书,行数,字节数。
[root@localhost ~]# wc /etc/passwd
38 66 1914 /etc/passwd
[root@localhost ~]# wc -l /etc/passwd
38 /etc/passwd
7. stat命令
stat命令用于查看文件的具体存储信息和时间等信息,格式为“stat 文件名称”。
查看文件的三种时间状态:Access、Modify、Change。这三种时间的区别将在后面的touch命令中详细详解。
[root@localhost ~]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 1914 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 35886694 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:passwd_file_t:s0
Access: 2019-05-21 16:37:30.690027000 +0800
Modify: 2019-05-06 19:26:48.934014548 +0800
Change: 2019-05-06 19:26:48.934014548 +0800
Birth: -
8. cut命令
cut命令用于按“列”提取文本字符,格式为“cut [参数] 文本”。
基于“行”的方式来提取数据是比较简单的,只需要设置好要搜索的关键词即可。但是如果按列搜索,不仅要使用-f参数来设置需要看的列数,还需要使用-d参数来设置间隔符号。
如: passwd在保存用户数据信息时,用户信息的每一项值之间是采用冒号来间隔的,接下来我们使用下述命令尝试提取出passwd文件中的用户名信息,即提取以冒号(:)为间隔符号的第一列内容:
[root@localhost ~]# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
...
ome-initial-setup
postfix
sshd
tcpdump
weivid
9. diff命令
diff命令用于比较多个文本文件的差异,格式为“diff [参数] 文件”。
在使用diff命令时,不仅可以使用–brief参数来确认两个文件是否不同,还可以使用-c参数来详细比较出多个文件的差异之处,这绝对是判断文件是否被篡改的有力神器。
例如,先使用cat命令分别查看diff_A.txt和diff_B.txt文件的内容,然后进行比较:
[root@localhost ~]# cat diff_A.txt
Welcome to linuxprobe.com
Red Hat certified
Free Linux Lessons
Professional guidance
Linux Course
[root@linuxprobe ~]# cat diff_B.txt
Welcome tooo linuxprobe.com
Red Hat certified
Free Linux LeSSonS
.....
Professional guidance
Linux Course
[root@localhost ~]# diff --brief diff_A.txt diff_B.txt
Files diff_A.txt and diff_B.txt differ
*** diff_A.txt 2017-08-30 18:07:45.230864626 +0800
--- diff_B.txt 2017-08-30 18:08:52.203860389 +0800
***************
*** 1,5 ****
! Welcome to linuxprobe.com
Red Hat certified
! Free Linux Lessons
Professional guidance
Linux Course
--- 1,7 ----
! Welcome tooo linuxprobe.com
!
Red Hat certified
! Free Linux LeSSonS
! .....
Professional guidance
Linux Course
二、文件目录管理命令
1. touch命令
touch命令用于创建空白文件或设置文件的时间,格式为“touch [选项] [文件]”。
在创建空白的文本文件方面,这个touch命令相当简捷,简捷到没有必要铺开去讲。比如,touch linuxprobe命令可以创建出一个名为linuxprobe的空白文本文件。对touch命令来讲,有难度的操作主要是体现在设置文件内容的修改时间(mtime)、文件权限或属性的更改时间(ctime)与文件的读取时间(atime)上面。
-a 仅修改“读取时间”(atime)
-m 仅修改“修改时间”(mtime)
-d 同时修改atime与mtime
[root@localhost ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1210 May 21 19:07 anaconda-ks.cfg
[root@localhost ~]# echo "this file has been modified" > anaconda-ks.cfg
[root@localhost ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 28 May 21 19:21 anaconda-ks.cfg
[root@localhost ~]# touch -d "2017-05-04 15:44" anaconda-ks.cfg
[root@localhost ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 28 May 4 2017 anaconda-ks.cfg
2. mkdir命令
mkdir命令用于创建空白的目录,格式为“mkdir [选项] 目录”。
除了能创建单个空白目录外,mkdir命令还可以结合-p参数来递归创建出具有嵌套叠层关系的文件目录。
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg
[root@localhost ~]# mkdir linux
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg linux
[root@localhost ~]# cd linux
[root@localhost ~/linux]# find -name d3
./d1/d2/d3
3. cp命令
cp命令用于复制文件或目录,格式为“cp [选项] 源文件 目标文件”。
在Linux系统中,复制操作具体分为3种情况
1. 如果目标文件是目录,则会把源文件复制到该目录中;
2. 如果目标文件也是普通文件,则会询问是否要覆盖它;
3. 如果目标文件不存在,则执行正常的复制操作。
[root@localhost ~]# cp anaconda-ks.cfg ./linux/
[root@localhost ~]# cd linux/
[root@localhost ~/linux]# ls
anaconda-ks.cfg
4. mv命令
mv命令用于剪切文件或将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]”。
剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件。
如果在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名:
[root@localhost ~/linux]# mv anaconda-ks.cfg ~
mv: overwrite ‘/root/anaconda-ks.cfg’? y
[root@localhost ~] ls
anaconda-ks.cfg initial-setup-ks.cfg linux
5. rm命令
rm命令用于删除文件或目录,格式为“rm [选项] 文件”。
在Linux系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复的确认信息,可在rm命令后跟上-f参数来强制删除。
另外,想要删除一个目录,需要在rm命令后面加一个-r参数才可以,否则删除不掉。
[root@localhost ~/linux]# ls
anaconda-ks.cfg initial-setup-ks.cfg linux
[root@localhost ~/linux]# rm -r linux/
remove directory ‘linux/’? y
[root@localhost ~/linux]# ls
anaconda-ks.cfg initial-setup-ks.cfg
6. dd命令
dd命令用于按照指定大小和个数的数据块来复制文件或转换文件,格式为“dd [参数]”。
例如我们可以用dd命令从/dev/zero设备文件中取出一个大小为560MB的数据块,然后保存成名为560_file的文件。在理解了这个命令后,以后就能随意创建任意大小的文件了:
[root@localhost ~/linux]# dd if=/dev/zero of=560_file count=1 bs=560M
1+0 records in
1+0 records out
587202560 bytes (587 MB) copied, 27.1755 s, 21.6 MB/s
7. file命令
file命令用于查看文件的类型,格式为“file 文件名”。
在Linux系统中,由于文本、目录、设备等所有这些一切都统称为文件,而我们又不能单凭后缀就知道具体的文件类型,这时就需要使用file命令来查看文件类型了。
[root@localhost ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
[root@localhost ~]# file /dev/sda
/dev/sda: block special
三、 打包压缩与搜索命令
1. tar命令
tar命令用于对文件进行打包压缩或解压,格式为“tar [选项] [文件]”。
在Linux系统中,常见的文件格式比较多,其中主要使用的是.tar或.tar.gz或.tar.bz2格式,不用担心格式太多而记不住,其实这些格式大部分都是由tar命令来生成的。
-c 创建压缩文件
-x 解开压缩文件
-t 查看压缩包内有哪些文件
-z 用Gzip压缩或解压
-j 用bzip2压缩或解压
-v 显示压缩或解压的过程
-f 目标文件名
-p 保留原始的权限与属性
-P 使用绝对路径来压缩
-C 指定解压到的目录
-c参数用于创建压缩文件,-x参数用于解压文件,因此这两个参数不能同时使用。其次,-z参数指定使用Gzip格式来压缩或解压文件,-j参数指定使用bzip2格式来压缩或解压文件。非常推荐使用-v参数向用户不断显示压缩或解压的过程。-C参数用于指定要解压到哪个指定的目录。-f参数特别重要,它必须放到参数的最后一位,代表要压缩或解压的软件包名称。
一般使用“tar -czvf 压缩包名称.tar.gz 要打包的目录”命令把指定的文件进行打包压缩;相应的解压命令为“tar -xzvf 压缩包名称.tar.gz”。
[root@localhost ~]# tar czvf etc.tar.gz /etc
tar: Removing leading `/' from member names
/etc/
/etc/fstab
/etc/crypttab
/etc/mtab
/etc/fonts/
/etc/fonts/conf.d/
/etc/fonts/conf.d/65-0-madan.conf
/etc/fonts/conf.d/59-liberation-sans.conf
/etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf
/etc/fonts/conf.d/59-liberation-mono.conf
...
[root@localhost ~]# tar xzvf etc.tar.gz -C /root/etc
etc/
etc/fstab
etc/crypttab
etc/mtab
etc/fonts/
etc/fonts/conf.d/
etc/fonts/conf.d/65-0-madan.conf
etc/fonts/conf.d/59-liberation-sans.conf
etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf
etc/fonts/conf.d/59-liberation-mono.conf
etc/fonts/conf.d/66-sil-nuosu.conf
etc/fonts/conf.d/65-1-vlgothic-gothic.conf
etc/fonts/conf.d/65-0-lohit-bengali.conf
etc/fonts/conf.d/20-unhint-small-dejavu-sans.conf
...
2. grep命令
grep命令用于在文本中执行关键词搜索,并显示匹配的结果,格式为“grep [选项] [文件]”。grep命令的参数及其作用如表2-15所示。
-b 将可执行文件(binary)当作文本文件(text)来搜索
-c 仅显示找到的行数
-i 忽略大小写
-n 显示行号
-v 反向选择——仅列出没有“关键词”的行。
[root@localhost ~]# grep /sbin/nologin /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
3. find命令
find命令用于按照指定条件来查找文件,格式为“find [查找路径] 寻找条件 操作”。
-name 匹配名称
-perm 匹配权限(mode为完全匹配,-mode为包含即可)
-user 匹配所有者
-group 匹配所有组
-mtime -n +n 匹配修改内容的时间(-n指n天以内,+n指n天以前)
-atime -n +n 匹配访问文件的时间(-n指n天以内,+n指n天以前)
-ctime -n +n 匹配修改文件权限的时间(-n指n天以内,+n指n天以前)
-nouser 匹配无所有者的文件
-nogroup 匹配无所有组的文件
-newer f1 !f2 匹配比文件f1新但比f2旧的文件
--type b/d/c/p/l/f 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
-size 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)
-prune 忽略某个目录
-exec …… {}\; 后面可跟用于进一步处理搜索结果的命令
[root@localhost ~]# find /etc -name "host*" -print
/etc/avahi/hosts
/etc/host.conf
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/selinux/targeted/modules/active/modules/hostname.pp
/etc/hostname