Shell入门

1.基于硬件的虚拟化

2.基于平台的虚拟化

3.基于服务的虚拟化

4.基于库的虚拟化

5.基于操作系统的虚拟化

管理员使用Shell程序与操作系统进行交互,之前学习的shell脚本都是以单行命令来执行的,缺乏逻辑关系,将单行的命令统一并建立逻辑关系的过程,就是shell脚本编程。

Sum _ = 0

For I in range(1,101):

Sum_  += i

Print(sum_)

--------------------------------------------------------------------

sum_= 0

for i in $(seq 100);do

…………..

done

输出echo

格式化输出 awk – printf

与其他编程语言的区别:使用shell来实现linux的批量管理,而不是去开发应用程序

学习内容:shell(python、perl、)

Pip install ipython----交互式工具执行单行命令比较方便

1.bash的基本特性

python可以通过调用库来实现各种行业的需求

ctrl + l

上键

History

2.IO重定向与管道符---shell的功能特性   命令是一个可执行的二进制程序

Which ls

3.编程基础

程序是什么?----程序是执行以某个功能的代码,而算法是程序中的其中一种。

#/!bin/bash ------制定解释器

Path路径来执行shell  ./aa.txt

变量:是指一段命名的内存空间

数据有变量来提供

指令---命令

程序必须包含 指令 + 数据       + (逻辑关系)

编程原理----面向对象()和面向过程

4.!!!!!!!!!!!!!!!!grep和正则表达式!!!!!!!!!!!!!

Linux三剑客 **grep过滤(行)

Pattern“模式”

5.语句的逻辑关系

分支

if

 

循环

for  工作中常用—不容易进入死循环  放入for循环的列表

while 指定初始值,循环条件为True 不要进入死循环

until 与while相反 循环条件为False不要进入死循环

case------**编写linux的程序启动脚本**

打断循环的语句

break 跳出循环

continue跳出当前循环

exit 退出当前程序,指定程序的返回值

echo $? 命令执行情况

read –--input()

echo---print()

unix bsd

6.**变量**

network:宣告路由,让路由器发送helllo包,携带路由信息,组播

Linux三剑客

**sed---编辑器  stream edit d。。 流编辑器

数据存储在磁盘里就是“流”

换行 输出数据时手动添加/n,计算机识别后展示

流设备基于流编辑器。。。

两种模式的切换

         **awk 报告生成器-----一个独立的编程语言

函数  ----- 一段固定功能的代码块

数组  ---- 列表、元组、字典

字符串----- 字符串的处理太复杂 方法多

重复:必须连续且相同的数据 先排序再去重(Sort 去重)

练习:

line = `wc –l /etc/inittab | cat –d’ ’ –f1 `  查看行数

echo $line

cat –n /etc/inittab

if test $line -gt 100 ;then                     if [ $line -gt 100 ];then

echo “ /etc/inittab is a big file ”                  echo “ /etc/inittab is a big file ”

else                                     else

echo “/etc/inittab is a small file”                  echo “/etc/inittab is a small file”

fi                                        fi

test 相当于一个[]  test $line –gt 100 ==[$line –gt 100]

-gt ----大于

bash的基本特性

linux的时间:系统时钟和硬件时钟

系统时间—date

硬件时间---clock  hwclock

1.命令历史  根----加载驱动

作用:查看之前使用的命令

关于命令历史的文件------每个用户家目录下面的.bash_history

在关机的时候,会自动写入一次

history是内置命令 history –r 将内存中的命令历史写入文件

useradd xls –l

echo “123456” | passwd –stdin(标准输入) “xls -l”

cd /home/xls-l

ls

ls -a

关于命令历史的变量(环境变量) path只是环境变量的一种     chroot 切换文件根目录

Env    //查看环境变量

Set    //查看更加详细的环境变量参数

HISTSIZE = 1000  总量是1000条历史命令。超过1000删除重存

HISTCONTROL = ignoredups/ignorespace/ignoreboth

Set|grep“HIST”

History的常见操作

         查看命令历史

         !+编号----!#---执行#号行的命令(#表示数值)

         !+string----匹配最近一次的字符串

         !!-------上一条命令

         *!$*------- 上一条命令的最后一个参数

                  ls /etc == ls !$

                  ESC+.---上一条命令的最后一个参数

         常见的选项:

         -a  追加历史行到历史文件

         -d  删除

         -c  清空

         History # 显示最近#行的命令

2.命令补全

Tab :扩展:制表符 \t 四个空格键

1.提示2.自动补全

3.目录补全

Tab 1.提示2.自动补全

4.命令展开—date命令

{}

Linux的目录遵循的规则------FHS(文件系统层次化标准)目录规则

Mkdir –pv mylinux{bin,boot/grub,dev,etc{/rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys}

属性一       属性二

A              1

B              2

Mkdir –pv /var/{a,b}-{1,2}

date、clock、hwclock

基于date命令来创建目录文件

date +%F---改变date输出的格式 –日期格式  年-月-日 CCYY-mm-dd

date+%F-%H-%M-%S

%H---小时 hh

%M---分钟 MM

%S---秒 ss

%T---hh:MM:ss

%D---mm/dd/CCYY(月/日/年)

%Y---显示年份CCYY  %y

练习:

通过for语句循环创建一个月的日志文件;.log  2019-08-06.log

Crontab  –e * * * * *(分、时、日、月、星期)

touch `date +%F`.http.log

for  i  in  {1..30};do

touch `date +%Y-%m-$i`.http.log

done

for  i  in  {1..30};do  touch `date +%Y-%m-$i`.http.log; done --- 一行执行

tar

归档命令 压缩解压缩

压缩工具 gzip、bzip、xz、zcat(不解压查看压缩文件)

文本文件压缩效果较好,压缩只能对文件进行操作,不能对目录进行操作

Tar的常见参数:

归档工具

-j      bzip2

-J      xz

-z      gzip

-c     create(压缩)

-x     extract (解压)//可以不用指定解压的工具

-f      指定文件名

-v     显示详细信息 verbose

-t      不解压查看内容和zcat一样

Tar归档工具可以对目录进行操作

gzip /etc/inittab

压缩 tar cjvf 2019-08.http.log.bz2 2019-08-*.http.log

解压 tar xvf 2019-08.http.log.bz2  –C abc

解压可以不选择解压方式

.*---正则表达式 *---不是正则表达式

crontab  –e * * * * *(分、时、日、月、星期) 写全路径  除/以外的符号都可以当作文件名

20 02 * * * /root/xxx.sh

编写xxx.sh脚本文件

Vim xxx.sh

#!/bin/bash

#

tar  cJvf  /var/`date +%F` .xz  /etc/

chmod +x xxx.sh

补充:

clock、hwclock ---- 查看硬件时钟(如何同步系统时钟和硬件时钟,以哪一个为准)

cal    日历 cal 1997

5.命令的执行状态

在linux中,每一条命令执行后都会有两个结果:

命令本身放回的内容

其次,命令执行的结果状态

$? 变量,就是用来存放命令执行状态的变量;

0 表示成功的状态(与python相反)

1-255 表示失败的状态

[$? –eq 0] && exit 0|| exit 1

在程序执行中,我们可以使用exit来手动制定返回的状态码

6.命令的快捷键

Ctrl + l //清屏

Ctrl + c

Ctrl + u //删除光标前的字符

         Ctrl + k //删除光标后的字符

         Ctrl + a //光标头

         Ctrl + e //光标尾

Ctrl + e

Ctrl + w //以空格为分隔符,去删除文件

Ctrl + r //搜索命令(进入交互式界面,搜索最近一次使用的命令要输入字符串)

7.alias别名

       系统启动时读取一些特殊文件的顺序;

alias 文件别名

alias cdnet=”cd /etc/sysconfig/network-scripts”   //这种方式定义的alias只能在当前shell使用

pstree

如果想要别名所有人都可以使用,写入下面两个文件中

/etc/profile

/etc/bashrc

如果想要别名自己使用,写入下面两个文件中

~ /.bash_profile

~/.bashrc

PEP代码标准

8.文件通配符

       **文件通配符不是正则表达式**

? 任意单个字符

* 任意长度的任意字符

[] 指定范围内的任意字符

^  1.以什么开头

2.[^]指定范围以外的任意一个字符

[^0-9A-Za-z]  [0-9] [A-Z] [a-zA-Z]

指定字符类:

1.[:alnum]----- [^0-9A-Za-z]字母+数字

2.[:upper:]-----字母大小写

3.[:digit:]-------数字

4.[:punct:]-----特殊字符

5.[:space:]-----空格   ^*[[:space:]]*$-----匹配空白行

Shell入门01的更多相关文章

  1. Shell - 简明Shell入门01 - 第一个脚本(HelloShell)

    示例脚本及注释 #!/bin/bash echo "hello shell!" # 打印字符串"hello shell!" echo "Date: & ...

  2. Shell - 简明Shell入门

    本文以示例和注释的方式,对Shell编程的基本知识点进行了总结和回顾,所有脚本均已做了基本的调试和验证. Shell - 简明Shell入门 01 - 第一个脚本 脚本的定义.执行方法以及echo命令 ...

  3. Linux shell入门基础(六)

    六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...

  4. Linux shell入门基础(一)

    Linux shell入门基础(一): 01.增加删除用户: #useradd byf   userdel byf(主目录未删除)  userdel -r byf   该用户的属性:usermod 用 ...

  5. 不用搭环境的10分钟AngularJS指令简易入门01(含例子)

    不用搭环境的10分钟AngularJS指令简易入门01(含例子) `#不用搭环境系列AngularJS教程01,前端新手也可以轻松入坑~阅读本文大概需要10分钟~` AngularJS的指令是一大特色 ...

  6. 【爬虫入门01】我第一只由Reuests和BeautifulSoup4供养的Spider

    [爬虫入门01]我第一只由Reuests和BeautifulSoup4供养的Spider 广东职业技术学院  欧浩源 1.引言  网络爬虫可以完成传统搜索引擎不能做的事情,利用爬虫程序在网络上取得数据 ...

  7. JavaScript基础入门 - 01

    JavaScript入门 - 01 准备工作 在正式的学习JavaScript之前,我们先来学习一些小工具,帮助我们更好的学习和理解后面的内容. js代码位置 首先是如何编写JavaScript代码, ...

  8. CSS3基础入门01

    CSS3 基础入门 01 前言 相对于css2来说,css3更新了很多的内容,其中包括选择器.颜色.阴影.背景.文本.边框.新的布局方案.2d.3d.动画等等. 而如果想要学习css3的诸多部分,不妨 ...

  9. Java基础语法入门01

    Java基础语法入门01 学习java你要先进行去了解JDK,JRE,JVM JDK Java开发工具包 JRE Java语言开发的运行环境 JVM Java虚拟机,用于Java语言的跨平台所用. 当 ...

随机推荐

  1. C# 导出Excel文件 所导出文件打开时提示“Excel文件格式与扩展名指定格式不一致”

    Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); ...

  2. JS函数的基础部分

    JS函数的基础部分 JS函数的部分: 先看下一段的代码: window.onload = function(){  function test(){   alert("123"); ...

  3. windows 使用Docker Desktop 使用国内镜像

    ===新增一些比较给力的镜像=== 1.中科大镜像加速地址 https://docker.mirrors.ustc.edu.cn 2.阿里云镜像服务 ========= 原本在配置项中添加了:国内镜像 ...

  4. C++:输入n个数,通过气泡法从小到大排列顺序(掌握不熟,还请谅解)

    #include<iostream> using namespace std; int main() { int n; cin>>n; int a[n]; int i,j,t; ...

  5. python 并发编程 多进程 JoinableQueue

    JoinableQueue和Queue 使用一样 这就像是一个Queue对象,但队列允许项目的使用者通知生成者项目已经被成功处理.通知进程是使用共享的信号和条件变量来实现的. JoinableQueu ...

  6. [Python3] 001 "Hello World" 与注释

    目录 1. 致敬 1.1 致敬 "Hello World" 1.2 致敬 Python 之父 Guido van Rossum 2. 注释 2.1 单行注释 2.2 多行注释 3. ...

  7. 终于有人把 Docker 讲清楚了,万字详解!

    一.简介 1.了解Docker的前生LXC LXC为Linux Container的简写.可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性.相当于C++中 ...

  8. [LeetCode] 132. 分割回文串 II

    题目链接 : https://leetcode-cn.com/problems/palindrome-partitioning-ii/ 题目描述: 给定一个字符串 s,将 s 分割成一些子串,使每个子 ...

  9. unsolved question's solution

    因为很懒,没有时间,只会口胡等等原因,所以有些题目就不打code了 $luogu:$ P1973 [NOI2011]Noi嘉年华: 时间离散化,预处理一个区间$[l,r]$内的最多活动个数$in[l] ...

  10. Linux安装Jenkins并部署springboot项目

    安装步骤: 1.跳转连接https://pkg.jenkins.io/redhat-stable/下载安装包 2.安装命令: sudo rpm -ih jenkins-2.73.2-1.1.noarc ...