三剑客与vim编辑器的使用

Posted ronglianbing2019--

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三剑客与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结束

vim变量

环境变量临时生效

:set nu 显示行号 :set ic 忽略大小写, 在搜索的时候有用 :set ai 自动缩进 :set list 显示制表符(空行、tab键) :set no[nu|ic|ai…] 取消临时设定的变量

5.退出编辑模式

i #进入编辑模式,光标不做任何操作,内容输出在光标之前。

a #进入编辑模式,将当前光标往后一位

o #进入编辑模式,并在当前光标下添加一行空白内容

I #进入编辑模式,并且光标会跳转至本行的头部

A #进入编辑模式,将光标移动至本行的尾部

O #进入编辑模式,并在当前光标上添加一行空白内容

C #删除当前光标及光标以后的内容并进入编辑模式

6.批量添加标识(注释)

Ctrl+v ,光标键,shift+i,shift+#,esc键

视图模式(从命令行模式进入视图模式)

ctrl+v 进入VISUAL BLOCK 选中需要注释的行(可视块模式) 1.插入:按shift+i进入编辑模式,输入#,结束按ESC键 2.删除:选中内容后,按x或者d键删除 3.替换:选中需要替换的内容, 按下r键,然后输入替换后的内容 shift+v 进入VISUAL LINE 选中行内容(可视行模式) 1.复制:选中行内容后按y键及可复制。 2.删除:选中行内容后按d键删除。

1.mv 移动和重命名文件

选项:

? -i 提示文件应经存在,是否覆盖(系统自带别名)

? -f 强制覆盖,不提示

? -t 把源文件和目标文件位置进行替换移动

[[email protected] ~]# mv 1.txt /opt/

[[email protected] ~]# ll /opt/

-rw-r--r--. 1 root root 12 Jun 21 11:45 1.txt

[[email protected] ~]# mv oldboy/ /opt/

[[email protected] ~]# 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

[[email protected] ~]# mv 1.txt /opt/

mv: overwrite ‘/opt/1.txt’? n

[[email protected] ~]# \mv 1.txt /opt/

[[email protected] ~]# mv -f 1.txt /opt/

[[email protected] ~]# /usr/bin/mv 1.txt /opt/

[[email protected] ~]# mv 1.txt /opt/oldboy.txt

[[email protected] ~]# 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

[[email protected] ~]# mv -t ./ /opt/oldboy.txt

[[email protected] ~]# ll

-rw-r--r--. 1 root root 14 Jun 21 12:12 oldboy.txt

2.rm 删除文件

? -i 提示是否要删除文件(系统自带别名)

? -f 强制删除

? -r 递归删除,删除目录

[[email protected] ~]# rm 123

rm: remove regular file ‘123’? n

[[email protected] ~]# rm -f 123

[[email protected] ~]# 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

[[email protected] ~]# mv /opt/oldboy/ ./

[[email protected] ~]#

[[email protected] ~]#

[[email protected] ~]# 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

[[email protected] ~]# rm -f oldboy

rm: cannot remove ‘oldboy’: Is a directory

[[email protected] ~]# rm -rf oldboy

[[email protected] ~]# ll

total 57472

-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

[[email protected] ~]# rm -rf /*^C

[[email protected] ~]# rm -rf ./*^C

[[email protected] ~]# cd /

[[email protected] /]# rm -rf ./*^C

[[email protected] /]# cd

[[email protected] ~]# rm -rf ./ *^C

#给rm命令设置一个别名

[[email protected] ~]# alias rm=‘echo rm bny‘

[[email protected] ~]# 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‘

[[email protected] ~]# rm -f 456

rm bny -f 456

[[email protected] ~]# \rm -f 456

[[email protected] ~]# 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键

? > 标准输出重定向,将目标文件的内容清空,再将输出结果追加到目标文件

? >> 标准输出追加重定向,将输出结果追加到目标文件的结尾,不会清空源文件内容

[[email protected] ~]# cat file.txt

abc

123

abc

123

def

[[email protected] ~]# cat -n file.txt

? 1 abc

? 2 123

? 3 abc

? 4 123

? 5 def

[[email protected] ~]# cat -A file.txt

abc$

123$

abc$

123$

def$

[[email protected] ~]# vi file.txt

[[email protected] ~]#

[[email protected] ~]#

[[email protected] ~]# cat -A file.txt

abc $

123^I$

abc$

123$

def$

[[email protected] ~]# cat file.txt

abc

123

abc

123

def

[[email protected] ~]#

[[email protected] ~]# cat file.txt >file1.txt

[[email protected] ~]# cat file1.txt

abc

123

abc

123

def

[[email protected] ~]# cat file.txt >file1.txt

[[email protected] ~]# cat file1.txt

abc

123

abc

123

def

[[email protected] ~]# cat file.txt >>file1.txt

[[email protected] ~]# cat file1.txt

abc

123

abc

123

def

abc

123

abc

123

def

[[email protected] ~]# 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

[[email protected] ~]# cat file.txt oldboy.txt

abc

123

abc

123

def

kasjdhaksjdhs

[[email protected] ~]# cat file.txt oldboy.txt >file2.txt

[[email protected] ~]# cat file2.txt

abc

123

abc

123

def

kasjdhaksjdhs

[[email protected] ~]# cat oldboy.txt

kasjdhaksjdhs

[[email protected] ~]#

[[email protected] ~]# cat >>file3.txt<<EOF

> oldboy

> oldgirl

> shanghai

> EOF

[[email protected] ~]# cat file3.txt

oldboy

oldgirl

shanghai

[[email protected] ~]# cat >>file4.txt<<EOF

> oldboy

> oldgirl

> shanghai

> EOF

[[email protected] ~]# cat file4.txt

oldboy

oldgirl

shanghai

[[email protected] ~]# cat >>file4.txt<<EOF

> oldboy

> oldgirl

> shanghai

> EOF

[[email protected] ~]#

[[email protected] ~]#

[[email protected] ~]# cat file4.txt

oldboy

oldgirl

shanghai

oldboy

oldgirl

shanghai

[[email protected] ~]# cat >file4.txt<<EOF

> oldboy

> oldgirl

> shanghai

> EOF

[[email protected] ~]#

[[email protected] ~]#

[[email protected] ~]# cat file4.txt

oldboy

oldgirl

shanghai

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

5.more 分页显示文件内容

? 空格或f 向下翻页

? b 向上翻页

? / 搜索关键字,并不会高亮显示

? = 显示当前光标所在行

? q 退出

? -N(数字) 每页显示几行

? +N(数字) 从第几行开始显示

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

6.less 分页显示文件内容

? 空格或f 向下翻页

? b 向上翻页

? / 搜索关键字,会高亮显示

? q 退出

? -N 给显示出来的内容加上行号

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

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

? -nN(数字) 取消默认输出,可以简写,-5

? -cN(数字) 显示文件的前几个字符

[[email protected] ~]# 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

[[email protected] ~]# 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

[[email protected] ~]# 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

[[email protected] ~]# 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:

#

[[email protected] ~]# head -c 5 services

# /et[[email protected] ~]#

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

? -nN(数字) 取消默认输出,可以简写,-5

? -cN(数字) 显示文件的最后几个字符,默认最后有个换行符

? -f 实时查看文件内容的更新,当文件不存在时,会报错退出,等同于tailf命令

? -F 实时查看文件内容的更新,当文件不存在时,会一直的尝试。

[[email protected] ~]# 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

[[email protected] ~]# 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

[[email protected] ~]# 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

[[email protected] ~]# tail -c 5 services

oker #最后一个是换行符

[[email protected] ~]# tail -f oldboy.txt

kasjdhaksjdhs

123

[[email protected] ~]# tailf oldboy.txt

kasjdhaksjdhs

123

123

tail: cannot open ‘oldboy.log’ for reading: No such file or directory

tail: no files remaining

[[email protected] ~]# 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表示字符

? ? 取消特殊字符的含义,恢复原来意思

[[email protected] ~]# grep "root" passwd

root?0:0:root:/root:/bin/bash

operator?11:0:operator:/root:/sbin/nologin

[[email protected] ~]# 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‘

[[email protected] ~]#

[[email protected] ~]#

[[email protected] ~]# grep "root" passwd

root?0:0:root:/root:/bin/bash

operator?11:0:operator:/root:/sbin/nologin

[[email protected] ~]# grep -o "root" passwd

root

root

root

root

[[email protected] ~]# grep -v "root" passwd

bin?1:1:bin:/bin:/sbin/nologin

daemon?2:2:daemon:/sbin:/sbin/nologin

adm?3:4:adm:/var/adm:/sbin/nologin

lp?4:7:lp:/var/spool/lpd:/sbin/nologin

sync?5:0:sync:/sbin:/bin/sync

shutdown?6:0:shutdown:/sbin:/sbin/shutdown

halt?7:0:halt:/sbin:/sbin/halt

mail?8:12:mail:/var/spool/mail:/sbin/nologin

games?12??games:/usr/games:/sbin/nologin

ftp?14:50:FTP User:/var/ftp:/sbin/nologin

nobody?99:99:Nobody:/:/sbin/nologin

systemd-network?192:192:systemd Network Management:/:/sbin/nologin

dbus?81:81:System message bus:/:/sbin/nologin

polkitd?999:998:User for polkitd:/:/sbin/nologin

tss?59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

abrt?173:173::/etc/abrt:/sbin/nologin

sshd?74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

postfix?89:89::/var/spool/postfix:/sbin/nologin

[[email protected] ~]# grep -i "root" passwd

root?0:0:root:/root:/bin/bash

operator?11:0:operator:/root:/sbin/nologin

[[email protected] ~]# echo "ROOT" >> passwd

[[email protected] ~]#

[[email protected] ~]#

[[email protected] ~]# grep -i "root" passwd

root?0:0:root:/root:/bin/bash

operator?11:0:operator:/root:/sbin/nologin

ROOT

root?0:0:root:/root:/bin/bash

operator?11:0:operator:/root:/sbin/nologin

[[email protected] ~]# grep -n "root" passwd

1:root?0:0:root:/root:/bin/bash

10:operator?11:0:operator:/root:/sbin/nologin

[[email protected] ~]# grep -c "root" passwd

2

[[email protected] ~]# grep "^r" passwd

root?0:0:root:/root:/bin/bash

[[email protected] ~]# grep -i "^r" passwd

root?0:0:root:/root:/bin/bash

ROOT

[[email protected] ~]# grep "c$" passwd

sync?5:0:sync:/sbin:/bin/sync

[[email protected] ~]# grep -n "." passwd

1:root?0:0:root:/root:/bin/bash

2:bin?1:1:bin:/bin:/sbin/nologin

3:daemon?2:2:daemon:/sbin:/sbin/nologin

4:adm?3:4:adm:/var/adm:/sbin/nologin

5:lp?4:7:lp:/var/spool/lpd:/sbin/nologin

6:sync?5:0:sync:/sbin:/bin/sync

7:shutdown?6:0:shutdown:/sbin:/sbin/shutdown

8:halt?7:0:halt:/sbin:/sbin/halt

9:mail?8:12:mail:/var/spool/mail:/sbin/nologin

10:operator?11:0:operator:/root:/sbin/nologin

11:games?12??games:/usr/games:/sbin/nologin

12:ftp?14:50:FTP User:/var/ftp:/sbin/nologin

13:nobody?99:99:Nobody:/:/sbin/nologin

14:systemd-network?192:192:systemd Network Management:/:/sbin/nologin

15:dbus?81:81:System message bus:/:/sbin/nologin

16:polkitd?999:998:User for polkitd:/:/sbin/nologin

17:tss?59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

18:abrt?173:173::/etc/abrt:/sbin/nologin

19:sshd?74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

20:postfix?89:89::/var/spool/postfix:/sbin/nologin

21:ROOT

[[email protected] ~]# echo "oldboy." >> passwd

[[email protected] ~]#

[[email protected] ~]#

[[email protected] ~]# grep -n "." passwd

1:root?0:0:root:/root:/bin/bash

2:bin?1:1:bin:/bin:/sbin/nologin

3:daemon?2:2:daemon:/sbin:/sbin/nologin

4:adm?3:4:adm:/var/adm:/sbin/nologin

5:lp?4:7:lp:/var/spool/lpd:/sbin/nologin

6:sync?5:0:sync:/sbin:/bin/sync

7:shutdown?6:0:shutdown:/sbin:/sbin/shutdown

8:halt?7:0:halt:/sbin:/sbin/halt

9:mail?8:12:mail:/var/spool/mail:/sbin/nologin

10:operator?11:0:operator:/root:/sbin/nologin

11:games?12??games:/usr/games:/sbin/nologin

12:ftp?14:50:FTP User:/var/ftp:/sbin/nologin

13:nobody?99:99:Nobody:/:/sbin/nologin

14:systemd-network?192:192:systemd Network Management:/:/sbin/nologin

16:polkitd?999:998:User for polkitd:/:/sbin/nologin

17:tss?59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

18:abrt?173:173::/etc/abrt:/sbin/nologin

19:sshd?74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

20:postfix?89:89::/var/spool/postfix:/sbin/nologin

21:ROOT

22:oldboy.

[[email protected] ~]# grep "." passwd

oldboy.

[[email protected] ~]# grep "root" passwd

root?0:0:root:/root:/bin/bash

operator?11:0:operator:/root:/sbin/nologin

[[email protected] ~]# echo "rootoldboy" >>passwd

[[email protected] ~]#

[[email protected] ~]# grep "root" passwd

root?0:0:root:/root:/bin/bash

operator?11:0:operator:/root:/sbin/nologin

rootoldboy

root?0:0:root:/root:/bin/bash

operator?11:0:operator:/root:/sbin/nologin

[[email protected] ~]# 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: [email protected]/0

root 83777 27074 0 11:29 pts/0 00:00:00 grep --color=auto ssh

[[email protected] ~]# 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: [email protected]/0

root 83785 27074 0 11:29 pts/0 00:00:00 grep --color=auto sshd

[[email protected] ~]# 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: [email protected]/0

root 83811 27074 0 11:29 pts/0 00:00:00 grep --color=auto -w sshd

[[email protected] ~]# 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: [email protected]/0

[[email protected] ~]# ps -ef|grep hgkrhg

root 83849 27074 0 11:30 pts/0 00:00:00 grep --color=auto hgkrhg

[[email protected] ~]# ps -ef|grep -c hgkrhg

1

0

[[email protected] ~]# 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: [email protected]/0

root 83920 27074 0 11:31 pts/0 00:00:00 grep --color=auto sshd

[[email protected] ~]# 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: [email protected]/0

[[email protected] ~]#

#文件上传和下载

#需要下载软件包

[[email protected] ~]# yum install -y lrzsz

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

[[email protected] ~]# rz

[[email protected] ~]# rz -E

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

[[email protected] ~]# sz services

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

#默认没有该命令,需下载

[[email protected] ~]# yum install -y wget

选项:

? -O 指定文件名

[[email protected] ~]# 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.

Length: 1015384 (992K) [application/octet-stream]

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]

[[email protected] ~]# 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 670293 Jun 22 10:45 services

-rw-r--r--. 1 root root 199 Jun 21 16:46 sort.log

[[email protected] ~]#

[[email protected] ~]# 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]

[[email protected] ~]# 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 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.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

[[email protected] ~]#

[[email protected] ~]# 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 指定文件名

[[email protected] ~]# curl https://www.baidu.com/

[[email protected] ~]# 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

[[email protected] ~]# which wget

/usr/bin/wget

[[email protected] ~]# which passwd

/usr/bin/passwd

14.type

[[email protected] ~]# type -a wget

wget is /usr/bin/wget

[[email protected] ~]# type -a cd

cd is a shell builtin

cd is /usr/bin/cd

15.whereis

[[email protected] ~]# whereis wget

wget: /usr/bin/wget /usr/share/man/man1/wget.1.gz

16.find 文件查找

[[email protected] ~]# find / -type d -name "oldboy"

/root/oldboy

[[email protected] ~]# find /root -name "*.txt"

/root/file4.txt

/root/file.txt

/root/file1.txt

/root/file2.txt

/root/file3.txt

[[email protected] ~]# 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

[[email protected] ~]# find /root -type f -name "*.txt" -ls

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行的内容

[[email protected] ~]# 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

[[email protected] ~]# cat sort.txt

b:3

c:2

a:4

e:5

d:1

f:11

[[email protected] ~]# sort -t ‘:‘ -n sort.txt

a:4

b:3

c:2

d:1

e:5

f:11

[[email protected] ~]# sort -t ‘:‘ -nk2 sort.txt

d:1

c:2

b:3

a:4

e:5

f:11

[[email protected] ~]# sort -t ‘:‘ -rnk2 sort.txt

f:11

e:5

a:4

b:3

c:2

d:1

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

选项:

? -c 统计重复行的次数

? -d 只显示重复的行

? -u 只显示不重复的行

[[email protected] ~]# cat >> uniq.txt <<EOF

abc

123

abc

123

EOF

[[email protected] ~]# cat uniq.txt

abc

123

abc

123

[[email protected] ~]# sort uniq.txt

123

123

abc

abc

[[email protected] ~]# sort uniq.txt | uniq

123

abc

[[email protected] ~]# sort uniq.txt | uniq -c

? 2 123

? 2 abc

[[email protected] ~]# echo "def" >> uniq.txt

[[email protected] ~]#

[[email protected] ~]#

[[email protected] ~]# sort uniq.txt | uniq -c

? 2 123

? 2 abc

? 1 def

[[email protected] ~]# sort uniq.txt | uniq -d

123

abc

[[email protected] ~]# sort uniq.txt | uniq -u

def

19.wc 统计次数

选项:

? -l 统计行数

? -c 统计字节数

? -w 统计列数,默认以空格为分隔符

[[email protected] ~]# cat uniq.txt

abc

123

abc

123

def

[[email protected] ~]# wc -l uniq.txt

5 uniq.txt

[[email protected] ~]# 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

[[email protected] ~]# wc uniq.txt

5 5 20 uniq.txt

[[email protected] ~]# wc -w uniq.txt

5 uniq.txt

[[email protected] ~]# wc -c uniq.txt

20 uniq.txt

[[email protected] ~]# ll uniq.txt

-rw-r--r--. 1 root root 20 Jun 22 14:58 uniq.txt

[[email protected] ~]# cat passwd

root?0:0:root:/root:/bin/bash

bin?1:1:bin:/bin:/sbin/nologin

daemon?2:2:daemon:/sbin:/sbin/nologin

adm?3:4:adm:/var/adm:/sbin/nologin

lp?4:7:lp:/var/spool/lpd:/sbin/nologin

sync?5:0:sync:/sbin:/bin/sync

shutdown?6:0:shutdown:/sbin:/sbin/shutdown

halt?7:0:halt:/sbin:/sbin/halt

mail?8:12:mail:/var/spool/mail:/sbin/nologin

operator?11:0:operator:/root:/sbin/nologin

games?12??games:/usr/games:/sbin/nologin

ftp?14:50:FTP User:/var/ftp:/sbin/nologin

nobody?99:99:Nobody:/:/sbin/nologin

systemd-network?192:192:systemd Network Management:/:/sbin/nologin

dbus?81:81:System message bus:/:/sbin/nologin

polkitd?999:998:User for polkitd:/:/sbin/nologin

tss?59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

abrt?173:173::/etc/abrt:/sbin/nologin

sshd?74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

postfix?89:89::/var/spool/postfix:/sbin/nologin

ROOT

oldboy.

rootoldboy

[[email protected] ~]# wc -l passwd

23 passwd

[[email protected] ~]# wc -w passwd

41 passwd

[[email protected] ~]# head passwd

root?0:0:root:/root:/bin/bash

bin?1:1:bin:/bin:/sbin/nologin

daemon?2:2:daemon:/sbin:/sbin/nologin

adm?3:4:adm:/var/adm:/sbin/nologin

lp?4:7:lp:/var/spool/lpd:/sbin/nologin

sync?5:0:sync:/sbin:/bin/sync

shutdown?6:0:shutdown:/sbin:/sbin/shutdown

halt?7:0:halt:/sbin:/sbin/halt

mail?8:12:mail:/var/spool/mail:/sbin/nologin

operator?11:0:operator:/root:/sbin/nologin

[[email protected] ~]# head passwd | wc -w

10

[[email protected] ~]# cat uniq.txt

abc

123

abc

123

def

[[email protected] ~]# vi uniq.txt

[[email protected] ~]#

[[email protected] ~]#

[[email protected] ~]# wc -w uniq.txt

6 uniq.txt

[[email protected] ~]# cat uniq.txt

abc hfkh:ksfhnrkghkeljg

123

abc

123

def

[[email protected] ~]#

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

选项:

? -d 删除字符

[[email protected] ~]# cat uniq.txt

abc hfkh:ksfhnrkghkeljg

123

abc

123

def

[[email protected] ~]# tr ‘1‘ ‘o‘ uniq.txt

tr: extra operand ‘uniq.txt’

Try ‘tr --help‘ for more information.

[[email protected] ~]# tr ‘1‘ ‘o‘ <uniq.txt

abc hfkh:ksfhnrkghkeljg

o23

abc

def

[[email protected] ~]# tr ‘1‘ ‘o‘ < uniq.txt

abc hfkh:ksfhnrkghkeljg

o23

abc

o23

def

[[email protected] ~]# tr ‘123‘ ‘old‘ < uniq.txt

abc hfkh:ksfhnrkghkeljg

old

abc

old

def

[[email protected] ~]# echo "1" >>uniq.txt

[[email protected] ~]#

[[email protected] ~]#

[[email protected] ~]# tr ‘123‘ ‘old‘ < uniq.txt

abc hfkh:ksfhnrkghkeljg

old

abc

old

o

[[email protected] ~]# tr ‘123‘ ‘old‘ < uniq.txt

abc hfkh:ksfhnrkghkeljg

old

abc

old

def

o

l

[[email protected] ~]# cat uniq.txt

abc hfkh:ksfhnrkghkeljg

123

abc

123

def

1

2

[[email protected] ~]# tr -d ‘1‘ < uniq.txt

abc hfkh:ksfhnrkghkeljg

abc

23

def

2

[r[email protected] ~]# tr -d ‘1a‘ < uniq.txt

bc hfkh:ksfhnrkghkeljg

23

bc

23

def

2

[[email protected] ~]#

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

选项:

? -d 指定分隔符

? -f 取出指定的列

[[email protected] ~]# echo "I‘m zls,18 years old QQ 133411023" > file5.txt

[[email protected] ~]# cat file5.txt

I‘m zls,18 years old QQ 133411023

[[email protected] ~]# cut -d ‘ ‘ -f4,6 file5.txt

old 133411023

[[email protected] ~]# cat file5.txt

I‘m zls,18 years old QQ 133411023

[[email protected] ~]# tr ‘,‘ ‘ ‘ < file5.txt

I‘m zls 18 years old QQ 133411023

[[email protected] ~]# tr ‘,‘ ‘ ‘ < file5.txt | cut -d ‘ ‘ -f2,7

zls 133411023

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

选项:

? -n 取消默认输出

? p 打印当前内容

? d 删除当前行

? -i 修改文件的内容

? d 过滤,排除 d(delete)删除

? s 替换

? g 表示全局

? ; 多条命令分隔符,取不连续的多行

? -r 支持扩展正则表达式使用

#取出行

[[email protected] ~]# cat sed.txt

101,$oldboy,CEO

102,$zhangyao,CTO

103,$Alex,COO

104,$yy,CFO

105,$feixue,CIO

106,$lidao,UFO

[[email protected] ~]# sed -n ‘2p‘ sed.txt

102,$zhangyao,CTO

[[email protected] ~]# sed -n ‘2,4p‘ sed.txt

102,$zhangyao,CTO

103,$Alex,COO

104,$yy,CFO

[[email protected] ~]# sed -n ‘2p;4p‘ sed.txt

102,$zhangyao,CTO

104,$yy,CFO

#删除行

[[email protected] ~]# sed ‘2d‘ sed.txt

101,$oldboy,CEO

103,$Alex,COO

104,$yy,CFO

105,$feixue,CIO

106,$lidao,UFO

[[email protected] ~]# sed ‘2,4d‘ sed.txt

101,$oldboy,CEO

105,$feixue,CIO

106,$lidao,UFO

[[email protected] ~]# sed ‘2d;4d‘ sed.txt

101,$oldboy,CEO

103,$Alex,COO

105,$feixue,CIO

106,$lidao,UFO

#过滤字符串

[[email protected] ~]# sed -n ‘/oldboy/p‘ sed.txt

101,$oldboy,CEO

[[email protected] ~]# sed -n ‘/oldboy|feixue/p‘ sed.txt

[[email protected] ~]# sed -nr ‘/oldboy|feixue/p‘ sed.txt

101,$oldboy,CEO

105,$feixue,CIO

#排除

[[email protected] ~]# sed ‘/oldboy/d‘ sed.txt

102,$zhangyao,CTO

103,$Alex,COO

104,$yy,CFO

105,$feixue,CIO

106,$lidao,UFO

#替换

[[email protected] ~]# 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

[[email protected] ~]# cat sed.txt

101,$oldboy,CEO

102,$zhangyao,CTO

103,$Alex,COO

104,$yy,CFO

105,$feixue,CIO

106,$lidao,UFO

[[email protected] ~]# sed -i ‘s#lidao#qiudao#g‘ sed.txt

[[email protected] ~]# cat sed.txt

101,$oldboy,CEO

102,$zhangyao,CTO

103,$Alex,COO

104,$yy,CFO

105,$feixue,CIO

106,$qiudao,UFO

[[email protected] ~]#

[[email protected] ~]# cat file5.txt

I‘m zls,18 years old QQ 133411023

[[email protected] ~]# sed ‘s#,# #g‘ file5.txt

I‘m zls 18 years old QQ 133411023

[[email protected] ~]# sed ‘s#,# #g‘ file5.txt | cut -d ‘ ‘ -f2,7

zls 133411023

[[email protected] ~]#

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

选项说明:

? -F #指定分割符,多个分隔符

? NR #行号

? $n #取某一列

? $NF #最后一列

? $0 #整行内容

? print #显示内容

? ! #取反

#取行

[[email protected] ~]# awk ‘print $0,NR‘ awk.txt

101,$oldboy,CEO 1

102,$zhangyao,CTO 2

103,$Alex,COO 3

104,$yy,CFO 4

106,$qiudao,UFO 6

[[email protected] ~]# awk ‘NR==2,NR==4‘ awk.txt

102,$zhangyao,CTO

103,$Alex,COO

104,$yy,CFO

[[email protected] ~]# awk ‘NR>1&& NR<5‘ awk.txt

102,$zhangyao,CTO

103,$Alex,COO

104,$yy,CFO

[[email protected] ~]# awk ‘NR>=2 && NR <=4‘ awk.txt

102,$zhangyao,CTO

103,$Alex,COO

104,$yy,CFO

#取列

[[email protected] ~]# cat file5.txt

I‘m zls,18 years old QQ 133411023

[[email protected] ~]# awk -F ‘[ ,]‘ ‘print $2,$7‘ file5.txt

zls 133411023

[[email protected] ~]# cat awk.txt

101,$oldboy,CEO

102,$zhangyao,CTO

103,$Alex,COO

104,$yy,CFO

105,$feixue,CIO

106,$qiudao,UFO

[[email protected] ~]# awk -F, ‘print $3‘ awk.txt

CEO

CTO

COO

CFO

CIO

UFO

[[email protected] ~]# awk -F, ‘print $NF‘ awk.txt

CEO

CTO

COO

CFO

CIO

UFO

[[email protected] ~]# awk -F, ‘print $2‘ awk.txt

$oldboy

$zhangyao

$Alex

$yy

$feixue

$qiudao

[[email protected] ~]# awk -F, ‘print $(NF-1)‘ awk.txt

$oldboy

$zhangyao

$Alex

$yy

$feixue

$qiudao

[[email protected] ~]#

#过滤字符串

[[email protected] ~]# awk ‘/oldboy/‘ awk.txt

101,$oldboy,CEO

[[email protected] ~]# awk ‘/oldboy|qiudao/‘ awk.txt

101,$oldboy,CEO

106,$qiudao,UFO

[[email protected] ~]# awk ‘/oldboy/‘ awk.txt

101,$oldboy,CEO

[[email protected] ~]# 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

[[email protected] ~]# sort -rnk2 sort.log

[[email protected] ~]# sort -rnk2 sort.log |column -t

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

[[email protected] ~]# wc -l /etc/services

11176 /etc/services

11176 matahari 49000/tcp # Matahari Broker

[[email protected] ~]# grep -n "." /etc/services |tail -1

11176:matahari 49000/tcp # Matahari Broker

[[email protected] ~]# sed = /etc/services |tail -2

11176

matahari 49000/tcp # Matahari Broker

[[email protected] ~]# 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

[[email protected] ~]# sort uniq.txt |uniq -c |sort -n

? 1 egon

? 1 student

? 2 oldgirl

? 3 oldboy

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

[[email protected] ~]# awk -F: ‘print $NF‘ /etc/passwd

[[email protected] ~]# awk -F: ‘print $7‘ /etc/passwd

[[email protected] ~]# cut -d ‘:‘ -f7 /etc/passwd

test

qiudao

oldboy

[[email protected] ~]# grep -v "oldboy" test.txt

test

qiudao

[[email protected] ~]# sed ‘/oldboy/d‘ test.txt

test

qiudao

[[email protected] ~]# awk ‘!/oldboy/‘ test.txt

qiudao

[[email protected] ~]# head -2 test.txt

test

qiudao

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

[[email protected] ~]# sed -n ‘5,15p‘ /etc/passwd

[[email protected] ~]# awk ‘NR==5,NR==15‘ /etc/passwd

[[email protected] ~]# awk ‘NR>4&&NR<16‘ /etc/passwd

[[email protected] ~]# awk ‘NR>=5&&NR<=15‘ /etc/passwd

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

[[email protected] ~]# sed -i ‘s#oldboy#oldgirl#g‘ awk.txt

[[email protected] ~]# sed -i.bak ‘s#oldboy#oldgirl#g‘ awk.txt

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

oldboy

oldgirl

alex

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

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

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

[[email protected] ~]# ip address show eth0 | grep -w inet |tr ‘/‘ ‘ ‘ |cut -d ‘ ‘ -f6

10.0.0.100

[[email protected] ~]# ip address show eth0 | grep -w inet |cut -d ‘ ‘ -f 6 |cut -d ‘/‘ -f1

10.0.0.100

[[email protected] ~]# ip address show eth0 | grep -w inet |sed ‘s#/# #g‘ |cut -d ‘ ‘ -f6

10.0.0.100

[[email protected] ~]# ip a s eth0 |awk ‘NR==3‘ |awk -F ‘[ /]‘ ‘print $6‘

10.0.0.100

[[email protected] ~]# ip a s eth0 |awk ‘NR==3‘ |awk -F ‘[ /]*‘ ‘print $3‘

10.0.0.100

[[email protected] ~]# ip a s eth0 |awk -F ‘[ /]‘ ‘NR==3print $6‘

10.0.0.100

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

[[email protected] ~]# awk -F: ‘print $7":"$2":"$3":"$4":"$5":"$6":"$1‘ passwd

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

文件属性

[[email protected] ~]# ll

-rw-r--r--. 1 root root 58817074 Sep 21 2017 access.log

2. rw-r--r-- 文件的权限

3. 1 文件的硬链接数

4. root 文件的属主

5. root 文件的属组

6. 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。

[[email protected] ~]# mkdir oldboy/data/

[[email protected] ~]# cd oldboy/data/

[[email protected] data]# touch oldboy.txt

[[email protected] data]# cd

[[email protected] ~]# ln -s /root/oldboy/data/oldboy.txt /root/oldgirl.txt

[[email protected] ~]# ll /root/oldgirl.txt

lrwxrwxrwx. 1 root root 28 Jun 22 17:04 /root/oldgirl.txt -> /root/oldboy/data/oldboy.txt

[[email protected] ~]# echo "123" > /root/oldgirl.txt

[[email protected] ~]# cat /root/oldgirl.txt

123

[[email protected] ~]# cat /root/oldboy/data/oldboy.txt

123

版本升级

[[email protected] ~]# mkdir nginx-1.14

[[email protected] ~]# ln -s nginx-1.14 nginx

[[email protected] ~]# mkdir nginx-1.16

[[email protected] ~]# rm -f nginx && ln -s nginx-1.16 nginx

版本回退

[[email protected] ~]# rm -f nginx && ln -s nginx-1.14 nginx

[[email protected] ~]# ll -i nginx

67160163 lrwxrwxrwx. 1 root root 10 Jun 22 17:08 nginx -> nginx-1.16

[[email protected] ~]# ll -i nginx-1.16

total 0

[[email protected] ~]# ll -i -d nginx-1.16

101703610 drwxr-xr-x. 2 root root 6 Jun 22 17:07 nginx-1.16

硬链接

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

称为硬链接。

[[email protected] ~]# ln passwd passwd.lk

[[email protected] ~]# 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

[[email protected] ~]# \rm -f passwd

[[email protected] ~]# ll passwd.lk

-rw-r--r--. 1 root root 962 Jun 22 11:27 passwd.lk

[[email protected] ~]# cat passwd.lk

root?0:0:root:/root:/bin/bash

bin?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

判断命令缓存列表是否存在命令缓存

[[email protected] ~]# hash -d ip #删除命令缓存列表中对应的命令

[[email protected] ~]# hash -r #清空命令缓存列表

[[email protected] ~]# hash

执行命令,有就执行成功,没有报错,命令找不到。

[[email protected] ~]# qiudao

-bash: qiudao: command not found

vim 文本编辑工具

vim三种模式

普通模式:进入文本当中就是普通模式,可以对文件进行删除,复制,粘贴等操作。

编辑模式:需要由普通模式进入到编辑模式,可以对文件修改等操作。

底行模式:保存文件,退出文件等。

#安装vim命令

[[email protected] ~]# yum install -y vim

普通模式

#1.普通模式光标跳转

G #光标跳转至文件的最后一行 shift+g

gg #光标跳转至文件的第一行

Ngg #光标跳转至当前文件的Number行

$ #光标跳转至光标所在行的尾部

^|0 #光标跳转至光标所在行的首部

#2.文件内容较多

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

ctrl+b #往上翻页

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 #删除当前光标及光标以后的内容并进入编辑模式

1.新建一个文件,进入编辑模式,粘贴如下内容

[[email protected] ~]# 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.退出编辑模式

底行模式

: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选项进行恢复。

#根据文件回答下列习题

[[email protected] ~]# 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;

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.退出,修改成功

-rw-r--r--. 1 root root 13712 Jun 21 16:19 456

matahari 49000/tcp # Matahari Broker

[[email protected] ~]# tail -f oldboy.log

[[email protected] ~]# grep "root" passwd

15:dbus?81:81:System message bus:/:/sbin/nologin

[[email protected] ~]#

[[email protected] ~]# grep -w "root" passwd

[[email protected] ~]# ps -ef|grep -c [d]fg

HTTP request sent, awaiting response... 200 OK

Saving to: ‘nginx-1.14.2.tar.gz’

-rw-r--r--. 1 root root 962 Jun 22 11:27 passwd

-rw-r--r--. 1 root root 24 Jun 22 10:28 file4.txt

-rw-r--r--. 1 root root 1015384 Dec 4 2018 nginx-1.14.2.tar.gz

/root/oldboy.txt

/root/ip.txt

67157890 4 -rw-r--r-- 1 root root 26 Jun 22 11:09 /root/oldboy.txt

o23

def

[[email protected] ~]# echo "2" >>uniq.txt

23

105,$feixue,CIO 5

[[email protected] ~]# cat -n /etc/services | tail -1

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

test

[[email protected] ~]# head -15 /etc/passwd |tail -11

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

    •          文件的类型

#3.复制与粘贴

#1.文件保存与退出

1.使用vim打开proxy.conf文件

以上是关于三剑客与vim编辑器的使用的主要内容,如果未能解决你的问题,请参考以下文章

vim命令大全

linux文本处理三剑客之 grep

Vim学习与使用

Vim学习与使用

vi与vim编辑器使用

第十章vim 程序编辑器