Linux常用命令(二)
Linux文件管理
Linux的文件层次标准
Filesystem Hierarchy Standard(FHS)根据FHS的官方文件指出,该标准主要是为了用户了解已安装程序通常放置在哪个目录下,同时希望独立的开发商、系统开发者和用户都遵循这个标准。
典型的目录 | 可分享的 | 不可分享的 |
---|---|---|
不可改变的 |
/usr (软件存放处) |
/etc (配置文件) |
不可改变的 |
/opt (第三方软件) |
/boot (开机与内核) |
可以改变的 |
/var/mail (邮件) |
/var/run (程序相关) |
可以改变的 |
/var/spool/news (新闻) |
/var/lock (程序相关) |
Linux 目录树如下所示:
├── bin -> usr/bin # bin是Binary的缩写, 这个目录存放着最经常使用的命令。
├── boot # 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
├── dev # dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
├── etc # 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
├── home # 用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
├── lib -> usr/lib # 这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
├── lib64 -> usr/lib64 #
├── lost+found # 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
├── media # linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
├── mnt # 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
├── opt # 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
├── proc # 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
| # 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,
| # 使别人无法ping你的机器:
| # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
├── root # 该目录为系统管理员,也称作超级权限者的用户主目录。
├── run # 是一个临时文件系统,存储系统启动以来的信息。
| # 当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
├── sbin -> usr/sbin # s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
├── selinux # 这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙。
| # 但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
├── srv # 该目录存放一些服务启动之后需要提取的数据。
├── sys # 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
├── tmp # 这个目录是用来存放一些临时文件的。
├── usr # 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
| ├── bin -> usr/bin # 系统用户使用的应用程序。
| ├── include # C/C++header Files
| ├── lib -> usr/lib # 应用程序库文件
| ├── lib64 -> usr/lib64 #
| ├── local # 一些自行安装的应用程序文件目录
| ├── sbin -> usr/sbin # 超级用户使用的比较高级的管理程序和系统守护程序。
| ├── share # 一些共享文件
| ├── src # 内核源代码默认的放置目录。
| ├── tmp #
| └── var #
└── var # 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
| ├── cache # 程序执行缓存(暂存)文件
| ├── lib # 应用产生的数据文件放置目录
| ├── local #
| ├── lock -> ../run/lock # 锁定程序或设备使用
| ├── log # 放置系统日志记录文件
| ├── run -> ../run # 执行PID
| ├── spool # 存放数据序列,如mail等
| └── www # 预设网页放置目录
常用文件管理命令
目录相关命令
场景 | 命令 | 描述 |
---|---|---|
切换目录 | cd |
cd {目标目录} 切换至目标目录文件 |
显示目录 | pwd |
pwd 显示当前所在目录 |
新建目录 | mkdir |
mkdir {目标目录} 创建目标目录 |
删除目录 | rmdir |
rmdir {目标目录} 删除目标目录 |
树形目录 | tree |
tree -L {目录层次深度,如:1} 显示从当前目录直到指定目录深度下的所有文件,1代表当前目录tree -d 仅显示目录tree -a 同时显示隐藏文件tree -i -f 不使用缩进线(-i ),而是使用完整路径(-f ),使用-N 不对空白以及特殊字符转义tree -s -h 在每个节点后面显示其大小(-s ),以方便阅读的形式展示(-h 显示1k 而不是1024 )tree -N 使用-N 不对空白以及特殊字符转义tree -P {{*.txt}} 使用通配符(glob)来过滤文件tree -l {{*.txt}} 忽略匹配通配符的项目 |
# a 显示隐藏文件
# f 显示完整路径
# s 显示文件目录大小
# h 显示1k而不是1024
# L 显示目录层次深度为 2,1 表示当前目录
tree -afshL 2
## 显示结果
└── [ 40] ./download
└── [186M] ./download/jdk-8u251-linux-x64.tar.gz
复制、移动以及移动(重命名)
场景 | 命令 | 描述 |
---|---|---|
创建文件 | touch |
touch 文件名称 创建文件 |
复制 | cp |
cp {源文件地址} {目标文件地址} 复制文件 |
删除 | rm |
rm {文件名称/文件路径} 只能删除任意位置文件rm -r {目录名称/目录路径} 递归删除目录以及其子目录rm -rf {目录名称/目录路径} 强制递归删除目录以及其子目录rm -i {目录名称/目录路径} 删除前逐一询问是否删除确认rm -v {目录名称/目录路径} 用冗长模式删除文件,每删除一个文件打印一条信息 |
移动 | mv |
mv {源文件/目录} {目标文件/目录} |
软连接命令
所谓软连接,类似windows中的快捷方式。
语法 | 说明 | 描述 |
---|---|---|
ln {源文件或目录} {目标文件或目录} |
创建硬连接 | |
ln -s {源文件或目录} {目标文件或目录} |
创建软连接 | |
ln –snf {新的源文件或目录} {目标文件或目录} |
修改软连接 |
文件查看命令
命令 | 说明 | 描述 |
---|---|---|
cat | 由第一行开始显示内容 |
cat {文件名称} 标准输出一个文件内容cat {文件1名称} {文件2名称} > {目标文件} 将多个文件(的内容)连接成一个目标文件cat {文件1名称} {文件2名称} >> {目标文件} 将多个文件(的内容)追加到一个目标文件末尾cat -n {文件名称} 给所有输出行编号 |
tac | 由最后一行开始显示内容 | 从名字上来看与cat 是完全相反的,和cat输出的比较,完全是倒过来的。 |
nl | 显示,同时显示行号 |
-b 指定行号指定的方式,主要有两种:-b a 表示不论是否为空行,也同样列出行号(类似 cat -n);-b t 如果有空行,空的那一行不要列出行号(默认值);-n 列出行号表示的方法,主要有三种:-n ln 行号在萤幕的最左方显示;-n rn 行号在自己栏位的最右方显示,且不加0;-n rz 行号在自己栏位的最右方显示,且加0;-w 行号栏位的占用的位数。-p 在逻辑定界符处不重新开始计算。 |
more | 一页一页的显示内容 |
more {目标文件} 打开文件。more -dc {目标文件} 显示文件内容之前先清屏,并在屏幕下方显示百分比more -c 10 {目标文件} 显示文件内容,每10行显示一次。<space> 空格键,进行“下一页”操作。/{查找内容} 搜索字符串,按n 跳转到下一个匹配项。q 退出 |
less | 类似more,交互式读取文件 |
less {文件名称} 打开文件<space> 空格键,进行“下一页”操作;b 向上翻一页。/{查找内容} 向前搜索字符串,按n 跳转到前一个匹配项。?{查找内容} 向后搜索字符串,按n 跳转到后一个匹配项。g(start) 到达文件开头;G(end) 到达文件末尾。q 退出。F 跟随当前已打开的文件输出。v 在编辑器中打开当前文件。 |
head | 只看头几行 |
head -n {count of lines} {文件名称} 输出文件的开头部分内容,-n 指定输出的行数。head -c {size of bytes} {文件名称} 输出文件开始的一些字节。head -n -{count of lines} {文件名称} 输出文件的最后几行以外的所有内容文件的最后几个字节以外的所有内容head -c -{size of bytes} {文件名称} 输出文件中除最后几个字节外的所有内容。 |
tail | 只看尾部几行 |
tail -f {文件名称} 保持查看文件内容。tail -n {number} {文件名称} 显示文件最后number 行。tail -n +{number} {文件名称} 从number 行开始显示文件的全部内容。tail -c {number} {文件名称} 显示文件最后的number 个字节。tail -F {文件名称} 持续显示阅读文件的内容,知道按住Ctrl+C ,即使文件在翻页 |
重定向(>、>>以及>!)命令
命令 | 示例 | 说明 |
---|---|---|
> |
echo abc > test |
输出重定向到一个文件或设备 覆盖原来的文件 |
>! |
echo abc >! test |
输出重定向到一个文件或设备 强制覆盖原来的文件 |
>> |
echo abc >> test |
输出重定向到一个文件或设备 追加原来的文件 |
下面举个两个列子
################## 第一个例子 输出重定向到一个文件或设备 覆盖原来的文件
# 输出一个结果并重定向至test.log文件中
echo "你好,世界" > test.log
# 列出当前目录信息
ls -al
总用量 190576
-rw-r--r--. 1 root root 0 4月 27 21:26 !
drwxr-xr-x. 3 root root 4096 4月 27 21:55 .
drwxr-xr-x. 3 root root 4096 4月 25 19:02 ..
drwxr-xr-x. 3 root root 4096 4月 27 21:03 jdk-8u251-linux-x64
-rw-r--r--. 1 root root 195132576 4月 21 13:21 jdk-8u251-linux-x64.tar.gz
-rw-r--r--. 1 root root 16 4月 27 21:55 test.log
# 打印文本信息
cat -n test.log
1 你好,世界
################## 第二个例子 输出重定向到一个文件或设备 覆盖原来的文件
# 输出一个文本信息并追加至test.log中
echo "你好,帅哥!" >> test.log
# 查看文本信息
cat -n test.log
1 你好,世界
2 你好,帅哥!
关于>!
强制覆盖命令。本人在centos7以及centos8都未使用成功!所以此处暂不聚该例子。下面是在centos8中使用>!
重定向命令
$ echo "帅哥" > test.log
$ ls -al
总用量 12
drwxr-xr-x. 2 ermao ermao 4096 4月 27 10:03 .
drwx------. 15 ermao ermao 4096 4月 27 09:53 ..
-rw-rw-r--. 1 ermao ermao 7 4月 27 10:03 test.log
$ cat -n test.log
1 帅哥
$ echo "世界" >! test.log
$ cat -n test.log
1 帅哥
$ echo "世界" >> test.log
$ cat -n test.log
1 帅哥
2 世界
查找文件命令
常用查找文件的命令有两个:
-
find
命令,主要用于查找文件以及目录。 -
whereis
命令,主要用于查找二进制文件以及man手册等,linux系统会将系统内的所有文件都记录在一个数据库文件中,whereis
则主要查找这个文件 -
which
命令,which
主要查找PATH
变量中的二进制文件是否存在。简单理解就是从$PATH
中查询命令是否存在。
下面简单介绍上面三个命令。
Find 命令
find path -option [-print]
-
path
查找的路径,如:/
、~
、/etc
等等 -
option
选项 -
[-print]
参数
option
的选项有很多,下面介绍几个常见的选项
选项 | 选项说明 | 示例 |
---|---|---|
-name |
指定字符串作为寻找文件或目录的范本样式 可以使用通配符号。如果没有通配符号则是精确查找。 |
find / -name 'test.log' |
-type |
查找指定类型的文件 |
find . -type f 将目前目录其其下子目录中所有一般文件列出 |
-atime -ctime -mtime
|
用户最近一次访问时间(-atime 天 ,-amin 分钟 )。文件数据元(例如权限等)最后一次 修改时间( -ctime 天 ,-cmin 分钟 )。文件最后一次修改时间( -mtime 天 ,-mmin 分钟 )。 |
find -ctime -20 将目前目录及其子目录下所有最近 20 天内更新过的文件列出 |
-exec |
-exec <执行指令> ,假设find指令的回传值为True,就执行该指令; |
find .-type f -user root -exec chown tom {} \; {} 用于与-exec选项结合使用来匹配所有文件,然后会被替换为相应的文件名。 |
示例
# 搜索等于10KB的文件
find . -type f -size 10k
# 搜索结果
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/plugins/com.jrockit.mc.rjmx.ui.zh_CN_5.5.2.174165.jar
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/plugins/com.jrockit.mc.rjmx.ui.ja_5.5.2.174165.jar
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/plugins/org.eclipse.ecf.provider.filetransfer.ssl_1.0.0.v20140827-1444.jar
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/plugins/org.eclipse.e4.ui.workbench3_0.12.0.v20140227-2118.jar
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.equinox.p2.rcp.feature_1.2.0.v20140523-0116/feature.properties
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.emf.ecore_2.10.1.v20140901-1043/feature.properties
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.emf.common_2.10.1.v20140901-1043/feature.properties
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.help_2.0.102.v20141007-2301/feature.properties
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.rcp_4.4.0.v20141007-2301/feature.properties
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.equinox.p2.core.feature_1.3.0.v20140523-0116/feature.properties
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.e4.rcp_1.3.100.v20141007-2033/feature.properties
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/visualvm/platform/modules/locale/org-netbeans-modules-autoupdate-ui_zh_CN.jar
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/visualvm/profiler/modules/org-netbeans-modules-profiler-utilities.jar
Find中-exec与其他命令结合使用
找当前目录下所有.txt文件并把他们的内容拼接起来写入到all.txt文件中
find . -type f -name "*.txt" -exec cat {} \;> all.txt
-
find
命令执行-exec命令时,需要将{} \;
结合使用,{}
代表find
找到的匹配项,\;
则代表结束符号。
查找.txt
结尾的文件,并将其输出只test.log
中
# 查找`.txt`结尾的文件,并将其输出只`test.log`中
find ./ -name "*.txt" -exec ls -al {} \;> test.log
# 查看是否存在test.log文件
ls -al
总用量 190576
drwxr-xr-x. 3 root root 4096 4月 28 18:06 .
drwxr-xr-x. 3 root root 4096 4月 27 23:06 ..
drwxr-xr-x. 3 root root 4096 4月 27 21:03 jdk-8u251-linux-x64
-rw-r--r--. 1 root root 195132576 4月 21 13:21 jdk-8u251-linux-x64.tar.gz
-rw-r--r--. 1 root root 1599 4月 28 18:06 test.log
## 查看输出结果
cat -n test.log
1 -rw-r--r--. 1 10143 10143 117369 4月 28 17:37 ./jdk-8u251-linux-x64/jdk1.8.0_251/jre/THIRDPARTYLICENSEREADME-JAVAFX.txt
2 -r--r--r--. 1 10143 10143 169571 3月 12 14:33 ./jdk-8u251-linux-x64/jdk1.8.0_251/jre/THIRDPARTYLICENSEREADME.txt
3 -rw-r--r--. 1 10143 10143 4226 3月 12 14:33 ./jdk-8u251-linux-x64/jdk1.8.0_251/jre/lib/jvm.hprof.txt
4 -rw-r--r--. 1 10143 10143 1423 3月 12 14:33 ./jdk-8u251-linux-x64/jdk1.8.0_251/jre/lib/amd64/server/Xusage.txt
5 -rw-r--r--. 1 10143 10143 117365 3月 12 11:25 ./jdk-8u251-linux-x64/jdk1.8.0_251/THIRDPARTYLICENSEREADME-JAVAFX.txt
6 -r--r--r--. 1 10143 10143 169571 3月 12 14:33 ./jdk-8u251-linux-x64/jdk1.8.0_251/THIRDPARTYLICENSEREADME.txt
7 -rw-r--r--. 1 10143 10143 30275 12月 8 2017 ./jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/THIRDPARTYLICENSEREADME.txt
8 -rw-r--r--. 1 10143 10143 11358 12月 8 2017 ./jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.ecf.filetransfer.httpclient4.feature_3.9.1.v20140827-1444/asl-v20.txt
9 -rw-r--r--. 1 10143 10143 11358 12月 8 2017 ./jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature_1.0.0.v20140827-1444/asl-v20.txt
10 -rw-r--r--. 1 10143 10143 11358 12月 8 2017 ./jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.ecf.filetransfer.feature_3.9.0.v20140827-1444/asl-v20.txt
11 -rw-r--r--. 1 10143 10143 42 1月 15 2017 ./jdk-8u251-linux-x64/jdk1.8.0_251/lib/visualvm/platform/VERSION.txt
12 -rw-r--r--. 1 10143 10143 42 1月 15 2017 ./jdk-8u251-linux-x64/jdk1.8.0_251/lib/visualvm/profiler/VERSION.txt
注意:如果需要将查询结果直接重定向至一个文本,则直接使用重定向命令而不需要再添加-exec
命令来执行,否则将提示权限不足的错误信息!如下所示:
find ./ -name "*.txt" > test.log
whereis命令
whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
和find相比,whereis查找的速度非常快,这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。
whereis [选项] [参数]
-
[选项]
参见选项说明; -
[参数]
参见参数说明;
选项说明
选项 | 说明 |
---|---|
-b |
只查找二进制文件; |
-B [目录] |
只在设置的目录下查找二进制文件; |
-f |
不显示文件名前的路径名称; |
-m |
只查找说明文件; |
-M [目录] |
只在设置的目录下查找说明文件; |
-s |
只查找原始代码文件; |
-S |
目录>只在设置的目录下查找原始代码文件; |
-u |
查找不包含指定类型的文件。 |
参数说明
要查找的二进制程序、源文件和man手册页的指令名。
示例:
# 查询 git 相关二进制程序以及帮助手册
whereis git
git: /usr/bin/git /usr/share/man/man1/git.1.gz
# /usr/bin/git 为 git 的二进制程序
# /usr/share/man/man1/git.1.gz 为 git 的 man 手册地址
which命令
which
命令用于查找并显示给定命令的绝对路径,环境变量PATH
中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH
设置的目录里查找符合条件的文件。也就是说,使用which
命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which [选项] [参数]
-
[选项]
参见选项说明; -
[参数]
参见参数说明;
选项说明
选项 | 说明 |
---|---|
-n [文件名长度] |
制定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名; |
-p [文件名长度] |
与-n参数相同,但此处的<文件名长度>包含了文件的路径; |
-w |
指定输出时栏位的宽度; |
-V |
显示版本信息。 |
参数说明
指令名:指令名列表。
示例:
[root@localhost ~]# which pwd
/bin/pwd
[root@localhost ~]# which adduser
/usr/sbin/adduser
文件打包、压缩以及解压操作
tar命令
语法:tar [选项] [参数]
示例命令 | 说明 |
---|---|
tar –cvf /tmp/etc.tar /etc |
仅打包,不压缩 |
tar –zcvf /tmp/etc.tar.gz /etc |
打包以gzip压缩 |
tar –xzvf /tmp/etc.tar.gz |
解压 |
参数简单说明:
选项 | 说明 | 选项 | 说明 |
---|---|---|---|
c |
建立一个打包文件 | f |
给出文档名 |
x |
解压缩 | z |
压缩gzip |
v |
有提示信息 | ||
f |
指定备份文件 | ||
z 或--gzip
|
通过gzip指令处理备份文件 |
常用命令说明:
- 打包文件
-
tar -cf {target.tar} {file1 file2 file3}
从文件创建归档。 -
tar -czf {target.tar.gz} {file1 file2 file3}
创建一个压缩的归档。 -
tar -caf {target.tar.xz} {file1 file2 file3}
创建一个压缩的归档文件,使用归档文件的后缀来确定使用的压缩程序。
-
- 解压提取文件
-
tar -xf {source.tar} -C {folder}
提取source文档至folder目录中。 -
tar -xzf {source.tar.gz}
将gzip压缩的source压缩文档提取当前目录中。 -
tar -xzvf {source.tar.gz} -C {target folder}
将gzip压缩的source压缩文档提取target目录中并列举解压信息。 -
tar -xjf {source.tar.bz2}
将bzip压缩的source压缩文档提取当前目录中。 -
tar -tvf {source.tar} {file1 file2 file3}
列出归档文件的内容。 -
tar -xf {source.tar} --wildcard {'*.html'}
提取与模式匹配的文件。
-
软件包管理命令
RPM命令
rpm [选项] [参数]
选项
选项 | 描述 |
---|---|
-a |
查询所有套件; |
-b <完成阶段> <套件档>+ -t <完成阶段> <套件档>+
|
设置包装套件的完成阶段,并指定套件档的文件名称; |
-c |
只列出组态配置文件,本参数需配合-l 参数使用; |
-d |
只列出文本文件,本参数需配合-l 参数使用; |
-e <套件档> --erase <套件档>
|
删除指定的套件; |
-f <文件>+ |
查询拥有指定文件的套件; |
-h --hash
|
套件安装时列出标记; |
-i |
显示套件的相关信息; |
-i <套件档> --install <套件档>
|
安装指定的套件档; |
-l |
显示套件的文件列表; |
-p <套件档>+ |
查询指定的RPM套件档; |
-q |
使用询问模式,当遇到任何问题时,rpm指令会先询问用户; |
-R |
显示套件的关联性信息; |
-s |
显示文件状态,本参数需配合"-l"参数使用; |
-U <套件档> --upgrade <套件档>
|
升级指定的套件档; |
-v |
显示指令执行过程; |
-vv |
详细显示指令执行过程,便于排错。 |
参数
软件包:指定要操纵的rpm软件包。
下面是几个示例
# rpm软件包的安装可以使用程序rpm来完成。执行下面的命令
rpm -ivh your-package.rpm
如何安装.src.rpm软件包
有些软件包是以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时需要进行编译。这类软件包有两种安装方法:
方法一:
rpm -i your-package.src.rpm
cd /usr/src/redhat/SPECS
rpmbuild -bp your-package.specs #一个和你的软件包同名的specs文件
cd /usr/src/redhat/BUILD/your-package/ #一个和你的软件包同名的目录
./configure #这一步和编译普通的源码软件一样,可以加上参数
make
make install
方法二:
rpm -i you-package.src.rpm
cd /usr/src/redhat/SPECS
此包需要的一些软件你没有安装可以用rpm --nodeps -i
来忽略此信息,也就是说rpm -i --force --nodeps
可以忽略所有依赖关系和文件问题,什么包都能安装上,但这种强制安装的软件包不能保证完全发挥功能。
卸载rpm软件包
使用命令rpm -e包名,包名可以包含版本号等信息,但是不可以有后缀.rpm,比如卸载软件包proftpd-1.2.8-1,可以使用下列格式:
rpm -e proftpd-1.2.8-1
rpm -e proftpd-1.2.8
rpm -e proftpd-
rpm -e proftpd
不可以是下列格式:
rpm -e proftpd-1.2.8-1.i386.rpm
rpm -e proftpd-1.2.8-1.i386
rpm -e proftpd-1.2
rpm -e proftpd-1
** 这说明这个软件被其他软件需要,不能随便卸载,可以用rpm -e --nodeps
强制卸载**
查询安装包
rpm -qa 讲列出所有安装过的包
或者利用管道
rpm -qa | grep sql
查询安装包全名
rpm -q mysql
可以获得系统中安装的mysql软件包全名,从中可以获得当前软件包的版本等信息。这个例子中可以得到信息mysql-3.23.54a-11
查询安装包安装的位置
rpm -ql 包名
注意这里的是不包括.rpm后缀的软件包的名称,也就是说只能用mysql或者mysql-3.23.54a-11而不是mysql-3.23.54a-11.rpm。如果只是想知道可执行程序放到那里去了,也可以用which,比如:
which mysql
网友评论