目录
1.1 tab补全
1.2 shell命令操作
1.3 vim操作
1.4 history
1.5 定义别名
1.6 变量
1.7 标准输入、输出
1.8 特殊符号、通配符
1.9 扩展
2 系统管理的常用命令
1.1 tab补全
tab 一次:若输入的内容能够唯一标识,直接跳出命令。
若输入的内容不能唯一标识,再 tab,显示出所有匹配的命令
tab命令补全的原理:vi ,系统根据环境变量$PATH 去文件下寻找命令。
1.2 shell命令操作
ctrl + a :光标跳到最前
ctrl + e:光标跳到最后
ctrl +k:删除光标后的内容
ctrl+u:删除光标前的内容
ctrl+l:清屏
ctrl+r:搜索历史命令
ctrl+c:停止当前正在运行的程序
1.3 vim操作
编辑模式:
i:在当前光标下插入
O:上一行插入
o:下一行插入
命令行模式:
:q 退出
:q! 强制退出
:w 保存
:w! 强制保存
:wq 保存并退出
:x 保存并退出
:set nu 设置行号
1.4 history
!+历史命令是列表行号:执行该行命令
!$ : 执行最后一次的历史命令
help history 查看帮助
history -w :把历史命令列表同步到历史命令文件中
echo $HISTFILE :查看历史命令文件位置。
- 设置历史命令的保存数量:
输入命令 vim /etc/profile 对此文件中的HISTSIZE进行修改,改成想要的保存数量
后按Esc,shift+:输入x或者wq保存退出,然后输入命令 source /etc/profile 将此文件进行重载,修改便能生效。可再次输入命令history进行查看。
- 设置历史命令的时间戳和使用用户:
输入命令 vim /etc/profile 再此文件中最后一行加入export HISTTIMEFORMAT="%F %T whoami
"后按 Esc,shift+:输入x或wq保存退出,然后source /etc/profile 重载,现在输入history命令便会出现如下内容:
1.5 定义别名
alias命令用于定义别名,unalias用于取消别名。
例如将进行网络配置的命令用别名net代替,操作如下:
[root@localhost ~]# alias net=“vim /etc/sysconfig/network-scripts/ifcfg-eth0”
取消此别名,操作如下:
[root@localhost ~]# unalias net
让别名永久生效:
[root@localhost ~]# vim /etc/bashrc #进入bashrc文件在最后加入定义别名的命令,
如下所示:
alias net=“vim /etc/sysconfig/network-scripts/ifcfg-eth0”
:wq#保存退出
[root@localhost ~]# source /etc/bashrc #重载文件
若想要查看别名的含义,则输入type -a 要查看的别名,如想要查看别名net的含义:
1.6 变量
定义变量,例如:a=“name”
取消变量,例如:unset a
查看变量,例如:echo $a !
全局变量与局部变量:
#!/bin/bash
who=whoami
#全局变量,作用于对当前文件
test(){
IP=‘192.168.254.125’ #局部变量,作用于一行代码,或者代码块
ping $IP
echo $who
}
test
- 环境变量:对于当前的shell下的所有进程及子进程都生效
1.7 标准输入、输出
-
0是标准输入,1是标准输出,2是错误输出。
filename标准输出到文件,如:[root@localhost ~]# ls >file1
2> eername 错误输出到文件,如:[root@localhost ~]# mysql 2>err
如图,创建一个文件ac,输入命令ls>ac将ls内容标准输出到ac,输入la 2>>ac将la错误输出到文件ac。因为la是错误输出,因此要加上2,且要有两个>,因为若是只有一个>,那么第二次输出内容将会覆盖之前的内容。
将正确输出到bc,错误输出到aa:
<用于标准输入,如下图,输完内容后EOF结束:
1.8 特殊符号、通配符
- “|”:把上个命令的执行结果交给了下一个命令继续处理
如:[root@localhost ~]# ll |grep err
[root@localhost ~]# ip a |grep inet
如下图命令,就是将ip a 中带有inet的信息过滤出来:
- “tee”:把过滤的结果打印到文件中。
如下操作就是将ip a 中过滤的内容打印到cc文件中:
-
"…"代表上级目录
-
"."当前目录
-
“;”多条命令的分割:就是执行完;之前的命令后再执行;之后的命令
-
``把内容还原成命令
[root@localhost test]# a=ls
;echo $a
如下图,就是把`中的ls还原成命令执行出来: -
“*” 表示匹配所有
-
"?"匹配单个任意符
如下图,*就是匹配到所有含有file的内容,?就是匹配到a之后单个字符的内容:
1.9 扩展
-
echo $?判断上一条命令执行是否成功,若成功,返回0;失败,返回非0;
#!/bin/bash
IP=‘192.168.42.145’
ping -c1 $IP &>/dev/null
if [ $? -eq 0 ]
then
echo ‘tong,’
fi
删除文件:rm -rf filename
创建文件: touch filename
创建文件夹:mkdir 要创建的文件夹名
free查看内存使用情况,free -h,free -m
Mem表示内存;
swap表示在磁盘上格式化的一个和内存格式相同的分区
buff表示数据读的缓存空间
cache表示数据写的缓存空间
- pwd 查看当前路径,如下:
- set nu 设置行号
- cat /etc/redhat-release 查看虚拟机版本
2 系统管理的常用命令
2.1
ls
ls -a 显示所有的隐藏文件及目录,ls -A 显示影藏文件
ls -l ===> ll
ls : 显示是链接文件及链接路径,ls -L,显示的是链接路径下的真实文件
2.2
相对路径,绝对路径,pwd
用绝对路径,表示index.html ;/root/test/app/index.html
用相对路径,表示index.html ;app/index.html
pwd 显示的是当前路径,pwd -P 显示 链接文件的真实路径
[root@localhost ~]# cd ~ 切换到用户的家目录
[root@localhost var]# cd - 切换到上一次文件所在的路径。
[root@localhost mail]# cd …/ 切换到上曾目录
[root@localhost mail]# cd …/…/ 切换到上上层目录
2.3
data
时钟显示格式的拼接:
[root@localhost ~]# date "+%Y-%m-%d %H:%M:%S
修改系统时间
[root@localhost ~]# date -s 17:54:30
显示时区:
[root@localhost ~]# date +%Z
扩展:
#!/bin/bash
time=date "+%H"
echo $time.log
2.4
wget
安装wget命令:[root@localhost ~]# yum install wget -y
我第一次安装wget不成功,输入mount /dev/sr0 /media,将光盘挂载到media上后便可成功。
[root@localhost ~]# wget http://mirrors.sohu.com/centos/7.6.1810/extras/x86_64/Packages/centos-release-scl-2-3.el7.centos.noarch.rpm
[root@localhost src]# wget -b -c http://mirrors.sohu.com/centos/7.6.1810/extras/x86_64/Packages/ansible-2.4.2.0-2.el7.noarch.rpm /usr/local/src/
[root@localhost src]# wget -P /usr/local/src/ http://mirrors.sohu.com/centos/7.6.1810/extras/x86_64/Packages/ansible-2.4.2.0-2.el7.noarch.rpm
-b 后台运行
-c端点续传
-P 指定下载路径
*上图中第一次没下载成功,输入vim /etc/resolv.conf命令进入此文件写入nameserver 192.168.1.2,即虚拟机的网关后保存退出。然后就可以成功下载
2.5
uname
[root@localhost src]# uname -a 查看系统内核信息
[root@localhost src]# uname -r
2.6
reboot:重启系统