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

一.  内部命令

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

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

dc0a2c9a1a20a51f469b50c3b63ffbb4.png

1.1命令别名

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

Linux自己编写外部命令,Linux编程 10 (shell外部命令与内建命令,alias ,type命令)..._第1张图片

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

Linux自己编写外部命令,Linux编程 10 (shell外部命令与内建命令,alias ,type命令)..._第2张图片

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

Linux自己编写外部命令,Linux编程 10 (shell外部命令与内建命令,alias ,type命令)..._第3张图片

二.外部命令

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

9b629b571800d51c0cc812ce8ac74443.png

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

a77c1aec64bf7148b056b9a32b543aa6.png

2.1 使用type的小技巧

当命令是外部命令时,type还会显示外部命令所在路径,如下图,查看service和ps的路径:

d4223c3d6ad7058b1ee8e46bf3cd1d16.png

根据路径提示,可以找到命令所在目录,如找service命令如下所示:

e5f6b01e88671ccc1bfbd06c4cad9ffa.png

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

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

命令编修能力 (history): bash 的功能里头,相当棒的一个就是『他能记忆使用过的命令!』 这功能真的相当的棒!因为我只要在命令列按『上下键』就可以找到前/后一个输入的命令!而在很多 dis ...

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

1. 输出重定向 最基本的重定向是将命令的输出发送到一个文件中.在bash shell中用大于号(>) ,格式如下:command > inputfile.例如:将date命令的输出内容, ...

Linux编程 21 shell编程(环境变量,用户变量,命令替换)

一.概述 这篇介绍shell的变量使用,跟其实语言一样,都有声明变量,使用变量,在shell中变量允许你临时地将信息存储中shell脚本中,以便和脚本的其他命令一起使用. 1.1 环境变量 在前面章节 ...

linux 学习10 shell 基础

10.1 Shell概述 .Shell是什么 Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编写一 ...

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

一概述 前面19章里已经掌握了linux系统和命令行的基础知识,从本章开始继续学习shell脚本的基础知识.在大量编辑shell脚本前,先来学习下一些基本概念. 1.1    使用多个命令 Shell ...

Linux编程 9 (shell类型,shell父子关系,子shell用法)

一. shell类型 1.1  交互式 bin/ shell程序 当用户登录到某个虚拟控制台终端或是在GUI中启动终端仿真器时,默认的shell程序就会开始运行.系统启动什么样的shell程序取决于你 ...

Unity3d 网络编程(一)(Unity3d内建网络Network介绍)

首先个人说说题外话,Unity3d使用的网络库核心是用C++实现的一款商业网络游戏引擎库. RakNet.所以对于移动设备来说,用Unity3d来写server是全然能够的,而且内建网络库的各项功能封 ...

Linux编程 24 shell编程(结构化 if [ condition ] 数值比较,字符串比较)

一.概述 接着上篇讲的结构化命令,最后讲到了test命令的另一种写法 if [ condition ],它的语法格式如下: --格式如下: if [ condition ] then commands ...

随机推荐

Objective-C Reflection(Objective-C 反射机制)实用随笔笔记(持续更新)

前言:本篇文章就"Objective-C 反射机制"使用方面进行叙述,不会涉及太多理论论述,因为"Objective-C 反射机制"理论论述在网上搜索一大把,本 ...

Fiddler手机抓包工具如何设置过滤域名?

fiddler手机抓包工具如何设置过滤域名?如题.fiddler抓包可以完成我们移动开发者的调试测试需求.所以说抓包尤其重要,但是多余的网页请求和手机的其他链接影响我们手机开发的需求.下面我教大家怎么 ...

Xcode6中怎么添加空工程模板

亲们!是不是还在为Xcode中不能创建空工程模板苦恼,轩哥为大家准备了一个脚本,可以在Xcode6中直接创建空工程,跟以前一样一样的! 按照以下要求就可以了!下载地址:里面有一个文档有详细的步骤htt ...

ABP框架 将EntityFrameworkCore生成的SQL语句输出到控制台

首先 在 EntityFrameworkCore中安装 Microsoft.Extensions.Logging.Console nuget install Microsoft.Extensions. ...

js 动态添加class封装(es6语法)

export function hasClass(el, className) { let reg = new RegExp('(^|\\s)' + className + '(\\s|$)') re ...

python面试

第一部分 python基础篇 1.简述解释型和编译型编程语言? 解释型语言编写的程序不需要编译,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言,每个语句都是执行的时候才翻译.这样解释型语言 ...

loj#2574. 「TJOI2018」智力竞赛 (路径覆盖)

目录 题目链接 题解 代码 题目链接 loj#2574. 「TJOI2018」智力竞赛 题解 就是求可重路径覆盖之后最大化剩余点的最小权值 二分答案后就是一个可重复路径覆盖 处理出可达点做二分图匹配就 ...

csslint在前端项目中的使用

大家都听说过jslint,eslint,不过你可能没见过csslint,你可能会问csslint有什么用,为什么今天要说csslint,是因为我在开发中遇到一个坑,其实之前不怎么使用csslint的, ...

【PL/SQL编程】条件语句

1. if...then语句 if then plsql_sentence; end if; declare -- Local variabl ...

get 发送ajax请求

上demo小案例

< ...

你可能感兴趣的:(Linux自己编写外部命令)