** Linux基本操作常用命令(三)

** Linux的软件包

Linux的软件把分为“源码包”和“二进制包”

源码包:免费,开源

二进制包:系统默认包,即RPM包(上一节我们通过rpm卸载过openJDK),比较常用

特点:

* 经过编译

* 安装,卸载,升级,查询直接使用命令来操作即可

* 安装速度比源码包更快,省略编译过程。

* 安装具有依赖性

比如:安装某个包03,前提需要安装了某个包02,而安装某个包02,又需要提前安装某个包01,即,在安装包03时,如果没有安装前几个包,那么该包03是无法直接安装的。

** rpm命令

1、centos主要管理方式:RPM

2、rmp管理以rpm结尾的包

(接下来我们要使用这个命令安装个rpm程序试试)

3、挂载光驱

mount /dev/cdrom /media/

即挂载光驱 到 挂载点media

挂载成功后,出现:

 
光驱文件为只读,不可写

4、进入该光盘,即切换到该光驱的挂载点目录

cd /media/

之后使用ls -l命令,查看该光驱下的文件结构:

 
 

切换到Packages目录下,查看该目录文件,你会发现全是以.rpm结尾的安装包:

 
在此你可以使用ls | wc -l来查看该目录下一共有多少个rpm安装包

5、安装

使用命令:rpm -ivh zlib-devel-1.2.7-15.el7.x86_64.rpm

zlib-devel-1.2.7-15.el7.x86_64.rpm为某个安装包,记得使用tab键来智能补全,不然你需要自己把文件名打全。

参数解释:

-i:安装

-vh:显示安装时的进度

6、卸载

rpm -e  zlib-devel-1.2.7-15.el7.x86_64

rpm

参数解释:

-e:卸载

7、查询

rpm -qa 查看当前系统有哪些已经安装好的rpm包

-q:query查询

-a:all全部

8、查询文件属于哪个rpm安装包

rpm -qf /etc/ntp.conf

参数解释:

-f:file文件

 
 

** yum命令

1、批量解决rpm依赖性问题

我们使用rpm命令安装某一个文件时,需要解决一系列依赖问题,即,安装包03,需要先找到并安装包02,安装包02,需要找到并安装包01,这样操作很麻烦,效率也比较低,yum命令可以自动找到并安装所有依赖,很方便。

2、查询

yum list

该命令可以列出系统中所有已经安装包的rpm包,例如:

 
 

3、右边的updates表明已安装的包有更新可用

4、安装

yum -y install httpddevel.x86_64,即安装httpddevel.x86_64

 
安装过程依赖于网速

5、卸载

yum -y remove httpddevel.x86_64

(尖叫提示:-y表明yes,即批量安装依赖包的时候,会有确认提示,yes or no,-y,即全部yes,简单粗暴)

6、yum仓库

路径:/etc/yum.repos.d/

配置:CentOS-Base.repo就是以.repo结尾的

gpgcheck=1代表是否开启校检(0为不开启)

gpgkey=校检公钥所在位置

7、常见错误:

* 外网不同:检查网卡设置,检查IP设置,检查DNS设置

* 无法下载:检查仓库是否正确

** shell编程

什么是shell,我建议你百度一下。

简而言之:即shell解释层,用于外层应用程序和内存交互的,例如你使用的ls命令,就是一个ls脚本,即名字为ls的shell脚本,ls是个命令,可以理解为ls是一个文件,文件里保存的是一系列代码,该代码称之为shell脚本,使用ls命令的过程,就是执行文件名为ls的脚本的过程。

显示当前系统支持的shell环境:

 
 

其中Linux中最常用的shell是bash

1、环境变量

保存系统运行时的环境变量

用户变量:

.bash_profile

每个用户下都有一个用来保存每一个用户的环境变量,对于其他用户不共享

系统变量:

/etc/profile

系统全局生效的配置文件,系统下所有的用户共享该文件

(尖叫提示:这个和windows下的管理模式是一样的)

2、位置变量

将传递给脚本的参数保存位置变量中以便于在脚本中引用这些参数,类似于编程中,函数的形参。

bash中定义了9个位置变量:$1.....$9

$0则代表脚本名称

现在创建一个.sh脚本,例如vi zz01.sh,内容如下:

#!/bin/bash

echo $0

echo $2

echo $3

echo $1

 
 

传递参数要以空格隔开,如图:

 
 

#!/bin/bash这句话的意思是:标识当前sh脚本为bash

接下来,执行该脚本,sh zz01.sh aa bb cc dd

其中aa bb cc dd为参数,输出结果:

 
 

dd其实也是传递进去了,但是处于第4个位置,而我们的脚本中没有使用echo打印第四个位置的参数,所以没有显示,大家仔细对比一下就能发现规律。

3、预定义变量

$0:当前脚本名称

$!:进程PID,每一个进程都有一个编号

$$:当前进程ID号

$#:当前shell的参数个数

$*:显示所有参数内容(整体)

$@:显示所有参数内容(逐个读取)

$?:判断,表示程序退出的代表(返回0表示成功,返回非0表示失败)

4、自定义变量

语法格式:

name=[value]

等号两边不能有空格,变量名大小写敏感,定义好以后使用$变量名来调用变量的值

例如:a=2 echo $a

5、逻辑符号

&&:逻辑与

cmd1 && cmd2

具有短路作用

例如:

cat /etc/passwd && mkdir zzz/

解释:

查看该文件如果不成功(比如文件不存在),那么就不会执行mkdir zzz/这个命令,反之则执行该命令

||:逻辑或

cmd1 || cmd2

具有短路作用

例如:

cat /etc/passwd || mkdir zzz/

解释:

如果查看该文件成功,则mkdir zzz/指令就直接短路不执行,反之,则执行后边命令

无逻辑符号

cmd1 ; cmd2

例如:

cat /etc/passwd ; mkdir zzz/

解释:

依次执行这两个命令

6、算数运算

格式:

1、$((表达式))

2、$[表达式]

3、expr 表达式

例如:

a=10

b=20

1、echo $((a+b))

echo $(($a+$b))

2、echo $[a+b]

echo $[$a+$b]

3、expr a+b

expr $a+$b

乘法:expr $a \* $b

注意:\*此处左右两边有空格

7、内置测试判断

数值测试:

-eq:等于

-ne:不等于

-le:小于等于

-ge:大于等于

-lt:小于

-gt:大于

例如:[ 2 -eq 2] 则返回结果为真,以此类推

字符串测试:

=:等于则为真

!=:不相等则为真

-z:字符串长度为空则为真

-n:字符串长度不为空则为真

文件测试:

-e 文件名:如果文件存在则为真

-r 文件名:如果文件存在且可读则为真

-w 文件名:如果文件存在且可写则为真

-x 文件名:如果文件存在且可执行则为真

-s 文件名:如果文件存在且至少有一个字符则为真

-d 文件名:如果文件存在且为目录则为真

-f 文件名:如果文件存在且为普通文件则为真

-c 文件名:如果文件存在且为字符型特殊文件则为真

-b 文件名:如果文件存在且为块特殊文件则为真

Linux还提供了非(!)、或(-o)、与(-a)三个逻辑操作符,用于将测试条件连接

优先级顺序:!> -a > -o

8、时间命令

date:时间命令,用语查看当前系统时间,例如:

 
 

修改时间:-s,例如:

date -s "2015-05-09 10:20:30",如图:

 
 

查看时间:

date "+%Y%m%d%H%M",如图:

 
 

其中YmdHM各代表什么,自己对照即可明白。

时间操作:

回到5天前:

date -d '5 day ago' '+%Y%m%d%H%M',如图:

 
具体其他用法可以使用man命令查看,如果忘记,请滑动至页面底部查看

9、书写shell脚本的规范

* 一般以.sh结尾,方便识别文件类型

* 一般开头加上注释:#!/bin/bash 以表明这是bash shell

(尖叫提示:bash shell是centos系统默认的shell环境)

10、for循环

语法1:

 
 

语法2:

 
 

例子1:vi for01.sh,编辑内容如下:

 
 

执行:sh for01.sh,结果如下:

 
 

例子2:vi for02.sh,编辑内容如下:

 
\t为制表符table

(尖叫提示:如果do和for不在一行,则可以省略分号;)

执行:sh for02.sh,结果如下:

 
 

11、while循环

语法1:

 
 

语法2:

 
 

例子1:vi while01.sh,编辑内容如下:

 
 

执行:sh while01.sh,结果如下:

 
 

let关键字解释:

如果只是 let a=1 和 a=1,它们没有区别,但是 let 还可以用于带赋值的运算,例如

let a=1+5

echo $a

得到计算结果 6,而

a=1+5

echo $a

得到一个字符串 1+5

例子2:vi while02.sh,内容如下:

 
 

该脚本用语读取passwd文件的每一行并打印出来

执行:sh while02.sh,结果如下:

 
 

12、awk命令

该命令一言两语无法解释清楚,请大家参看该博客(为尊重作者,请大家链接过去)

http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html

简单例子:

cat /etc/passwd | awk -F ':' '{print $1"\t"$2}'

13、if命令

语法1:

 
 

语法2:

 
 

例子1:vi if01.sh,编辑内容如下:

 
 

执行:sh if01.sh,结果如下:

 
 

例子2:vi if02.sh,内容编辑如下:

 
 

功能解释:是否存在目录./123,如果存在,则列出该目录下的文件,如果不存在,则创建该目录

执行:sh.if02.sh,结果如下:

 
可以看到创建出了123这个目录

14、case语句

语法1:

 
 

语法2:

 
 

例子1:vi case01.sh,编辑内容如下:

 
 

执行:sh case01.sh gameover,如图

 
 

如果传入的参数没有匹配到case,则默认执行*)通配条件。(如上图的aaa参数)

** 额外:

(尖叫提示:使用man命令可以查看某个命令的具体帮助)

(尖叫提示:使用which命令,可以查看该命令的具体位置,比如:which vi,如图:)

 
 

(尖叫提示:使用rpm -qf 命令传入具体位置,可以查看命令路径的安装包,如图:)

 
 

** 总结

判断测试符可能比较零碎,不容易记忆,多操作即可。循环语法之类的东西,理解其中1,2即可触类旁通,重在理解。


个人微博:http://weibo.com/seal13

QQ大数据技术交流群(广告勿入):476966007


作者:Z尽际
链接:https://www.jianshu.com/p/21cd6afa40f7
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Linux基础03的更多相关文章

  1. Linux基础 -03

    2.2.3 head-tail 命令 #------head #head pass #查看头部内容,默认前10行 #head -n5 pass #查看头部前5行,使用-n指定 #-------tail ...

  2. Linux基础(03)gdb调试

    1. 安装GDB增强工具 (gef) * GDB的版本大于7.7 * wget -q -O- https://github.com/hugsy/gef/raw/master/scripts/gef.s ...

  3. 还是不想改报告,伊阿忆啊哟-Linux基础继续

    hi 虽然今天是最最美好的周六(前不着工作日后不着工作日),但老子还要来改报告,但额就是不想改,你拿我有啥办法啊... 争取完结Linux基础 一.Linux常用命令(三) 4.帮助命令 4.1 帮助 ...

  4. 原来今天是感恩节-Linux基础继续&MySQL和PHP

    hi 原来今天是感恩节.虽然一直没有过这个节日的习惯,但仅仅是听到感恩的消息,都能想到一幅幅画面.愿大家安好! 下午开题会议还是有所收获,悄悄的,就变向那个不喜欢自己的人了. 一.Linux基础(二) ...

  5. 买错的电影票,含着泪也得看-LAMP搭建&Linux基础

    hi 没说过,上周五室友过生请客,在龙湖里吃嗨了喝爽了,回去的路上侃侃而谈.说好的这周一起去看年内最后的大片,火星救援的,谁知道老子眼神不好,买错了电影的时间...把周六的约定提前到了今儿个下午,ma ...

  6. Linux基础 - 系统优化及常用命令

    目录 Linux基础系统优化及常用命令 Linux基础系统优化 网卡配置文件详解 ifup,ifdown命令 ifconfig命令 ifup,ifdown命令 ip命令 用户管理与文件权限篇 创建普通 ...

  7. Linux基础系统优化及常用命令

    # Linux基础系统优化及常用命令 [TOC] ## Linux基础系统优化 Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. - ...

  8. 大数据学习之Linux基础01

    大数据学习之Linux基础 01:Linux简介 linux是一种自由和开放源代码的类UNIX操作系统.该操作系统的内核由林纳斯·托瓦兹 在1991年10月5日首次发布.,在加上用户空间的应用程序之后 ...

  9. Linux基础知识第八讲,系统相关操作命令

    目录 Linux基础知识第八讲,系统相关操作命令 一丶简介命令 2.磁盘信息查看. 3.系统进程 Linux基础知识第八讲,系统相关操作命令 一丶简介命令 时间和日期 date cal 磁盘和目录空间 ...

随机推荐

  1. python初始面向对象

    阅读目录 楔子 面向过程vs面向对象 初识面向对象 类的相关知识 对象的相关知识 对象之间的交互 类命名空间与对象.实例的命名空间 类的组合用法 初识面向对象小结 面向对象的三大特性 继承 多态 封装 ...

  2. 异步编程(二)基于事件的异步编程模式 (EAP)

    一.引言 在上一个专题中为大家介绍了.NET 1.0中提出来的异步编程模式——APM,虽然APM为我们实现异步编程提供了一定的支持,同时它也存在着一些明显的问题——不支持对异步操作的取消和没有提供对进 ...

  3. Js正则表达式数字或者带小数点的数字

    function chk() { var patrn = /^\d+(\.\d+)?$/; var result = true; $("input[type=text]").eac ...

  4. View的呈现(二)加载流程

    这块涉及到Code+Razor模板=>html[output流] 而这块的问题在于Razor最后生成了什么?--对象:一个类文件:eg:index.cshtml  => index_cst ...

  5. spring MVC +freemarker + easyui 实现sql查询和执行小工具总结

    项目中,有时候线下不能方便的连接项目中的数据源时刻,大部分的问题定位和处理都会存在难度,有时候,一个小工具就能实时的查询和执行当前对应的数据源的库.下面,就本人在项目中实际开发使用的小工具,实时的介绍 ...

  6. C#数组大小分析(附测试过程中想起的debug和release区别)

    C#数组的理论最大长度到底是多少呢?曾经一度问过度娘,谷歌,貌似都没有得出一个比较准确的答案,无外乎是什么Int32的最大值啊什么的,今天终于决定写个软件来自己测试一下,在几台不同的电脑里面实际测试看 ...

  7. swift使用查阅资料备份4

    Swift - RxSwift的使用详解6(观察者2: 自定义可绑定属性) http://www.hangge.com/blog/cache/detail_1946.html extension UI ...

  8. Generic programming-泛型编程

    Generic programming is a style of computer programming in which algorithms are written in terms of t ...

  9. CorelDRAW教程:怎样绘制制作箭头流程图?

    箭头流程图主要由矢量图和连接符组成,通过图形之间的顺序阐述的一个过程,应用也是非常广泛,有些软件中会自带流程图,对于CDR这款矢量绘图软件来说,手动制作流程图是简单且高效的.首先CorelDRAW中就 ...

  10. 边框的使用,border-radius,box-shadow,border-image

    <html>    <head>        <meta charset="UTF-8">        <title></ ...