Linux编程 10 (shell外部命令与内建命令,alias ,type命令)

一.  内部命令

  Linux命令有内部命令(内建命令)和外部命令之分,内部命令和外部命令功能基本相同,但也有些细微差别。内部命令不需要使用子进程来执行,它们已经和shell编译成一体,作为shell工具的组成部分存在。不需要借助外部程序文件来运行。它们是一些比较简单的linux系统命令,如exit,history,cd,echo等。

  要分区是外部命令还是内部命令可以使用type  来查看,如下图查看cd是内部还是外部命令:
    

  1.1命令别名

    alias 命令也是一个内建命令,允许你为常用的命令和参数创建另一个名称,从而减少输入。在系统中已经设置好了一些常用的命令的别名。查看当前可用的别名使用alias -p如下图所示:
    

    下面通过alias 命令来创建属于自己的别名。把ls -li 长列表命令参数改别名为li。
    

    一但定义好了别名就可以随时在shell中使用,但要注意的是只有在当前进程中才有效。下面演示在子shell中使用别名无效,只有退出子shell才行。
    
    

二.外部命令

  外部命令是存在于bash shell之外的程序,它们不是shell程序的一部分,外部命令程序通常位于/bin, /usr/bin, /sbin, /usr/sbin中。 ps就是一个外部命令,使用type查看如下所示:
    

  所有外部命令都会被一个子进程来执行。ps的父进程是bash shell PID 2486,如下所示:
    

  2.1 使用type的小技巧
    当命令是外部命令时,type还会显示外部命令所在路径,如下图,查看service和ps的路径:
    
    根据路径提示,可以找到命令所在目录,如找service命令如下所示:
    
  

  总结:这篇介绍的两种不同类型的命令:内部命令和外部命令。外部命令会创建出一个包含全新环境的子进程,而内部命令则不会。

原文地址:https://www.cnblogs.com/MrHSR/p/9650305.html

时间: 2024-12-11 19:31:28

Linux编程 10 (shell外部命令与内建命令,alias ,type命令)的相关文章

Linux - Bash shell的功能;内建命令type

命令编修能力 (history): bash 的功能里头,相当棒的一个就是『他能记忆使用过的命令!』 这功能真的相当的棒!因为我只要在命令列按『上下键』就可以找到前/后一个输入的命令!而在很多 distribution 里头,默认的命令记忆功能可以到达 1000 个!也就是说, 你曾经下达过的命令几乎都被记录下来了. 这么多的命令记录在哪里呢?在你的家目录内的 .bash_history 啦! 不过,需要留意的是,~/.bash_history 记录的是前一次登陆以前所运行过的命令, 而至于这一

linux 学习10 shell 基础

10.1 Shell概述 1.Shell是什么 ?Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编写一些程序. ?Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强.Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令. 2.Shell的分类 ?Bourne Shell:从1979起Unix就开始使用Bourne Shell,Bourne Shell的主文

Unity3d 网络编程(三)(Unity3d内建网络简单服务器的建立)

使用Unity3d的内建网络搭建一个简单的服务器,使用本机当主机,创建一个客户端连接到本机, 我使用的NGUI作为主界面,服务器代码: string ipAddress = "127.0.0.1"; int port = 23000; string msg = ""; public UILabel lbl; // Use this for initialization void Start () { } // Update is called once per fr

Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)

1. 输出重定向 最基本的重定向是将命令的输出发送到一个文件中.在bash shell中用大于号(>) ,格式如下:command > inputfile.例如:将date命令的输出内容,保存到指定的输出文件中. 如果文件已存在,重定向操作符会用新的文件数据覆盖已有文件.这种情况下可以用双大于号(>>) 来追加数据.如下图所示: 2. 输入重定向 输入重定向和输出重定向正好相反.输入重定向是将文件的内容重定向到命令,而非将命令的输出重定向到文件. 输入重定向符号是小于号(<)

Linux CentOS 7 shell中的特殊字符及与管道相关的命令(cut,sort,wc,uniq,tee,tr,split)

一. shell特殊符号cut命令 1.特殊符号 * :任意个任意字符 ? :任意单个字符# :注释\ :转义字符 | :管道符 2.几个和管道相关的命令 (1) cut cut 把文件分段 cat /etc/passwd cut -d: -f 3  /etc/passwd    cut -d: -f 3,6,5  /etc/passwd cut -d: -f 3-6  /etc/passwd cut -c 10 /etc/passwd   取第十个字符 cut -c 5-10 /etc/pas

Linux编程 20 shell编程(shell脚本创建,echo显示信息)

一概述 前面19章里已经掌握了linux系统和命令行的基础知识,从本章开始继续学习shell脚本的基础知识.在大量编辑shell脚本前,先来学习下一些基本概念. 1.1    使用多个命令 Shell可以让多个命令串起来,一次执行完成,可以把它们放在同一行中,用分号隔开,如下所示: 上面就是一个简单的脚本了,用到了两个bash shell命令,但每次运行之前,都必须在命令提示符下输入整个命令.如果将命令组合成一个简单的文本文件,需要时运行这个文本文件就行了. 1.2    创建shell 脚本文

Linux编程 11(shell全局环境变量与局变环境变量)

一.概述 在linux中,很多程序和脚本都通过环境变量来获取系统信息,存储临时数据,配置信息.环境变量是指用来存储有关shell会话和工作环境信息,允许你在内存中存储数据,以便程序或shell中运行的脚本能够轻松访问到它们.也是存储持久数据的一种简便方法.在bash shell中,环境变量分为:全局和局部二类环境变量. 1.1全局环境变量 全局环境变量对于shell会话和所有生成的子shell都是可见的.局部变量则只是创建它们的shell可见.在linux系统中有系统环境变量,它们基本都是使用全

Unity3d 网络编程(二)(Unity3d内建网络各项參数介绍)

这里是全部Unity3d在网络中能用到相关的类及方法.纵观參数功能, Unity3d来写一个手游是不二的选择: RPC 能够传递的參数 int float string NetworkPlayer NetworkViewID Vector3 Quaternion BitStream能够传递的參数 void Serialize (bool value) void Serialize (char value) - only one byte [0, 255] void Serialize (shor

Linux Shell的父子关系及内建命令

Linux Shell的父子关系及内建命令 Shell的类型 系统启动什么样的shell程序取决于你个人的用户ID配置.在/etc/passwd文件中,在用户ID记录的第7个字段中列出了默认的shell程序.只要用户登录到某个虚拟控制台终端或是在GUI中启动终端仿真器,默认的shell程序就会开始运行. 在下面的例子中,用户xiaoyu使用了GNU bash shell作为自己的默认shell程序: 1 [email protected]:/$ cat /etc/passwd 2 [...] 3