** 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. apache配置httpd.conf的webapp根目录(基于appserv服务)

    只要修改httpd.conf中两个配置项的值即可: DocumentRoot "E:/workspacePHP/what" <Directory "E:/works ...

  2. Spark基本运行流程

    不多说,直接上干货! Spark基本运行流程 Application program的组成 Job : 包含多个Task 组成的并行计算,跟Spark action对应. Stage : Job 的调 ...

  3. MVC、控件、一般处理程序中的session and cookie

    Mvc中: session: if (!string .IsNullOrEmpty(find)) //设置 Session["oip"] = "无锡"; Vie ...

  4. USB接口

     总结: 1.电脑的usb接口是usb母接口,u盘接口是usb公接口 2.usb otg指的是不需要电脑作为中转站接口,例如如果买一个micro 转otg接口即可将手机直接接u盘 3.方形usb口是u ...

  5. CDR 2017压感笔和压感设备该怎么设置使用?

    您可以通过CorelDRAW 2017 中的以下工具来运用压感笔.笔或其他设备的压力:艺术笔(表达模式).橡皮擦.涂抹.转动.吸引.排斥.粗糙和弄脏.此外,您还可以通过艺术笔(表达模式)工具.橡皮擦. ...

  6. div基本组成要素

    title下面先清除固有格式 style{ *{ margin:0 auto padding:0 foant family } } div{ width height border backgroun ...

  7. Facebook 运维内幕曝光:一人管理2万台服务器

    Facebook 运维内幕曝光:一人管理2万台服务器 oschina 发布于: 2013年11月23日 (29评) 分享到  新浪微博腾讯微博 收藏+32 11月30日 珠海 源创会,送U盘,先到先得 ...

  8. HDU 1757 A Simple Math Problem( 矩阵快速幂 )

    <font color = red , size = '4'>下列图表转载自 efreet 链接:传送门 题意:给出递推关系,求 f(k) % m 的值, 思路: 因为 k<2 * ...

  9. python_函数、局部变量与全局变量

    #函数优点:代码重用.保持一致性.可扩展性import time def logger(): """时间年-月-日 分""" time_fo ...

  10. STM32使用HAL库实现ADC单通道转换

    STM32的ADC转换还是很强大的,它具有多个通道选择,这里我就不细说,不了解的可以自行百度,这里只是选取单通道,实现ADC转换.在文章开始之前,我说一下数据左对齐跟右对齐的差别,以前一直糊里糊涂的, ...