vi /etc/sysconfig/network-script/ifcfg-ens33
vm - 编辑 - 虚拟网络编辑器 - DHCP设置
vm - 编辑 - 虚拟网络编辑器 - NAT设置
systemctl restart network
ip config
ip: 起始ip地址与结束IP地址之间
ls即为 list,意思是列出当前目录下的文件信息
ls -l: 查看目录下文件的详细信息,缩写为ll
ls -a: 查看目录下隐藏的文件
ls -d: 查看目录(常和-l选项一起用,如只想查看某个目录本身的信息,而不是目
录下的文件信息)
ls -t: 按文件时间先后顺序倒叙排列(常和-l选项一起使用)
ls -i: 查看文件的iNode号
cd 命令 :进入磁盘的某个目录下[dir]
cd ./ 表示当前目录
cd …/ 表示上一层目录
cd …/…/ 表示向上两层目录
cd 进入用户根目录
cd ~ 进入用户根目录
cd / 进入系统根目录
cd 文件名 进入当前文件目录
mkdir:创建文件夹
单个文件夹:mkdir 文件夹
多个文件夹:mkdir 文件夹1 文件夹2 文件夹3
touch:创建文件
单个文件 touch 文件
多个文件 touch 文件1 文件2 文件3
cat: 由第一行开始显示文件内容
tac: 从最后一行开始显示,可以看出tac是cat的倒写形式
nl: 显示的时候顺便显示行号
more: 一页一页地显示文件内容
tail: 只看结尾几行
Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视
为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目
录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
1、命令格式
find [查找目录] [查找规则] [查找完后的操作]
即:find pathname -option [-print -exec -ok …]
2、命令功能
用于在文件树中查找文件,并做相应的处理,(有可能访问磁盘)。 3、命令参数
(1)pathname:表示所要查找的目录路径,例如”.”表示当前目录,
”/” 表示根目录。
(2)-print:将find找到的文件输出到标准输出。
(3)-exec:对找到的文件执行exec这个参数所指定的shell命令,相应的
形式为:-exec command {} ; 将查到的文件进行command操作,”{}”
就代替查到的文件。
Linux grep 命令用于查找文件里符合条件的字符串。
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合
所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指
定任何文件名称,或是所给予的文件名为 - ,则 grep 指令会从标准输入设备读取
数据。
grep [参数][文件内容][文件或目录…]
参数:
-r 或 --recursive : 在某一目录下递归[所有子目录]查找某一字串此参数的效果和指
定"-d recurse"参数相同。grep -r “字串” 目录名
-s 或 --no-messages : 不显示错误信息。
-v 或 --invert-match : 显示不包含匹配文本的所有行。
-V 或 --version : 显示版本信息。
-w 或 --word-regexp : 只显示全字符合的列。
Linux pwd(英文全拼:print work directory) 命令用于显示工作目录。
执行 pwd 指令可立刻得知您目前所在的工作目录的绝对路径名称。
语法:
pwd [–help][–version]
1.vi 文件名
2.输入i或者a进入可编辑模式
3.编辑内容
4.保存退出,先按esc ,再输入保存退出命令
:w保存文件但不退出vi
:w file将修改另外保存到file中,不退出vi
:w!强制保存,不推出vi
:wq保存文件并退出vi
:wq!强制保存文件,并退出vi
q:不保存文件,退出vi
:q!不保存文件,强制退出vi
:e!放弃所有修改,从上次保存文件开始再编辑
5.最后回车,则再进入命令模式
在Linux下删除文件用rm命令,具体用法如下
rm [选项] 文件
选项说明:
-f -force 忽略不存在的文件,强制删除,无任何提示
-i --interactive 进行交互式地删除
-r | -R --recursive 递归式地删除列出的目录下的所有目录和文件
-v --verbose 详细显示进行的步骤
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk
在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件
逐行的读入,默认以空格为分隔符将每行切片,切开的部分再进行各种分
析处理。 awk是行处理器,相比较屏幕处理的优点,在处理庞大文件时不会
出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
awk处理过程: 依次对每一行进行处理,然后输出
语法:awk [选项参数] ‘script’ var=value 文件名
参数:
-F 指定分隔符
-f 调用脚本
-v 定义变量
Linux ps (英文全拼:process status)命令用于显示当前进程的状态,
类似于 windows 的任务管理器。
语法:ps [options] [–help]
参数:
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
-ef 显示所有命令,连带命令行
管道是一种两个进程间进行单向通信的机制。因为管道传递数据的单向性,管道又称为半双工管道。管道的这
一特点决定 了容器使用的局限性。管道是Linux支持 的最初Unix IPC形式之一,具有以下特点: 数据只能由一
个进程流向另一个进程(其中一个读管道,一个写管道);如果要进行双工通信,需要建立两个管道 。 管道只
能用于父子进程或者兄弟进程间通信。,也就是说管道只能用于具有亲缘关系的进程间通信。 注意:从管道读
数 据是一次性操作,数据一旦被 读,它就从管道中被抛弃,释放空间以便写更多的数据。 格式
command1 | command2 | command3
操作符是:”|”,它只能处理经由前面一个指令传出的正确输出信息,对错误信息没有直接处理能力。然后,传
递给下 一个命令,作为标准的输入
【指令1】正确输出,作为【指令2】的输入 然后【指令2】的输出作为【指令3】的输入 ,【指令3】输出就会
直接显示 在屏幕上面了。 通过管道之后【指令1】和【指令2】的正确输出不显示在屏幕上面
【提醒注意】:
yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中 的Shell前端软件包管理器。
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依
赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum 语法:
yum [options] [command] [package …]
options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显
示安装的过程)等等。
command:要进行的操作。
package 操作的对象。
yum常用命令
1.列出所有可更新的软件清单命令:yum check-update
2.更新所有软件命令:yum update
3.仅安装指定的软件命令:yum install <package_name>
4.仅更新指定的软件命令:yum update <package_name>
5.列出所有可安裝的软件清单命令:yum list
6.删除软件包命令:yum remove <package_name>
7.查找软件包 命令:yum search
wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三
个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理。“wget” 这个名称来源于
“World Wide Web” 与 “get” 的结合
使用方法格式:wget [选项] [参数] ,其中参数为:URL地址。
选项:
-a<日志文件>:在指定的日志文件中记录资料的执行过程;
-A<后缀名>:指定要下载文件的后缀名,多个后缀名之间使用逗号进行分隔;
-b:进行后台的方式运行wget; -B<连接地址>:设置参考的连接地址的基地地址;
-c:继续执行上次终端的任务;
-C<标志>:设置服务器数据块功能标志on为激活,off为关闭,默认值为on; -d:调试模式运行指令;
-D<域名列表>:设置顺着的域名列表,域名之间用“,”分隔;
-e<指令>:作为文件“.wgetrc”中的一部分执行指定的指令;
-h:显示指令帮助信息;
-i<文件>:从指定文件获取要下载的URL地址;
wget http://cn.wordpress.org/wordpress-3.1-zh_CN.zip
Chmod命令主要用于修改、设置文件权限
chmod 修改文件权限主要有两种方式: 字母法与数字法
字母法
chmod (u g o a) (+ - =) (r w x) (文件名)
以上是chmod的用法,每个括号是一个参数, 前三个括号主要放在一起使用即 chmod + 设置模式 + 文件名;
下面先介绍这些参数的意义:
参数:
u :user 表示该文件的所有者
g:group 表示与该文件的所有者属于同一组( group )者,即用户组
o:other 表示其它用户组
a:all 表示这三者皆是
数字法是基于字母法的表示,如果字母法懂了,数字法就好懂,并且易于使用。
用法:chmod + 数字组合 + 文件名
数字组合一般包含三个数字:
第一个数字对应字母法的用户u(user)
第二个数字对应字母法的用户g(group)
第三个数字对应字母法的用户o(other)
另外:
r (read) ----------------> 4
w (write) ----------------> 2
x (excute) ----------------> 1
示例详解:
数字法:chmod 777 文件名 <-----------对应--------------> 字母法: chmod u+rwx, g+rwx, o+rwx 文
件名
第一个数字7:代表用户 u 的权限 rwx, 4 ® + 2 (w) + 1 (x) = 7
第二个数字7:代表用户 g 的权限 rwx, 4 ® + 2 (w) + 1 (x) = 7
第三个数字7:代表用户 o 的权限 rwx, 4 ® + 2 (w) + 1 (x) = 7
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一
种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问
操作系统内核的服务。
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形
界面 Shell。
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell
script 是两个不同的概念。
由于习惯的原因,简洁起见,本文出现的 “shell编程” 都是指 shell 脚本编程,
不是指开发 shell 自身。
Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和
一个能解释执行的脚本解释器就可以了。
Linux 的 Shell 种类众多,常见的有:
1.touch 新建一个文本文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行
2.vi 文件名 按a或i,进入编辑状态
3.编辑代码
#!/bin/bash
echo “Hello World !”
4.按 esc键,再输入:wq
保存退出
5.给脚本一个可执行的权限:chmod +x 文件名
6.执行脚本
./文件名 或 /bin/sh 文件名 或 /当前目录/文件名
1.定义变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:name=“lisa”
注意:变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。
同时,变量名的命名须遵循如下规则:
2.使用变量
使用一个定义过的变量,只要在变量名前面加美元符号即可:echo $name 或者 ${name}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
3.只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。 readonly name
4.删除变量
使用 unset 命令可以删除变量。unset name
5.变量类型
4.获取字符串长度
格式: echo ${#变量名}
5.提取子字符串
s
t
r
i
n
g
:
开
始
位
置
:
结
束
位
置
6.
查
找
子
字
符
串
e
x
p
r
i
n
d
e
x
"
{string:开始位置:结束位置} 6.查找子字符串 expr index "
string:开始位置:结束位置6.查找子字符串exprindex"变量" position(需要找的值)` 计算先出现的位置
数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不
需要定义数组大小(与 PHP 类似)。与大部分编程语言类似,数组元素的下标由0开始。
获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。
在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:
数组名=(值1 值2 … 值n)
还可以单独定义数组的各个分量
数组名[0]=值1
数组名[1]=值2
数组名[n]=值3
可以不使用连续的下标,而且下标的范围没有限制
读取数组元素值的一般格式是:${数组名[下标]}
使用@ 或 * 可以获取数组中的所有元素: 数 组 名 [ ∗ ] 或 {数组名[*]}或 数组名[∗]或{数组名[@]}
获取数组长度的方法与获取字符串长度的方法相同( ${#数组名[*]}或${#数组名[@]}
)
单行注释
以 # 开头的行就是注释,会被解释器忽略。
多行注释
:<<字符
注释内容…
注释内容…
注释内容…
字符
下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:
运算符 说明 举例
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:
运算符 说明 举例
-eq 检测两个数是否相等,相等返回 true [ $a -eq $b ] 返回 false
-ne 检测两个数是否不相等,不相等返回 true [ $a -ne $b ] 返回 true
-gt 检测左边的数是否大于右边的,如果是,则返回 true [ $a -gt $b ] 返回 false
-lt 检测左边的数是否小于右边的,如果是,则返回 true [ $a -lt $b ] 返回 true
-ge 检测左边的数是否大于等于右边的,如果是,则返回 true [ $a -ge $b ] 返回 false
-le 检测左边的数是否小于等于右边的,如果是,则返回 true [ $a -le $b ] 返回
if语句语法格式
if condition
then
command1
command2
…
commandN
fi
if语句语法格式
if condition
then
command1
command2
…
commandN
else
command
fi
if else-if else 语法格式:
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20:
运算符 说明 举例
! 非运算,表达式为 true 则返回 false,否则返回 true [ ! false ] 返回 true
-o 或运算,有一个表达式为 true 则返回 true [ $a -lt 20 -o $b -gt 100 ] 返回 true
-a 与运算,两个表达式都为 true 才返回 true [ $a -lt 20 -a $b -gt 100 ] 返回 false
以下介绍 Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20:
运算符 说明 举例
&& 逻辑的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false
|| 逻辑的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true
下表列出了常用的字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”:
运算符 说明 举例
= 检测两个字符串是否相等,相等返回 true [ $a = $b ] 返回 false
!= 检测两个字符串是否相等,不相等返回 true [ $a != $b ] 返回 true
-z 检测字符串长度是否为0,为0返回 true [ -z
a
]
返
回
f
a
l
s
e
−
n
检
测
字
符
串
长
度
是
否
不
为
0
,
不
为
0
返
回
t
r
u
e
[
−
n
"
a ] 返回 false -n 检测字符串长度是否不为 0,不为 0 返回 true [ -n "
a]返回false−n检测字符串长度是否不为0,不为0返回true[−n"a" ] 返回 true
$ 检测字符串是否为空,不为空返回 true [ $a ] 返回 true
文件测试运算符用于检测 Unix 文件的各种属性
操作符 说明 举例
-b file 检测文件是否是块设备文件,如果是,则返回 true [ -b $file ] 返回 false
-c file 检测文件是否是字符设备文件,如果是,则返回 true [ -c $file ] 返回 false
-d file 检测文件是否是目录,如果是,则返回 true [ -d $file ] 返回 false
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,
则返回 true
[ -f $file ] 返回 true
-g file 检测文件是否设置了 SGID 位,如果是,则返回 true [ -g $file ] 返回 false
-k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true [ -k $file ] 返回 false
-p file 检测文件是否是有名管道,如果是,则返回 true [ -p $file ] 返回 false
-u file 检测文件是否设置了 SUID 位,如果是,则返回 true [ -u $file ] 返回 false
-r file 检测文件是否可读,如果是,则返回 true [ -r $file ] 返回 true
-w file 检测文件是否可写,如果是,则返回 true [ -w $file ] 返回 true
-x file 检测文件是否可执行,如果是,则返回 true [ -x $file ] 返回 true
-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true [ -s $file ] 返回 true
-e file 检测文件(包括目录)是否存在,如果是,则返回 true [ -e $file ] 返回 true
1.显示普通字符串
echo “字符串”
2.显示转义字符
echo “\转义字符 字符串 \转义字符” 3.显示变量
read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量
4 显示换行
-e “ 字符换\n” -e 开启转义
5.显示不换行
\c6.显示结果定向至文件
echo “字符串” >文件
7.原样输出字符串,不进行转义或取变量(用单引号) ‘字符串\转义符’
8.显示命令执行结果
date
注意:** 这里使用的是反引号 `, 而不是单引号 ’ 结果将显示当前日期
printf 命令模仿 C 程序库(library)里的 printf() 程序。
printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。
printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字
符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo
自动添加换行符,我们可以手动添加 \n。
printf 命令的语法:
printf format-string [arguments…]
参数说明:
format-string: 为格式控制字符串
arguments: 为参数列表
序列 说明
\a 警告字符,通常为ASCII的BEL字符
\b 后退
\c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下
的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数
以及任何留在格式字符串中的字符,都被忽略
\f 换页(formfeed) \n 换行
\r 回车(Carriage return) \t 水平制表符
\v 垂直制表符
\ 一个字面上的反斜杠字符
\ddd 表示1到3位数八进制值的字符。仅在格式字符串中有效
\0ddd 表示1到3位的八进制值字符
例子:printf “姓名:%s\n身高:%dcm\n体重:%dkg\n” “小明” “180” “75”
let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计
算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,
则必须引起来。
语法格式:let arg [arg …]
参数说明:
arg:要执行的表达式
实例:
自加操作:let no++
自减操作:let no–
简写形式 let no+=10,let no-=20,分别等同于 let no=no+10,let no=no-20。
与其他编程语言类似,Shell支持for循环。
for循环一般格式为:
for var in item1 item2 … itemN
do
command1
command2
…
commandN
done
while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常
为测试条件。其格式为:
while condition
do
command
done
until 循环执行一系列命令直至条件为 true 时停止。
until 循环与 while 循环在处理方式上刚好相反。
一般 while 循环优于 until 循环,但在某些时候—也只是极少数情况下,until
循环更加有用。
until 语法格式:
until condition
do
command
done
condition 一般为条件表达式,如果返回值为 false,则继续执行循环体内的语
句,否则跳出循环。
case … esac** 与其他语言中的 switch … case 语句类似,是一种多分枝选择结构,每个
case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case …
esac 语句,esac(就是 case 反过来)作为结束标记。
case 值 in
模式1)
模式1匹配成功
;;
模式2)
模式2匹配成功
;;
*)
以上都没匹配成功
;;
esac
case工作方式如上所示。取值后面必须为单词in,每一模式必须以右括号结束。取值可以为
变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。
取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他
模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。
在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用两个命令来
实现该功能:break和continue。
break
break命令允许跳出所有循环(终止执行后面的所有循环)
continue
continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循
环。
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n 。n代表一
个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
参数处理 说明
$# 传递到脚本的参数个数
∗
以
一
个
单
字
符
串
显
示
所
有
向
脚
本
传
递
的
参
数
。
如
"
* 以一个单字符串显示所有向脚本传递的参数。 如"
∗以一个单字符串显示所有向脚本传递的参数。如"*“用「”」括起来
的情况、以"$1 $2 … $n"的形式输出所有参数
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
@
与
@ 与
@与相同,但是使用时加引号,并在引号中返回每个参数。 如"$@"
用「"」括起来的情况、以"$1" “
2
"
…
"
2" … "
2"…"n” 的形式输出所有参数
$- 显示Shell使用的当前选项,与set命令功能相同
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误
$ 与 $@ 区别:
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用
shell中函数的定义格式如下:
[ function ] funname [()]
{
action;
[return int;]
}
说明:
在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值
,例如,$1表示第一个参数,$2表示第二个参数…
参数处理 说明
$# 传递到脚本的参数个数
∗
以
一
个
单
字
符
串
显
示
所
有
向
脚
本
传
递
的
参
数
。
如
"
* 以一个单字符串显示所有向脚本传递的参数。 如"
∗以一个单字符串显示所有向脚本传递的参数。如"*“用「”」括起来
的情况、以"$1 $2 … $n"的形式输出所有参数
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
@
与
@ 与
@与*相同,但是使用时加引号,并在引号中返回每个参数。 如"$@"
用「"」括起来的情况、以"$1" “
2
"
…
"
2" … "
2"…"n” 的形式输出所有参数
$- 显示Shell使用的当前选项,与set命令功能相同
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误
和其他语言一样,Shell 也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为
一个独立的文件。
shell中文件包含的定义格式如下:
filename # 注意点号(.)和文件名中间有一空格
或
source filename
注:被包含的文件 test.sh 不需要可执行权限