2017-12-19 2周2次课

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017-12-19 2周2次课相关的知识,希望对你有一定的参考价值。

2.10 环境变量PATH


  • 本章用到的命令:which (用来查找摸个命令的绝对路径)。示例如下:

        [[email protected] ~]# which rmdir       ~查询rmdir 路径
         /usr/bin/rmdir                   ~ rmdir所在的路径

  • 上例中rmdir所在的位置是在哪里查的示例如下:

    [[email protected] ~]# echo $PATH            ~用来输出$PATH的值        
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin        ~这个几个目录用冒号做了几个分割,如果你的命令在这几个目录里,

                                                                                                          敲这个命令的时候就不需要绝对路径

  • 所有的命令都有一个绝对路径。只要在/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin目录下的命令,用命令的时候都不需要输入绝对路径。直接输入命令即可比如用ls复制出来一个lsa出来示例如下:

    [[email protected] ~]# cp /usr/bin/ls /tmp/lsa        ~复制/usr/bin/ls到 /tmp/lsa
    [[email protected] ~]# /tmp/lsa                                ~输入绝对路径后跟ls功能一样
    anaconda-ks.cfg  initial-setup-ks.cfg
    [[email protected] ~]# ls                                          ~如上条命令对比一样的功效
    anaconda-ks.cfg  initial-setup-ks.cfg
    [[email protected] ~]# lsa                                         ~但直接输入lsa未找到命令
    bash: lsa: 未找到命令...

  • 上个示例中到最后直接输入命令lsa不能用。因为该命令没有在PATH里/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin目录下。添加/tmp/lsa到PATH下示例如下

      [[email protected] ~]# PATH=$PATH:/tmp/          ~把/tmp/加入PATH中
    [[email protected] ~]# echo $PATH                           ~查看PATH下是否有/tmp/
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/    ~结果

    [[email protected] ~]# lsa             ~然后在用lsa命令
    anaconda-ks.cfg  initial-setup-ks.cfg       ~跟ls显示结果一样已经可以用

  • 注意  :以上操作只是暂时的 新建个终端或者重启系统后不生效了 。想永久生效编辑/etc/profile,这个文件不管是开机还是重新打开终端都自动加载命令的文件操作如下

      #vi /etc/profile         ~编辑profile文件

     
    if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
        umask 002
    else
        umask 022
    fi

    for i in /etc/profile.d/*.sh ; do
        if [ -r "$i" ]; then
            if [ "${-#*i}" != "$-" ]; then
                . "$i"
            else
                . "$i" >/dev/null
            fi
        fi
    done

    unset i
    unset -f pathmunge
    PATH=$PATH:/tmp/             新添加的一项添加这一项lsa就永久生效
    :wq          保存退出

  • 更改完/etc/profile文件后。再打开一个终端看下是否把/tmp/添加到PATH里面。如果添加成功就可以永久生效lsa了。

  • 想删除PATH里的/tmp/直接进入/etc/profile把PATH=$PATH:/tmp/删除保存退出后就可以了。




2.11 cp命令


  • cp 是 copy (即复制)的简写,该命令的格式为:cp 【选项】 {来源文件} {目录文件} 。例如把/etc/passwd复制成/tmp/hanshuo.txt,例如下所示:

     [[email protected] ~]# cp /etc/passwd /tmp/hanshuo.txt       ~复制/etc/passwd 到/tmp/hanshuo.txt

    [[email protected] ~]# ls /tmp                                                 ~查看是否有刚才复制过来hanshuo.txt
    hanshuo
    hanshuo.txt                                  ~结果有了

  • 以上实验是针对文件的下面实验目录的,目录复制必须加-r选项示例如下:

         [[email protected] ~]# ls /tmp/             ~查看tmp里有哪些目录
        hanshuo11
          hanshuo2
       hanshuo.txt
      lsa
       [[email protected] ~]# cp -r /tmp/hanshuo2/ /tmp/han11/     ~复制/tmp/hanshuo2/ /tmp/han11/  注意:约定目录后面必须加/
       [[email protected] ~]# ls /tmp/       ~复制完成查看
       han11               ~复制结果
      hanshuo11
      hanshuo2
       hanshuo.txt
      lsa


  • -i :这是个安全选项,如果遇到一个已存在的文件,会询问是否覆盖,使用的cp命令其实是cp -i ,可以通过which命令查看示例如下

     

      [[email protected] ~]# which cp
    alias cp='cp -i'
        /usr/bin/cp       >>>>>>cp 的绝对路径


2.12 mv命令


  • mv 是move的缩写,它是把文件挪动地方,如果在同一个目录下相当于改名字

  • 重命名如下所示

      [[email protected] ~]# ls             
    anaconda-ks.cfg  hanshuo3  initial-setup-ks.cfg
    [[email protected] ~]# mv hanshuo3 hanshuo31          >>>>>>hanshuo3更改名字为hanshuo31
    [[email protected] ~]# ls
    anaconda-ks.cfg  hanshuo31  initial-setup-ks.cfg

  • 给文件挪动地方如下所示

     [[email protected] ~]# cd /tmp/     >>>>>>>进入tmp下
    [[email protected] tmp]# ls           >>>>>>用ls查看tmp下的文件和目录
    han11
    hanshuo11
    hanshuo2
    hanshuo.txt

    用mv把hanshuo.txt移动到han11目录如下

      [[email protected] tmp]# mv hanshuo.txt han11/    

      [[email protected] tmp]# ls han11/
       hanshuo.txt
  

  • 如果复制同一个文件到一个目录的话他会提示是否覆盖,如果不想让他提示是否需要覆盖,因为它跟cp一样都带个-i选项,直接用绝对路径移动即可如下:

       [[email protected] tmp]# mv hanshuo.txt han11/      >>>>>>复制hanshuo.txt到han11里 
      mv:是否覆盖"han11/hanshuo.txt"? n    >>>>>>>以前han11里有个hanshuo.txt所以会询问是否覆盖

      [[email protected] tmp]# which mv     .>>>>>>查看mv的绝对路径 、/usr/bin/mv
      alias mv='mv -i'
      /usr/bin/mv
      [[email protected] tmp]# /usr/bin/mv hanshuo.txt han11/     >>>>>用绝对路径直接移动不会提示是否覆盖


2.13 文档查看cat/more/less/head/tail


  • cat 查看文件内容并将其显示在屏幕上,用法cat后面直接跟文件名即可

  • tac 可以倒叙查看一个文件文件的内容跟cat相反

  • wc -l 查看文件的行数

  • less 的作用跟more一样但是不如less功能多,按空格可以翻页,在使用less查看某个文件时,你可以按下/键,并输入一个字符串(如root),然后回车,这样就可以直接查找这个文件里包含root的字符串了,如果查找多个字符串,可以直接按n  键,另外,也可以用?代替/键来搜索字符串,唯一不同的是,/是在当前行向下搜索,而?号是在当前向上搜索,g键到首行G键到末行,ctrl+B网上翻页,

  • head 用于显示文件的前10行,后面直接跟文件名。如果加个n选项,则显示文件的前几行,示例命令如下:

    [[email protected] ~]# head /etc/passwd        
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    [[email protected] ~]# head -n 2 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin

    注意:选项-n后面无空格也可以,也可以省略字母n,-后面直接跟数字即可

  • tail 用于显示文件的最后10行,跟head 向反 ,命令选项一样

    另外,命令tail的-f选项也常用,它可以显示动态文件的后10行。如果文件内容在不断增加,使用-f选项非常的方便。不如:tail -f /var/log/messages 可以动态,实时查看文件/var/log/messages中的内容。


以上是关于2017-12-19 2周2次课的主要内容,如果未能解决你的问题,请参考以下文章

2018.2.27 9周5次课

2017.12.22 2周5次课

2017.12.21 2周4次课

2017.12.20 2周3次课

2018.3.13 12周2次课

2018.1.9 5周2次课