• linux学习11 Linux基础命令及命令历史


    一、Linux系统上的文件类型

      1、- :常规文件:在其它程序中用f表示。比如我们用ls -l命令查看的第一个内容

    [root@localhost ~]# ls -l
    total 4
    -rw-------. 1 root root 1252 Oct 24  2018 anaconda-ks.cfg

      2、d:directory,目录文件

      3、b:block device,块设备文件,以"block"为单位进行随机访问

    [root@localhost ~]# ls -l /dev/sda*
    brw-rw---- 1 root disk 8, 0 Dec 14 17:42 /dev/sda
    brw-rw---- 1 root disk 8, 1 Dec 14 17:42 /dev/sda1
    brw-rw---- 1 root disk 8, 2 Dec 14 17:42 /dev/sda2

      4、c:character device,字符设备文件,支持以“character”为单位进行线性访问

          major number:主设备号,用来标识设备类型,进而确定要加载的驱动程序

          minor number:次设备号,用来标识同一类型中的不同的设备

            8位二进制:0-255

      5、l:symbolic link,符号链接文件,也叫软连接文件

      6、p:pipe,命名管道

      7、s:socker,套接字文件,主要用于服务提供

        

     二、常用的基本命令

      1、外部命令和内部命令

        a、linux上的命令根据其是否在文件系统上存在一个与之对应的同名的文件。在我们文件系统上某一个路径下是否与这个命令本身有一个独立的文件我们可以把命令分为内建命令和外部命令。在我们文件系统的路径上有一个独立的文件而命令名就是文件名,这种就叫外部命令其实所有的文件都必然是外部命令,那么为什么会出现内建命令呢?是因为有一个外部命令自带有很多命令,我们有一个外部命令叫bash,bash就是外部的,但是bash自身很强大,他自带有很多小命令,所以这些小命令就是内部命令。

        b、我们如何去区分内部命令还是外部命令呢?我们可以用type来查看

        type COMMAND:

          内部: builtin

    [root@localhost /]# type cd
    cd is a shell builtin

          外部:显示为命令文件路径

            注意,命令可以有别名,别名可以与原名相同,此时原名被隐藏,此时如果要运行原命令,则使用 COMMAND

    [root@localhost /]# type bash
    bash is /usr/bin/bash
    [root@localhost /]# type ls  #表示ls其实是 ls --color的简称
    ls is aliased to `ls --color=auto'
    [root@localhost /]# ls
    application  bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    [root@localhost /]# ls  #表示只运行ls
    application  bin  boot    dev  etc  home    lib  lib64  media  mnt    opt  proc  root  run  sbin  srv  sys  tmp  usr    var

        c、命令别名

          获取所有可用别名的定义:

    [root@localhost /]# alias 
    alias cp='cp -i'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='rm -i'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

          定义别名,注意,此定义方式只对当前shell有效

    [root@localhost /]# alias cls="clear"
    [root@localhost /]# alias 
    alias cls='clear'
    alias cp='cp -i'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='rm -i'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

          撤销别名

    [root@localhost /]# unalias cls
    [root@localhost /]# alias 
    alias cp='cp -i'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='rm -i'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

      2、which,显示命令的完整路径

        a、which --skip-alias  COMMAND  && which COMMAND ,忽略别名

    [root@localhost /]# which --skip-alias ls
    /usr/bin/ls
    [root@localhost /]# which ls
    /usr/bin/ls

      3、whereis命令,显示命令文件,源码文件及手册页

    [root@localhost /]# whereis ls
    ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

        a、-b,仅搜索二进制程序路径

        b、-m,仅搜索使用手册文件路径

      4、who命令,查看登陆当前系统的相关用户信息

    [root@localhost /]# who
    root     pts/0        2019-12-14 17:43 (192.168.10.1)
    root     pts/1        2019-12-14 18:37 (192.168.10.1)

        a、-b,系统此次启动的时间

    [root@localhost /]# who -b
             system boot  2019-12-14 17:42

        b、-d,显示死亡的进程

        c、-l,显示登陆进程

    [root@localhost /]# who -l
    LOGIN    tty1         2019-12-14 17:43               672 id=tty1

        d、-r,查看进程级别

    [root@localhost /]# who -r
             run-level 3  2019-12-14 17:43

      5、w 命令,他不但能显示谁登陆了还能显示他们在干嘛,相当于增强版的who命令

    [root@localhost /]# w
     18:52:24 up  1:09,  2 users,  load average: 0.06, 0.03, 0.05
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    192.168.10.1     17:43    0.00s  0.12s  0.00s w
    root     pts/1    192.168.10.1     18:37   14:39   0.02s  0.00s less -s

    三、bash的基础特性

      1、命令历史:shell进程会在其会话中保存此前用户提交执行过的命令

        a、history命令可用查看

    [root@localhost /]# type history 
    history is a shell builtin

          定制history的功能,可通过环境变量实现:

            HISTSIZE:shell进程可保留的命令历史的条数,默认为1000条

    [root@localhost /]# echo $HISTSIZE
    1000

            HISTFILE:持久保存命令历史的文件,每一个用户登陆时命令历史会首先从历史文件中加载此前所有的命令到内存中,而后新的命令就补充在附加在这个内存中历史命令后面,所以使用history命令看到的是整个内存中的历史,使用cat看到的是文件中的内容。当我们用户shell登出时会自动保存相应命令

    [root@localhost ~]# echo $HISTFILE
    /root/.bash_history

            HISTFILESIZE:命令历史文件的大小,文件保存一千条命令

    [root@localhost ~]# echo $HISTFILESIZE
    1000

      2、history命令用法

        a、history [-c] [-d offset] [n]:操纵命令历史中多少条的

        b、history -anrw [filename]:操纵历史文件的

        c、history -ps arg [arg...]:定义history自己的工作特性的

          history -c:清空历史命令,只清空内存中不会清空文件中。

          history -d  offset:删除某一个历史命令

            删除id为200的历史命令

    [root@localhost ~]# history -d 200

            从id为200的历史命令开始删除,删除5条

    [root@localhost ~]# history -d 200 5

          history -r:读取历史文件并将内容追加到历史列表中

          history -w:将当前历史写入到历史文件中,并追加到历史列表中

        d、显示最近10条的命令历史

    [root@localhost ~]# history 10
      352  cat /root/.bash_history |wc -l
      353  cat /root/.bash_history 
      354  cat /root/.bash_history |wc -l
      355  history -w
      356  history 
      357  history -d 351
      358  history 
      359  history -d 353 5
      360  history 
      361  history 10

      3、调用命令历史列表中的命令

        a、!#:再一次执行历史列表中的第#条命令

    [root@localhost ~]# history 4
      363  ls
      364  history 
      365  history 2
      366  history 4
    [root@localhost ~]# !363
    ls
    anaconda-ks.cfg

        b、!!:再一次执行上一条命令(或者按上键也可以)

        c、!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令

          注意:命令的重复执行有时候需要依赖于幂等性;

      4、调用上一条命令的最后一个参数

        a、ESC,. 

        b、!$

    [root@localhost ~]# ls /etc/sysconfig/network-scripts/ifcfg-ens33 
    /etc/sysconfig/network-scripts/ifcfg-ens33
    [root@localhost ~]# cat !$
    cat /etc/sysconfig/network-scripts/ifcfg-ens33
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    ...

      5、控制命令历史纪录的方式

        a、环境变量:HISTCONTROL

    [root@localhost ~]# echo $HISTCONTROL
    ignoredups #忽略重复的,连续的就是重复的,比如多次执行某一个命令

          ignoredups:忽略重复的命令

          ignorespace:忽略以空白字符开头的命令

          ignoreboth:以上两者同时生效

        b、修改变量的值

          NAME='VALUE',这种修改只对当前shell进程有效

  • 相关阅读:
    【ML-9-1】支持向量机--软硬间隔与支持向量机
    【ML-8】感知机算法-传统和对偶形式
    【ML-7】聚类算法--K-means和k-mediods/密度聚类/层次聚类
    【ML-7】聚类算法-实例代码
    【ML-6-2】集成学习-boosting(Adaboost和GBDT )
    【ML-6-1】集成学习-bagging(随机森林)
    【ML-5】决策树算法
    【ML-4】逻辑回归--用于分类
    【ML-3.1】梯度下降于牛顿法实例
    树状数组
  • 原文地址:https://www.cnblogs.com/Presley-lpc/p/12038426.html
Copyright © 2020-2023  润新知