Linux的命令机制

Linux的命令机制

命令格式

COMMAND [OPTIONS…] [ARGUMENTS…]
选项:用于启用或关闭命令的某个或某些功能
短选项:-c 例如:-l, -h
长选项:–word 例如:–all, –human-readable
参数:命令的作用对象: 比如文件名和作用名

注意

1.  *多个选项以及多参数和命令之间使用空白字符串分隔*

2. *取消和执行命令执行:Ctrl+c,Ctrl+d*

3. *多个命令可以用 ; 符号分开*

4. *一个命令可以用 \ 分成多行*

命令的提示符与用户的uid

Linux中的用户跟windows 一样也分为管理员和普通用户。
在Linux中,系统是根据你的uid来判断你是否是管理员,而不是通过你的用户名来判断

Linux用户

系统是通过uid来判断用户是否是Root用户,Root用户的uid为0

Root用户(超级用户)
root用户 在命令提示符表示为# uid为0

image.png

image.png

普通用户命令提示符表示为 $
普通用户uid
centos6:从500开始

image.png

image.png

centos7:从1000开始

image.png

image.png

上面提示符的颜色是根据PS1的环境变量而义

PS1=[\e[1;32m][\u@\h \W]$[\e[0m]


bash Shell

交互式接口

交互式接口:启动终端后,在终端设备附加一个交互式应用程序
GUI:Graphic User Interface
X protocol, window manager, desktop
Desktop:
GNOME (C, 图形库gtk),
KDE (C++,图形库qt)
XFCE (轻量级桌面

CLI:Command Line Interface
shell程序:sh(bourn 史蒂夫·伯恩)cshtcshksh(korn)bash (bourn again shell)GPL zsh

Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。

由于历史原因,有许多的shell。shell也被称为LINUX的命令解释器(command interpreter)shell负责把不同的语言翻译成对应的二进制。
就好像不同的不同的国家有不同的语言
shell是用户和内核、操作系统打交道的一个接口
应用程序通过系统调用和库来访问系统硬件和内核,也因此Linux开机运行就被加载到时内存中。读取的速度快于外部命令。
shell把你的命令解析成系统能识别的二进制来执行。

bash shel
GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一
目前也是Linux标准的shell,与sh兼容
CentOS默认使用

显示当前使用的shell
echo ${SHELL}
显示当前系统使用的所有shell
cat /etc/shells

内部命令

内部命令是集成在shell程序的一部分,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中.

内部命令帮助用法 help cmd

内部命令的常用命令
enable : 内部命令的禁用与启用
help: 查看内部命令是否被禁用,命令前面带*的是被禁用的命令

外部命令

外部命令简单的说系统之上运行的程序,当系统读取外部命令时,要到磁盘上读取,这样会显的速度比较慢。由于linux的特性,当系统查找外部命令时,系统会按PATH环境变量的路径从左往右 一个一个的来查找,当前面的路径找到了,后面的路径就不找了。

~]# echo $PATH

外部命令的帮助

帮助用法 cmd --help
** 常用命令**

which : 查看外部命令在PATH放的路径,不会查看缓存(按*PATH*中的优先顺序显示)
加上-a会查看看外部命令在PATH中的所有路径和命令别名

whereis : 查出命令所在的路径以及man帮助相关文档的路径

判断命令是否是外部命令

type : type cmd
type cmd=========区分是外部命令还是内部命令。会按命令的优先级来显示
外部命令是在PATH的路径(如果有别名的存在,会按搜索命令的优先级来显示。但也会按hash缓存来找)

image.png

image.png

hash

系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到时hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找。利用hash缓存表可大大提高命令的调用速率。

注意: 当我们执行一个外部命令时,hash表会记录外部命令的缓存。但不会记录内部命令(内部命令是集成在bash shell里)。
如果此时将这个命令移动到PATH变量中的另一个路径或其它路径。再来执行这个命令,此时命令会报错,因为在hash表中记录了这个路径。系统只要找到了这个路径,就不会往后面去找了。

image.png

image.png

Linux查找命令时,是否看命令的名字

image.png

image.png

Linux在查找命令时,是按命令的名字来查找,不是按命令的本质来查找。


命令别名

命令别名的常用命令: unalias alias

当系统开始运行时,会把磁盘上的别名配置文件(~/.bashrc或/etc/.bashrc)加载到内存中,系统运行的是内存中的别名。即使用unalias把别名给删了,也只是在当前终端无法执行别名,等系统退出重新登录,又可以使用这个别名了。因为并没有改别名的配置文件啊!

image.png

image.png

命令别名如何使用原始命令

  • 在命令前面加 \
  • 写上全路径,(内部命令不适用)
  • 用单引号把命令引起来

在linux中命令的搜索路径

当你在命令提示符下敲一个字符串时,后台做了一件事中,先用/bin/bash这个程序,来判断一下你输入的内容是何种程序,是不是能找到这个程序。先判断是否是命令别名,再判断是否是内键命令,然后再看是否有外部命令缓存hash,最后判断是否是外键命令PASH。然后报错。

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/94245

(0)
安静的家伙7048安静的家伙7048
上一篇 2018-04-01
下一篇 2018-04-01

相关推荐

  • Linux文件系统简介

    “一切皆是文件”是Linux基本哲学思想之一,可见文件系统在linux系统中的重要性,学好文件系统将为以后深入研究与学习Linux系统奠定良好的基础。

    2018-03-30
  • ssh等

    SSH端口转发 SSH会自动的加密和解密所有SSH客户端与服务器之间的网络数据;同时也可以将其他TCP端口的数据加密转发,这一过程叫“隧道”,这样也可以减少防火墙开启的端口。 实现过程是数据首先通过连接本机的某一个端口,被当做ssh协议数据发送给ssh服务器,ssh服务器解密再发给远程主机的端口 本地转发: -L localport:remotehost:r…

    2018-05-28
  • 计算机原理与Linux基础

    计算机的组成及功能 1、其实计算机的组织分为内部设备和外部设备, 内部设备:         CPU:运算器、寄存器、缓存         存储器:内存,RAM(Random Access Memory)         控制器:控制器是整个计算机系统的控制中心,它指挥计算机各部分协调地工作,保证计算机按照预先规定的目标和步骤有条不紊地进行操作及处理。 外部…

    Linux笔记 2018-05-13
  • LAMP的实现

    php的两种工作模式一种以模块方式;一种以fcgi方式

    2018-06-23
  • 加密原理简述、实现httpd自签证书访问、dns主、辅服务器搭建及智能dns服务

    1、简述加密算法的原理 介于用户空间和内核空间之间有用于数据加密的协议,对来至用户空间的数据进行加密,并转交给内核空间发送至目标端,然后由目标端接收加密数据然后交付给加密协议解密后的数据显示给用户空间。当然数据也可不通过加密协议直接传送。 2、加密算法的分类: 对称加密:数据保密(保密性) 公钥加密:身份认证、密钥交换、数据加密(不常用,比对称要慢3个数量级…

    Linux笔记 2018-05-25
  • 初始nginx

    本文涉及到nignx的安装、nginx的配置说明、nginx的负载均衡、nginx的反向代理和nginx的ssl方反向代理以及nginx location路径匹配优先级等问题。

    Linux笔记 2018-07-08