#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
[root[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==3{print $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文件
原文地址:https://www.cnblogs.com/ronglianbing2019--/p/11070648.html