一、软件包管理
1. 软件包管理
(1)流行的两种软件包管理机制
- Debian Linux首先提出“软件包”的管理机制——Deb软件包
- 将应用程序的二进制文件、配置文档、man/info帮助页面等文件合并打包在一个文件中,用户使用软件包管理器直接操作软件包,完成获取、安装、卸载、查询等操作。
- Redhat Linux基 于这个理念推出了自己的软件包管理机制——Rpm软件包。
- 随着Linux操作系统规模的不断扩大,系统中软件包间复杂的依赖关系,导致Linux用户麻烦不断。
- Debian Linux开发出了APT软件包管理器。
- 检查和修复软件包依赖关系
- 利用Internet网络帮助用户主动获取软件包
- APT工具再次促进了Deb软件包更为广泛地使用,成为Debian Linux的一个无法替代的亮点。
(2)软件包的类型
- Ubuntu有两种类型的软件包:二进制软件包(deb)和源码包(deb-src)
- 二进制软件包(Binary Packages):它包含可执行文件、库文件、配置文件、man/info页面、版权声明和其它文档。
- 源码包(Source Packages):包含软件源代码、版本修改说明、构建指令以及编译工具等。先由tar工具归档为.tar.gz文件,然后再打包成.dsc文件。
- 在用户不确定一个软件包类型时,可以使用file命令查看文件类型。
linux@ubuntu:~$ file g++_4.1.2-9ubuntu2_i386.deb
g++_4.1.2-9ubuntu2_i386: Debian binary package (format 2.0)
(3)软件包的命名
2. 在线软件包管理
(1) APT工作原理
- Ubuntu采用集中式的软件仓库机制,将各式各样的软件包分门别类地存放在软件仓库中,进行有效地组织和管理。然后,将软件仓库置于许许多多的镜像服务器中,并保持基本一致。因此,对于用户,这些镜像服务器就是他们的软件源(reposity)。
- 在Ubuntu系统中,使用软件源配置文件/etc/apt/sources.list 列出最合适访问的镜像站点地址。
- 软件源配置文件只是告知Ubuntu系统可以访问的镜像站点地址。但那些镜像站点都拥有什么软件资源并不清楚。若是每安装一个软件包,就在服务器上寻找一边,效率是很低的。因而,就有必要为这些软件资源列个清单(建立索引文件),以便本地主机查询。这就是APT软件包管理器的工作原理。
(3)更新软件源
第一种方式:修改/etc/apt/sources.list
第二种方式:图形界面更换软件源
更换以后需要更新一下软件源:sudo apt-get update
(4)APT相关命令
3. 离线线软件包管理
二、Linux shell命令(权限、输入输出)
1. Shell介绍
(1)Shell概述
- Shell是一个命令行解释器,它为用户提供一个向Linux内核发送请求以便运行程序的界面系统级程序。用户可以用Shell来启动、挂起、停止、编程等操作。
- Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
- Shell还是一个功能强大的编程语言、编写方面、调试方便、灵活性强。
- Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
(2)Shell分类
(3)查看当前系统的Shell
查看当前系统有哪些
shell cat /etc/shells
查看当前是什么
shell echo $SHELL
立即关机
linux@ubuntu:~$ sudo shutdown -h now
立即重新启动
linux@ubuntu :~$ sudo shutdown -r now
linux@ubuntu :~$ sudo reboot now
定时关机
linux@ubuntu:~$ sudo shutdown -h +45 “That is all, game over.”
定时重启
linux@ubuntu:~$ sudo shutdown -r +60
2. 权限相关命令
(1)切换用户
Linux下分为:
- 超级用户(根目录、安装软件等)
- 普通用户
su - 或 su -l root 切换到超级用户下(root)并且环境变量也切换到root下
su -l (root) 可以访问任意用户不止root用户一个
linux@linux:~$ su -
linux@linux:~$ su -l root
su 或 su root 只linux@linux:~$ su是切换到超级用户下(root)
linux@linux:~$ su
linux@linux:~$ su root
(2)设置用户密码
passwd 修改自己的密码
passwd username 修改指定用户的密码
(3)修改文件权限
字母法:chmod (u g o a) (+ – =) (r w x) (文件名)
u:(user )当前用户下权限
g:(group )同组用户下权限
o:(other)其他用户下权限
a:(all)所有用户加权限
r:可读权限
w:可写权限
x:可执行权限
数字法:chmod + 数字组合 + 文件名
按八进制来计算数字
3. 基本命令
(1)date
date - print or set the system date and time
date +%T date +%Y/%m/%d
date +%H:%M date +"当前时间为:%Y/%m/%d %H:%M:%S"
date +"三个月之后:%Y/%m/%d %H:%M:%S" -d "+3 month"
date +"三天前:%Y/%m/%d %H:%M:%S" -d "-3 day"
date -s "20300111 19:43:44"
(2)clear
清屏命令
相等于 Ctrl + l
(3)df
df - report file system disk space usage
常用参数:
-a :列出所有文件系统
-k :列出磁盘的分配情况(KB)
-h :同-k, 但大小以G、M,K单位显示
-l :仅列出本地文件系统
(4)du
du - estimate file space usage
常用参数:
-a :仅列出空闲的文件数
-h :列出磁盘的使用情况(KB)
-s :列出总的空闲空间(KB)
4. 输入输出相关操作
(1)输出命令
echo - display a line of text
Echo the STRING(s) to standard output.
-n do not output the trailing newline
-e enable interpretation of backslash escapes
-E disable interpretation of backslash escapes (default)
(2)输入输出重定向
- 输出重定向
- 输入重定向
(3)通配符、管道
- 通配符
- 管道
管道可以把一系列命令连接起来,意味着第一个命令的输出将作为第二个命令的输入,通过管道传递给第二个命令,第二个命令的输出又将作为第三个命令的输入,以此类推。就像通过使用“|”符连成了一个管道。
(4)历史查询
history
(5)命令置换
三、Linux shell命令(文件搜索、文件处理、压缩解压)
1. 查看文件相关命令
(1)cat
cat file 输出file文件中所有内容
cat
cat - 在屏幕上输入什么就输出什么
(2)tac
tac file 输出file从后往前输出内容
(3)more
more file 内容一页显示不下,按enter可以往下翻页,不能往上翻页
(4)less
less file 内容一页显示不下,按上下键可以进行上下翻页
(5)head
head file 默认显示前十行
head -n file 显示前n行
(6)软链接和硬链接
ln [ -s ] target link_name
选项“-s”表示为创建软链接。在缺省情况下,创建硬链接。参数target为目标文件,link_name为链接文件名。如果链接文件名已经存在但不是目录,将不做链接
软链接和硬链接的区别
软链接源文件名字更改之后该链接失效,需要把源文件的名字改回来,该链接才会重新有效
硬链接源文件名字更改之后该链接依然有效
2. 文件搜索相关命令
(1)查找文件命令
①. find
-name 按文件名查找
-type 按文件类型查找
-a 逻辑与
-0 逻辑或
! 逻辑非
-exec rm {} \;
find . -name “file” 当前目录下查找file文件
find /home -name “file” home目录下查找file文件
find . -type f 当前目录下普通文件
find . -type l 当前目录下链接文件
逻辑与 -a 可省略
find . -name “file” -type l
find . -name “file” -a -type l 查找当前目录下file文件 与 是链接文件
逻辑或 -o 不可省略
find . -name “file” -o -type l 查找当前目录下file文件 或 是链接文件
逻辑非
find . !-name “file” 查找当前目录下 非 file文件
查找之后删除命令
find . !-name “file” -exec rm {} ; 查找当前目录下 非 file文件 并且执行rm命令删除文件
(2)查找文件内容命令
①. grep
grep, egrep, fgrep, rgrep - print lines that match patterns
语法:grep [选项] 要查找的内容 查找的位置 常用选项:
-A 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-B 除了显示符合样式的那一行之外,并显示该行之前的内容。
-C 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-i 忽略字符大小写的差别。
-r 查找位置是目录时用
-n 在显示符合样式的那一行之前,标示出该行的列数编号。
grep -A 2 “hello” file 查找file文件中“hello”字符并显示该字符的后两行
grep -B 2 “hello” file 查找file文件中“hello”字符并显示该字符的前两行
grep -C 2 “hello” file 查找file文件中“hello”字符并显示该字符的前后两行
grep -i -C 2 “hello” file 查找file文件中“hello”字符忽略该字符的大小写 并显示该字符的前后两行
grep -in -C 2 “hello” file 查找file文件中“hello”字符忽略该字符的大小写 并显示该字符在第几行 并显示该字符的前后两行
grep -irn -C 2 “hello” . 查找当前目录下的所有file文件中“hello”字符忽略该字符的大小写 并显示该字符的前后两行
grep -irn -C 2 “hello” /bin 查找 bin 目录下的所有file文件中“hello”字符忽略该字符的大小写 并显示该字符的前后两行
(3)其他相关命令
①. which
which ls 显示ls命令所在的路径
②. whereis
whereis ls 显示ls命令所在的路径并且显示该命令的man手册所在的路径
3. 文件处理相关命令
(1)cut
-b: 以字节为单位取出固定字符区间
-c :以字符 的单位取出固定字符区间;
-d :后面接分隔字符。与 -f 一起使用;
-f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;
grep “linux” /etc/passwd | cut -b 1,2 显示passwd文件中“linux” 第1个、2个字符
grep “linux” /etc/passwd | cut -b 2-4 显示passwd文件中“linux” 第2-4个字符
grep “linux” /etc/passwd | cut -b 2- 显示passwd文件中“linux” 第2-个字符到结尾全部显示出来
grep “linux” /etc/passwd | cut -d “:” -f 1,2 显示passwd文件中“linux” 按“:”分隔符来分段显示第1段和第2段(按着文件中的分段来选取分隔符)
(2)sed
-r:使用扩展正则表达式
-e:它告诉sed将下一个参数解释为一个sed指令,只有当命令行上给出多个sed指令时才需要使用-e选项
-i:直接对内容进行修改,不加-i时默认只是预览,不会对文件做实际修改
-n:取消默认输出,sed默认会输出所有文本内容,使用-n参数后只显示处理过的行
编辑命令
a: 追加
i: 插入
d: 删除
s: 替换
p: 打印
sed -n ‘1p’ passwd 打印passwd文件中第1行
sed -n ‘1,4p’ passwd 打印passwd文件中1-4行
sed -n ‘$p’ passwd 打印passwd文件中最后一行
sed -i ‘1d’ passwd 删除passwd文件中第一行
sed -i ‘1ahi’ passwd 在passwd文件的第一行后追加一行 “hi”
sed -i ‘1ihi’ passwd 在passwd文件的第一行插入一行 “hi”
sed -i ‘s/linux/Linux/’ passwd 把passwd文件中的小写linux替换成大写Linux只替换首个小写的linux
sed -i ‘s/linux/Linux/g’ passwd 把passwd文件中的小写linux全部替换成大写Linux
sed -i ‘20,40s/linux/Linux/g’ passwd 把passwd文件中20-40行的小写linux全部替换成大写Linux
(3)awk
awk ‘{[pattern] action}’ {filenames} # 行匹配语句 awk ‘’ 只能用单引号
$n 当前记录的第n个字段,字段间由FS分隔
$0 完整的输入记录
NF 一条记录的字段的数目
NR 已经读出的记录数,就是行号,从1开始
awk '{print $0}' file 将file中所有打印(print)出来
awk '{print $1,$2}' file 将file中第一列,第二列打印(print)出来
awk '{print NR,$1}' file 将file中第一列打印(print)出来并显示行号(NR)
awk '{print NF,$1}' file 将file中第一列打印(print)出来并显示列号(NF)
awk '{print $NF}' file 将file中最后一列打印(print)出来
awk -F ':' '{print $1}' file 将file文件中按分隔符‘:’打印第一列
awk -F ':' '$1=="linux" {print $0}' file 将file文件中判断$1行是否等于linux,如果等于将这一行全部打印出来,并按分隔符‘:’打印
awk -F ':' '$1="linux" {print $0}' file 将file文件中$1行全部赋值成linux,并按分隔符‘:’打印
4. 解压缩相关命令
(1)giz与gunzip
将一个文件压缩成.gz格式的压缩文件,移植性好
这个命令没有归档功能,每次只能压缩一个文件。生成相应名字的压缩包
(2)bzip2与bunzip2
bzip2命令是.bz2文件的压缩程序
bzip2在性能上优于gzip,提供了最大限度的压缩比率。
(3)zip与unzip
压缩后的文件后缀名为 .zip,可以压缩目录,原文件保留。
方便在Linux和微软Windows间交换文件
(4)tar
tar命令主要用于将若干文件或目录合并为一个文件,以便备份和压缩。当然,之后出现tar程序的改进版本,可以实现在合并归档的同时进行压缩。
tar命令符号模式的一般语法格式为:
tar [ -t | -x | -r | -c | -v | -f | -j | -z ] tarfile filelist
-t 显示归档文件的内容
-x 释放归档文件
-c 创建一个新的归档文件
-r 追加的方式归档文件
-v 显示归档和释放的过程信息
-f 用户指定归档文件的文件名,否则使用默认名称
-j 由tar生成归档,然后由bzip2压缩
-z 由tar生成归档,然后由gzip压缩
四、Linux shell命令(进程、用户管理)
1. 进程管理相关命令
(1)进程的概念
- 进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。
- 进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。
(2)查看进程的命令
①. ps
ps -aux 显示当前所运行的进程
ps -elf 比aux命令多显示一个当前进程的一个父进程(PPID)
②. top
监视进程
通常会全屏显示,而且会随着进程状态的变化不断更新整个系统的信息也会显示,为查找问题提供了便利可以显示系统总共有多少CPU和内存资源以及负载平衡等信息。
③. pstree
将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以init这个基本进程为根,如果有指定使用者id, 则树状图会只显示该使用者所拥有的进程。
(3)发送信号命令
①. kill
使用kill命令终止进程
kill [-signal] PID
signal是信号
PID是进程号
kill 命令向指定的进程发出一个信号signal,在默认 情况下,kill 命令向指定进程发出信号15,正常情 下,将杀死那些不捕捉或不忽略这个信号的进程
kill -l 查看当前有哪些进程号
kill -9 (程序的PID号) PID号可用top命令查找
2. 用户管理相关命令
(1)用户管理相关文件介绍
①. 用户的属性
用户名
口令
用户ID(UID)
用户主目录(HOME)
用户shell
②. etc/passwd文件
/etc/passwd文件是系统能够识别的用户清单。用户登陆时,系统查询这个文件,确定用户的UID并验证用户口令
登陆名
经过加密的口令
UID
默认的GID
个人信息
主目录
登陆shell
③. etc/group文件
包含了UNIX组的名称和每个组中成员列表每一行代表一个组,包括4个字段:
组名
加密的口令
GID号
成员列表,彼此用逗号隔开
(2)用户管理相关命令介绍
①. 添加用户 adduser
adduser
语法:adduser
实例:
adduser newuser
添加用户名为newuser的新用户
②. 初始化口令 passwd
使用passwd命令可以修改用户口令
root用户可以修改任何用户的口令
语法:passwd [-k] [-l] [u] [-f] [-d] [-S] username
使用方法:
passwd username
③. 设置用户属性 usermod
usermod
语法:usermod [-u uid [-o]] [-g group] [-G gropup,…] [-d home [-m]]
[-s shell] [-c comment] [-l new_name] [-f inactive]
[-e expire] [-p passwd] [-L|-U] name
举例用户oldname改名为newname,注意要同时更改家目录:
usermod –d /home/newname –m –l newname oldname
④. 删除用户 deluser
deluser
语法: deluser
使用方法:
deluser --remove-home user1
删除用户user1的同时删除用户的工作目录