linux之初识shell

操作系统简介

世上本没有路,走的人多了,便变成了路。——鲁迅

这句话真的是鲁迅说的,出自鲁迅的《故乡》,我们可以理解为一个东西用的人多了,自然而然就会把这个东西的使用方式打磨完善了,人类自动获得了智慧开始就掌握了工具的使用方法。众所周知做不同的事情就需要有不同的方法,走不同的路,也就有了不同的工具。

一台机器往往有不同的零件组成,一台电脑也是由很多不同的硬件组成,这么多的硬件设备,就需要有一个系统去代替我们管理好,这个就是操作系统。

操作系统需要完成的任务很简单,就是去学习每个硬件的不同使用方法,专业的术语叫“安装驱动程序”,当操作系统学会了每个硬件的使用方法之后,就会以某种人类可以操作的方式来被人类使用,有的操作系统是图形化界面的,我们可以鼠标点击来操作,有的是命令行的,我们需要输入命令来操作,不管是哪种方式,最终都是让计算机硬件来为我们而工作。

在这里插入图片描述

Linux操作系统

不同的人对计算机有不同的操作习惯,不同的使用场景对操作系统有不同的挑战,所以当前就出现了多种多样的操作系统

  • Windows
    • 收费闭源操作系统,主要用于日常办公、游戏、娱乐多一些
  • Linux
    • 免费的,开源的,主要用于服务器领域,性能稳定,安全
  • Unix
    • 用于封闭的硬件环境,企业的应用依赖于定制化开发

Linux图谱

Linux发展到今天出现了大量不同的分支。不同的分支都有不同的发展方向,可以扫描下面二维码,查看Linux发现分支图,或者点开此链接

在这里插入图片描述

Linux名词

  • Linux系统内核指的是一个由Linus Torvalds负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。
  • Linux发行套件系统是我们常说的Linux操作系统,也即是由Linux内核与各种常用软件的集合产品

linux初始配置:


[root@192 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
[root@192 ~]#systemctl status firewalld   //查看防火墙状态
[root@192 ~]# setenforce 1
[root@192 ~]# getenforce 
Enforcing
[root@192 ~]# setenforce 0
[root@192 ~]# getenforce 
Permissive
[root@192 ~]#systemctl disable firewalld  //永久关闭
[root@192 ~]#systemctl enable firewald.service  //开机启动
[root@192 ~]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

[root@192 ~]# source /etc/selinux//config 
[root@192 ~]# hostnamectl set-hostname server1
[root@192 ~]# yum install bash-completion
#selinux三种状态
SELINUXTYPE=disable          #禁用
SELINUXTYPE=Enforcing   #启用。强制模式
SELINUXTYPE=Permissive  #宽容模式

初识shell:

shell相当于用户和系统内核之间的一个翻译官角色,shell脚本可以方便地与系统交互,完成系统管理以及批处理任务。shell处于操作系统与应用之间,起到桥梁的作用。

img

我们可以使用shell实现对Linux系统单的大部分管理,例如:

  1. 文件管理
  2. 用户管理
  3. 权限管理
  4. 磁盘管理
  5. 软件管理
  6. 网络管理

使用shell的两种方式

  • 交互式命令行
    • 默认等待用户输入命令,输入一行回车后执行一行命令
    • 效率低 适合少量的工作
  • shell脚本
    • 将需要执行的命令和逻辑判断语句都写入一个文件中,一起运行
    • 效率高 适合完成复杂,重复性工作

bash shell提示符

登录Linux系统之后,默认进入交互式的命令行界面,在光标前边会出现提示符

[root@localhost ~]# 
[用户名@主机名 目录名]权限标识
  • 权限标识
    • 超级管理员权限就表示为#
    • 普通用户标识为$

这个提示符格式被$PS1控制,我们可以查看这个变量

[root@localhost ~]# echo $PS1
[\u@\h \W]\$
# \u表示是用户名 \h表示的是主机名 \W表示的当前所在目录 \$是权限标识
[root@localhost ~]# export PS1="{\u@\h}\W \$"
{root@localhost}~ $
# 可以通过export命令修改PS1变量,让提示符可以根据你的习惯变化

shell语法

命令 选项 参数

[root@localhost ~]# cal --year -m 2020
  • 命令
    • cal是命令,用于查看日历
  • 选项
    • --year是选项,表示显示一整年,这个是一个长选项,也就是单词都拼全了,需要两条-符号
    • -m是短选项,是首字母,表示每个星期的星期一作为第一天
    • 对于有些命令而言,可以不写选项,这样命令会有个默认的行为
    • 短选项可以多个合并在一起,比如上面的命令可以写成-ym其中y是year简写,可以和m写在一起,而长选项不支持写在一起
  • 参数
    • 2020是参数,参数是命令作用的对象,表示查看的是2020年的日历

我们也可以查看这个命令的所有选项

[root@localhost ~]# cal --help
用法:
 cal [选项] [[[]]]
选项:
 -1, --one        只显示当前月份(默认)
 -3, --three      显示上个月、当月和下个月
 -s, --sunday     周日作为一周第一天
 -m, --monday     周一用为一周第一天
 -j, --julian     输出儒略日
 -y, --year       输出整年
 -V, --version    显示版本信息并退出
 -h, --help       显示此帮助并退出

常用命令

alias

[root@server1 ~]# 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='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

[root@server1 ~]# alias wl='cat /etc/sysconfig/network-scripts/ifcfg-ens33' #创建别名
[root@server1 ~]# wl
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="f6002c62-9265-4937-8e17-7a9d7a2f8a05"
DEVICE="ens33"
ONBOOT="yes"
[root@server1 ~]# unalias wl   #取消别名

[root@server1 ~]# cat ~/.bashrc  #配置文件
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi

为了让别名永久生效,可以讲修改别名的命令写入bashrc文件,这个文件中的命令会在每次登陆命令行的时候执行

[root@localhost ~]# echo "alias wl='ip address'" >> /etc/bashrc

ls命令

[root@server1 ~]#ls --help
#用法 ls [选项]...[文件]...

— 选项:

  • -a:显示所有文件及目录 (**.**开头的隐藏文件也会列出)
  • -l:除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
  • -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
  • -t:将文件依建立时间之先后次序列出
  • -r:将文件以相反次序显示(原定依英文字母次序)
  • -A:同 -a ,但不列出 “.” (目前目录) 及 “…” (父目录)
  • -F:在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/”
  • -R:若目录下有文件,则以下之文件亦皆依序列出
  • -h:将显示出来的文件大小以合适的单位显示出来
  • -i :显示inde号
  • -b: 显示备份文件
扩展知识
[root@localhost ~]# ls -ahl
总用量 24K
dr-xr-x---.  3 root root 139 42 14:00 .
dr-xr-xr-x. 17 root root 224 621 2020 ..
-rw-------.  1 root root 128 42 09:37 .bash_history
-rw-r--r--.  1 root root  18 1229 2013 .bash_logout
-rw-r--r--.  1 root root 176 1229 2013 .bash_profile
-rw-r--r--.  1 root root 176 1229 2013 .bashrc
-rw-r--r--.  1 root root 100 1229 2013 .cshrc
drwxr-xr-x.  2 root root  32 42 14:00 dir
-rw-r--r--.  1 root root 129 1229 2013 .tcshrc
-rw-r--r--.  1 root root   0 42 14:00 test.txt
  1. 第一列共10位,第1位表示文档类型,d表示目录,-表示文件,l表示链接文件,d表示可随机存取的设备,如U盘等,c表示一次性读取设备,如鼠标、键盘等。后9位,依次对应三种身份所拥有的权限,身份顺序为:owner、group、others,权限顺序为:readable、writable、excutable。如:-r-xr-x---的含义为当前文档是一个文件,拥有者可读、可执行,同一个群组下的用户,可读、可写,其他人没有任何权限
  2. 第二列表示链接数,表示有多少个文件链接到inode号码。
  3. 第三列表示拥有者
  4. 第四列表示所属群组
  5. 第五列表示文档容量大小,单位字节
  6. 第六列表示文档最后修改时间,注意不是文档的创建时间哦
  7. 第七列表示文档名称。以点(.)开头的是隐藏文档

创建/删除目录mkdir

tree -C /home -L 2 颜色和深度

mkdir [-mpv] 目录名称
    -p:递归创建
    -v:显示创建过程
    -m:配置文件的权限喔!直接配置,不需要看默认权限 (umask)
[root@localhost ~]#mkdir -m 7777 directory              //配置文件的权限
[root@localhost ~]#mkdir -m 777 directory              //配置文件的权限
[root@localhost ~]# mkdir a/b/c
mkdir: 无法创建目录"a/b/c": 没有那个文件或目录
# 无法直接创建多层目录
[root@localhost ~]# mkdir -p a/b/c
# 加上-p选项之后可以自动创建父级目录
[root@localhost ~]# mkdir -pv dir1/dir2
mkdir: 已创建目录 "dir1"
mkdir: 已创建目录 "dir1/dir2"
# 显示详细的创建过程
rmdir:删除目录
     -p:递归删除
     -v:显示删除过程   

touch(创建新文件)

用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。再次touch改变文件时间戳

  • 时间戳:计算机元年到现在的秒数

  • atime:(access time)显示的是文件中的数据最后被访问的时间,比如系统的进程直接使用或通过一些命令和脚本间接使用。(执行一些可执行文件或脚本)

  • mtime: (modify time)显示的是文件内容被修改的最后时间,比如用vi编辑时就会被改变(也就是Block的内容)

  • ctime: (change time)显示的是文件的权限、拥有者、所属的组、链接数发生改变时的时间。当然当内容改变时也会随之改变(即inode内容发生改变和Block内容发生改变时)


touch:
    -a;只更改atime
    -m:只更改atime
    -t:指定更改时
 
[root@localhost ~]#touch files

rm

  • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
  • -i :互动模式,在删除前会询问使用者是否动作
  • -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!

cat

用于打开文本文件并显示出来,一次性查看所有内容,文件较大时会占用io

cat [选项]... [文件]...

选项

  • -n:由 1 开始对所有输出的行数编号

  • -b:和 -n 相似,只不过对于空白行不编号。

  • -s:当遇到有连续两行以上的空白行,就代换为一行的空白行。

  • -A:显示控制字符

    **相关命令有tac:**同cat,不同是从文件末尾查看

more

more:一次性加载部分内容,翻页时才会查看其余内容,不会占用io,回车翻一行,空格一页,不支持向上翻页

less:

可以随意浏览文件,支持翻页和搜索,支持向上翻页(pg up)和向下翻页(pg dn)。向下翻页回车翻一行,空格一页,

实例:

[root@localhost ~]# less anaconda-ks.cfg

head

  • -c 读取前多少个字节内容
  • -n 读前多少行内容,默认十行
  • -v:显示文件名
  • -q:隐藏文件名,默认是隐藏

实例:

[root@localhost ~]# head -n 6 anaconda-ks.cfg

tail

会把文本文件里的最尾部的内容显示在屏幕上

tail [选项]... [文件]...

选项

  • -f:循环读取
  • -q:隐藏文件名,默认隐藏
  • -v:显示文件名
  • -c<数目>:显示的字节数
  • -n<行数>:显示文件的尾部 n 行内容
  • -s:与-f合用,表示在每次反复的间隔休眠S秒

实例

  • 查看文件anaconda-ks.cfg尾部的3行
[root@localhost ~]# tail -n 3 anaconda-ks.cfg
[root@localhost ~]# tail -3 anaconda-ks.cfg
  • 查看日志的实时更新情况
[root@localhost ~]# tail -f /var/log/messages 
# ctrl+c退出
  • 查看文件anaconda-ks.cfg从第10行到结尾
[root@localhost ~]# tail -n +10 anaconda-ks.cfg

stat

##详细查看
stat file       #查看文件

wc

1.命令基本格式为:

  • wc [选项] 文件 …

2.选项参数主要有:

  • -c 统计字节数。

  • -l 统计行数。

  • -m 统计字符数。这个标志不能与 -c 标志一起使用。

  • -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。

  • -L 打印最长行的长度。

  • -help 显示帮助信息并退出

  • –version 显示版本信息并退出

vim命令

vim是一个纯命令行文本编辑器,很多文本编辑的功能都是通过键盘快捷键的方式完成,所以我们需要记住常用的键位,在vim官方网站上我们可以找到vim键盘图的完整版,不过对于初学者来说,我们只需要知道常用的就可以了

在这里插入图片描述

命令模式

  • a:在光标后输入
    i:在光标前输入

  • A:在行尾输入入

​ I:在行首输入

  • O:在光标上一行输入

  • 光标跳转

上下左右:kjhl
#command:跳转#个字符,如2k
  • 单词跳转
w:下个单词的词首
e:当前单词的词尾
b:当前单词的词首
#command:跳转#个单词
  • 行首行尾跳转
^:行首(非空白字符)
0:行首
$:行尾
  • 行间移动
#G:跳转第N行   如2G,跳转到第二行
1G:跳转第1行 gg
  • 句间/段间移动
x:删除光标处的字符
#x:删除光标处起始的#个字符,光标后的字符
r:替换命令
  • 删除命令
d: 删除,配合光标跳转
d^: 删除光标到行首,光标处不删除
d0:删除光标到行首,光标处不删除
d$: 删除光标到行尾
dw:从光标开始删除到当前单词词尾
de:从光标开始删除到当前单词词尾
db:从光标开始删除到当前单词词首
dd: 删除光标所在行
#dd:删除多行
  • 保存退出
q: 直接退出
q!:强制退出
x: 保存退出
w: 保存
w /path/to/somefile:另存为
zz; 保存并退出
wq:保存并退出
  • 撤销
 u:撤销上一次操作
#u:撤销#次操作
citr+r 反撤销
  • 复制粘贴
 p:粘贴
yy:复制
#yy:从光标开始向后复制#行

行末模式

: /或?可以进行全文搜索
n:查找下一个匹配
N:查找上一条匹配
  • 定制定界
N:第N行
N,M:第N行到第M行
N,+M:第N行到第N+M行
.:当前行
$:最后一行
%:全文
/part1/,/part2/:被part1匹配到被part2匹配
使用方式:后跟一个编辑命令
d/y/
r:在指定位置插入指定文件的所有内容

查找替换

[定制定界]s/查找内容/替换内容/修饰符
修饰符:
:/ | ?               #查找
1, 5s/查找内容/替换内容/g
:1, 5s/123/456/g     #替换
:0, $s/123/456/g      #全局替换
:%/s123/456/g        #全局替换

i:忽略大小写
g:全局替换,默认情况,只替换每一行第一次出现
#:也可以作为分隔符,此时/不会作为分隔符

:w                 #保存
:w /路径            #另存为

按ESC键可随时退出末行模式。

简单的说,我们可以将这三个模式的关系用下图来表示:

在这里插入图片描述

定制Vim

配置文件:永久有效

全局:/etc/vimrc

个人:~/.vimrc

行末:当前进程有效

行号:

显示:set number,简写为set nu

取消显示:set nonumber,简写为set nonu

括号匹配

匹配:set showmatch,简写为set sm

取消:set nosm

自动缩进

启用:set ai

禁用:set noai

高亮搜索

启用:set hlsearch

禁用:set nohlsearch

语法高亮

启用:syntax on

禁用:syntax off

设置缩进长度:set ts=4

查看历史命令

~/.bash_history
history -a                          #追加,默认写入~/.bash_history`
history -c                          #删除所有历史命令
history -d                          #删除指定历史命令
history -r                           #将histfiles内容读入到目前shell的history记忆中
help history                         # 获取帮助

type ls                              #查看命令类型
whereis ls                           #查看命令位置,查看到相关所有文件
which ls                              #查找命令 
id zhangsan                            #判断用户是否存在
echo $?                              0成功,非0失败
scp /path root@192.168.30.12:路径       #发送文件

文件链接

软连接:

特点:

不论是修改源文件,还是修改软连接文件,所有文件的内容均会改变

删除软链接文件,源文件不受影响,如果删除源文件,软连接文件会失效,显示红色状态

软连接文件拥有自己的inode节点,在数据块中存储的是源文件的路径

软连接文件可以跨越文件系统(分区)进行建立

软连接可以链接目录

类似windons的快捷方式

硬链接:

特点:

不论修改源文件,还是硬链接文件,所有文件的内容均改变

不论是删除源文件,还是删除硬链接文件,只要还有一个文件存在,这个文件就可以被访问到

硬链接文件不会建立新的inode节点,也不会更改inode总数,只能为同一个inode节点分配多个文件名

硬链接文件不能跨越文件系统(分区)建立,因为不同的文件系统中inode是会被重新分配的

硬链接文件不能建立目录

读取一个文件,是通过文件名找到inode节点,然后

通过inode节点读取真正的文件内容

ln命令:创建链接文件
	-s:建立软连接文件,默认情况是创建硬链接
	-f:强制
ln -s 【源文件绝对路径】【链接文件名称】

重定向

文件描述符
在Linux中一切皆文件
每打开或者新建一个文件会有一个文件描述符与之对应
文件描述符是非负整数
读写文件需要使用文件描述符来指定待读写的文件

输入输出
标准输入
标准正确输出1
标准错误输出2

输出重定向
覆盖重定向
正确覆盖重定向: >
错误覆盖重定向: 2>
追加重定向
正确追加重定向: >>
错误追加重定向 : 2>>

合并标准正确输出和标准错误输出为同一个数据流进行重定向
&>: 标准覆盖重定向
&>>: 标准追加重定向
2>&1: 错误流重定向到正确流中
1>&2: 正确流重定向到错误流中

[root@server1 ~]# lln 1>out.right 2>&1
[root@server1 ~]# cat out.right 
-bash: lln: 未找到命令


标准输入:

​```shell
[root@server1 ~]# cat > file_in << EOF
> 太阳当空照
> 花儿对我笑
> EOF
[root@server1 ~]# cat >> file_in <<EOF
> 小鸟说
> 早早早
> EOF
[root@server1 ~]# cat file_in
太阳当空照
花儿对我笑
小鸟说
早早早
[root@server1 ~]# id zhangsan > /dev/null/

管道

​ 使用方式

​ 命令1 | 命令2 | 命令3

[root@localhost ~]# head /etc/passwd -n 5 | tr 'a-z' 'A-Z' > /root/passwd.out
wc命令
	统计
	-l:显示行数
	-w:显示单词数
	-c:显示字符数
cut命令
	对文档内容进行分割
	-d:指定分割符
	-f:指定字段
sort命令
	排序
	-f:忽略大小写
	-r:逆序
	-t:字段分割符
	-k:以指定字段为标准进行排序
	-n:以数值进行排序
	-u:排序后去重
uniq命令
	去重
	-c:显示每行重复出现的次数
	-d:仅显示重复过的行
	-u:仅仅显示不曾重复过的行
案例
以冒号为分隔符,取出/etc/passwd文件中的第六列至第十列,并将这些信息按照第三个字段的数值大小进行排序,最后仅显示
	一个字段,并且统计总字符数
[root@localhost ~]# cut -d: -f6-10 /etc/passwd | cut -d/ -f3 | sort -n| uniq -c


查看centos版本号

[root@localhost ~]#cat /etc/centos-release  
[root@localhost ~]#cat /etc/os-release  
[root@localhost ~]#dhclient   #dhcp重新分配

regedit

ssh

加密:公钥加密的只有私钥能解密
在这里插入图片描述

身份验证:私钥加密的公钥也是可以解密的

在这里插入图片描述

打比方:你和A通话,A愿意通话才会下载你的公钥,你发送的加密数据,A可以解密,A不要和你通话,就不会主动下载公钥。而A和你通话,别人是无法知道的。公钥验证私钥:验证自己拿到的公钥,是不是对方的。

修改变量

[root@localhost ~]# export LANG="en_US.UTF-8"
# 改回中文是LANG="zh_CN.UTF-8"
vim /etc/locale.conf
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前言 10 场景说明 11 基础知识简介 14 Linux 14 Linux产生与发展 14 Linux特点和优势 15 Shell 16 Shell脚本语言与编译型语言的差异 17 Shell分类 18 Shell使用 19 项目一 初识Linux Shell 20 [学习目标] 20 任务1.1 构建开发环境 22 任务1.2 vi/vim编辑器 33 1.2.1 vim使用实例 34 1.2.2 vim按键说明 36 任务1.3 Shell常用命令 41 1.3.1 基础命令 41 1.3.2 文件、目录操作命令 42 1.3.3 系统管理命令 52 1.3.4 关机/重启/退出 53 1.3.5 安装操作命令 53 1.3.6 用户操作命令 54 1.3.7 网络下载命令 55 1.3.8 服务操作命令 57 任务1.4 Shell脚本 58 1.4.1 第一个shell脚本:Hello World 58 1.4.2 脚本介绍 59 1.4.3 shell程序结构 59 1.4.4 shell脚本运行 60 任务1.5 Shell案例:打印有色彩的文本 61 任务1.6 Shell案例:图案打印 62 练习(每题10分,共计100分) 66 项目二 Shell变量 67 [学习目标] 67 任务2.1 Linux环境变量 68 2.1.1 查看环境变量 69 任务2.2 Shell变量 70 2.2.1 定义变量 70 2.2.2 使用变量 70 2.2.3 只读变量 71 2.2.4 删除变量 72 任务2.3 特殊符号 72 任务2.4 Shell案例:显示系统信息: 78 练习(每题12.5分,共计100分) 80 项目三 Shell传递参数 81 [学习目标] 81 任务3.1 Shell传递参数 82 任务3.2 Shell案例:参数比较 85 任务3.3Shell案例:通过参数描述变量 86 练习(前两题每题30分,第三题40分,共计100分) 87 项目四 Shell数组 89 [学习目标] 89 任务4.1 定义数组 90 任务4.2 使用数组 90 任务4.3 Shell案例:数组的使用 92 练习(100分) 95 项目五 Shell运算符 96 [学习目标] 96 任务5.1 Shell基本运算符 97 5.1.1 运算符 97 5.1.2 算术运算符 97 5.1.3 关系运算符 99 5.1.4 布尔运算符 101 5.1.5 逻辑运算符 103 5.1.6 字符串运算符 104 5.1.7 文件测试运算符 106 任务5.2 Shell案例:计算器 109 练习(每题25分,共计100分) 111 项目六 Shell命令输出 112 [学习目标] 112 任务6.1 Shell echo命令 113 任务6.2 Shell printf命令 116 任务6.3 Shell test命令 119 任务6.4 Shell案例:查看系统资源使用情况 122 练习(每题20分,共计100分) 125 项目七 Shell流程控制 126 [学习目标] 126 任务7.1 Shell流程控制 127 7.1.1 if 判断语句 127 7.1.2 for 循环语句 130 7.1.3 while 循环语句 131 7.1.4 until 循环语句 134 7.1.5 case多选语句 135 7.1.6 跳出循环体 137 任务7.2 Shell案例:重复执行命令和简单计算器 139 任务7.3 Shell案例:使用三种循环结构打印九九乘法表 141 练习(前两题每题30分,第三题40分,共计100分) 144 项目八 Shell函数 146 [学习目标] 146 任务8.1 Shell函数 147 8.1.1 Shell中函数的定义 147 8.1.2 函数参数 150 任务8.2 Shell案例 151 8.2.1 指定多个文件的行数 151 8.2.2 当前目录的所有文件 153 练习(每题50分,共计100分) 156 项目九 Shell输入/输出重定向 158 [学习目标] 158 任务9.1 linux文件描述符 159 任务9.2 Shell输入/输出重定向 160 9.2.1 输出重定向 160 9.2.2 输入重定向 163 9.2.3 重定向深入讲解 164 任务9.2 Shell案例:通过重定向测试批量添加ip 166 练习(每题25分,共计100分) 169 项目十 Shell文件包含 171 [学习目标] 171 任务10.1 Shell文件包含 172 任务10.2 Shell案例:查找最大文件 172 练习(每题50分,共计100分) 174 项目十一 Shell文本处理命令 175 [学习目标] 175 任务11.1 学习和使用grep 176 任务11.2 学习和使用sed 179 任务11.3 学习和使用cut 183 任务11.4 学习和使用awk 185 练习(第一题10分,第2-7每题15分,共计100分) 188 项目十二 Shell的调试 189 [学习目标] 189 任务12.1 使用trap命令 190 任务12.2 使用tee命令 192 任务12.3 使用“调试钩子” 193 任务12.4 使用Shell的执行选项 194 练习(每题50分,共计100分) 196 项目十三 Shell综合案例一(lnmp+wordpress) 197 [学习目标] 197 任务13.1 手动安装Linux Nginx Mysql PHP和WordPress 198 13.1.1 准备工作 198 13.1.2 安装Mysql5.6.29 199 13.1.3 安装PHP5.5.12 202 13.1.4 安装Nginx1.10 205 13.1.5 安装WordPress 206 13.1.6 启动网页 207 任务13.2 脚本安装Linux Nginx Mysql PHP 和WordPress 207 13.2.1 初始化安装脚本编写 207 13.2.2 Mysql安装脚本的编写 209 13.2.3 PHP安装脚本的编写 211 13.2.4 Nginx安装脚本的编写 213 13.2.5 WordPress安装脚本的编写 214 13.2.6 验证wordpress 216 练习(每题50分,共计100分) 218 项目十四 shell综合案例二(安装Openstack) 219 [学习目标] 219 任务14.1 手动安装Openstack 220 什么是Openstack 220 14.1.1基本环境准备 222 14.1.2 安装mysql数据库服务 225 14.1.3 安装keystone认证服务 226 14.1.4 安装glance镜像服务 230 14.1.5 安装nova计算服务 233 14.1.6 安装neutron网络服务 238 14.1.7 安装dashboard服务 248 任务14.2 脚本安装openstack 250 14.2.1 基本环境脚本的编写 255 14.2.2 mysql脚本的编写 256 14.2.3 keystone脚本的编写 258 14.2.4 glance脚本的编写 263 14.2.5 nova脚本的编写 266 14.2.6 neutron脚本的编写 270 14.2.7 dashboard脚本的编写 279 14.2.8 验证登录,使用openstack 280 附录Shell编码规范说明 295 1. 什么时候使用shell 295 2.Shell文件和解释器调用 295 3.环境 296 4.注释 296 5.格式 298 6.特性及错误 304 7.命名转换 308 8.调用命令 311

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值