例子1:显示当前工作目录
[root@ken1 ~]# pwd
/root
[root@ken1 ~]#
root 表示当前正在登陆使用的用户
ken1 表示主机名
~ 表示当前所处的工作目录
2.cd 切换工作目录
– 切换回上一次所处的工作目录
~ 切换回用户家目录
.. 切换至上一级目录
cd 切换回用户家目录
例子1:切换至/tmp 目录
[root@ken1 ~]# cd /tmp
[root@ken1 tmp]# pwd
/tmp
思考:在提示符中已经显示当前所处的工作目录,为什么还会有pwd命令显示当前的
工作目录那?
[root@ken1 3]# pwd
/1/2/3
解答:因为在提示符中仅仅显示的是当前所处的工作目录,
如果该目录是一个级联目录(多记目录)的话我们就不知道当前具体的工作目录在哪里,
所以只能使用pwd命令来获取一个绝对路径。
例子2:返回值上一级工作目录
[root@ken1 3]# cd ..
[root@ken1 2]# pwd
/1/2
例子3: 返回上一次所处的工作目录
[root@ken1 2]# cd –
/1/2/3
[root@ken1 3]#
例子4:返回用户家目录
方法一:
[root@ken1 3]# cd
[root@ken1 ~]# pwd
/root
方法二:
3. mkdir
作用: 创建目录
选项:
-p 创建级联目录(多级目录/1/2/3)
-v 显示目录创建的详细信息
例子1: 创建ken目录
[root@ken1 ~]# mkdir kenken
[root@ken1 ~]# ls
anaconda-ks.cfg ken kenken test
[root@ken1 ~]# ls -l
total 1
drwxr-xr-x 2 root root 6 Jun 21 10:08 kenken
例子2: 创建级联目录
[root@ken1 ~]# mkdir /2/3/4 -p
[root@ken1 ~]# ls /2/3/4 -ld
drwxr-xr-x 2 root root 6 Jun 21 10:09 /2/3/4
[root@ken1 ~]# mkdir /3/3/4 -pv
mkdir: created directory ‘/3’
mkdir: created directory ‘/3/3’
mkdir: created directory ‘/3/3/4’
6.touch 创建普通文本
[root@ken1 ~]# touch test1
[root@ken1 ~]# ls -l
total 1
-rw-r–r– 1 root root 0 Jun 21 10:11 test1
7. echo 输出一段文本至终端
[root@ken1 ~]# echo “Hello World”
Hello World
8. cat 查看文本内容
选项:
-n 显示行号
例子1:查看test1文本内容
[root@ken1 ~]# cat test1
Hello World
例子2:显示文本行号
[root@ken1 ~]# cat -n test1
1 Hello World
9.rm remove 删除文件
选项:
-r 删除目录时使用
-f 强制删除
例子1:使用-f删除一个文件
[root@ken1 ~]# rm test
rm: remove symbolic link ‘test’? y
[root@ken1 ~]# ls
anaconda-ks.cfg ken kenken test1
[root@ken1 ~]# rm -f test1 #使用-f会直接删除文件不会给我们任何的返回确认信息
[root@ken1 ~]# ls
anaconda-ks.cfg ken kenken
例子2:删除目录-rf
[root@ken1 ~]# rm -f ken
rm: cannot remove ‘ken’: Is a directory
[root@ken1 ~]# rm -rf ken #删除目录时使用
[root@ken1 ~]# ls
anaconda-ks.cfg kenken
9.tail 默认查看末尾后10行的文本内容
-f: 持续刷新
例子1:查看/etc/passwd 文本后10行内容
[root@ken1 ~]# tail /etc/passwd
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
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
例子2: 至显示文本后三行
[root@ken1 ~]# tail -3 /etc/passwd
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
例子3:持续检测文本内容
[root@ken1 ~]# tail -f test
123
123
123
123
123
10.reboot 重启系统
11. poweroff
快捷键:
ctrl+l #强制清屏
ctrl+c #强制终止
12. hostnamectl 设置主机名,立即且永久生效
set-hostname
例子1:设置主机名为ken2
[root@ken1 ~]# hostnamectl set-hostname ken2
主机名解析:
/etc/hosts
添加主机名解析:
[root@ken2 ~]# echo “192.168.163.5 ken2” >> /etc/hosts
验证:
[root@ken2 ~]# ping ken2
解释:
做了主机名解析的主机,可以使用主机名代替IP进行通信
13. ping 主机在线检测
-c count 发送包的数量
例子1: 验证主机是否可以通外网
[root@ken2 ~]# ping -c 1 baidu.com
14. kill 关闭一个进程
kill pid
-9 强制终止
-15 等待进程处理完自己的任务之后再退出
例子1:关掉当前终端
[root@ken2 ~]# kill -9 3247
16. free 查看系统内存
-h: 以人类易读的方式显示当前的内存使用量
17. 查看磁盘使用量
-h: 以人类易读的方式显示当前的内存使用量
LVM逻辑卷实现在线扩容
第一步:添加物理卷
[root@ken2 ~]# pvcreate /dev/sdb
Physical volume “/dev/sdb” successfully created.
第二步:扩容卷组
查看卷组信息命令:
[root@ken2 ~]# vgdisplay
— Volume group —
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <19.00 GiB
PE Size 4.00 MiB
Total PE 4863
Alloc PE / Size 4863 / <19.00 GiB
Free PE / Size 0 / 0
VG UUID QKeTZx-TQmv-vjLS-6O3G-GZNQ-sjhp-6c1gg1
添加物理卷:
[root@ken2 ~]# vgextend centos /dev/sdb
Volume group “centos” successfully extended
第三步:扩容逻辑卷
[root@ken2 ~]# lvextend -L +10G /dev/centos/root
Size of logical volume centos/root changed from <17.00 GiB (4351 extents) to <27.00 GiB (6911 extents).
Logical volume centos/root successfully resized.
[root@ken2 ~]# xfs_growfs /dev/centos/root
[root@ken2 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 27G 1.3G 26G 5% /
上午内容回顾:
1.查看当前目录下的文件ls
2.切换至/tmp目录下cd /tmp
3. 创建普通文本touch
4. 创建目录mkdir
5. 删除一个文本rm
6. 查看内存使用量 free -h
7. 查看磁盘使用量 df -h
8.重启系统reboot
9.关机 shutdown / poweroff
10. 输出文本echo
11. 查看文本内容cat
12.复制cp #copy
13. 移动文件 mv #move
例子:移动test文件至/tmp目录
[root@ken2 ~]# mv test /tmp
[root@ken2 ~]# ls
anaconda-ks.cfg test1
[root@ken2 ~]# ls /tmp
test vmware-root
> 作用把一段内容或者命令的输出导入到一个文件中,但是要注意使用>会把前面的内容给覆盖
>> 作用把一段内容或者命令的输出导入到一个文件中,并且不会覆盖原有内容
[root@ken2 ~]# echo “123” >> test
[root@ken2 ~]# echo “123” >> test
[root@ken2 ~]# cat test
123
123
123
123
123
123
2> 作用是把错误的输出结果输入到一个文件中
2>>错误追加,不会覆盖原有内容
&> 作用实现了不管是正确输出还是错误输出都会输入到一个文本中去
&>> 不会覆盖原有内容
[root@ken2 ~]# ken &>> test
[root@ken2 ~]# cat test
-bash: ken: command not found
-bash: ken: command not found
-bash: ken: command not found
-bash: ken: command not found
-bash: ken: command not found
-bash: ken: command not found
123
123
123
123
123
-bash: ken: command not found
-bash: ken: command not found
-bash: ken: command not found
-bash: ken: command not found
wc 统计文本信息
-l line统计行数
例子1:统计/etc/passwd行数
方法一:
[root@ken2 ~]# wc -l /etc/passwd
18 /etc/passwd
方法二:
[root@ken2 ~]# cat /etc/passwd | wc -l
18
管道符的作用:
把前面命令的输出结果当做后面一个命令的标准输入
注意:管道符可以有多个
例子1:查看crond进程是否正在运行
[root@ken2 ~]# ps aux | grep “crond” | grep -v “grep” | wc -l
1
* 表示匹配所有,包括0个
例子1:删除所有以test开头的文本
[root@ken2 ~]# rm -rf test*
[root@ken2 ~]# ls
anaconda-ks.cfg
例子2:找到linux系统当中所有的以test开头的文本
[root@ken2 ~]# find / -name “test*”
/boot/grub2/i386-pc/test.mod
/boot/grub2/i386-pc/test_blockarg.mod
/boot/grub2/i386-pc/testload.mod
/boot/grub2/i386-pc/testspeed.mod
/root/test3
/tmp/test
/tmp/test4
双引号: 解释变量 #用的最多
变量:
定义变量
[root@ken2 ~]# name=ken
引用变量
[root@ken2 ~]# name=ken
[root@ken2 ~]# echo “$name”
ken
[root@ken2 ~]# echo $name
ken
单引号:不会解释变量,所见即所得
[root@ken2 ~]# echo ‘$name’
$name
总结:在含有变量的情况下,单引号不会解释变量即不会把变量的值打印出来,但是双引号可以
其他情况下,双引号和单引号用法一样
例子2:在含有空格的情况下,如果想要把它们当做一个整体来对待的话就要加上双引号或者单引号
[root@ken2 ~]# name=”this is ken”
[root@ken2 ~]# echo $name
this is ken
[root@ken2 ~]# name=’this is oscar’
[root@ken2 ~]# echo $name
this is oscar
反引号:执行命令
[root@ken2 ~]# name=`ls -l`
[root@ken2 ~]# echo $name
total 4 -rw——-. 1 root root 1246 Apr 4 06:53 anaconda-ks.cfg -rw-r–r– 1 root root 0 Jun 21 22:34 test3
alias命令
设置别名
例子1:
alias “name=poweroff”
[root@ken245 ~]# cat /var/log/nginx/access.log | awk -F ” ” ‘{print $1}’ | sort | uniq -c | sort -rn | head -10
1117 124.202.201.42
984 222.223.188.169
162 124.236.173.241
90 121.28.97.244
50 221.192.179.246
48 124.236.177.192
48 121.195.205.2
45 122.192.12.103
38 117.136.0.168
35 219.143.126.161
频繁访问网站的IP进行屏蔽:
[root@ken245 ~]# iptables -I INPUT -p tcp -s 124.202.201.42 -j DROP
绝对路径相对路径
思考:下面的两个命令有什么区别?
[root@ken1 ~]# ls /test
ls: cannot access /test: No such file or directory
[root@ken1 ~]# ls test
test
ls /test 表示的含义是从/下找test文件 #绝对路径,就是从/开始查找
ls test 表示的含义是从当前目录下找test文件 #相对路径,相对于当前目录
/root/test
/test
系统自带的是vi
yum install vim -y #注意命令选线参数之间都要有空格,空格至少一个
vim作用
就是编辑文本的
vim三种模式:
命令模式 :可以执行一些操作,比如复制黏贴删除等
编辑模式: 就是可以写入文本内容
末行模式: 可以执行一些操作,如文件的保存以及退出
三种模式之间的切换:
命令模式:vim 打开一个文本默认就是直接进入到了命令模式
一:命令模式切换到编辑模式。可以输入i,a,o 编辑模式的特点是在左下角有个INSERT提示符
i insert是在光标前面输入文本
a append 是在光标后追加
o other 在光标下新开一行
二:编辑模式切换回命令模式 eas键
三:末行模式shift :
四:末行模式切换回命令模式:esc
1.命令模式下的常用操作
复制:yy
黏贴:p
剪切、删除: dd
撤销上一次的操作: u
删除光标行到末尾的行:dG
跳转到指定的行:nG #n是数字5G
跳转到首行:1G,gg
跳转到末行:G
跳转至行首:home
跳转到行尾:end
搜索特定内容:/想要搜索的字符串
末行模式下的常用操作:
取消高亮:nohl
显示行号:set nu
取消行号:set nonu
移动第一行到最后一行:1 m $ #m就是move移动的意思
复制第一行到最后一行:1 co $ #co就是copy的意思
删除1-10行的内容:1,10 d
替换操作:
写法一:
1,$ s/d/a/g
写法二:
% s/a/d/g
加g和步加g的区别
g表示的是global全局的意思,如果加上g表示替换匹配到的全部内容
不加g表示只替换每行的匹配的第一个字符
例子1:替换每行的e为a
1,$ s/e/a/
例子2:把全文中的/替换为#
% s@/@#@g
保存退出:
w 保存
q 退出
wq 保存并且退出
q! 强制退出
wq! 强制保存退出
怎么生成的:
1.可能是因为另外一个终端或者用户正在编辑此文件
2.可能是编辑的终端被突然关掉或者意外重启
作用:在系统意外宕机的情况下,依然保持最后编辑的文件的完整性。
崩溃缓存文件的名称:.filename.swap
处理崩溃缓存文件的标准步骤:
第一步:vim进行恢复
vim -r .test.swp #-r是recovery复原的意思
第二步:查看文件并wq保存
略
第三步:删除崩溃缓存文件
[root@ken1 ~]# rm -rf .test.swp
第四步:再次查看文件
[root@ken1 ~]# vim test