• 【深入学习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:Users27634.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> 可以删除一个远程标签。
  • 相关阅读:
    iOS开发App上传的三大步骤
    iOS开发关于AppStore程序的上传流程
    AFNetworking 3.0x版本最新特性
    iOS开发中两个不错的宏定义
    iOS开发中NSDate时间戳的转换--
    HDU 2844 Coins 多重背包
    poj 1888 Crossword Answers 模拟题
    杭电oj 1069 Monkey and Banana 最长递增子序列
    郑轻校赛题目 问题 G: 多少个0
    HDU 2571 命运
  • 原文地址:https://www.cnblogs.com/jiangxiaobo/p/11719371.html
Copyright © 2020-2023  润新知