linux下deb包管理及常用shell命令
一、deb包管理
1.1 流行的两种软件包管理机制
1、 Deb软件包:将应用程序的二进制文件、配置文件、man/info帮助页面等文件合并打包在一个文件中,用户使用软件包管理器直接操作软件包,完成获取、安装、卸载、查询等操作。
2、 Redhat Linux基于这个理念推出了自己的软件包管理机制—Rpm软件包。
3、 Debian Linux开发出了APT软件包管理器。用于 :1)检查和修复软件包依赖关系 2)利用Internet网络帮助用户主动获取软件包
1.2 软件包类型
1、 二进制软件包
2、 源码包
在用户不确定一个软件包类型时,可以使用file命令查看文件类型,如下图是一个二进制软件包。
1.3 软件包的命名
软件包的命名遵循以下约定:
Filename_Version-Reversion_Architecture.deb
软件包名称 Filename
软件版本 Version
修订版本 Reversion
体系架构A rchitecture
如上图所示,软件包名称为sl , 软件版本为3.03 , 修订版本为16 , 体系架构为i386
1.4 dpkg相关命令(重点)
dpkg -i <package> 安装一个在本地文件系统上存在的Debian软件包
dpgk -r <package> 移除一个已经安装的软件包
dpkg -P <package> 移除已安装软件包及配置文件
dpkg -L <package> 列出安装的软件包清单
dpkg -s <package> 显出软件包的安装状态
思考:dpkg和apt软件包管理器有什么区别?
dpkg是直接操作本地的deb软件包,后者是从网络获取
二、APT软件管理(常用)
2.1 APT工作原理
在Ubuntu系统中,使用软件源配置文件/etc/apt/sources.list列出最适合访问的镜像站点地址。
/etc/apt/sources.list。本质就是一个普通的文本文件,就可以在超级管理员授权下,使用任何文本编辑器进行编辑。在该文件中,
添加的软件源镜像站点称为一个配置项,并遵循以下格式:
DebType AddressType://Hostaddress/Ubuntu Distribution Component1 Component2…
deb http://cn.archive.ubuntu.com/ubuntu/ feisty main restricted universe multiverse
使用“apt-get update”命令会扫描每一个软件源服务器,并为该服务器所具有软件包资源建立索引文件,存放在本地的/var/lib/apt/lists目录中。
2.2 软件管理相关工作
作为组合命令,下面前者用于检查软件包依赖关系,后者用于修复依赖关系。 “apt-get check”——“apt-get -f install”
(常用
)
使用命令“apt-get upgrade
”就可以轻松地将系统中的所有软件包一次性升级到最新版本
使用“apt-cache show”命令获取指定软件包的详细信息,包括软件包安装状态、优先级、适用架构、版本、存在依赖关系的软件包,以及功能描述。该命令可以同时显现多个软件包的详细信息。
使用“apt-cache policy”可以获取软件包当前的安装状态 如果用户仅想了解某个软件包依赖于哪些软件包,可以使用“apt-cache depends”命令 如果用户仅想了解某个软件包被哪些软件包所依赖,可以使用“apt-cache rdepends”命令
/etc/apt/sources.list镜像站点索引
/var/lib/apt/lists/* 存放apt-get update扫描的服务器所具有软件包资源建立索引文件
/var/cache/apt/archives 软件包缓冲区
三、shell基本命令
3.1 shell简介
Linux中的shell就是Linux内核的一个外层保护工具,并负责完成用户与内核之间的交互。
当需要重复执行若干命令(命令是用户向系统内核发出控制请求,与交互的文本流),可以将这些命令集合起来,加入一定的控制语句,编辑成为shell脚本文件,交给shell批量执行。
Bourne Again Shell:能够提供环境变量以配置用户shell环境,支持历史记录,内置算数功能,支持通配符表达式,将常用命令内置简化。
二、 shell命令格式
1、shell命令提示符采用以下的格式:
username@hostname:direction$
用户名 主机名 目录名
2、通常一条命令包含三个要素:命令名称、选项、参数。命令名称是必须的,选项和参数都可能是可选项。命令格式如下所示:
Shell提示符,如果当前用户为超级用户,提示符为“#”,其他用户的提示符均为“$”;
Command:命令名称,Shell命令或程序,严格区分大小写
Options:命令选项,用于改变命令执行动作的类型,由“-”引导,可以同时带有多个选项;
Argument:命令参数,指出命令作用的对象或目标,有的命令允许带多个参数。
一条命令的三要素之间用空格隔开; 若将多个命令在一行书写,用分号(;)将各命令隔开; 如果一条命令不能在一行写完,在行尾使用反斜杠(\)标明该条命令未结束。 命令不带选项或参数,通常意为使用默认选项或参数。
三、 shell命令行操作
用户在Shell下的操作是有很大连续性的,曾经输入的命令可能需要多次使用。当用户在操作中发现问题,需要查看曾经执行过的操作。Bash将用户曾经键入的命令序列保存在一个命令历史表中。按“↑”键 和“↓”键,便可查询命令历史。 Bash Shell还提供了history命令(默认保留500条命令,Bash Shell将历史命令容量保存在环境变量HISTSIZE中)。该命令将命令历史表按列表形式,从记录号1开始,一次性全部显示出来。
修改存储历史命令环境变量的长度:
思考:
什么是shell?
Linux中的shell就是Linux内核的一个外层保护工具,并负责完成用户与内核之间的交互。
如何更改历史记录容量?
修改环境变量HISTSIZE值,如:HISTSIZE=2000
历史记录如何删除?
history -c
三、shell特殊命令
3.1 shell中的通配符
当需要用命令处理一组文件,例如file1.txt、file2.txt、file3.txt……,用户不必一一输入文件名,可以使用shell通配符。shell命令的通配符含义如下表:
使用示例如下:
3.2 shell中的管道
管道可以把一系列命令连接起来,意味着第一个命令的输出将作为第二个命令的输入,通过管道传递给第二个命令,第二个命令的输出又将作为第三个命令的输入,以此类推。就像通过使用“|”符连成了一个管道。
使用示例:
以上操作中,借助管道“|”,将ls的输出直接作为wc命令的输入。使用管道可以巧妙的将一些命令联合使用,得到单个命令所无法实现的效果。例如使用以上的命令组合,得到的是/usr/bin目录下文件的个数。
3.3 输入输出重定向(输出日志文件分析代码常用)
输入/输出重定向是改变shell命令或程序默认的标准输入/输出目标,重新定向到新的目标。
linux中默认的标准输入定义为键盘,标准输出定义为终端窗口。
用户可以为当前操作改变输入或输出,迫使某个特定命令的输入或输出来源为外部文件。
如下实例:
3.4 命令置换
命令替换是将一个命令的输出作为另一个命令的参数。命令格式如下所示。
其中,命令command2的输出将作为命令command1的参数。需要注意,命令置换的单引号为ESC键下方的“”键 如 ls
pwd` 把pwd的输出作为参数 ls查看这个参数:
思考:
1)shell中有哪些特殊字符?
答:* ? [ ]
2)shell中管道的作用?
答:第一个命令的输出作为第二个命令的输入
3)shell中grep命令和管道如何结合?
答:cat /etc/passwd | grep “linux”
4) 什么叫输入输出重定向?
答:输入/输出重定向是改变shell命令或程序默认的标准输入/输出目标,重新定向到新的目标。
5) 有哪些输入输出重定向符?
答:> >> <
6)用命令置换的方式列出当前目录下的所有文件
答:ls pwd
7)查看进程中包含root字符串的进程?
答:ps -elf | grep “root”