AI智能
改变未来

bash的几大特征,history,别名,变量,管道,数据流重定向


一.保存历史命令

(一).history

   1.history-c
       删除缓存的命令,但不会清除文件里面的历史命令,会清除还没来得及缓存到历史文件里面的命令
   2.history-d
       删除指定命令
   3.history-r
       读取历史文件并将内容加载到缓存目录中
   4.history-a
       将当前缓存在历史列表中的命令(必须是敲的,histroy-a导入的命令不会到里面)加载到历史文件中
   5.history-w
    将缓存里的命令写入到历史命令文件中
  6.history-p
    执行这条命令并且不将其写入缓存和历史文件
    eg:

history -p ls

  7.history -n
    从历史文件中读取未被读取的行
  8.history -s
    将执行结果放于历史命令中,但不放命令条
  9.HISTFILE
    控制历史命令的路径和文件名

    控制路径

  10.HISTFILESIZE
    控制文件大小
    可以用

du -h .bash_history

来看文件有多大
  11.HISTTIMEFORMAT
    

HISTTIMEFORMAT=\'DATE\'

将其放于/etc/profile文件中,就可以在历史命令条前面加上时间戳

    HISTSIZE是保存历史条目的数量
    改了之后如下

  12.HISTCONTROL
  用来控制历史条目是否重复,第一个是否为空格

    表示忽略连续的重复的命令(history命令后,两个ls只会显示一个)
    ignorespace:表示忽略前面是空格的命令(在history命令后,第一个是空格的命令将不显示)
    ignoreboth:表示两个都忽略

(二).便捷命令

  1.!xxx
    表示执行第xxx个命令(也比较麻烦)
  2.!ipxxx
    比如命令为ipconfig,则! ip就可以将其输出
  3.!!
    执行上一个命令
  4…+esc
    取出上一个命令行的参数到本行(如果没有参数的话,就取整条命令)
  5.!$
    取出上一次命令并执行
  6.echo $_
    打印出上一条命令的参数(只是打印出参数不会执行)

二.别名

  1.alise
    创建别名eg

alias ll =ls-l

    这样就可以方便简洁的调出所要的命令
  2.unalias
    取消别名eg

unalias ll

  3.\\vimif
    还原真实结果

三.变量


  本地变量:创建一个文件,只能在这个代码段中有用,如果和全局变量同名,就会被覆盖
  全局变量的定义
    export xxx=xxx

四.数据流重定向

(一).什么是数据流重定向

  1.标准输入
    代码为0,使用<或者<<(结束输出字符);
  2.标准输出
    代码为1,使用>或者>>(默认为1,不用写)
  3.标准错误输出
    代码为2.使用2>或者2>>
  4.eg
    

ll />~rootfile

    会将ll执行的结果放入rootfile文件中,若没有这个文件就会创建一个,如果有就不会把之前的的文件内容覆盖掉,
  5.如果不想将之前的内容覆盖掉该怎么办?
可以将代码改为

ll />>~rootprofile

  6.如果想将正确和错误的分开放怎么办?
    正常情况下会将正确的放入文件中(因为默认为1),如果想将其分开放怎么办?可以修改代码例如

ll /home -name .bashrc >list_right2>list_error

意思是:将查找的正确的放入list_right,错误的放入list_error文件中
  7.注意【1>>】和【2>>】中间是没有空格的
  8.如果想将正确的和错误的都放入同一个文件中
    代码如下:

ls /home-name .bashrc>list 2>&1

或者

&>list

  9.黑洞文件夹
    如果想将错误信息忽略而不显示或者储存就可以将其放入

/dev/null

文件夹中
  10.<将原本有键盘输出的东西改为文件输出
    eg

cat >catfile<~/.bashrc

意思是新建一个文件夹catfile,并且将~/.bashrc里面的文件复制到catfile中
  11.<<结束输入字符
    eg:

cat >catfile <<\"asd\"

    在想停止输入的时候输入asd就可以,不用按Ctrl+d来结束

(二).命令执行的判断

  同时执行多条命令
    

  执行命令有要求
    前一个对了才能执行后一个

cmd&&cmd

    前一个对了后一个不执行;前一个错了,后一个执行

cmd||cmd

五.管道命令

    筛出正确的显示到屏幕前
  1.grep “要过滤的代码段” 要在哪个目录下面找
    eg

grep \"name\" test.sh

  2.进程之间的通信方式——-管道
    上一个进程的标准输出作为下一个进程的标准输入
    egcat

test.sh | grep \"name\"

    从上一个文件test的输出里面过滤含有name的代码段
  3.进程之间的通信方式—-共享内存
  4.进程之间的通信方式—-消息队列
    实现消息队列的软件kafka
  5.进程之间的通信方式—-socket

***************常见命令

  查看进程
    

ps

    参数:-e 显示所有进程。
      -f 全格式。
      -h 不显示标题。
      -l 长格式。
      -w 宽输出。
      a 显示终端上的所有进程,包括其他用户的进程。
      r 只显示正在运行的进程。
      u  以用户为主的格式来显示程序状况。
      x 显示所有程序,不以终端机来区分。
  echo   $((123*123))
    可以算数
  强弱引用
     “:解析shell命令
    \’\’单引号:所见即所得强引用
    “”:弱引用:会解析变量
  mkdir:建立新目录    rmdir:删除一个空目录

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » bash的几大特征,history,别名,变量,管道,数据流重定向