【深入学习linux】Linux命令格式
一、命令基本格式
命令提示符
[root@localhost ~]#
root 代表当前登录用户,Linux当中管理员账号是 root
localhost 代表主机名
~ 代表当前所在目录(家目录),对于管理员来说他的家目录就是 /root ,普通用户家目录就是 /home/用户名 这个目录下,比如 test ,那么他的家目录就是 /home/test
# 代表超级用户的提示符,普通用户的提示符是 $
pwd
pwd 命令可以查看当前所在目录的位置信息
cd /home/local/src/
cd 命令就是进入指定目录
命令格式
命令 [选项] [参数]
注意:
1.个别命令使用不遵循此格式;
2.当有多个选项时,可以写在一起;比如某个命令既有 -a 也有 -l ,那么就可以写成 -al ;
3.简化选项和完整选项,-a 等于 --all
查询目录中内容:ls
ls [选项] [文件或目录] 选项: -a 显示所有文件,包含隐藏文件 -l 显示详细信息 -d 查看目录属性 -h 人性化显示文件大小 -i 显示inode
[root@localhost ~]# ls
anaconda-ks.cfg
[root@localhost ~]# ls -l 总用量 4 -rw-------. 1 root root 1615 10月 21 05:16 anaconda-ks.cfg
解释下权限
-rw-r--r-- - 文件类型( - : 文件, d : 目录, l : 软链接文件 ) rw- r-- r-- u所有者 g所有组 o其他人 r读 w写 x执行
第一位来区分文件类型,除开(-、d、l)还有其他的四种:块设备文件、字符设备文件、套接字文件和管道文件。
除开第一位,还有九位,每三位为一组,比如这里(rw-(u所有者)、r--(g所有组)、r--(o其他人))。
然后后面 “.” 代表ACL权限
然后后面 “1” 数字1代表引用计数,代表这个文件被调用几次
然后后面 “root” 代表文件的u所有者
然后后面 “root” 代表文件的g所有组
然后后面 “1615” 代表文件的大小,单位是字节,可以使用 ls -lh,-h表示人性化显示大小,后面统计大小的命令基本都支持 -h
然后后面 “10月 21 05:16” 最后一次修改时间
然后最后一列表示文件名
另外扩展:Linux里面隐藏文件一般都用 “.” 开头,可以使用 ls -a 进行查看隐藏文件;ls -d 只是查看目录本身的属性,而不是查看目录下的文件信息;ls -i 查看当前目录下所有的inode的id号,id号就是为了系统能快速找到文件索引设置的。ll 命令相当于 ls -l 。
二、文件处理命令
目录处理命令
建立目录:mkdir
mkdir -p [目录名] -p 递归创建 命令英文愿意:make directories
-p 是选项,表示创建多级目录都不存在的时候需要使用-p来进行递归创建,比如 mkdir -p /a/b/c
切换所在目录:cd
cd [目录] 命令英文原意:change directory 简化操作
cd 进入当前用户的家目录 cd ~ 进入当前用户的家目录 cd - 进入上次目录 cd .. 进入上一级目录 cd . 进入当前目录
扩展提升:Ctr+L进行清屏
相对路径:参照当前所在目录,进行查找,如:[root@localhost ~]# cd ../usr/local/src/
绝对路径:从根目录开始指定,一级一级递归查找。在任何目录下,都能进入指定位置,如:[root@localhost ~]# cd /etc/
使用Tab来进行目录文件补全,也可以使用命令补全
查询所在目录位置:pwd
pwd
命令英文原意:print working directory
删除空目录:rmdir(一般不会用)
rmdir [目录名]
命令英文原意:remove empty directories
删除文件或目录:rm(推荐使用)
rm -rf [文件或目录] 命令英文原意:remove 选项: -r 删除目录或者文件 -f 强制
rm 文件,只能删除文件
rm -r 目录名,但是会询问是否删除,如果确定都需要删除,那么就可以直接使用 rm -rf 目录名,会强制删除下面所有
复制命令:cp
cp [选项] [原文件或目录] [目标目录] 命令英文原意:copy 选项: -r 复制目录 -p 连带文件属性复制 -d 若源文件是链接文件,则复制链接属性 -a 相对于 -pdr
cp 文件 目标文件,只能复制文件
cp -r 目录名 目标目录
cp -a xxx xxx,-a 等同于 -pdr ,与源文件或者目录日期时间都一模一样了。
剪切或改名命令:mv
mv [原文件或目录] [目标目录]
命令英文原意:move
同一个目录mv就可以进行改名,不同目录使用mv就进行剪切。
常用目录的作用
/ 根目录 /bin 命令保存目录(普通用户就可以读取的命令) /boot 启动目录,启动相关文件 /dev 设备文件保存目录 /etc 配置文件保存目录
/root 超级用户的家目录 /home 普通用户的家目录 /lib 系统库保存目录 /mnt 系统挂载目录 /media 挂载目录
/tmp 临时目录
/sbin 命令保存目录(超级用户才能使用的目录)
/proc 直接写入内存的
/sys
/usr 系统软件资源目录
/usr/bin/ 系统命令(普通用户)
/usr/sbin/ 系统命令(超级用户)
/var 系统相关文档内容
根目录下的bin和sbin,usr目录下的bin和sbin,这四个目录都是用来保存系统命令的。
根目录下的bin和usr目录下的bin下的命令,任何用户都可以去使用并执行。
根目录下的sbin和usr目录下的sbin下的命令,只有root才能执行的命令。
根目录下的lib目录下,都是一些函数库,不是所有功能都写到了linux系统里,有些是通过函数库来进行动态调用使用的,提升Linux系统效率。
根目录下的mnt、media、misc都表示外接存储设备的盘弧,misc一般是外接磁带机的挂载目录,media一般是外接光盘的挂载目录,mnt一般是外接u盘或者移动硬盘的挂载目录。老版的linux系统下没有media和misc的,所以习惯性将所有的挂载点都放入mnt目录了。
根目录下的proc和sys目录不能直接操作,这两个目录保存的是内存的过载点。
一般推荐使用目录有:可以在家目录root 或者 home,以及tmp目录下随便放内容。
文件处理命令
链接命令
链接命令:ln
ln -s [原文件] [目标文件]
命令英文原意:link
功能描述:生成链接文件
选项:-s 创建软链接
硬链接特征:
1. 拥有相同的i节点和存储block块,可以看做是同一个文件
2. 可通过i节点识别
3.不能跨分区
4.不能针对目录使用
ln /root/xxx.cfg /tmp/硬链接名称,使用之后引用计数为增加1,而且通过 ls -i /root/xxx.cfg /tmp/硬链接名称 发现它们的 i 节点相关,无论你是否重命名还是删除都可以正常使用。
软链接特征:
1. 类似Windows快捷方式
2. 软链接拥有自己的i节点和Block块,但是数据块中只保存原文件的文件名和i节点号,并没有实际的文件数据
3. lrwxrwxrwx l软链接(是l 不是大写 i),软链接文件权限都为rwxrwxrwx
4. 修改任意文件,另一个都改变
5. 删除原文件,软链接不能使用
ln -s /root/xxx.cfg /tmp/软链接名称
echo 1111 >> /root/xxx.cfg cat /tmp/软链接名称 cat /tmp/硬链接名称
echo 2222 >> /tmp/软链接名称
cat /tmp/硬链接名称
cat /root/xxx.cfg
echo 3333 >> /tmp/硬链接名称
cat /root/xxx.cfg
cat /tmp/软链接名称
rm -rf /root/xxx.cfg
这里无论修改软、硬链接都会使文件进行改变,都能看到改变的值。删除原文件,硬链接没有任何变化,软链接失效。
ln -s /root/csb /tmp/
ln -s sb /tmp/
前往/tmp/目录发现,csb可以,但是sb却找不到,说明软链接一般要指定绝对路径。
三、文件搜索命令
文件搜索命令 locate
locate 文件名 在后台数据库中按文件名搜索,搜索速度比较快 /var/lib/mlocate #locate命令所搜索的后台数据库 updatedb 更新数据库
locate xxx.log ,在mlocate数据库搜索 xxx.log 文件,可以找到;但是如果 touch yyy.log,你再使用locate yyy.log 发现找不到对应的文件了,原因:因为locate命令不会直接在系统中搜索,而是在/var/lib/mlocate这个数据库进行搜索,又由于mlocate数据库不是实时更新的,每一天更新一次,所以新建文件需要使用locate进行搜索,必须使用updatedb进行手动更新mlocate数据库。
locate locate
搜索跟locate相关的文件。可能根据Linux系统不同,locate数据库的名字可能不同:比如 slocate、mlocate、locatedb。
locate 只能按照文件名进行搜索。
touch /tmp/yyy.log
updatedb
locate yyy.log
locate yyy.log 发现只能找到 /root/yyy.log,而找不到 /tmp/yyy.log,原因:locate 命令是按照 /etc/updatedb.conf 配置文件进行配置搜索的,发现 /tmp 在不搜索路径里面。
PRUNE_BIND_MOUNTS = "yes" # 开启搜索限制,yes的时候,下面三个配置全部生效,反之亦然 PRUNEFS = # 搜索时,不搜索文件系统 PRUNENAMES = # 搜索时,不搜索文件类型 PRUNEPATHS = # 搜索时,不搜索的路径
注意了:centos7默认是没有安装mlocate的,所以无法使用这两个命令 locate,updatedb
yum install mlocate
命令搜索命令 whereis 与 which
whereis 和 which 只能搜索外部安装的一些命令,不能搜索系统命令
whereis 命令名 # 搜索命令所在路径及帮助文档所在位置 选项: -b : 只查找可执行文件 -m : 只查找帮助文件
[root@localhost ~]# whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
ls的运行路径在 /usr/bin/ls ,帮助文档:/usr/share/man/man1/ls.1.gz
whoami 查询我是谁,whatis ls 查看ls命令是干什么的
which 文件名
# 搜索命令所在路径及别名
[root@localhost ~]# which ls alias ls='ls --color=auto' /usr/bin/ls [root@localhost ~]# which pwd /usr/bin/pwd
PATH环境变量
PATH环境变量:定义的是系统搜索命令的路径 [root@localhost ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
环境变量就是为了让系统可以去这些路径去寻找相应可执行命令,如果上述环境变量的路径中未找到相关命令就会提示 -bash: lsss: command not found
文件搜索命令 find
find [搜索范围] [搜索条件] # 搜索文件 find / -name install.log # 避免大范围搜索,会非常耗费系统资源 # find是在系统当中搜索符合条件的文件名。如果需匹配,使用通配符匹配,通配符是完全匹配
Linux 中的通配符 * 匹配任意内容 ? 匹配任意一个字符 [] 匹配任意一个中括号内的字符
find /root -name "install.log*",会匹配出install.log和install.log.syslog
find /root -name "ab[cd]",会匹配出abc和abd
find /root -name "*[cd]",会匹配出以c或者d结尾的文件
find /root -iname install.log # 不区分大小写 find /root -user root # 按照所有者搜索 find /root -nouser # 查找没有所有者的文件
find /root -nouser 搜索没有所有者的文件,一般可以认为是垃圾文件,但是有两种情况:一是内核产生的文件比如proc和sys里面的文件可能没有所有者,二是插入U盘可能会不存在所有者。
find /var/log/ -mtime +10 # 查找10天前修改的文件 -10 10天内修改的文件 10 10天当天修改的文件 +10 10天前修改的文件 atime 文件访问时间 ctime 改变文件属性 mtime 修改文件内容
find /var/log -mtime +10 ,搜索10天前的日志,如果不需要就可以进行删除了。
find . -size 25k # 查找文件大小是25kb的文件 -25K 小于25KB的文件 25K 等于25KB的文件 +25K 大于25KB的文件 find . -inum 262422 # 查找i节点是262422的文件
find . -size 2M,表示查找文件大小是2MB的文件。不能是小写m,只能是大写M。而且必须带单位,如果不带单位会按照扇区块512KB进行查找。
find /etc -size +20k -a -size -50k # 查询/etc/目录下,大于20KB并且小于50KB的文件 -a and 逻辑与,两个条件都满足 -o or 逻辑或,两个条件满足一个即可 find /etc -size +20k -a -size -50k -exec ls -lh {} \; # 查找/etc/目录下,大于20KB并且小于50KB的文件,并显示详细信息 # -exec/-ok命令{}\;对搜索结果执行操作
字符串搜索命令 grep
grep [选项] 字符串 文件名 # 在文件当中匹配符合条件的字符串 选项: -i 忽略大小写 -v 排除指定字符串
grep "size" xxx.log,包含size关键字的信息
grep -v "size" xxx.log,不包含size关键字的信息
find 命令与 grep 命令的区别
1. find 命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
2. grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式时包含匹配
四、帮助命令
帮助命令man
man 命令
# 获取指定命令的帮助
man ls
# 查看ls的帮助
如果要搜索关键字,比如这里搜索 -d,只需要 /-d 进行搜索,然后使用 n 键进行下一个,shift+n(也就是大写 N) 进行上一个。
man命令它几个帮助级别:
1 : 查看命令的帮助 2 : 查看可被内核调用的函数的帮助 3 : 查看函数和函数库的帮助 4 : 查看特殊文件的帮助(主要是/dev目录下的文件) 5 : 查看配置文件的帮助 6 : 查看游戏的帮助 7 : 查看其他杂项的帮助 8 : 查看系统管理员可用命令的帮助 9 : 查看和内核相关文件的帮助
查看命令拥有那个级别的帮助
man -f 命令 相当于 whatis 命令 举例: man -5 passwd man -4 null man -8 ifconfig
查看和命令相关的所有帮助
man -k 命令
相当于
apropos 命令
例如:
apropos passwd
man -k passwd 输出所有有passwd关键字的命令和命令帮助文档
其他帮助命令
选项帮助
命令 --help
# 获取命令选项的帮助
例如:
ls --help
shell内部命令帮助
help shell 内部命令
# 获取shell 内部命令的帮助
例如:
whereis cd
# 确定是否是shell内部命令
help cd
# 获取内部命令帮助
shell 其实是Linux的解释器,比如说将 ls 翻译成 0101进行执行
怎么判断一个命令是系统自带的还是后来安装的,只需要使用whereis 命令进行查看,如果找到了就证明是系统自带的,如果找不到就是后来安装的。
详细命令帮助info
info 命令 - 回车:进入子帮助页面(带有*号标记) - u:进入上层页面 - n:进入下一个帮助小节 - p:进入上一个帮助小节 - q:退出
五、压缩和解压缩命令
常用压缩格式:.zip,.gz,.bz2
.zip格式压缩
zip 压缩文件名 源文件 # 压缩文件 zip -r 压缩文件名 源目录 # 压缩目录
.zip格式解压缩
unzip 压缩文件
# 解压缩.zip文件
这种格式和windows是通用的,可以解压windows下的xxx.zip,windows也可以解压缩linux的xxx.zip文件。
centos7mini版没有zip和unzip命令,需要安装下:
yum install zip unzip
.gz格式压缩
gzip 源文件 # 压缩为.gz格式的压缩文件,源文件会消失 gzip -c 源文件 > 压缩文件 # 压缩为.gz格式,源文件保留 # 例如:gzip -c xxxx > xxxx.gz gzip -r 目录 # 压缩目录下所有的子文件,但是不能压缩目录
“>”是将命令的结果写入指定文件
.gz格式解压缩
gzip -d 压缩文件
# 解压缩文件
gunzip 压缩文件
# 解压缩文件
gunzip -r 目录
# 解压缩目录下面的文件
.bz2格式压缩
bzip2 源文件 # 压缩为.bz2格式,不保留源文件 bzip2 -k 源文件 # 压缩之后保留源文件 注意:bzip2命令不能压缩目录
.bz2格式解压缩
bzip2 -d 压缩文件 # 解压缩,-k保留压缩文件 bunzip2 压缩文件 # 解压缩,-k保留压缩文件
常用压缩格式:.tar.gz,.tar.bz2
打包命令tar
tar -cvf 打包文件名 源文件 选项: -c : 打包 -v : 显示过程 -f : 指定打包后的文件名 例如: tar -cvf xxxx.tar xxxx
这里打包后变成xxxx.tar,然后可以使用 gzip xxxx.tar 进行压缩就可以压缩成 xxxx.tar.gz 的格式了。然后可以使用 bzip2 xxxx.tar 进行压缩就可以压缩成 xxxx.tar.bz2 的格式了。
解打包命令
tar -xvf 打包文件名 选项: -x : 解打包 例如: tar -xvf xxxx.tar
.tar.gz压缩格式
其实.tar.gz格式是先打包为.tar格式,再压缩为.gz格式 tar -zcvf 压缩包名.tar.gz 源文件 选项: -z : 压缩为.tar.gz格式 tar -zxvf 压缩包名.tar.gz 选项: -x : 解压缩.tar.gz格式
.tar.bz2压缩格式
tar -jcvf 压缩包名.tar.bz2 源文件 选项: -z:压缩为.tar.bz2格式 tar -jxvf 压缩包名.tar.bz2 选项: -x:解压缩.tar.bz2格式
可以指定解压缩到某个目录下:
tar -jxvf xxxx.tar.bz2 -C /tmp/
压缩的时候可以指定多个目录和文件:
tar -zcvf test.tar.gz 目录名 文件名
如果要指定压缩到某个目录下:
tar -zcvf /tmp/test.tar.gz 目录名 文件名
如果只是想查看下压缩文件的内容,不解压出来:
tar -ztvf xxxx.tar.gz
-t 就是测试的意思,不解压
六、关机和重启命令
1. shutdown命令
[root@localhost ~]# shutdown [选项] 时间 选项: -c : 取消前一个关机命令 -h : 关机 -r : 重启
shutdown -r now 立即重启,可以用 date 查看当前系统时间
# 当前05:30进行重启 shutdwn -r 05:30 # 这里会一直等待重启,什么操作都不可以了,需要加一个后台符,让它在后台进行运行 shutdown -r 05:30 &
如果我想取消这次重启操作,就可以使用:
shutdown -c
2.其他关机命令
halt poweroff init 0
3.其他的重启命令
reboot init 6
4.系统运行级别
0 关机 1 单用户 2 不完全多用户,不含NFS服务 3 完全多用户 4 未分配 5 图形界面 6 重启
系统运行级别
cat /etc/inittab # 修改系统默认运行级别 id:3:initdefault: runlevel # 查询系统运行级别
5.退出登录命令
logout
七、其他常用命令
挂载命令
1.查询与自动挂载
mount # 查询系统中已经挂载的设备 mount -a # 依据配置文件/etc/fstab的内容,自动挂载
2.挂载命令格式
mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点 选项: -t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、xfs等文件系统 -o 特殊选项:可以指定挂载的额外选项
光盘用的文件系统类型是:iso9660
-o 特殊选项如下:
参数 | 说明 |
atime/noatime | 更新访问时间/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认为更新 |
async/sync | 异步/同步,默认为异步 |
auto/noauto | 自动/手动,mount -a命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认为自动 |
defaults | 定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项 |
exec/noexec | 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec允许 |
remount | 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限 |
rw/ro | 读写/只读,文件系统挂载时,是否具有读写权限,默认是rw |
suid/nosuid | 具有/不具有SUID权限,设定文件系统是否具有SUID和SGID权限,默认具有 |
user/nouser | 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只有root可以挂载分区 |
usrquota | 写入代表文件系统支持用户磁盘配额,默认不支持 |
grpquota | 写入代表文件系统支持组磁盘配额,默认不支持 |
cd /home/
vi hello.sh
#!/bin/bash echo "hello world"
赋予执行权限: chmod 755 hello.sh,就可以直接执行该脚本
mount -o remount,noexec /dev/mapper/centos-home /home/
# 重新挂载 /home 分区,并使用noexec权限
重新挂载/home分区之后,由于noexec权限,所以前面的hello.sh就不能直接进行执行,权限不够了。
这里必须改回来:
mount -o remount,exec /dev/mapper/centos-home /home/
3.挂载光盘
mkdir /mnt/cdrom/ # 建立挂载点 mount -t iso9660 /dev/cdrom /mnt/cdrom/ # 挂载光盘 mount /dev/sr0 /mnt/cdrom/
# 由于 /dev/cdrom 是 /dev/sr0 的软链接,都可以写,但是建议写 /dev/sr0,而且默认系统知道光盘的文件类型为iso9660,所以可以不用写
如果你是真实机就需要找一张光盘放入,这里用虚拟机进行演示则需要双击光盘选项。
4. 卸载命令
umount 设备文件名或挂载点
umount /mnt/cdrom
如果当前正在这个目录进行操作或者在这个目录中,卸载会报错:设备正忙。需要退出该目录再进行卸载。
5.挂载U盘
fdisk -l # 查看硬盘设备文件名 mount -t vfat /dev/sdb1 /mnt/usb/ 注意:Linux默认是不支持NTFS文件系统的
vfat 文件系统指的是windows下的fat32文件系统,fat32基本淘汰了,只支持不超过4G的单个文件,如果非要用NTFS文件系统,需要安装 NTFS-3G 的软件。
用户登录查看和用户交互命令
查看登录用户信息
w 用户名
命令输出:
USER : 登录的用户名;
TTY : 登录终端;
FROM : 从哪个IP地址登录
LOGIN@ : 登录时间
IDLE : 用户闲置时间
JCPU : 指的是和该终端连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间;
PCPU : 是指当前进程所占用的时间;
WHAT : 当前正在运行的命令
who
who 命令输出: -用户名 -登录终端 -登录时间(登录来源IP地址)
查询当前登录和过去登录的用户信息
last last命令默认是读取 /var/log/wtmp文件数据 命令输出: -用户名 -登录终端 -登录IP -登录时间 -退出时间(在线时间)
查询所有用户的最后一次登录时间
lastlog lastlog命令默认是读取/var/log/lastlog文件内容 命令输出: -用户名 -登录终端 -登录IP -最后一次登录时间
yum命令详解
Yum: 即Yellowdog Update Modifier,是一种基于rpm的包管理工具
yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum的命令形式一般是如下:
yum [options] [command] [package ...]
- 其中的[options]是可选的,选项包括-h(帮助),-y(当安装过程提示选择全部为”yes”),-q(不显示安装的过程)等等。
- [command]为所要进行的操作
- [package …]是操作的对象
显示yum仓库
显示所有仓库
yum repolist all
显示可用的仓库
repolist enabled
显示不可用的仓库
repolist disabled
显示应用程序包
显示所有的程序包
yum list 或 yum list all [vathe@localhost ~]$yum list tre? Installed Packages tree.x86_64 1.6.0-10.el7 @base 还支持通配符格式的查询
显示可安装的程序包
yum list available [vathe@localhost ~]$yum list available php Available Packages php.x86_64 5.4.16-42.el7 base
显示可更新或已安装的程序包
yum list updates
yum list installed
显示仓库中最近增加的程序包
yum list recent
安装程序包
#安装 tree 程序
yum install tree
升级程序包
yum update tree
卸载程序包
yum remove tree
或
yum erase tree
查看程序包信息
yum info tree
查看文件的来源
查看某一文件来自于那个程序包
[vathe@localhost ~]$yum provides /bin/mv coreutils-8.22-18.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts Repo : base Matched from: Filename : /bin/mv #表示/bin/mv文件来自于coreutils-8.22-18.el7.x86_64程序包
清理本地缓存
yum clean all
#清楚插件缓存
yum clean plugins
构建缓存
yum makecache
搜索
[vathe@localhost ~]$yum search php ============================================== N/S matched: php =============================================== graphviz-php.x86_64 : PHP extension for graphviz php.x86_64 : PHP scripting language for creating dynamic web sites php-bcmath.x86_64 : A module for PHP applications for using the bcmath library ...
查看指定包所依赖的capabilities
[vathe@localhost ~]$yum deplist php package: php.x86_64 5.4.16-42.el7 dependency: httpd provider: httpd.x86_64 2.4.6-45.el7.centos ...
查看yum事务历史
[root@localhost ~]# yum history Repository 'base' is missing name in configuration, using id ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 2 | Vathe Su <vathe> | 2017-04-17 17:07 | Install | 1 1 | System <unset> | 2017-03-23 22:19 | Install | 1405 history list
包组相关的命令
yum groupinstall # 安装包组
yum groupupdate #更新包组
yum grouplist #显示包组
yum groupremove #移除包组
yum groupinfo #查看包组信息
这些命令和上面的命令用法类似,只是针对于包组而言
yum命令使用实战举例git的安装
使用yum安装git,不一定是最新版本:
yum install -y git
此方法简单,并且会自动安装依赖的包,而且会从源里安装最新的版本(不过不一定是最新的git)。
源码安装可以参考:https://blog.csdn.net/xwj1992930/article/details/96428998
顺便讲讲git的简单使用:
1.进入某一目录,Linux直接用命令行,Windows右键使用“Git Bash Here” 2.拷贝远端代码到本地 git clone 地址 3.解决git pull/push每次都需要输入密码问题 和 HttpRequestException encountered git config --global credential.helper store 安装git后 $ git config --global user.name "Your Name" $ git config --global user.email "email@example.com" $ ssh-keygen -t rsa -C "youremail@example.com" 创建ssh key,用于和github通信 (秘钥存储于C:\Users\27634\.ssh,把公钥id_rsa.pub存储于github) 创建版本库 $ pwd 命令用于显示当前目录(没啥用) $ git init 把这个目录变成Git可以管理的仓库(后续新建提交和ssh克隆需要) 操作版本库 $ git add 文件名 添加文件(新增或者更改都需要先add) $ git commit -m "说明" 提交到本地版本库 $ git status 查看仓库状态 $ git diff 文件名 查看修改的地方 版本回退(从一个commit恢复) $ git log 查看版本历史 $ git reset --hard HEAD^ 回退到上个版本 $ git reset --hard 1094a 回退到特定版本号(commit以后回退) $ git reflog 记录每一次命令 $ git checkout -- file 直接丢弃工作区的修改(add以前回退) $ git reset HEAD <file> 添加到了暂存区时,想丢弃修改(add以后回退) 删除文件 $ git rm file(已经add/commit,在目录中删除) $ git checkout -- file 删错了回退 远程仓库 $ git remote add origin git@server-name:path/repo-name.git 关联远程库 $ git push -u origin master 第一次的push $ git push origin master 常用的push,本地分支会在服务器上新建分支 $ git pull 需要有关联的分支,第一次下拉最好新建一个空文件夹 $ git branch --set-upstream-to=origin/远程分支 本地分支 关联分支 $ git clone git@server-name:path/repo-name.git 克隆(不需要另建文件夹) 分支 $ git branch -a 查看所有分支 $ git branch -vv 查看分支关联 $ git branch dev 创建分支 $ git checkout dev 切换分支 $ git merge dev 合并某分支到当前分支 $ git merge --no-ff -m "msg" dev 普通模式合并,合并后的历史有分支 $ git branch -d dev 删除分支 $ git checkout -b dev 创建并切换分支 合并分支,无法merge $ git stash save 名字 暂存工作状态 $ git pull origin dev 拉下来 $ git stash list 查看已经暂存的状态 $ git stash pop stash@{0} 将暂存状态merge到当前分支 还有冲突时,手动修改文件,然后add/commit $ git log --graph 分支合并图 bug分支issue $ git stash 暂存工作状态 $ git stash list 查看暂存工作状态 $ git stash pop 恢复暂存状态并删除状态 开发分支feature $ git branch -D <name> 强制删除未合并的分支 rebase $ git rebase 本地未push的分叉提交历史整理成直线 标签 $ git tag 标签名 打在最新提交的commit上 $ git tag 查询所有标签 $ git tag 标签名 f52c633 给特定的commit打标签 $ git tag -a 标签名 -m "msg" commit的id 给标签设置说明 $ git show 标签名 查询标签内容 $ git tag -d 标签名 删除标签 $ git push origin 标签名 推送某个标签到远程 $ git push origin --tags 推送所有标签 $ git push origin :refs/tags/<tagname> 可以删除一个远程标签。