软件包及shell命令
linux简介
Linux的发展
1.Unix的起源
1969年,由kenthompson在AT&T贝尔实验室实现的。使用的是汇编语言。
1970年,KenThompson和DennisRitchie是使用C语言对整个系统进行了再加工和编写,是的Unix能够很容易的移植到其他硬件的计算机上。
2.什么是Linux?
GNU&GPL
GNU = GNU is Not Unix,由Richard Stallman在1984创建,最初的软件:gcc、make、glibc。
GPL = General Public License(通用公共许可证)
Linux是一种操作系统,1991年,芬兰赫尔辛基大学的学生Linux Torvals为了能在家里的PC机上使用与学校一样的操作系统,开始编写了类UNIX。1991.8.25,Linux首次发布了一个Linux内核的公共版本
3.各种Linux发行版本
Red Hat、Fedora Core、SUSE、Debian、Mac OS X、Ubuntu、FreeBSD、OpenBSD、NetBSD等等
4.Linux体系结构
1)Linux内核
2)Shell
3)文件系统
4)实用程序
命令、程序或shell脚本
↓
shell
↓ (用户空间)
↓ (内核空间)
系统调用(system calls)
文件系统 I/O 内存管理 进程调度 中断异常处理 Cache
deb软件包管理
流行的两种软件包管理机制
Debian Linux软件包管理机制—Deb软件包
Redhat Linux软件包管理机制—Rpm软件包
软件包的类型
二进制软件包
源码包
软件包管理工具分类
根据用户交互方式的不同,可以将常见的软件包管理工具分为三类:
1.命令行: dpkg-deb、dpkg、apt
2. 文本窗口界面:dselect、aptitude、tasksel
3. 图形界面:synaptic
dpkg相关命令
dpkg -i 安装一个在本地文件系统上存在的Debian软件包
dpgk -r 移除一个已经安装的软件包
dpkg -P 移除已安装软件包及配置文件
dpkg -L 列出安装的软件包清单
dpkg -s 显出软件包的安装状态
dpkg和apt软件包管理器的区别
1、dpkg是用来安装.deb文件,但不会解决模块的依赖关系,且不会关心ubuntu的软件仓库内的软件,可以用于安装本地的deb文件。
2、apt会解决和安装模块的依赖问题,并会咨询软件仓库, 但不会安装本地的deb文件, apt是建立在dpkg之上的软件管理工具。
APT工作原理
-
Ubuntu采用集中式的软件仓库机制,将各式各样的软件包分门别类地存在软件仓库中,进行有效地组织和管理。然后将软件仓库置于许许多多的镜像服务器中,并保持基本一致,因此,对于用户,这些镜像服务器就是他们的软件源。
-
在Ubuntu系统中,使用软件源配置文件/etc/apt/sources.list列出最适合访问的镜像站点地址。
-
软件源配置文件只是告诉Ubuntu系统可以访问的镜像站点地址。但那些镜像站点都拥有什么软件资源并不清楚。若是每安装一个软件包,就在服务器上寻找一边,效率是很低的。因而就有必要为这些软件资源列出个清单(建立索引年文件),以便本地主机查询,这就是APT软件包管理器的工作原理。
-
/etc/apt/sources.list。本质就是一个普通的文本文件,就可以在超级管理员授权下,使用任何文本编辑器进行编辑。在该文件中,添加的软件源镜像站点称为一个配置项。
-
刷新软件源
1)修改了配置文件—/etc/apt/source.list,目的只是告知软件源镜像站点的地址。但那些所指向的镜像站点所具有的软件资源并不清楚,需要将这些资源列个清单,以便本机主机知晓可以申请哪些资源。2)使用“apt-get update”命令会扫描每一个软件源服务器,并为该服务器所具有软件包资源建立索引文件,存放在本地的/var/lib/apt/lists目录中。
软件管理相关工作
1.管理软件包
apt-get subcommands
[-d | -f| -m| -q|--purge|--reinstall| -b| -s| -y| -u| -h| -v] pkg
2.修复软件包依赖关系
检查软件包依赖关系:
apt-get check
用于修复依赖关系
apt-get -f install
3.更新软件包
apt-get upgrade
4.安装软件包
apt-get install pkg
5.重新安装软件包
apt-get install package –reinstall
6.卸载软件包
apt-get remove//不完全卸载
apt-get --purge remove//完全卸载
7.清理软件包缓冲区
apt-get clean//清理整个软件包缓冲区,除了lock锁文件和partial目录
8.查询软件包信息
apt-cache//查询软件源和软件包的相关信息
apt-cache subcommands [-p|-s|-q|-i|-c|-h] pkg
apt-cache show//获取指定软件包的详细信息
9.获取软件包安装状态
apt-cache policy//获取软件包当前的安装状态
apt-cache depends//了解某个软件包依赖于哪些软件包
apt-cache rdepends//了解某个软件包被哪些软件包所依赖
shell基本命令
shell简介
-
英文单词shell可直译为“贝壳”。“贝壳”是动物作为外在保护的一种工具。
-
可以这样认为,Linux中的shell就是Linux内核的一个外层保护工具,并负责完成用户与内核之间的交互。
-
命令是用户向系统内核发出控制请求,与交互的文本流。
-
shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,实现用户与操作系统的交互。
-
当需要重复执行若干命令,可以将这些命令集合起来,加入一定的控制语句,编辑成为shell脚本文件,交给shell批量执行。
shell命令格式
立即关机与重启
sudo shutdown -h now//立刻关机
sudo shutdown -r now//关机重启
sudo reboot now
定时关机重启
sudo shutdown -h +45 “That is all,game over.”//定时关机
sudo shutdown -r +60//定时重启
shell的命令格式
username@hostname:direction$
用户名 主机名 目录名
- username:用户名,显示当前登录用户的账户名 (执行的命令是 whoami)
- hostname: 主机名,显示登录的主机名,例如若远程登录后,则显示登录的主机名;(执行的命令是hostname)
- direct$: 目录名,显示当前所处的路径,当在根目录下显示为“/”,当在用户主目录下显示为“~“;(执行的命令是pwd)
shell命令的三要素
$ Command [-Options] Argument1 Argument2
指令 选项 参数1 参数2
- KaTeX parse error: Expected 'EOF', got '#' at position 28: …当前用户为超级用户,提示符为“#̲”,其他用户的提示符均为“”;
- Command:命令名称,Shell命令或程序,严格区分大小写
- Options:命令选项,用于改变命令执行动作的类型,由“-”引导,可以同时带有多个选项;
- Argument:命令参数,指出命令作用的对象或目标,有的命令允许带多个参数
shell命令格式
1)一条命令的三要数之间用空格隔开;
2)若将多个命令在一行书写,用分号(;)将各命令隔开;
3)如果一条命令不能在一行写完,在行尾使用反斜杠(\)表明该条命令结束。
补齐文件名:或者键,连续按两下TAB键或ESC键,用于命令补齐;按一次TAB键,用于文件名补齐。
查询命令历史: history命令,记录有限条的历史命令,默认保留500条命令。可以修改家目录下的 .bashrc 文件中的HISTSIZE
shell中的特殊字符
1.通配符
* 匹配任意长度的字符串 例如:file_*.txt,file_wang.txt,file_lee.txt
? 匹配一个长度的字符 例如:file_?.txt,file_1.txt,file_2.txt,file_3.txt
[...] 匹配其中指定的一个字符 例如:file_[otr].txt,file_o.txt,file_r.txt,file_t
[-] 匹配指定的一个字符范围 例如:file_[a-z].txt,file_a.txt,file_b.txt直到file_z.txt
[^...] 除了其中指定的字符均可匹配 例如:file_[^otr].txt,file_t.txt
2.shell中的通道
管道可以把一系列命令链接起来,意味着第一个命令的输出将作为第二个命令的输入,通过管道传递给第二个命令,第二个命令的输出又将作为第三个命令的输入,以此类推。就像通过使用“|”符连成一个管道。
ls /use/bin | wc -w
3.输入输出重定向
linux中默认的标准输入(0)定义为键盘,标准输出(1)定义为终端窗口,错误输出(2).
>file 将dile文件重定向为输出源,新建模式 ls /usr > Lsoutput.txt,将ls /usr的执行结果,写到Lsoutput.txt文件中,若有同名文件将被删除
>> file 将file文件重定向为输出源,追加模式 ls /usr >> Lsoutput.txt,将ls /usr的执行结果,追加到Lsoutput.txt文件已有内容后
< file 将file文件重定向为输入源 wc < file1,将file1中的内容作为输入传给wc命令
2> 或 &> 将由命令产生的错误信息输入到文件中 ls noexistingfile.txt 2> err.log,使用ls命令,查看一个不存在的文件时,将系统错误提示保存在err.log文件中
4 命令置换
命令替换是将一个命令的输出作为另一个命令的参数
command1 `command2`
例如 ls pwd