Bash中如何判断一个命令是否存在

command 命令

#! /bin/bash
if command -v git >/dev/null 2>&1; then 
  echo 'exists git' 
else 
  echo 'no exists git' 
fi

type命令

#! /bin/bash
if type git >/dev/null 2>&1; then 
  echo 'exists git' 
else 
  echo 'no exists git' 
fi

hash命令

#! /bin/bash
if hash git 2>/dev/null; then 
  echo 'exists git' 
else 
  echo 'no exists git' 
fi

重定向

一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:

  • 标准 输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
  • 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
  • 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。

默认情况下
command > file 将 stdout 重定向到 file
command 2 > file 将 stderr 重定向到 file
command < file 将stdin 重定向到 file。
command > file 2>&1 将 stderr 和 stdout合并后重定向到 file
command > file1 < file2 将 stdout 重定向到 file1,stdin 重定向file2
command 2 >> file将 stderr 追加到 file末尾

/dev/null 文件

如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null
command > /dev/null 2>&1屏蔽 stdout 和 stderr

参考:

http://c.biancheng.net/cpp/view/2738.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 为何叫做 shell ? shell prompt(PS1) 与 Carriage Return(CR) 的关系?...
    Zero___阅读 8,365评论 3 49
  • 简介 shell 是类 UNIX 系统的外壳,使用 shell 用于实现人机交互的目的,我们通过它可以与内核之间进...
    noparkinghere阅读 4,127评论 0 1
  • 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读...
    姜淑均阅读 1,664评论 2 3
  • 本文笔记源自这里——[实验楼]欢迎大家在下面交流其中有问题的地方喜欢请点收藏,每日更新(全部已亲自实践). 一. ...
    东皇Amrzs阅读 9,532评论 7 54
  • 二零一鸡年,相信不少小伙伴和我们一样,迎来了本命年。“你妈...逼你穿秋裤了吗”?终于完美蜕变为“你妈...逼你穿...
    acc61a9b8fdc阅读 4,350评论 0 2