【深入学习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> 可以删除一个远程标签。

 

posted @ 2019-10-22 13:51  jiangxiaobo  阅读(1324)  评论(0编辑  收藏  举报