1.Linux常用命令(二)
1.文件及目录操作相关命令
pwd 显示当前用户目录(Print Working Directory)
[root@aspen network-scripts]# pwd
/etc/sysconfig/network-scripts
cd 目录名 切换/进入目录(Change Directory)
[root@aspen lib64]# cd /usr/lib64/
[root@aspen lib64]# cd ~
[root@aspen ~]# cd -
/usr/lib64
tree 目录名 以树形模式显示目录结构
- -L 指定遍历目录的最大层数
- -d 只显示目录信息
[root@aspen ~]# tree -L 1 /
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var
19 directories, 0 files
[root@aspen ~]# tree -dL 1 /etc/sysconfig/
/etc/sysconfig/
├── cbq
├── console
├── modules
└── network-scripts
4 directories
ls 目录名 显示目录内容(list)
- -l 以长格式显示目录下信息(显示详细信息)
- -t 按照文件修改时间对输出结果进行排序(顺序:新->旧)
默认是按字母顺序排序(顺序:a->z) - -r 逆序输出结果
- -i 显示文件索引结点号(inode)
- -h 结果以人类可读形式显示
- -a 显示目录下的所有文件(包含隐藏文件)
- -d 只显示目录本身信息
[root@aspen ~]# ls -a ~
. .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc .lesshst .tcshrc
[root@aspen ~]# ls ~
anaconda-ks.cfg
[root@aspen ~]# ls -d ~
/root
[root@aspen ~]# ls -ihl ~
total 16K
33595848 -rw-r--r--. 1 root root 41 May 5 09:55 1.txt
33574978 -rw-------. 1 root root 1.5K Mar 20 09:36 anaconda-ks.cfg
51336048 drw-r-----. 3 root root 34 Apr 25 10:07 aspen
33576607 -rw-r--r--. 1 root root 504 Apr 11 16:51 inittab.bak
33593153 -rw-r--r--. 1 root root 75 May 8 16:31 passwd.txt
[root@aspen ~]# ls -lrt /tmp
total 4
-rw-------. 1 root root 0 Mar 20 09:32 yum.log
-rwx------. 1 root root 836 Mar 20 09:36 ks-script-z8idLP
drwx------. 2 root root 6 Mar 20 09:36 vmware-root_5916-960608111
drwx------. 2 root root 6 Mar 29 15:03 vmware-root_6092-994685407
ls -lrt 在实际工作中常用于查看目录下最近被修改过的文件
mkdir 目录名 创建目录(Make Directory )
mkdir默认一次只能创建一个目录
- -v 显示创建过程
- -p 递归创建目录(创建多层目录)
- -m设置新目录默认对应的权限
存在-p参数时,创建已存在目录名的目录时,不会提示错误
[root@aspen ~]# mkdir /aspen/a/b/c/d/e/f
mkdir: cannot create directory ‘/aspen/a/b/c/d/e/f’: No such file or directory #不能创建目录‘/aspen/a/b/c/d/e/f’:没有这样的文件或目录
[root@aspen ~]# mkdir -p /aspen/a/b/c/d/e/f /data
[root@aspen ~]# tree /aspen/ /data/
/aspen/
└── a
└── b
└── c
└── d
└── e
└── f
/data/
[root@aspen ~]# mkdir -m 640 ~/aspen
[root@aspen ~]# ls -l ~
total 4
-rw-------. 1 root root 1508 Mar 20 09:36 anaconda-ks.cfg
drw-r-----. 2 root root 6 Apr 11 14:21 aspen
touch 文件名 修改文件的时间戳(创建空文件)
可以同时创建多个文件
[root@aspen ~]# touch /{aspen/a/b/c/d/e/f,data}/han.txt
[root@aspen ~]# tree /aspen/ /data/
/aspen/
└── a
└── b
└── c
└── d
└── e
└── f
└── han.txt
/data/
└── han.txt
ln 源文件名 目的文件名 为文件创建硬链接
- -s 为文件创建软链接
无法针对目录或跨文件系统创建硬链接
[root@aspen ~]# ln passwd.txt ./passwd.txt.hardlink
[root@aspen ~]# ln -s passwd.txt ./passwd.txt.softlink
[root@aspen ~]# ll -ih ./passwd.txt*
33593153 -rw-r--r--. 2 root root 75 May 8 16:31 ./passwd.txt
33593153 -rw-r--r--. 2 root root 75 May 8 16:31 ./passwd.txt.hardlink
33617916 lrwxrwxrwx. 1 root root 10 May 13 13:58 ./passwd.txt.softlink -> passwd.txt
cp /源目录/源文件名 /目的目录/目的文件名 复制和备份文件(Copy)
cp命令默认无法复制目录
- -r 递归复制(复制目录及目录里面的内容)
- -p 复制的时候保持文件及目录属性不变
- -d 与软连接有关
cp -a == cp -pdr - -v 显示复制过程
- -t 调换命令源文件和目标文件的参数位置
[root@aspen ~]# cp /etc/ /aspen/ #复制
cp: omitting directory ‘/etc/’ #cp命令:忽略目录/etc
[root@aspen ~]# cp -r /etc/sysconfig/network-scripts/ /aspen/a/b/
[root@aspen ~]# ls /aspen/a/b
c network-scripts
[root@aspen c]# cp /aspen/a/b/network-scripts/ifcfg-eth0 /aspen/a/b/network-scripts/ifcfg-eth0.bak #备份
[root@aspen c]# ls /aspen/a/b/network-scripts/ifcfg-eth0*
/aspen/a/b/network-scripts/ifcfg-eth0 /aspen/a/b/network-scripts/ifcfg-eth0.bak
[root@aspen aspen]# ls ~/aspen/
Aspen.txt han
[root@aspen aspen]# cp -rt ~/aspen/ /etc/sysconfig/network-scripts/
[root@aspen aspen]# ls
Aspen.txt han network-scripts
mv /源目录/源文件名 /目的目录/目的文件名 移动目录或文件,重命名文件(Move)
可以同时移动多个文件,但最后一个参数永远标示目标位置
[root@aspen /]# mv /aspen/ /root/ #移动目录
[root@aspen /]# ls /root/
anaconda-ks.cfg aspen
[root@aspen /]# mv /aspen/ /root/
[root@aspen /]# ls /root/
anaconda-ks.cfg aspen
[root@aspen ~]# mv /root/aspen/a/b/network-scripts/ifcfg-eth0 /root/aspen/a/b/network-scripts/ifcfg-eth1 #重命名文件
[root@aspen ~]# ls /root/aspen/a/b/network-scripts/ifcfg-eth*
/root/aspen/a/b/network-scripts/ifcfg-eth0.bak /root/aspen/a/b/network-scripts/ifcfg-eth1
rm /目的文件 删除目标文件(Remove)
Linux系统下最危险的命令,没有之一
- -r 递归删除(用于删除目录;如果仅删除文件,不用使用该参数)
- -f 强制删除
-r和-f不用轻易的一起用,这样操作风险很大 - -i 删除命令执行前需要确认(-i与-f参数同时使用时,-i不生效)
[root@aspen ~]# rm -r /root/data/
rm: descend into directory ‘/root/data/’? y
rm: remove regular empty file ‘/root/data/han.txt’? y
rm: remove directory ‘/root/data/’? y
[root@aspen ~]# rm /root/aspen/
rm: cannot remove ‘/root/aspen/’: Is a directory #rm指令:不能删除‘/root/aspen/’:这是一个目录
[root@aspen ~]# rm -rf /root/aspen/
[root@aspen ~]# ls /root/
anaconda-ks.cfg
rename 原文件名 替换文件名 目标文件 批量重命名文件
经常与find命令搭配使用
[root@aspen han]# rename .sh .shell *.sh
[root@aspen han]# ls
aspen01.shell aspen02.shell aspen03.shell aspen04.shell aspen05.shell
file 文件名 查看文件的详细文件类型
[root@aspen 10.0.0.201]# file /usr/bin/ls ./bak-2019-05-10-5.tar.gz ./1.txt ./1.txt.sl /dev/urandom /dev/sr0 /dev/sda
/usr/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ceaf496f3aec08afced234f4f36330d3d13a657b, stripped
./bak-2019-05-10-5.tar.gz: gzip compressed data, from Unix, last modified: Fri May 10 21:48:01 2019
./1.txt: ASCII text
./1.txt.sl: symbolic link to `1.txt'
/dev/urandom: character special
/dev/sr0: block special
/dev/sda: block special
md5sum /绝对路径/文件名 计算文件的MD5校验和
- -c根据MD5校验文件,检查文件是否变动
校验命令家族:sha128sum;sha224sum;sha256sum;sha512sum; |
[root@aspen 10.0.0.201]# md5sum /backup/10.0.0.201/* >~/1.md5
[root@aspen 10.0.0.201]# cat ~/1.md5
e1d72ca53f869821e477424f0793cb4a /backup/10.0.0.201/1.txt
e1d72ca53f869821e477424f0793cb4a /backup/10.0.0.201/1.txt.hl
e1d72ca53f869821e477424f0793cb4a /backup/10.0.0.201/1.txt.sl
f4281114ffc2fa1cdb2fd4fa4e58c3ea /backup/10.0.0.201/bak-2019-05-10-5.tar.gz
68970c01823e13868e30e201a4ea95aa /backup/10.0.0.201/bak-2019-05-6-1.tar.gz
[root@aspen 10.0.0.201]# md5sum -c ~/1.md5
/backup/10.0.0.201/1.txt: OK
/backup/10.0.0.201/1.txt.hl: OK
/backup/10.0.0.201/1.txt.sl: OK
/backup/10.0.0.201/bak-2019-05-10-5.tar.gz: OK
/backup/10.0.0.201/bak-2019-05-6-1.tar.gz: OK
[root@aspen 10.0.0.201]# > ./1.txt
[root@aspen 10.0.0.201]# md5sum -c ~/1.md5
/backup/10.0.0.201/1.txt: FAILED
/backup/10.0.0.201/1.txt.hl: FAILED
/backup/10.0.0.201/1.txt.sl: FAILED
/backup/10.0.0.201/bak-2019-05-10-5.tar.gz: OK
/backup/10.0.0.201/bak-2019-05-6-1.tar.gz: OK
md5sum: WARNING: 3 computed checksums did NOT match
[root@aspen 10.0.0.201]# md5sum ./1.txt
d41d8cd98f00b204e9800998ecf8427e ./1.txt
2.查看内容文件及内容处理命令
vi/vim 文件名 进入vi/vim文本编辑器
Cent OS 7系统默认没有安装vim文本编辑器
- -o 同时打开多个文件,并水平分割视图
- -O 同时打开多个文件,并垂直分割视图
使用组合键ctrl+ww在多个文件间切换光标; - -r 根据临时文件恢复文件内容(实际工作中不建议恢复)
恢复文件后,要使用rm命令删除临时文件
vim具体使用方法,请参考初识vim文本编辑器
[root@aspen ~]# vim ~/aspen/Aspen.txt
Hello World
Welcome to Linux
[root@aspen ~]# cat ~/aspen/Aspen.txt
Hello World
Welcome to Linux
cat 文件名 显示文件内容
- -n 显示文件内容和行号
- -b 显示文件内容和行号(忽略空行)
- -A 显示文件行内容中隐藏符号
[root@aspen ~]# cat -n /etc/inittab
1 # inittab is no longer used when using systemd.
2 #
3 # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
4 #
5 # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
6 #
7 # systemd uses 'targets' instead of runlevels. By default, there are two main targets:
......
[root@aspen ~]# cat -b /root/inittab.bak
1 # inittab is no longer used when using systemd.
2 # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
3 # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
4 # systemd uses 'targets' instead of runlevels. By default, there are two main targets:
......
[root@aspen 10.0.0.201]# cat -A /root/inittab.bak
# inittab is no longer used when using systemd.$
$
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.$
$
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target$
$
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:$
......
cat命令的特殊用法-向文件追加多行内容
常用于从Windows主机复制内容到Linux系统文件中 |
[root@aspen aspen]# cat ./Aspen.txt
Hello World
Welcome to Linux
[root@aspen aspen]# cat >> ./Aspen.txt <<EOF
> I
> am
> studying
> Linux
> EOF
[root@aspen aspen]# cat Aspen.txt
Hello World
Welcome to Linux
I
am
studying
Linux
less 文件名 按页查看文件内容(适用于查看大文件)
- -N 显示行号
操作模式 f/空格 下翻一页 b 上翻一页 G 快速移至文件尾行 q 退出 |
more 文件名 按页查看文件内容(查看到文件尾行后,自动退出)
操作模式 f/空格 下翻一页 b 上翻一页 q 退出 |
[root@aspen ~]# less -N /etc/sysconfig/network-scripts/ifcfg-eth0
1 TYPE=Ethernet
2 PROXY_METHOD=none
3 BROWSER_ONLY=no
4 BOOTPROTO=none
5 DEFROUTE=yes
6 IPV4_FAILURE_FATAL=no
7 IPV6INIT=yes
8 IPV6_AUTOCONF=yes
9 IPV6_DEFROUTE=yes
10 IPV6_FAILURE_FATAL=no
11 IPV6_ADDR_GEN_MODE=stable-privacy
12 NAME=eth0
13 UUID=6b621622-b6a7-4a4d-84cc-a7daf1a94e81
14 DEVICE=eth0
15 ONBOOT=yes
16 IPADDR=10.0.0.201
17 PREFIX=24
18 GATEWAY=10.0.0.254
19 DNS1=223.5.5.5
20 IPV6_PRIVACY=no
/etc/sysconfig/network-scripts/ifcfg-eth0 (END)
head 文件名 显示文件前几行内容(默认前十行)
- -n 数字 == -数字 显示文件前n行内容(n=数字)
- -c 数字显示文件的前n个字符(n=数字)
[root@aspen ~]# head -5 /var/log/secure
Apr 8 10:33:01 oldboyedu60-Aspen sshd[7547]: pam_unix(sshd:session): session closed for user root
Apr 9 14:02:45 oldboyedu60-Aspen unix_chkpwd[8652]: password check failed for user (root)
Apr 9 14:02:45 oldboyedu60-Aspen login: pam_unix(login:auth): authentication failure; logname=LOGIN uid=0 euid=0 tty=tty1 ruser= rhost= user=root
Apr 9 14:02:45 oldboyedu60-Aspen login: pam_succeed_if(login:auth): requirement "uid >= 1000" not met by user "root"
Apr 9 14:02:47 oldboyedu60-Aspen login: FAILED LOGIN 1 FROM tty1 FOR root, Authentication failure
[root@aspen 10.0.0.201]# head -c 15 /var/log/messages
May 13 11:01:01[root@aspen 10.0.0.201]#
tail 文件名 显示文件后几行内容(默认后十行)
- -n 数字 == -数字 显示文件后n行内容(n=数字)
- -f 显示文件实时更新 等同于tailf命令
- -F 显示文件实时更新(如文件不存在,会不断进行重试)
使用-F或-f参数时,如果要指定显示行数,必须加上-n参数 |
[root@aspen ~]# tail -n 3 -f /var/log/secure
Apr 11 14:08:52 oldboyedu60-Aspen sshd[11097]: pam_unix(sshd:session): session closed for user root
Apr 11 14:09:06 oldboyedu60-Aspen sshd[11135]: Accepted password for root from 10.0.0.1 port 57227 ssh2
Apr 11 14:09:06 oldboyedu60-Aspen sshd[11135]: pam_unix(sshd:session): session opened for user root by (uid=0)
awk-行处理器
awk '{print $数字}' 取出指定列(默认按空格分割)
'BEGIN{print 数字1^数字2}' 表示输出‘数字1’的‘数字2’次方的计算结果
awk 'END{print $数字}' 表示awk处理文章最后一行内容后,按要求输出指定内容
$0表示按行输出内容
-F "符号" 指定分隔符
awk NR >=/<=/==数字 取出指定行 <=数字 取内容前指定行
>=数字 取指定行到结尾的内容
==数字 取指定行
>=数字&&<=数字或==数字,==数字 取指定范围行
|
[root@aspen ~]# awk -F":" '{print $1}' /etc/passwd | head -6
root
bin
daemon
adm
lp
sync
[root@aspen ~]# awk -F ":" 'END{print $1}' /etc/passwd
stu05
[root@aspen ~]# awk -F ":" 'END{print $0}' /etc/passwd
stu05:x:1006:1006::/home/stu05:/bin/bash
[root@aspen ~]# awk "NR==3,NR==6" /etc/passwd
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
sync:x:5:0:sync:/sbin:/bin/sync
[root@aspen ~]# awk "NR>=3&&NR<=6" /etc/passwd
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
sync:x:5:0:sync:/sbin:/bin/sync
[root@aspen ~]# ip address s eth0 | sed -n '3p' | awk -F "[ /]+" '{print $3}'
10.0.0.200
sed 's#被替换内容#替换内容#g' 文件名 流编辑器(全局替换,默认不修改文件内容)
- -i 修改文件内容
- -i.bak 备份源文件后,修改文件内容
- -n 取消默认输出
- '数字p' 重复输出指定行
$p 表示最后一行 |
- -r 反向引用
[root@aspen ~]# sed -i.bak 's#200#201#g' ip.txt
[root@aspen ~]# ls
anaconda-ks.cfg aspen ip.txt ip.txt.bak num.txt
[root@aspen ~]# cat ./ip.txt
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:c4:ff:80 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.201/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::7f33:52f3:3051:7cb9/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@aspen ~]# cat ./ip.txt.bak
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:c4:ff:80 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::7f33:52f3:3051:7cb9/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@aspen ~]# sed -n '3p' ip.txt | sed -r 's#^.* ([0-9.]+)\/.*#\1#g'
10.0.0.201
[root@aspen ~]# stat /etc/passwd | sed -n '4p'|sed -r 's#^.*\((.*)\/-.*#\1#g'
0644
[root@aspen ~]# stat /etc/passwd | sed -n '4p'| sed -r 's#^.*([0-9]{4}).*#\1#g'
0644
[root@aspen ~]# sed -n '$p' ip.txt
valid_lft forever preferred_lft forever
grep '关键字' 文件名 过滤文件中关键字内容,并用颜色显示出来
- -n 显示过滤结果并附上行号
- -v 过滤文件中与指定关键字无关的内容(按行取反)
- -i 过滤时候忽略大小写
- -o 仅显示匹配匹配行中匹配的内容;
- -w 精确匹配单词,单词的两边必须是非字符符号(即不能是字母数字或下划线)
- -A 数字 显示匹配行以及其下n行的信息
- -B 数字 显示匹配行以及其上n行的信息
- -C 数字 显示匹配行以及其上下各n行的信息
- -E == egrep 启用增强型grep,支持扩展正则表达式
[root@aspen aspen]# egrep -o '[a-Z]+' ./Aspen.txt | head -5
Hello
World
Welcome
to
Linux
[root@aspen aspen]# grep -vn '[a-z]' ./Aspen.txt
3:I
8:
11:
14:$$$$$$$$$$$
15:?////????$.$.$.$$$
[root@aspen aspen]# grep -n '[^a-z]' ./Aspen.txt
1:Hello World
2:Welcome to Linux
3:I
6:Linux
7:I study linux.
9:I like swim,basketball and chinese chess!
10:my qq is 54844637
12:not 548444637.
13:my god ,i am not apen,but Aspen!
14:$$$$$$$$$$$
15:?////????$.$.$.$$$
tr '被替换内容' '替换的内容' < 文件名 一对一替换文件中的字符
- -d '关键字符' 删除对应的字符
- -c 取反/排除
[root@aspen aspen]# tr -cd 'a-zA-Z0-9' < /dev/urandom | head -c 16 #设置随机密码
LgiYGzAAq5SNSZAD[root@aspen aspen]#
[root@aspen aspen]# tr 'a-z' 'A-Z' < ./Aspen.txt
HELLO WORLD
WELCOME TO LINUX
I
AM
STUDYING
LINUX
I STUDY LINUX.
I LIKE SWIM,BASKETBALL AND CHINESE CHESS!
MY QQ IS 54844637
NOT 548444637.
MY GOD ,I AM NOT APEN,BUT ASPEN!
$$$$$$$$$$$
?////????$.$.$.$$$
sort 文件名 对文件的文本内容排序(默认按首字符排序)
- -h 按人类可读形式排序
- -n 按照数字进行排序
- -r 逆序排序
- -t "分隔符" 指定分隔符(默认为空格)
- -k 数字 指定排序字段(第几列,或第几列第几字符排序)
举例:
-k 3 #按第3列排序
-k 3.1,3.1 #按第3列第1个字符排序
-k 4.1,4.3 #按第4列第1个字符至第3个字符排序
|
[root@aspen /]# du -sh /* | sort -rh
1.4G /usr
189M /var
95M /boot
32M /etc
7.7M /run
......
[root@Tech ~]# sort file.txt
a:4
b:3
c:2
d:1
e:5
f:11
[root@Tech ~]# sort -t ":" -k2 file.txt
d:1
f:11
c:2
b:3
a:4
e:5
[root@Tech ~]# sort -t ":" -k2 -n file.txt
d:1
c:2
b:3
a:4
e:5
f:11
uniq 文件名 去掉文件中相邻的重复行
uniq指令本身仅能去除文件中相邻的重复行,因此常与sort命令一起使用用于统计; |
-c 计数(统计重复次数)
[root@Tech ~]# uniq file.txt
abc
123
abc
123
[root@Tech ~]# sort file.txt | uniq
123
abc
[root@Tech ~]# sort file.txt | uniq -c
2 123
2 abc
cut 文件名 截取文件内容
- -d "分隔符" 指定截取分隔符
- -f 数字 截取指定列(如:-f3,6 截取第3列和第6列)
- -c 数字 截取指定字符(空格也占字符位)
在实际生产环境中,很少使用cut指令,截取列字段一般使用awk指令; |
[root@Tech ~]# cut -d " " -f 2,6 file.txt | cut -d "," -f 1,2
Young, hanyan***7
[root@Tech ~]# history | cut -c 8- | tail -5 | head -2
awk -F ":" '/root/{print $NF":"$2":"$3":"$4":"$5":"$6":"$1}' /etc/passwd
awk -F ":" '/^root/{print $NF":"$2":"$3":"$4":"$5":"$6":"$1}' /etc/passwd
wc 文件名 统计文件的行数、单词数或字节数
wc指令不能直接对目录使用,可以用于文件; |
- -l 只显示行数
- -w 只显单词数
- -c 只显字节数
[root@aspen ~]# wc /var/log/messages
9 104 755 /var/log/messages
[root@aspen ~]# wc -l /var/log/messages
10 /var/log/messages
[root@aspen ~]# wc -w /var/log/messages
104 /var/log/messages
[root@aspen ~]# wc -c /var/log/messages
755 /var/log/messages
diff 文件1 文件2 比较文件的内容差异
vimdiff 文件1 文件2 命令行可视化文件比较工具
[root@aspen ~]# diff ip.txt ip.txt.bak
3c3
< inet 10.0.0.200/24 brd 10.0.0.255 scope global eth0
---
> inet 10.0.0.201/24 brd 10.0.0.255 scope global eth0
[root@aspen ~]# vimdiff ip.txt ip.txt.bak
2 files to edit
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 150| 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 150
link/ether 00:0c:29:87:2f:f5 brd ff:ff:ff:ff:f| link/ether 00:0c:29:87:2f:f5 brd ff:ff:ff:ff:f
inet 10.0.0.200/24 brd 10.0.0.255 scope global| inet 10.0.0.201/24 brd 10.0.0.255 scope global
valid_lft forever preferred_lft forever | valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe87:2ff5/64 scope link | inet6 fe80::20c:29ff:fe87:2ff5/64 scope link
valid_lft forever preferred_lft forever | valid_lft forever preferred_lft forever
3.文件压缩及解压缩命令
tar 压缩包名称 目标文件/文件夹 将指定文件/文件夹打包
- -z 通过gzip工具进行压缩
- -j 通过bzip或bzip2工具进行压缩
- -c 创建包
- -x 解压缩(默认解压到当前目录)
- -t 列出压缩包内容
- -v 显示压缩过程
- -C 目录 指定解压路径
- -P使用绝对路径创建压缩包
压缩/解压缩不加-P,命令会自动把文件路径首个‘/’去掉变为相对路径 |
- -f 指定压缩包名称
-f 参数一般放在参数末位,防止报错
压缩一般用zcf参数 解压缩一般用xf参数 查看压缩包一般用tf参数 |
- -h打包软链接对应的源文件
- --exclude 文件/目录 创建压缩包时,排除某个文件/目录
[root@aspen aspen]# tar -zcf ./network-bak.tar.gz /etc/sysconfig/network-scripts/ --exclude /etc/sysconfig/network-scripts/ifcfg-eth0
tar: Removing leading `/' from member names
[root@aspen aspen]# ls
Aspen.txt han network-bak.tar.gz
[root@aspen aspen]# tar -xf ./network-bak.tar.gz etc/sysconfig/network-scripts/ifcfg-lo
[root@aspen aspen]# ls
Aspen.txt etc han network-bak.tar.gz
[root@aspen aspen]# tree ./etc/
./etc/
└── sysconfig
└── network-scripts
└── ifcfg-lo
[root@aspen aspen]# tar xf ./network-bak.tar.gz -C /tmp/
[root@aspen aspen]# ls /tmp/etc/sysconfig/
network-scripts
4.搜索文件命令
which 命令 查询命令的别名及绝对路径
[root@aspen aspen]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@aspen aspen]# \which ls
/usr/bin/ls
whereis 命令 查询命令的及其相关文件的绝对路径
- -b 仅显示命令的绝对路径,不显示相关文件;
[root@aspen aspen]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
type 命令 查询命令的相关信息
which和whereis 指令无法查询到内核相关的一些命令;查找内核相关命令时,需使用type指令。 |
- -a 显示命令的绝对路径
[root@Tech ~]# whereis for
for:
[root@Tech ~]# which for
/usr/bin/which: no for in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@Tech ~]# type for
for is a shell keyword
[root@Tech ~]# type ls
ls is aliased to `ls --color=auto'
[root@Tech ~]# type -a ls
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls
locate 从数据库 (/var/lib/mlocate/mlocate.db) 查找命令,使用updatedb更新库(不推荐使用)
Cent OS 7中默认没有安装该命令,需使用 yum install -y mlocate 指令进行安装 |
[root@Tech ~]# updatedb
[root@Tech ~]# locate ls| head -5
/boot/grub2/i386-pc/blscfg.mod
/boot/grub2/i386-pc/cbls.mod
/boot/grub2/i386-pc/command.lst
/boot/grub2/i386-pc/crypto.lst
/boot/grub2/i386-pc/fs.lst
find 搜索路径 在指定路径下搜索文件
- -maxdepth 数字 指定搜索的最大深度
maxdepth 参数要放到其他参数之前,否则会有警告 |
- -type 文件类型 指定搜索文件的类型
f 普通文件 d 目录 l 软链接 p 管道文件 c 字符设备 b 块设备 |
- -name "文件名" 指定搜索文件的名字
- -iname "文件名" 指定搜索文件的名字(忽略大小写)
- -size +/- 容量 指定搜索文件的大小范围(容量仅支持整数,不支持小数)
- -mtime '+/- 天数' 指定搜索文件修改时间
+表示几天以前 -表示最近几天内 |
-
-inum inode号码 指定索引文件的索引结点号
-
-samefile 文件名指定搜索与目标文件索引结点号一致的文件
-
-exec 命令 {} \; 将搜索到的文件执行指定命令操作
exec参数后面不支持别名 |
[root@aspen aspen]# find /etc/ -type f -iname 'ifcfg*' -exec ls -lh {} \;
-rw-r--r--. 1 root root 254 Aug 24 2018 /etc/sysconfig/network-scripts/ifcfg-lo
-rw-r--r--. 1 root root 356 May 13 09:24 /etc/sysconfig/network-scripts/ifcfg-eth0
[root@aspen aspen]# find /var/log/ -maxdepth 1 -type f -size +100k -exec cp -t /tmp {} \;
[root@aspen aspen]# ls /tmp
dmesg dmesg.old etc lastlog messages messages-20190418 vmware-root_6327-1681724229 vmware-root_6482-734103686
[root@aspen aspen]# find /etc/ -type f -size +1M -exec tar zcf /opt/etc-big.tar.gz {} +;
tar: Removing leading `/' from member names
[root@aspen aspen]# tar tf /opt/etc-big.tar.gz
etc/selinux/targeted/active/policy.kern
etc/selinux/targeted/contexts/files/file_contexts.bin
etc/selinux/targeted/policy/policy.31
etc/udev/hwdb.bin
Linux命令要养成操作前备份,操作后检查的好习惯
未完待续...