cut 命令:提取文件中指定的字段(列)、字符内容。单词的默认分隔符为空格。
cut [选项]... [文件]...
选项:
-b 按照字节切
-c 按照字符切
-d 指定分割符
-f 指定以分割符分割的哪个字段
head -5 /etc/passwd > /tmp/pass 将passwd文件中的前5行覆盖写入/tmp/pass文件中
cat /tmp/pass 显示/tmp/pass的全文内容
cut -d : -f 6 /tmp/pass 显示/tmp/pass文件中以:分隔的第6列的内容,家目录内容
cut -d : -f 1,7 /tmp/pass 显示/tmp/passwd文件中的第1列(用户名)和第7列(shell解释器)的内容
cut -d : -f 1,4-7 /tmp/pass 取1 4 5 6 7列
cut -d : -f -3 /tmp/pass 取第1列至第3列
cut -d : -f 3- /tmp/pass 取第3列至最后一列
cut -c 1-3 /tmp/pass 取每行的前3个字符
sort 排序(升序、降序)
-n, --numeric-sort 根据数值比较,默认是按单个字符来比较
-r, --reverse 逆序输出排序结果
-t 指定分割符
-k 排序键(即排序的列字段)
-u 去掉重复行
准备阶段:用cat命令创建一个a.txt文件。
说明:以下是用cat命令将EOF...EOF之间的内容覆盖写入(>)到a.txt文件中
cat > a.txt <
root:1:0:bin
bin:2:200:bash
jim:10:300:bash
tom:102:10:bash
EOF
查看a.txt文件内容:cat a.txt
sort a.txt //默认顺序排序(按第1列排升序)
bin:2:200:bash
jim:10:300:bash
root:1:0:bin
tom:102:10:bash
sort -r a.txt //逆序输出排序结果(按第1列排降序)
tom:102:10:bash
root:1:0:bin
jim:10:300:bash
bin:2:200:bash
sort -t : -k 2 a.txt //按:分割开的以第2部分的第一个字符排序
tom:102:10:bash
jim:10:300:bash
root:1:0:bin
bin:2:200:bash
sort -t : -k 2 -n a.txt //按:分割开的以第2列的数值大小排序(用得最多)
root:1:0:bin
bin:2:200:bash
jim:10:300:bash
tom:102:10:bash
sort -t : -k 1.2 a.txt 按:分割开的以第1列的第2个字符排序
bin:2:200:bash
jim:10:300:bash
root:1:0:bin
tom:102:10:bash
将/etc/passwd 文件中第3列按数值大小排降序
sort -n -r -t : -k 3 /etc/passwd
# echo "bin:2:200:bash" >> a.txt 将echo命令后的文本追加到a.txt文件中
# cat a.txt 显示a.txt全文内容
root:1:0:bin
bin:2:200:bash
jim:10:300:bash
tom:102:10:bash
bin:2:200:bash
# sort a.txt 将a.txt排序输出
bin:2:200:bash
bin:2:200:bash
jim:10:300:bash
root:1:0:bin
tom:102:10:bash
# sort -u a.txt 去掉重复行
bin:2:200:bash
jim:10:300:bash
root:1:0:bin
tom:102:10:bash
1.查看/etc/passwd文件的前2行内容。然后取出本系统中所有的用户名、uid、用户的shell信息将结果保存在/tmp/users.txt文件中?最后用cat查看users.txt文件。
head -2 /etc/passwd 查看前2行
cut -d : -f 1,3,7 /etc/passwd > /tmp/users.txt
cat /tmp/users.txt
说明:-d 指定分隔符,-f 指定字段(即列)
2.统计系统中有多少个用户?
whatis wc 显示命令功能简介
wc /etc/passwd 统计passwd文件中的行数、单词数、字符数
wc -l /etc/passwd 统计行数,即用户数量(每行一个用户账号)
说明:wc是统计单词数量、行数、字符数。-l 是统计行数,-c是统计字符数,-w显示单词计数
3.显示/根目录下的文名件名列表,然后统计根目录下的文件数量?
ls / 显示根目录下的文件名列表
ls / | wc -l 将ls /命令结果用wc -l进行统计
说明:|是管道符,作用是将左边命令的结果传给右边的命令继续处理。
4.统计系统现在有多少个进程?
ps -elf | wc -l
wc 统计行数 单词数 字节数
wc /etc/passwd
-l 统计行数
wc -l a.txt
-c 统计字节数
wc -c /etc/passwd
-w 统计单词数
wc -w /etc/passwd
-m 统计字符数
wc -m /etc/passwd
统计/bin目录下有多少个命令
ls /bin | wc -l
uniq 合并连续重复的行
-u 只显示没有连续重复的行
-c 统计连续重复行的次数
-d 只显示连续重复行一次,哪一行连续重复了就显示哪行
-i 忽略大小写
# cat > a.txt <
jim tom root
aa bb cc
aa bb cc
jim
aa bb cc
tom
tom abc
tom
tom abc
EOF
# uniq -c a.txt 统计连续出现的次数
1 jim tom root
2 aa bb cc
1 jim
1 aa bb cc
1 tom
1 tom abc
1 tom
1 tom abc
# sort a.txt|uniq -c 请跟上一条命令的结果对比
# uniq a.txt 对a.txt文件中连续重复的行只显示一次
jim tom root
aa bb cc
jim
aa bb cc
tom
tom abc
tom
tom abc
# uniq -u a.txt 不显示连续重复的行
jim tom root
jim
aa bb cc
tom
tom abc
tom
tom abc
# uniq -d a.txt 仅显示连续出现的内容一次
aa bb cc
显示连续重复、未重复的内容,都只显示一次
sort a.txt | uniq
sort a.txt | uniq -c 同上,并统计次数,结果如下
3 aa bb cc
1 jim
1 jim tom root
2 tom
2 tom abc
显示没有重复的行
sort a.txt | uniq -u
jim
jim tom root
diff 文件差异的对比
diff 文件1 文件2
准备要比较差异的文件:
head -3 /etc/passwd > /tmp/pas3
head -5 /etc/passwd > /tmp/pas5
vimdiff比较两个文件的差异,不同涂红色
cd /tmp 切换到/tmp目录
vimdiff pas3 pas5 说明: 用:q退出
注:在vimdiff中可以按i键进入vim的编辑模式修改文件内容。按Esc键退出编辑模式,用:wq保存并退出vim编辑器。(用ctrl+w+w在窗口之间切换)
安装patch软件:rpm -ivh /dvd/Packages/patch-2.7.1-8.el7.x86_64.rpm
yum install -y patch
patch 打补丁
用法:patch 原文件 补丁文件
实例:35.patch和53.patch补丁文件是diff命令练习生成的。
cd /tmp
patch pas3 35.patch 给pas3文件打补丁,提示如下
patching file pas3
cat -n pas3 读pas3文件并显示行号,发现文件中多了2行内容
patch pas3 53.patch 给pas3文件打补丁,提示如下
cat pas3 发现文件中少了2行内容
whatis 查看命令的描述信息
例:whatis whatis
whatis pwd
whatis useradd
whatis which
whatis whereis
which 查看二进制命令的绝对路径、别名
# which ls
alias ls='ls --color=auto'
/usr/bin/ls
alias 查看或定义命令别名(即快捷键)
alias 查看现有的命令别名
alias h3='head -3' 临时定义head -3命令的别名为h3
h3 /etc/passwd 用h3命令别名查看/etc/passwd文件内容
unalias h3 取消h3别名
注:命令别名可以写到/etc/bashrc、/etc/profile、/etc/rc.d/rc.local等环境配置文件。
whereis 根据关键字搜索binary二进制(即命令)、源文件、man手册
stat命令:查看文件的状态信息(即详细属性),包括文件的路径、大小、访问时间(atime)、修改时间(mtime)、属性修改时间(ctime)、索引号(inode)等属性。
实例:
stat /etc/passwd
Access (最近访问atime)文件最后一次被访问的时间(cat、head查看文件内容)
Modify (最近更改mtime)文件最后一次被修改内容的时间(用vim修改文件内容)
Change (最近改动ctime)文件最后一次被修改过属性的时间(chmod、chown改文件权限、属性)
updatedb //手动更新查找数据库
说明:安装新软件,创建的新文件,必须updatedb后,才能用locate命令查到。
------------------------------------
locate 搜索
命令格式:locate 关键字
特点:
a.可以模糊匹配
b.快速查找
c.基于数据库
说明:必须安装mlocate软件才能使用locate命令。
实例:locate hosts.allow 查找tcpwraper防火墙白名单文件
locate ifcfg-e 查找网卡配置文件及其相关的文件
使用通配符需要把通配符的内容用引号引起来
"*.conf"
scp命令:
功能:用于远程发送、下载文件。
用法:scp -rv 源 目标
发文件给对方:scp /etc/hosts [email protected]:/opt/
从对方电脑下载文件:scp [email protected]:/etc/hosts /tmp/
注:[email protected]中的root是对方电脑的用户账号,@后面是ip地址。
find语法:
find 路径 选项 动作
find 查询的路径 查询的条件 条件相关的参数 动作
路径
不指定路径 默认查找当前目录的文件 在查找的时候是递归查找(目录及其子目录下查找)
动作
对find找到的文件执行指定的操作,可以是复制、删除等
选项(蓝字为常用选项)
选项的作用:定义以名称、类型、大小、时间、权限、用户、组等各种条件来查找。
-name 文件名 //按文件名查找,实例如下
find /etc -name host* 在/etc目录下查找名称以host开头的所有文件
find / -name *.conf 在/根目录下查找名称以.conf结尾的所有文件
-iname 文件名 //按文件名查找 不区分大小写
find /etc -iname HOST*
-size 大小[cwbkMG] //按文件大小查找
+3G 大于3G的文件
-3G 小于3G的文件
3G 等于3G的文件
find / -size +3G //在根目录下查找文件大于3G的文件
find /boot -size +10M //在/boot目录下查找文件大于10M的文件
多条件查找 逻辑表达式
expr1 -and expr2 逻辑与 -and == -a
expr1 -or expr2 逻辑或 -or == -o
!expr 取反
-not expr 不是
文件大小大于3G且小于4G的文件
find / -size +3G -a -size -4G
-amin 访问时间 //min 分钟
-atime 访问时间 //time 天数
-cmin 改动时间
-ctime 改动时间
-mmin 修改时间
-mtime 修改时间
find / -atime 2
n 2 在2天之前的“一天之内”被访问过的文件
+n +2 列出2天之前被访问过的文件
-n -2 列出2天之内被访问过的文件
-perm
find / -perm -4000 查找文件权限设置了suid的文件
find / -perm -2000 查找文件权限设置了sgid的文件
find / -perm 0755 查找权限等于0755的文件
-type 根据文件类型查找
d 目录(即文件夹)
f 普通文件,即word文档、txt文本文档、jpg图片、mp3音乐、avi视频。find /etc -type f
b 块设备文件,即硬盘、u盘、硬盘分区,例:find /dev -type b
c 字符设备文件,即终端tty,例:find /dev -type c
p 管道文件
l 符号链接(也称软链接),即快捷方式,例:find / -type l
s 套接字,ip+port。例:find / -type s
find /etc -type d 在/etc目录下查找类型为d目录的文件
find / -type c -a -user root 在/根目录下查找类型为c且属主为root的文件
-gid 用户的gid //文件的所属组
-group 用户组名 //文件的所属组
-uid 用户的uid //文件的所有者
-user 用户的名字 //文件的所有者
-inum inode号 //查找指定inode号是多少的文件,inode是文件的索引号,显示索引号ls -li /etc/hosts
find / -uid 1000 在根目录下查找uid(属主)为1000的文件
find / -inum 16777341
动作:对查找到的文件做额外的操作(可以cp复制、mv移动、rm删除、ls -l等)
[-exec | -ok 要操作的命令 {} \;] //非交互式 或 交互式
[ | xargs -i 动作 ] //非交互式的 -i支持使用{}
解释:{}代表用find命令找到的文件,\;是动作的结束符号
-exec 操作时无提示
-ok 操作是有提示
要操作的命令
ls -l {} \;
cp -rv {} /tmp/ \;
例:find /etc -name host* -exec ls -ld {} \; 在/etc目录下查找host*文件,将找到的文件用ls -ld查看属性
find /etc -name host* -exec cp -rv {} /tmp/ \; 将找到的文件复制到/tmp目录中
例:仅在/etc目录下查找类型为d(即目录)的文件,不在其子目录中查找。
find /etc -maxdepth 1 -type d 注:-maxdepth指定最大查找深度
tr 替换字符 被替换的字符与替换的字符数必须是相等的
用法:tr 旧字符 新字符
# cat > a.txt <
root:1:0:bin
bin:2:200:bash
jim:10:300:bash
tom:102:10:bash
bin:2:200:bash
EOF
# cat a.txt | tr 20 89 将cat a.txt结果中的20替换成89。
root:1:9:bin
bin:8:899:bash
jim:19:399:bash
tom:198:19:bash
bin:8:899:bash
# cat a.txt | tr "a-z" "A-Z" 在替换的时候是一一对应的替换
ROOT:1:0:BIN
BIN:2:200:BASH
JIM:10:300:BASH
TOM:102:10:BASH
BIN:2:200:BASH
# cat a.txt | tr 0-4 5-9
root:6:5:bin
bin:7:755:bash
jim:65:855:bash
tom:657:65:bash
bin:7:755:bash
\n 换行符
# cat a.txt | tr "\n" "+" 将换行符换成+号
root:1:0:bin+bin:2:200:bash+jim:10:300:bash+tom:102:10:bash+bin:2:200:bash+
# cat a.txt | tr -s "o0" 把连续重复的字符替换成一个字符
rot:1:0:bin
bin:2:20:bash
jim:10:30:bash
tom:102:10:bash
bin:2:20:bash
# cat a.txt | tr -s "\n" 去掉空白行
tar包管理:
作用:实现将文件或目录进行打包压缩、解包解压缩。
windows的压缩软件:WinRaR、好压haozip、360压缩等
为何要压缩?
1、节省空间
2、方便在网络上传输
打包压缩:tar -czvf 包名.tar.gz 要打包的文件
例:tar -czvf etc.tar.gz /etc
du -hs /etc etc.tar.gz 统计文件大小(disk use)
解释:
tar后面的-c是打包(create),z是采用gzip压缩,v显示过程,f是指定包文件名。
du后的-h是显示容量单位,-s是sum统计总大小(通常用于目录)
解包解压缩:tar -xvf 包名.tar.gz -C 解压到的目录
例:tar -xvf etc.tar.gz -C /opt/
ls /opt 显示/opt目录中的文件名列表
rm -rfv /opt/etc 强制删除/opt目录下的etc目录
解释:tar后面的-x是解包解压。
rm是删除文件,-r是递归删除目录,-f强制(即不提示yes/no),-v显示过程。
tar:可以实现打包并压缩,解包解压缩这两种功能。
查看帮助:tar --help | more
tar打包并压缩:tar -czvf etc.tar.gz /etc
说明:-c是打包 -z是用gzip压缩 -v显示过程 -f是指定压缩包文件包 -j是用bzip2压缩
tar解包解压缩:tar -xzvf etc.tar.gz -C /tmp/
说明:-x是解包 -C是指定解压到的目录
查看tar包中的文件列表:tar -tf etc.tar.gz
往tar包中添加新文件、删除文件:
tar -cvf host.tar /etc/host* 打包
tar -tf host.tar 查看tar包中的文件列表
tar -rvf host.tar /etc/passwd /etc/group 往tar包中追加passwd、group文件
tar -vf host.tar --delete etc/host* 从tar包中删除host*文件