Linux-文件管理-文件操作命令02

2019-07-29  本文已影响0人  徐弱西

1.mv 移动和重命名文件

选项:
-i 提示文件应经存在,是否覆盖(系统自带别名)
-f 强制覆盖,不提示
-t 把源文件和目标文件位置进行替换移动

[root@oldboyedu ~]# mv  1.txt /opt/
[root@oldboyedu ~]# ll /opt/
-rw-r--r--. 1 root root       12 Jun 21 11:45 1.txt

[root@oldboyedu ~]# mv  oldboy/  /opt/
[root@oldboyedu ~]# ll /opt/
-rw-r--r--. 1 root root       12 Jun 21 11:45 1.txt
drwxr-xr-x. 2 root root        6 Jun 22 09:47 oldboy

[root@oldboyedu ~]# mv 1.txt   /opt/
mv: overwrite ‘/opt/1.txt’? n   
[root@oldboyedu ~]# \mv 1.txt   /opt/
[root@oldboyedu ~]# mv  -f  1.txt   /opt/
[root@oldboyedu ~]# /usr/bin/mv  1.txt  /opt/

[root@oldboyedu ~]# mv 1.txt   /opt/oldboy.txt
[root@oldboyedu ~]# ll /opt/
-rw-r--r--. 1 root root        0 Jun 22 09:53 1.txt
drwxr-xr-x. 2 root root        6 Jun 22 09:47 oldboy
-rw-r--r--. 1 root root       14 Jun 21 12:12 oldboy.txt

[root@oldboyedu ~]# mv  -t  ./   /opt/oldboy.txt 
[root@oldboyedu ~]# ll
-rw-r--r--. 1 root root       14 Jun 21 12:12 oldboy.txt

2.rm 删除文件

-i 提示是否要删除文件(系统自带别名)
-f 强制删除
-r 递归删除,删除目录

[root@oldboyedu ~]# rm  123
rm: remove regular file ‘123’? n
[root@oldboyedu ~]# rm -f 123
[root@oldboyedu ~]# ll
total 57472
-rw-r--r--. 1 root root    13712 Jun 21 16:19 456
-rw-r--r--. 1 root root 58817074 Sep 21  2017 access.log
-rw-r--r--. 1 root root     2443 Jun 21 16:26 baidu.html
-rw-r--r--. 1 root root       20 Jun 21 16:43 file.txt
-rw-r--r--. 1 root root       14 Jun 21 12:12 oldboy.txt
-rw-r--r--. 1 root root      199 Jun 21 16:46 sort.log
[root@oldboyedu ~]# mv /opt/oldboy/  ./
[root@oldboyedu ~]# 
[root@oldboyedu ~]# 
[root@oldboyedu ~]# ll
total 57472
-rw-r--r--. 1 root root    13712 Jun 21 16:19 456
-rw-r--r--. 1 root root 58817074 Sep 21  2017 access.log
-rw-r--r--. 1 root root     2443 Jun 21 16:26 baidu.html
-rw-r--r--. 1 root root       20 Jun 21 16:43 file.txt
drwxr-xr-x. 2 root root        6 Jun 22 09:47 oldboy
-rw-r--r--. 1 root root       14 Jun 21 12:12 oldboy.txt
-rw-r--r--. 1 root root      199 Jun 21 16:46 sort.log
[root@oldboyedu ~]# rm -f  oldboy
rm: cannot remove ‘oldboy’: Is a directory
[root@oldboyedu ~]# rm -rf  oldboy
[root@oldboyedu ~]# ll
total 57472
-rw-r--r--. 1 root root    13712 Jun 21 16:19 456
-rw-r--r--. 1 root root 58817074 Sep 21  2017 access.log
-rw-r--r--. 1 root root     2443 Jun 21 16:26 baidu.html
-rw-r--r--. 1 root root       20 Jun 21 16:43 file.txt
-rw-r--r--. 1 root root       14 Jun 21 12:12 oldboy.txt
-rw-r--r--. 1 root root      199 Jun 21 16:46 sort.log
[root@oldboyedu ~]# rm -rf /*^C
[root@oldboyedu ~]# rm -rf ./*^C
[root@oldboyedu ~]# cd /
[root@oldboyedu /]# rm -rf ./*^C 
[root@oldboyedu /]# cd
[root@oldboyedu ~]# rm -rf ./ *^C
-------给rm命令设置一个别名-------
[root@oldboyedu ~]# alias   rm='echo  rm bny'
[root@oldboyedu ~]# alias 
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='echo  rm bny'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@oldboyedu ~]# rm -f  456 
rm bny -f 456
[root@oldboyedu ~]# \rm -f  456 
[root@oldboyedu ~]# ll
total 57456
-rw-r--r--. 1 root root 58817074 Sep 21  2017 access.log
-rw-r--r--. 1 root root     2443 Jun 21 16:26 baidu.html
-rw-r--r--. 1 root root       20 Jun 21 16:43 file.txt
-rw-r--r--. 1 root root       14 Jun 21 12:12 oldboy.txt
-rw-r--r--. 1 root root      199 Jun 21 16:46 sort.log

查看文件内容命令

3.cat 查看文件的内容,会将文件的所有内容显示到屏幕上面。

-n  给显示出来的内容加上行号
-A  给显示出来的内容,每行的结尾加上一个标识符,主要用来区别空格和tab键
>   标准输出重定向,将目标文件的内容清空,再将输出结果追加到目标文件
>>  标准输出追加重定向,将输出结果追加到目标文件的结尾,不会清空源文件内容
[root@oldboyedu ~]# cat file.txt 
abc
123
abc
123
def
[root@oldboyedu ~]# cat -n  file.txt
     1  abc
     2  123
     3  abc
     4  123
     5  def
[root@oldboyedu ~]# cat -A  file.txt
abc$
123$
abc$
123$
def$
[root@oldboyedu ~]# vi file.txt
[root@oldboyedu ~]# 
[root@oldboyedu ~]# 
[root@oldboyedu ~]# cat -A  file.txt
abc $
123^I$
abc$
123$
def$
[root@oldboyedu ~]# cat file.txt
abc 
123 
abc
123
def
[root@oldboyedu ~]# 
[root@oldboyedu ~]# cat file.txt >file1.txt
[root@oldboyedu ~]# cat file1.txt
abc 
123 
abc
123
def
[root@oldboyedu ~]# cat file.txt >file1.txt
[root@oldboyedu ~]# cat file1.txt
abc 
123 
abc
123
def
[root@oldboyedu ~]# cat file.txt >>file1.txt
[root@oldboyedu ~]# cat file1.txt
abc 
123 
abc
123
def
abc 
123 
abc
123
def
[root@oldboyedu ~]# ll
total 57460
-rw-r--r--. 1 root root 58817074 Sep 21  2017 access.log
-rw-r--r--. 1 root root     2443 Jun 21 16:26 baidu.html
-rw-r--r--. 1 root root       44 Jun 22 10:19 file1.txt
-rw-r--r--. 1 root root       22 Jun 22 10:15 file.txt
-rw-r--r--. 1 root root       14 Jun 21 12:12 oldboy.txt
-rw-r--r--. 1 root root      199 Jun 21 16:46 sort.log
[root@oldboyedu ~]# cat file.txt   oldboy.txt 
abc 
123 
abc
123
def
kasjdhaksjdhs
[root@oldboyedu ~]# cat file.txt   oldboy.txt >file2.txt
[root@oldboyedu ~]# cat file2.txt
abc 
123 
abc
123
def
kasjdhaksjdhs
[root@oldboyedu ~]# cat oldboy.txt 
kasjdhaksjdhs
[root@oldboyedu ~]# 

[root@oldboyedu ~]# cat >>file3.txt<<EOF
> oldboy
> oldgirl
> shanghai
> EOF
[root@oldboyedu ~]# cat file3.txt 
oldboy
oldgirl
shanghai
[root@oldboyedu ~]# cat >>file4.txt<<EOF
> oldboy
> oldgirl
> shanghai
> EOF
[root@oldboyedu ~]# cat file4.txt 
oldboy
oldgirl
shanghai
[root@oldboyedu ~]# cat >>file4.txt<<EOF
> oldboy
> oldgirl
> shanghai
> EOF
[root@oldboyedu ~]# 
[root@oldboyedu ~]# 
[root@oldboyedu ~]# cat file4.txt 
oldboy
oldgirl
shanghai
oldboy
oldgirl
shanghai
[root@oldboyedu ~]# cat >file4.txt<<EOF
> oldboy
> oldgirl
> shanghai
> EOF
[root@oldboyedu ~]# 
[root@oldboyedu ~]# 
[root@oldboyedu ~]# cat file4.txt 
oldboy
oldgirl
shanghai

4.tac倒着显示文件内容,按行为单位。

cat反着写...


5.more 分页显示文件内容

空格或f: 向下翻页
b : 向上翻页
/ : 搜索关键字,并不会高亮显示
=: 显示当前光标所在行
q: 退出
-N(数字): 每页显示几行
+N(数字): 从第几行开始显示
显示完文件内容,会自动退出。手动按q退出后,不会缩回文件内容。

6.less 分页显示文件内容

空格或f  向下翻页
b        向上翻页
/        搜索关键字,会高亮显示
q        退出
-N       给显示出来的内容加上行号

显示完文件内容,不会自动退出。 按q退出后,会缩回文件内容。


7.head 显示文件内容的头部信息,默认显示前十行内容。

-nN(数字) 取消默认输出,可以简写,-5
-cN(数字) 显示文件的前几个字符

[root@oldboyedu ~]# head  services 
# /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
#
# Network services, Internet style
# IANA services version: last updated 2013-04-10
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports
[root@oldboyedu ~]# head  -n5  services 
# /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
#
# Network services, Internet style
# IANA services version: last updated 2013-04-10
[root@oldboyedu ~]# head  -5  services 
# /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
#
# Network services, Internet style
# IANA services version: last updated 2013-04-10
[root@oldboyedu ~]# head  -20  services
# /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
#
# Network services, Internet style
# IANA services version: last updated 2013-04-10
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports
# are included, only the more common ones.
#
# The latest IANA port assignments can be gotten from
#       http://www.iana.org/assignments/port-numbers
# The Well Known Ports are those from 0 through 1023.
# The Registered Ports are those from 1024 through 49151
# The Dynamic and/or Private Ports are those from 49152 through 65535
#
# Each line describes one service, and is of the form:
#

[root@oldboyedu ~]# head  -c 5  services 
# /et[root@oldboyedu ~]# 

8.tail显示文件内容的尾部,默认显示最后十行内容

-nN(数字) 取消默认输出,可以简写,-5
-cN(数字) 显示文件的最后几个字符,默认最后有个换行符
-f 实时查看文件内容的更新,当文件不存在时,会报错退出,等同于tailf命令
-F 实时查看文件内容的更新,当文件不存在时,会一直的尝试。

[root@oldboyedu ~]# tail  services 
3gpp-cbsp       48049/tcp               # 3GPP Cell Broadcast Service Protocol
isnetserv       48128/tcp               # Image Systems Network Services
isnetserv       48128/udp               # Image Systems Network Services
blp5            48129/tcp               # Bloomberg locator
blp5            48129/udp               # Bloomberg locator
com-bardac-dw   48556/tcp               # com-bardac-dw
com-bardac-dw   48556/udp               # com-bardac-dw
iqobject        48619/tcp               # iqobject
iqobject        48619/udp               # iqobject
matahari        49000/tcp               # Matahari Broker
[root@oldboyedu ~]# tail -n5 services
com-bardac-dw   48556/tcp               # com-bardac-dw
com-bardac-dw   48556/udp               # com-bardac-dw
iqobject        48619/tcp               # iqobject
iqobject        48619/udp               # iqobject
matahari        49000/tcp               # Matahari Broker
[root@oldboyedu ~]# tail -5 services
com-bardac-dw   48556/tcp               # com-bardac-dw
com-bardac-dw   48556/udp               # com-bardac-dw
iqobject        48619/tcp               # iqobject
iqobject        48619/udp               # iqobject
matahari        49000/tcp               # Matahari Broker
[root@oldboyedu ~]# tail -c 5 services
oker            #最后一个是换行符

[root@oldboyedu ~]# tail  -f  oldboy.txt 
kasjdhaksjdhs
123

[root@oldboyedu ~]# tailf  oldboy.txt 
kasjdhaksjdhs
123
123
[root@oldboyedu ~]# tail -f  oldboy.log
tail: cannot open ‘oldboy.log’ for reading: No such file or directory
tail: no files remaining
[root@oldboyedu ~]# tail -F  oldboy.log
tail: cannot open ‘oldboy.log’ for reading: No such file or directory
tail: ‘oldboy.log’ has appeared;  following end of new file
123

9.grep 文本处理工具,过滤,默认是以行为单位进行显示。

-o 只显示过滤出来的内容
-n 给过滤出来的内容加上行号
-i 忽略大小写
-v 排除,取反。
-w 只匹配要过滤出来的内容,而不是包含该内容
-c 给过滤出来的内容统计次数,统计的是行的次数。
^n 匹配以什么开头,n表示字符
n$ 匹配以什么为结尾,n表示字符
\ 取消特殊字符的含义,恢复原来意思

[root@oldboyedu ~]# grep  "root"   passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@oldboyedu ~]# alias 
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='echo  rm bny'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@oldboyedu ~]# 
[root@oldboyedu ~]# 
[root@oldboyedu ~]# grep  "root"   passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@oldboyedu ~]# grep  -o "root"   passwd
root
root
root
root
[root@oldboyedu ~]# grep  -v  "root"   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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@oldboyedu ~]# grep  -i  "root"   passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@oldboyedu ~]# echo  "ROOT"  >> passwd
[root@oldboyedu ~]# 
[root@oldboyedu ~]# 
[root@oldboyedu ~]# grep  -i  "root"   passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ROOT
[root@oldboyedu ~]# grep   "root"   passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@oldboyedu ~]# grep  -n  "root"  passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@oldboyedu ~]# grep  -c  "root"  passwd
2
[root@oldboyedu ~]# grep  "^r"  passwd
root:x:0:0:root:/root:/bin/bash
[root@oldboyedu ~]# grep -i "^r"  passwd
root:x:0:0:root:/root:/bin/bash
ROOT
[root@oldboyedu ~]# grep  "c$"  passwd
sync:x:5:0:sync:/sbin:/bin/sync
[root@oldboyedu ~]# grep  -n "."  passwd
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15:dbus:x:81:81:System message bus:/:/sbin/nologin
16:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
17:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
18:abrt:x:173:173::/etc/abrt:/sbin/nologin
19:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
20:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
21:ROOT
[root@oldboyedu ~]# echo  "oldboy." >> passwd
[root@oldboyedu ~]# 
[root@oldboyedu ~]# 
[root@oldboyedu ~]# grep  -n "."  passwd
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15:dbus:x:81:81:System message bus:/:/sbin/nologin
16:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
17:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
18:abrt:x:173:173::/etc/abrt:/sbin/nologin
19:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
20:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
21:ROOT
22:oldboy.
[root@oldboyedu ~]# grep   "\."  passwd
oldboy.
[root@oldboyedu ~]# grep  "root"   passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@oldboyedu ~]# echo  "rootoldboy"  >>passwd
[root@oldboyedu ~]# 
[root@oldboyedu ~]# 
[root@oldboyedu ~]# grep  "root"   passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
rootoldboy
[root@oldboyedu ~]# grep -w "root"   passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@oldboyedu ~]# ps -ef|grep  ssh
root       7438      1  0 Jun21 ?        00:00:00 /usr/sbin/sshd -D
root      27070   7438  0 Jun21 ?        00:00:03 sshd: root@pts/0
root      83777  27074  0 11:29 pts/0    00:00:00 grep --color=auto ssh
[root@oldboyedu ~]# ps -ef|grep  sshd
root       7438      1  0 Jun21 ?        00:00:00 /usr/sbin/sshd -D
root      27070   7438  0 Jun21 ?        00:00:03 sshd: root@pts/0
root      83785  27074  0 11:29 pts/0    00:00:00 grep --color=auto sshd
[root@oldboyedu ~]# ps -ef|grep -w  sshd
root       7438      1  0 Jun21 ?        00:00:00 /usr/sbin/sshd -D
root      27070   7438  0 Jun21 ?        00:00:03 sshd: root@pts/0
root      83811  27074  0 11:29 pts/0    00:00:00 grep --color=auto -w sshd
[root@oldboyedu ~]# ps -ef|grep -w  [s]shd
root       7438      1  0 Jun21 ?        00:00:00 /usr/sbin/sshd -D
root      27070   7438  0 Jun21 ?        00:00:03 sshd: root@pts/0
[root@oldboyedu ~]# ps -ef|grep  hgkrhg
root      83849  27074  0 11:30 pts/0    00:00:00 grep --color=auto hgkrhg
[root@oldboyedu ~]# ps -ef|grep -c  hgkrhg
1
[root@oldboyedu ~]# ps -ef|grep -c  [d]fg
0
[root@oldboyedu ~]# ps -ef|grep  sshd
root       7438      1  0 Jun21 ?        00:00:00 /usr/sbin/sshd -D
root      27070   7438  0 Jun21 ?        00:00:03 sshd: root@pts/0
root      83920  27074  0 11:31 pts/0    00:00:00 grep --color=auto sshd
[root@oldboyedu ~]# ps -ef|grep  sshd|grep  -v grep
root       7438      1  0 Jun21 ?        00:00:00 /usr/sbin/sshd -D
root      27070   7438  0 Jun21 ?        00:00:03 sshd: root@pts/0
[root@oldboyedu ~]# 

文件上传和下载

需要下载软件包

[root@oldboyedu ~]# yum install -y lrzsz

9.rz 上传文件到服务器中,不支持上传目录,且不支持上传大于4G的文件。

[root@oldboyedu ~]# rz

[root@oldboyedu ~]# rz  -E    

10.sz 从服务器中下载文件到本地

[root@oldboyedu ~]# sz  services

11.wget 从互联网上下载软件包

默认没有该命令,需下载
[root@oldboyedu ~]# yum install -y wget

选项:
-O 指定文件名

[root@oldboyedu ~]# wget  http://nginx.org/download/nginx-1.14.2.tar.gz
--2019-06-22 12:08:55--  http://nginx.org/download/nginx-1.14.2.tar.gz
Resolving nginx.org (nginx.org)... 62.210.92.35, 95.211.80.227, 2001:1af8:4060:a004:21::e3
Connecting to nginx.org (nginx.org)|62.210.92.35|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1015384 (992K) [application/octet-stream]
Saving to: ‘nginx-1.14.2.tar.gz’

100%[===============================================================================>] 1,015,384    269KB/s   in 3.7s   

2019-06-22 12:09:00 (269 KB/s) - ‘nginx-1.14.2.tar.gz’ saved [1015384/1015384]

[root@oldboyedu ~]# ll
total 59136
-rw-r--r--. 1 root root        6 Jun 22 10:43 1
-rw-r--r--. 1 root root 58817074 Sep 21  2017 access.log
-rw-r--r--. 1 root root     2443 Jun 21 16:26 baidu.html
-rw-r--r--. 1 root root       44 Jun 22 10:19 file1.txt
-rw-r--r--. 1 root root       36 Jun 22 10:21 file2.txt
-rw-r--r--. 1 root root       24 Jun 22 10:26 file3.txt
-rw-r--r--. 1 root root       24 Jun 22 10:28 file4.txt
-rw-r--r--. 1 root root       22 Jun 22 10:15 file.txt
-rw-r--r--. 1 root root      744 Jun 20 09:44 ip.txt
-rw-r--r--. 1 root root  1015384 Dec  4  2018 nginx-1.14.2.tar.gz
-rw-r--r--. 1 root root        4 Jun 22 11:11 oldboy.log
-rw-r--r--. 1 root root       26 Jun 22 11:09 oldboy.txt
-rw-r--r--. 1 root root      962 Jun 22 11:27 passwd
-rw-r--r--. 1 root root   670293 Jun 22 10:45 services
-rw-r--r--. 1 root root      199 Jun 21 16:46 sort.log
[root@oldboyedu ~]# 
[root@oldboyedu ~]# wget  -O  nginx.tar.gz  http://nginx.org/download/nginx-1.14.2.tar.gz
--2019-06-22 12:10:06--  http://nginx.org/download/nginx-1.14.2.tar.gz
Resolving nginx.org (nginx.org)... 95.211.80.227, 62.210.92.35, 2001:1af8:4060:a004:21::e3
Connecting to nginx.org (nginx.org)|95.211.80.227|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1015384 (992K) [application/octet-stream]
Saving to: ‘nginx.tar.gz’

100%[===============================================================================>] 1,015,384   28.2KB/s   in 27s    

2019-06-22 12:10:35 (36.7 KB/s) - ‘nginx.tar.gz’ saved [1015384/1015384]

[root@oldboyedu ~]# ll
total 60128
-rw-r--r--. 1 root root        6 Jun 22 10:43 1
-rw-r--r--. 1 root root 58817074 Sep 21  2017 access.log
-rw-r--r--. 1 root root     2443 Jun 21 16:26 baidu.html
-rw-r--r--. 1 root root       44 Jun 22 10:19 file1.txt
-rw-r--r--. 1 root root       36 Jun 22 10:21 file2.txt
-rw-r--r--. 1 root root       24 Jun 22 10:26 file3.txt
-rw-r--r--. 1 root root       24 Jun 22 10:28 file4.txt
-rw-r--r--. 1 root root       22 Jun 22 10:15 file.txt
-rw-r--r--. 1 root root      744 Jun 20 09:44 ip.txt
-rw-r--r--. 1 root root  1015384 Dec  4  2018 nginx-1.14.2.tar.gz
-rw-r--r--. 1 root root  1015384 Dec  4  2018 nginx.tar.gz
-rw-r--r--. 1 root root        4 Jun 22 11:11 oldboy.log
-rw-r--r--. 1 root root       26 Jun 22 11:09 oldboy.txt
-rw-r--r--. 1 root root      962 Jun 22 11:27 passwd
-rw-r--r--. 1 root root   670293 Jun 22 10:45 services
-rw-r--r--. 1 root root      199 Jun 21 16:46 sort.log
[root@oldboyedu ~]# 

[root@oldboyedu ~]# wget  https://www.baidu.com
--2019-06-22 12:16:50--  https://www.baidu.com/
Resolving www.baidu.com (www.baidu.com)... 61.135.169.121, 61.135.169.125
Connecting to www.baidu.com (www.baidu.com)|61.135.169.121|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2443 (2.4K) [text/html]
Saving to: ‘index.html.1’

100%[===============================================================================>] 2,443       --.-K/s   in 0s      

2019-06-22 12:16:50 (558 MB/s) - ‘index.html.1’ saved [2443/2443]

12.curl 访问一个网站,也可以下载

选项:
-o 指定文件名

[root@oldboyedu ~]# curl  https://www.baidu.com/

[root@oldboyedu ~]# curl  -o  index.html  https://www.baidu.com
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2443  100  2443    0     0  11609      0 --:--:-- --:--:-- --:--:-- 11633

文件查找命令

13.which

[root@oldboyedu ~]# which   wget
/usr/bin/wget
[root@oldboyedu ~]# which   passwd
/usr/bin/passwd

14.type

[root@oldboyedu ~]# type  -a  wget
wget is /usr/bin/wget
[root@oldboyedu ~]# type  -a  cd
cd is a shell builtin
cd is /usr/bin/cd

15.whereis

[root@oldboyedu ~]# whereis wget
wget: /usr/bin/wget /usr/share/man/man1/wget.1.gz

16.find 文件查找

[root@oldboyedu ~]# find  /   -type d  -name "oldboy"
/root/oldboy
[root@oldboyedu ~]# find  /root   -name "*.txt"  
/root/oldboy.txt
/root/file4.txt
/root/ip.txt
/root/file.txt
/root/file1.txt
/root/file2.txt
/root/file3.txt
[root@oldboyedu ~]# find  /root  -type  f  -name "*.txt"  
/root/oldboy.txt
/root/file4.txt
/root/ip.txt
/root/file.txt
/root/file1.txt
/root/file2.txt
/root/file3.txt
[root@oldboyedu ~]# find  /root  -type  f  -name "*.txt"  -ls
67157890    4 -rw-r--r--   1 root     root           26 Jun 22 11:09 /root/oldboy.txt
67160133    4 -rw-r--r--   1 root     root           24 Jun 22 10:28 /root/file4.txt
67160151    4 -rw-r--r--   1 root     root          744 Jun 20 09:44 /root/ip.txt
67160129    4 -rw-r--r--   1 root     root           22 Jun 22 10:15 /root/file.txt
67160128    4 -rw-r--r--   1 root     root           44 Jun 22 10:19 /root/file1.txt
67160130    4 -rw-r--r--   1 root     root           36 Jun 22 10:21 /root/file2.txt
67160131    4 -rw-r--r--   1 root     root           24 Jun 22 10:26 /root/file3.txt

| 管道:将前面命令执行的结果交给后面的命令执行。

练习题
1.显示“I'm a student”到屏幕上面
2.将“I'm a student”追加到hello.txt文件中
3.查看oldboy.txt文件中的内容,并显示行号(请使用cat命令)。
4.使用cat命令把oldboy oldgirl student三行内容(每个字符串是一行内容)写入到test.txt文件中
5.查看系统中/etc/services文件中的内容(使用more和less命令,进行上下页查看,并搜索关键字‘ssh’,之后退出。)
6.显示/etc/passwd文件的前5行内容。
7.显示/etc/passwd文件的最后5行内容。
8.显示/etc/services文件的第11行到第20行的内容
[root@oldboyedu ~]# head -20 services | tail
9.已知文件123.txt内容如下,请过滤出包含oldboy字符串的命令
test
OLDBOY
online
oldboy
oldboyoldboy
10.过滤出文件123.txt中不包含test的行,并给其过滤出来的内容加上行号
11.要求过滤出文件123.txt中包含oldboy的字符串,忽略大小写。
12.要求过滤出文件123.txt中包含online字符串的行,并统计共有多少行。
13.要求过滤出文件123.txt中包含oldboy的单词。
14.调试系统服务时,希望能实时查看系统日志/var/log/messages的更新,如何做?
15.打印配置文件/etc/passwd内容的行号及内容,你有几种方法可以实现?

字符处理命令

17.sort 排序

选项:
-t 指定分隔符
-r 倒叙排序
-n 以数字形式进行排序
-k 指定列进行排序
环境
cat >> sort.txt <<EOF
b:3
c:2
a:4
e:5
d:1
f:11
EOF

[root@oldboyedu ~]# cat  sort.txt 
b:3
c:2
a:4
e:5
d:1
f:11
[root@oldboyedu ~]# sort -t ':' -n  sort.txt
a:4
b:3
c:2
d:1
e:5
f:11
[root@oldboyedu ~]# sort -t ':' -nk2  sort.txt
d:1
c:2
b:3
a:4
e:5
f:11
[root@oldboyedu ~]# sort -t ':' -rnk2  sort.txt
f:11
e:5
a:4
b:3
c:2
d:1

18.uniq 去重,去除相邻重复的行

选项:
-c 统计重复行的次数
-d 只显示重复的行
-u 只显示不重复的行

[root@oldboyedu ~]# cat >> uniq.txt <<EOF
abc
123
abc
123
EOF
[root@oldboyedu ~]# cat uniq.txt 
abc
123
abc
123
[root@oldboyedu ~]# sort  uniq.txt 
123
123
abc
abc
[root@oldboyedu ~]# sort  uniq.txt  | uniq  
123
abc
[root@oldboyedu ~]# sort  uniq.txt  | uniq  -c
      2 123
      2 abc
[root@oldboyedu ~]# echo  "def"  >> uniq.txt 
[root@oldboyedu ~]# 
[root@oldboyedu ~]# 
[root@oldboyedu ~]# sort  uniq.txt  | uniq  -c
      2 123
      2 abc
      1 def
[root@oldboyedu ~]# sort  uniq.txt  | uniq  -d
123
abc
[root@oldboyedu ~]# sort  uniq.txt  | uniq  -u
def

19.wc 统计次数

选项:
-l 统计行数
-c 统计字节数
-w 统计列数,默认以空格为分隔符

[root@oldboyedu ~]# cat uniq.txt 
abc
123
abc
123
def
[root@oldboyedu ~]# wc  -l uniq.txt
5 uniq.txt
[root@oldboyedu ~]# wc 
1                    .bashrc              file.txt             nginx.tar.gz         services
access.log           .cshrc               index.html           oldboy/              sort.log
baidu.html           file1.txt            index.html.1         oldboy.log           sort.txt
.bash_history        file2.txt            ip.txt               oldboy.txt           .tcshrc
.bash_logout         file3.txt            .lesshst             passwd               uniq.txt
.bash_profile        file4.txt            nginx-1.14.2.tar.gz  .pki/                .viminfo
[root@oldboyedu ~]# wc uniq.txt
 5  5 20 uniq.txt
[root@oldboyedu ~]# wc -w  uniq.txt
5 uniq.txt
[root@oldboyedu ~]# wc -c  uniq.txt
20 uniq.txt
[root@oldboyedu ~]# ll uniq.txt
-rw-r--r--. 1 root root 20 Jun 22 14:58 uniq.txt
[root@oldboyedu ~]# cat passwd 
root:x:0:0:root:/root:/bin/bash
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ROOT
oldboy.
rootoldboy
[root@oldboyedu ~]# wc -l  passwd
23 passwd
[root@oldboyedu ~]# wc -w  passwd
41 passwd
[root@oldboyedu ~]# head  passwd 
root:x:0:0:root:/root:/bin/bash
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@oldboyedu ~]# head  passwd  | wc -w
10
[root@oldboyedu ~]# cat uniq.txt 
abc
123
abc
123
def
[root@oldboyedu ~]# vi  uniq.txt
[root@oldboyedu ~]# 
[root@oldboyedu ~]# 
[root@oldboyedu ~]# wc -w uniq.txt
6 uniq.txt
[root@oldboyedu ~]# cat uniq.txt
abc  hfkh:ksfhnrkghkeljg
123
abc
123
def
[root@oldboyedu ~]# 

19.tr 替换,单对单的替换

选项:
-d 删除字符

[root@oldboyedu ~]# cat uniq.txt
abc  hfkh:ksfhnrkghkeljg
123
abc
123
def
[root@oldboyedu ~]# tr  '1'  'o'  uniq.txt
tr: extra operand ‘uniq.txt’
Try 'tr --help' for more information.
[root@oldboyedu ~]# tr  '1'  'o'  <uniq.txt
abc  hfkh:ksfhnrkghkeljg
o23
abc
o23
def
[root@oldboyedu ~]# tr  '1'  'o'  < uniq.txt
abc  hfkh:ksfhnrkghkeljg
o23
abc
o23
def
[root@oldboyedu ~]# tr  '123'  'old'  < uniq.txt
abc  hfkh:ksfhnrkghkeljg
old
abc
old
def
[root@oldboyedu ~]# echo  "1"  >>uniq.txt
[root@oldboyedu ~]# 
[root@oldboyedu ~]# 
[root@oldboyedu ~]# tr  '123'  'old'  < uniq.txt
abc  hfkh:ksfhnrkghkeljg
old
abc
old
def
o
[root@oldboyedu ~]# echo  "2"  >>uniq.txt
[root@oldboyedu ~]# tr  '123'  'old'  < uniq.txt
abc  hfkh:ksfhnrkghkeljg
old
abc
old
def
o
l
[root@oldboyedu ~]# cat uniq.txt
abc  hfkh:ksfhnrkghkeljg
123
abc
123
def
1
2
[root@oldboyedu ~]# tr  -d '1' < uniq.txt 
abc  hfkh:ksfhnrkghkeljg
23
abc
23
def

2
[root@oldboyedu ~]# tr  -d '1a' < uniq.txt 
bc  hfkh:ksfhnrkghkeljg
23
bc
23
def

2
[root@oldboyedu ~]#

20.cut 截取一段字符,取列。

选项:
-d 指定分隔符
-f 取出指定的列

[root@oldboyedu ~]# echo "I'm zls,18 years old QQ 133411023"  >  file5.txt
[root@oldboyedu ~]# cat file5.txt
I'm zls,18 years old QQ 133411023
[root@oldboyedu ~]# cut  -d ' ' -f4,6  file5.txt
old 133411023
[root@oldboyedu ~]# cat file5.txt 
I'm zls,18 years old QQ 133411023
[root@oldboyedu ~]# tr  ',' ' '  < file5.txt
I'm zls 18 years old QQ 133411023
[root@oldboyedu ~]# tr  ',' ' '  < file5.txt  | cut -d ' ' -f2,7
zls 133411023

21.sed 文本处理工具,三剑客老二,行操作

sed 后面参数:
-n 取消默认输出 ,只打印模式匹配的行
-e 直接在命令行模式上进行sed动作编辑,此为默认选项
-i 确定真的修改文件内容
-r 支持扩展正则表达式使用

sed '' 引号里面的参数:
p 打印当前内容
d 删除当前行
d 过滤,排除 d(delete)删除
s 替换
g 表示全局

;     多条命令分隔符,取不连续的多行
     ,    多条命令分隔符,取连续的多行
取出行
[root@oldboyedu ~]# cat sed.txt 
101,$oldboy,CEO
102,$zhangyao,CTO
103,$Alex,COO
104,$yy,CFO
105,$feixue,CIO
106,$lidao,UFO
[root@oldboyedu ~]# sed  -n  '2p'  sed.txt
102,$zhangyao,CTO
[root@oldboyedu ~]# sed  -n  '2,4p'  sed.txt
102,$zhangyao,CTO
103,$Alex,COO
104,$yy,CFO
[root@oldboyedu ~]# sed -n  '2p;4p'  sed.txt
102,$zhangyao,CTO
104,$yy,CFO
删除行
[root@oldboyedu ~]# sed   '2d'  sed.txt
101,$oldboy,CEO
103,$Alex,COO
104,$yy,CFO
105,$feixue,CIO
106,$lidao,UFO
[root@oldboyedu ~]# sed '2,4d'  sed.txt
101,$oldboy,CEO
105,$feixue,CIO
106,$lidao,UFO
[root@oldboyedu ~]# sed '2d;4d'  sed.txt
101,$oldboy,CEO
103,$Alex,COO
105,$feixue,CIO
106,$lidao,UFO
过滤字符串

要加参数-r,表示支持正则匹配

[root@oldboyedu ~]# sed  -n  '/oldboy/p'  sed.txt
101,$oldboy,CEO
[root@oldboyedu ~]# sed  -n  '/oldboy|feixue/p'  sed.txt
[root@oldboyedu ~]# sed  -nr  '/oldboy|feixue/p'  sed.txt
101,$oldboy,CEO
105,$feixue,CIO
排除
[root@oldboyedu ~]# sed '/oldboy/d'  sed.txt
102,$zhangyao,CTO
103,$Alex,COO
104,$yy,CFO
105,$feixue,CIO
106,$lidao,UFO
替换

s:替换 g:表示全局
格式: 's#参数1#参数2#g' 参数1表示要替换谁,参数2表示要替换成什么

[root@oldboyedu ~]# sed  's#lidao#qiudao#g'  sed.txt
101,$oldboy,CEO
102,$zhangyao,CTO
103,$Alex,COO
104,$yy,CFO
105,$feixue,CIO
106,$qiudao,UFO
[root@oldboyedu ~]# cat sed.txt
101,$oldboy,CEO
102,$zhangyao,CTO
103,$Alex,COO
104,$yy,CFO
105,$feixue,CIO
106,$lidao,UFO
[root@oldboyedu ~]# sed -i 's#lidao#qiudao#g'  sed.txt
[root@oldboyedu ~]# cat sed.txt
101,$oldboy,CEO
102,$zhangyao,CTO
103,$Alex,COO
104,$yy,CFO
105,$feixue,CIO
106,$qiudao,UFO
[root@oldboyedu ~]# 
[root@oldboyedu ~]# cat  file5.txt 
I'm zls,18 years old QQ 133411023
[root@oldboyedu ~]# sed 's#,# #g'  file5.txt
I'm zls 18 years old QQ 133411023
[root@oldboyedu ~]# sed 's#,# #g'  file5.txt  | cut -d ' '  -f2,7
zls 133411023
[root@oldboyedu ~]#

22.awk 取列,统计,计算。

格式:awk '{print 0 NR}' 文件名 AWK '条件{动作} ' 文件名 ```print:显示,0:一整行的内容,NR:行号```

选项说明:
-F #指定分割符,多个分隔符
NR #行号

$n  #取某一列
$NF #最后一列
$0  #整行内容
print #显示内容
!   #取反
取行
[root@oldboyedu ~]# awk  '{print $0,NR}'  awk.txt
101,$oldboy,CEO 1
102,$zhangyao,CTO 2
103,$Alex,COO 3
104,$yy,CFO 4
105,$feixue,CIO 5
106,$qiudao,UFO 6
[root@oldboyedu ~]# awk  'NR==2,NR==4'  awk.txt
102,$zhangyao,CTO
103,$Alex,COO
104,$yy,CFO
[root@oldboyedu ~]# awk 'NR>1&& NR<5' awk.txt
102,$zhangyao,CTO
103,$Alex,COO
104,$yy,CFO
[root@oldboyedu ~]# awk 'NR>=2 && NR <=4'  awk.txt
102,$zhangyao,CTO
103,$Alex,COO
104,$yy,CFO
取列

要分割必须加参数-F, []中括号内放分隔符,可以放多个

[root@oldboyedu ~]# cat file5.txt 
I'm zls,18 years old QQ 133411023
[root@oldboyedu ~]# awk  -F '[ ,]'  '{print  $2,$7}' file5.txt
zls 133411023
[root@oldboyedu ~]# cat  awk.txt 
101,$oldboy,CEO
102,$zhangyao,CTO
103,$Alex,COO
104,$yy,CFO
105,$feixue,CIO
106,$qiudao,UFO
[root@oldboyedu ~]# awk  -F, '{print  $3}'  awk.txt
CEO
CTO
COO
CFO
CIO
UFO
[root@oldboyedu ~]# awk  -F, '{print  $NF}'  awk.txt
CEO
CTO
COO
CFO
CIO
UFO
[root@oldboyedu ~]# awk  -F,  '{print $2}'  awk.txt
$oldboy
$zhangyao
$Alex
$yy
$feixue
$qiudao
[root@oldboyedu ~]# awk  -F,  '{print $(NF-1)}'  awk.txt
$oldboy
$zhangyao
$Alex
$yy
$feixue
$qiudao
[root@oldboyedu ~]# 
过滤字符串
[root@oldboyedu ~]# awk  '/oldboy/'  awk.txt
101,$oldboy,CEO
[root@oldboyedu ~]# awk  '/oldboy|qiudao/'  awk.txt
101,$oldboy,CEO
106,$qiudao,UFO
[root@oldboyedu ~]# awk  '/oldboy/'  awk.txt
101,$oldboy,CEO
[root@oldboyedu ~]# awk  '!/oldboy/'  awk.txt
102,$zhangyao,CTO
103,$Alex,COO
104,$yy,CFO
105,$feixue,CIO
106,$qiudao,UFO

练习题

1.已知sort.log文件内容如下,请根据文件内容的第二列进行倒序排序。
cat >>sort.log<<'EOF'
218.65.30.25 68652
218.65.30.53 34326
218.87.109.154 21201
112.85.42.103 18065
112.85.42.99 17164
218.87.109.151 17163
218.87.109.150 17163
218.65.30.61 17163
218.65.30.126 17163
218.65.30.124 17163
EOF

[root@oldboyedu ~]# sort -rnk2  sort.log
[root@oldboyedu ~]# sort -rnk2  sort.log  |column -t

2.统计系统文件/etc/services有多少行。

[root@oldboyedu ~]# wc -l /etc/services 
11176 /etc/services
[root@oldboyedu ~]# cat -n /etc/services | tail -1
 11176  matahari        49000/tcp               # Matahari Broker
[root@oldboyedu ~]# grep  -n "."  /etc/services  |tail -1
11176:matahari        49000/tcp               # Matahari Broker
[root@oldboyedu ~]# sed  =  /etc/services  |tail -2
11176
matahari        49000/tcp               # Matahari Broker
[root@oldboyedu ~]# awk  '{print $0,NR}'  /etc/services  |tail -1
matahari        49000/tcp               # Matahari Broker 11176

3.已知文件内容如下,请对该文件的字符串出现的次数进行统计,并从小到大的进行排序出来。

cat>uniq.txt<<'EOF'
oldboy
oldgirl
oldboy
egon
student
oldgirl
oldboy
EOF

[root@oldboyedu ~]# sort  uniq.txt |uniq -c  |sort -n
      1 egon
      1 student
      2 oldgirl
      3 oldboy

4.取出系统中的文件/etc/passwd的第七列(以:为分隔符)。

[root@oldboyedu ~]# awk  -F:  '{print  $NF}'  /etc/passwd
[root@oldboyedu ~]# awk  -F:  '{print  $7}'  /etc/passwd
[root@oldboyedu ~]# cut  -d ':' -f7  /etc/passwd

5.已知文件test.txt内容如下,请给出输出test.txt文件内容时,不包含oldboy字符串的命令。
test
qiudao
oldboy

[root@oldboyedu ~]# grep  -v "oldboy"  test.txt 
test
qiudao
[root@oldboyedu ~]# sed  '/oldboy/d'  test.txt
test
qiudao
[root@oldboyedu ~]# awk  '!/oldboy/' test.txt
test
qiudao
[root@oldboyedu ~]# head -2  test.txt
test
qiudao

6.只查看/etc/passwd文件内第5到第15行的内容

[root@oldboyedu ~]# head  -15  /etc/passwd  |tail -11
[root@oldboyedu ~]# sed -n  '5,15p'  /etc/passwd
[root@oldboyedu ~]# awk  'NR==5,NR==15'  /etc/passwd
[root@oldboyedu ~]# awk  'NR>4&&NR<16'  /etc/passwd
[root@oldboyedu ~]# awk  'NR>=5&&NR<=15'  /etc/passwd

7.把test.txt文件中的oldboy替换为oldgirl,给出命令

[root@oldboyedu ~]# sed -i  's#oldboy#oldgirl#g'  awk.txt
[root@oldboyedu ~]# sed -i.bak 's#oldboy#oldgirl#g'  awk.txt

8.test.txt 的内容如下,要求过滤出不包含alex的行。
oldboy
oldgirl
alex

9.把文件/etc/passwd文件中的/sbin/nologin替换为/bin/bash

10.把/etc/selinux/config文件中的SELINUX=enforcing行中的enforcing替换成disabled

11.现将文件b.txt 中的所有123替换成def,请问如何实现?

12.请执行命令取出linux中eth0的IP地址(请用cut,有能力者也可分别用awk,sed命令答)。

[root@oldboyedu ~]# ip  address  show  eth0  | grep -w inet  |tr  '/'  ' '  |cut  -d ' ' -f6
10.0.0.100
[root@oldboyedu ~]# ip  address  show  eth0  | grep -w inet  |cut  -d ' ' -f 6  |cut -d '/' -f1
10.0.0.100
[root@oldboyedu ~]# ip  address  show  eth0  | grep -w inet  |sed 's#/# #g'  |cut -d ' ' -f6
10.0.0.100
[root@oldboyedu ~]# ip a s eth0  |awk  'NR==3'  |awk -F '[ /]'  '{print $6}'
10.0.0.100
[root@oldboyedu ~]# ip a s eth0  |awk  'NR==3'  |awk -F '[ /]*'  '{print $3}'
10.0.0.100
[root@oldboyedu ~]# ip a s eth0 |awk -F '[ /]'  'NR==3{print $6}'
10.0.0.100

13.使用命令调换/etc/passwd文件里 root 位置和/bin/bash 位置? 即将所有的第一列和最后一列位置调换?

[root@oldboyedu ~]# awk -F:  '{print $7":"$2":"$3":"$4":"$5":"$6":"$1}'  passwd

14.删除/etc/passwd文件的前三行内容。

文件属性

[root@oldboyedu ~]# ll
-rw-r--r--. 1 root root 58817074 Sep 21  2017 access.log
    • 文件的类型
  1. rw-r--r-- 文件的权限
  2. 1 文件的硬链接数
  3. root 文件的属主
  4. root 文件的属组
  5. 58817074 文件的大小
    7-9 Sep 21 2017 文件的最后修改时间
    10 access.log 文件名,不属于文件属性
  • 普通文件
    d 目录
    l 链接文件
    b 块设备
    c 字符设备
    s 套接字文件
    p 管道文件

.txt
.log
.conf
.xml
.html
.sh
.gz
.mp3
.py
扩展名只是为了方便运维人员使用,没有其他任何意义。

文件的链接

软链接

Linux中的软链接文件类似于Windows系统中的 ”快捷键方式“ 里面具体存放的是源文件的路径,并指向源文件实体,因此通过访问这个 ”快捷方式“ 可迅速访问到源文件。软链接文件类型是l,

[root@oldboyedu ~]# mkdir  oldboy/data/ 
[root@oldboyedu ~]# cd oldboy/data/
[root@oldboyedu data]# touch  oldboy.txt
[root@oldboyedu data]# cd
[root@oldboyedu ~]# ln  -s  /root/oldboy/data/oldboy.txt   /root/oldgirl.txt
[root@oldboyedu ~]# ll /root/oldgirl.txt
lrwxrwxrwx. 1 root root 28 Jun 22 17:04 /root/oldgirl.txt -> /root/oldboy/data/oldboy.txt
[root@oldboyedu ~]# echo  "123"  > /root/oldgirl.txt
[root@oldboyedu ~]# cat /root/oldgirl.txt
123
[root@oldboyedu ~]# cat /root/oldboy/data/oldboy.txt
123
版本升级
[root@oldboyedu ~]# mkdir  nginx-1.14
[root@oldboyedu ~]# ln -s nginx-1.14  nginx
[root@oldboyedu ~]# mkdir  nginx-1.16
[root@oldboyedu ~]# rm -f nginx  && ln -s nginx-1.16  nginx
版本回退
[root@oldboyedu ~]# rm -f nginx  && ln -s nginx-1.14  nginx

[root@oldboyedu ~]# ll -i  nginx
67160163 lrwxrwxrwx. 1 root root 10 Jun 22 17:08 nginx -> nginx-1.16
[root@oldboyedu ~]# ll -i nginx-1.16
total 0
[root@oldboyedu ~]# ll -i -d nginx-1.16
101703610 drwxr-xr-x. 2 root root 6 Jun 22 17:07 nginx-1.16

硬链接

Linux文件系统中, 多个文件名指向同一个索引节点Inode是正常且允许的(文件的多个有效的入口),这种情况文件
称为硬链接。

[root@oldboyedu ~]# ln  passwd   passwd.lk
[root@oldboyedu ~]# ll -i  passwd*
67160142 -rw-r--r--. 2 root root 962 Jun 22 11:27 passwd
67160142 -rw-r--r--. 2 root root 962 Jun 22 11:27 passwd.lk
[root@oldboyedu ~]# \rm -f passwd
[root@oldboyedu ~]# ll passwd.lk 
-rw-r--r--. 1 root root 962 Jun 22 11:27 passwd.lk
[root@oldboyedu ~]# cat passwd.lk
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

软链接和硬链接的区别

1.从定义:linux系统中,链接有两种,一种被称为软链接,类似于快捷方式,存放指向原文件inode的信息,与原文件inode不同。一种是硬链接,与原文件有相同的inode,可以指向数据block。
2.从创建方式:硬链接命令 ln [原文件] [目标文件],软链接命令ln –s [原文件] [目标文件]
3.从创建对象:ln命令不能对目录创建硬链接,但是可以对目录创建软链接。因为软链接可以跨越文件系统,硬链接则不能。对目录和为客户创建的文件软链接经常用到。
4.删除软链接文件,对硬链接和原文件无影响。
5.删除文件硬链接,对原文件及软链接文件无影响
6.删除原文件,对硬链接读取数据无影响,软链接则失效。会出现红底白字状。
7.同时删除原文件和硬链接,原文件才会被真正删除
8.很多硬件设备中的快照原理,类似于硬链接原理

命令的执行方式

是否使用绝对路径
判断命令是否有别名
判断是否是内部命令 type -a
判断命令缓存列表是否存在命令缓存
[root@oldboyedu ~]# hash -d ip #删除命令缓存列表中对应的命令
[root@oldboyedu ~]# hash -r #清空命令缓存列表
[root@oldboyedu ~]# hash
执行命令,有就执行成功,没有报错,命令找不到。
[root@oldboyedu ~]# qiudao
-bash: qiudao: command not found

vim 文本编辑工具

vim三种模式

普通模式:进入文本当中就是普通模式,可以对文件进行删除,复制,粘贴等操作。
编辑模式:需要由普通模式进入到编辑模式,可以对文件修改等操作。
底行模式:保存文件,退出文件等。

安装vim命令

[root@oldboyedu ~]# yum install -y vim
普通模式

1.普通模式光标跳转

G #光标跳转至文件的最后一行 shift+g
gg #光标跳转至文件的第一行
Ngg #光标跳转至当前文件的Number行
$ #光标跳转至光标所在行的尾部
^|0 #光标跳转至光标所在行的首部

2.文件内容较多

ctrl+f #往下翻页(行比较多)
ctrl+b #往上翻页

3.复制与粘贴

yy #复制当前光标所在的行
5yy #复制当前光标以及光标向下4行
p(小写) #粘贴至当前光标下一行
P(大写) #粘贴至当前光标上一行

4.删除、剪贴、撤销

dd #删除当前光标所在的行
4dd #删除当前光标所在的行以及往下的3行
dG #删除当前光标及以后的所有行
D #删除当前光标及光标以后的内容
x #删除当前光标标记往后的字符,跟delete键功能一样
X #删除当前光标标记往前的字符
dd & p #剪贴、先删除dd(number dd),后粘贴p
u #撤销上一次的操作

5.替换

r #替换当前光标标记的单个字符
R #进入REPLACE模式, 连续替换,ESC结束

1.跳转到某行时使用
2.复制server{ 到 }结尾的这一行, 粘贴到 } 结尾的下一行
3.删除listen相关的所有行
4.将server_name 替换为SERVER_NAME
5.删除oldboy.com,boy删除
6.撤销一次

编辑模式

i #进入编辑模式,光标不做任何操作,内容输出在光标之前。
a #进入编辑模式,将当前光标往后一位
o #进入编辑模式,并在当前光标下添加一行空白内容
I #进入编辑模式,并且光标会跳转至本行的头部
A #进入编辑模式,将光标移动至本行的尾部
O #进入编辑模式,并在当前光标上添加一行空白内容
C #删除当前光标及光标以后的内容并进入编辑模式

练习

l1.新建一个文件,进入编辑模式,粘贴如下内容
[root@www ~]# cat file.txt
server {
listen 80;
server_name test.oldboy.com;
index index.html;
}
2.在编辑模式下修改 test.oldboy.com为test.ett.com
3.在index 最后面,添加index.php
4.在index行下面插入一行内容为:root html;。
5.退出编辑模式

底行模式

1.文件保存与退出

:w #保存当前状态
:q #退出当前文档
:wq #先保存,在退出
:x #先保存,在退出
ZZ #保存退出, shfit+zz
:q! #强制退出文档不会修改当前内容(常用)
:w! #强制保存当前状态(不常用)
:wq! #强制保存并退出(忽略)
:number #跳转至对应的行号 和在普通模式下用Ngg一个意思

2.文件内容查找

/oldboy #需要搜索的内容(查找)
n #按搜索到的内容依次往下进行查找
N #按搜索到的内容依次往上进行查找

3.文件内容替换sed 's###g'

:%s#sbin#test#g #替换整个文本文件中包含sbin的替换为test
:1,5s#sbin#test#g #替换1-5行中包含sbin的内容为test

4.vim变量

:set nu #显示行号
:set nonu #取消显示行号
:set list #给每行内容的结尾加个标识符
:set nolist #取消显示标识符

Vim练习题一

1.将/etc/passwd 复制到/root/目录下,并重命名为test.txt
2.用vim打开test.txt并显示行号
3.分别向下、向右、向左、向右移动5个字符,分别向下、向上翻两页
4.把光标移动到第10行,让光标移动到行末,再移动到行首,移动到test.txt文件的最后一行,移动到文件的首行
5.搜索文件中出现的 root 并数一下一共出现多少个
6.把从第一行到第三行出现的root 替换成admin,然后还原上一步操作
8.把整个文件中所有的root替换成admin
9.把光标移动到20行,删除本行,还原上一步操作
11.删除从5行到10行的所有内容,还原上一步操作
12.复制2行并粘贴到11行下面,还原上一步操作(按两次u)
13.复制从11行到15行的内容并粘贴到8行上面,还原上一步操作(按两次u)
14.把13行到18行的内容移动文件的尾部,还原上一步操作(按两次u)
15.将文件中所有的/sbin/nologin为/bin/bash
16.在第一行下面插入新的一行,并输入"# Hello!"
17.保存文档并退出

视图模式

批量删除字符:进入批量编辑模式(可视块)ctrl+v

选择 #上下左右(方向键)
删除 #d

批量增加字符:进入批量编辑模式(可视块)ctrl+v

选择区域 #上下左右(方向键)
输入shift+i进入编辑模式
编辑内容
按下ESC键退出,内容会自动添加上

批量删除多行:进入批量编辑模式(可视行)shift+v

选择区域 #上下左右(方向键)
删除 #d

批量复制多行:进入批量编辑模式(可视行)shift+v

选择区域 #上下左右(方向键)
复制 #y
粘贴 #p

vim故障

模拟故障:

编辑文件的时候断开连接即可(断网或断电)
重新连接服务器
再次进行编辑文件

故障报错:

Found a swap file by the name ".vim.log.swp"
Swap file ".vim.log.swp" already exists

故障解决:

删除临时文件或者先恢复内容再删除
使用-r选项进行恢复。

根据文件回答下列习题

[root@www ~]# cat proxy.conf
server {
Listen 8080;
Server_Name vim.OldboyEDU.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Forward-for;
proxy_intercept_errors on;
proxy_next_upstream error timeout;
proxy_next_upstream_timeout 3s;
proxy_next_upstream_tries 2;
error_page 500 502 403 404 = /proxy_error.html;
}
location = /proxy_error.html {
root /code/proxy;
}
}

1.使用vim打开proxy.conf文件
2.修改Listen为listen小写,并将8080修改为80
3.修改ServerName为server_name小写。
4.修改vim.OldboyEDU.com为vim.oldboy.com
5.在server_name行下插入一行 root /code;
5.复制5-14行的内容,然后将其粘贴到14行下面
6.删除与proxy_set_header相关的两行全部删除
7.如上操作完成后,在13-20行前面加上#号
8.删除21-23的行,然后保存当前文件

文件内容比对

相同文件之间差异对比,通常用于对比修改前后的差异。
diff #文件对比(No)
vimdiff #以vim方式打开两个文件对比,高亮显示不同的内容

文件执行过程

Vi/Vim执行过程:

1.打开一个文件oldboy.txt.
2.进入编辑模式,开始编辑内容
3.编辑文件的时候,vim会自动创建一个临时文件。(.oldboy.txt.swap)
4.编辑完成,vim会自动删除临时文件
5.退出,修改成功

上一篇下一篇

猜你喜欢

热点阅读