学习linux第四天

Linux学习第4

 

Linux内部命令和外部命令

   内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在bashy源码里面的,其执行速度比外部命令快,因为解析内部命令shell不需要创建子进程

  外部命令:是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。通常外部命令的实体并不包含在shell中,但是其命令执行过程是由shell程序控制的。shell程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。外部命令是在bash之外额外安装的,通常放在/bin/usr/bin/sbin/usr/sbin……等等。可通过“echo $PATH”命令查看外部命令的存储路径

type 可以用来查看一个命令是内部命令还是外部命令

语法

type(选项)(参数)

 选项

-t:输出“file”“alias”或者“builtin”,分别表示给定的指令为外部指令命令别名或者内部指令

 -p:如果给出的指令为外部指令,则显示其绝对路径; -a:在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名

Hash缓存表

   linux系统下会有一个hash表,当你刚开机时这个hash表为空,每当你执行过一条命令时,hash表会记录下这条命令的路径,就相当于缓存一样。第一次执行命令shell解释器默认的会从PATH路径下寻找该命令的路径,当你第二次使用该命令时,shell解释器首先会查看hash表,没有该命令才会去PATH路径下寻找

语法

    hash [-l] [-r] [-p <path> <name>] [-t <command>]

选项  

-l

显示哈希表,包括路径

-r

清除哈希表

-p <path> <name>

向哈希表中增加内容

-t <command>

显示指定命令的完整路径

alias别名命令

   alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时,用户必须使用单引号''将原来的命令引起来,防止特殊字符导致错误。 alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件/etc/bashrc
语法

alias(选项)(参数)

选项

   -p:打印已经设置的命令别名

参数

   命令别名设置:定义命令别名,格式为 命令别名=‘实际命令

alias 的基本使用方法
alias 新的命令='原命令选项/参数

history命令

  history命令用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件 该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令。例如,要执行第2个历史命令,则输入!2历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量HISTSIZE进行控制

 语法

     history(选项)(参数)
选项
      -c:清空当前历史命令;

-a:将历史命令缓冲区中命令写入历史命令文件中;

-r:将历史命令文件中的命令读入当前历史命令缓冲区;

-w:将当前历史命令缓冲区命令写入历史命令文件中。
使用历史命令的一些快捷键

Ctrl+R 搜索历史
Ctrl+R 是我经常使用的一个快捷键。此快捷键让你对命令历史进行搜索,对于想要重复执行某个命令的时候非常有用。当找到命令后,通常再按回车键就可以执行该命令。如果想对找到的命令进行调整后再执行,则可以按一下左或右方向键。

快速重复执行上一条命令

1.     使用上方向键,并回车执行。

2.     !! 并回车执行。

3.     输入 !-1 并回车执行。

4.     Ctrl+P 并回车执行

重复执行第 4 条命令,那么可以执行 !4

如:[root@localhost ~]# history

    1  hisrory

    2  history

    3  cat

    4  echo 1

    5  haitort

    6  history

[root@localhost ~]# !4

echo 1

1

HISTSIZE :控制命令历史记录的条数

如:[root@localhost ~]# HISTSIZE=10

[root@localhost ~]# history

    1  hisrory

    2  history

    3  cat

    4  echo 1

    5  haitort

    6  history

    7  echo 1

    8  HISTSIZE

    9  HISTSIZE=10

10  history

使用HISTFILE更改历史文件存储

vi ~/.bash_profile
HISTFILE=/root/.commandline_warrior

使用 HISTCONTROL 从命令历史中剔除连续重复的条目

[root@localhost ~]#  export HISTCONTROL=ignoredups

[root@localhost ~]# pwd

/root

[root@localhost ~]# pwd

  27   export HISTCONTROL=ignoredups

  28  pwd

  29  history

[root@localhost ~]# pwd

/root

[root@localhost ~]# history

使用 HISTCONTROL 清除整个命令历史中的重复条目上例中的 ignoredups 只能剔除连续的重复条目。要清除整个命令历史中的重复条目,可以将 HISTCONTROL 设置成 erasedups:

export HISTCONTROL=ignoredups

[root@localhost ~]# history

    2  echo

    3  history

[root@localhost ~]# echo

 

[root@localhost ~]# history

    2  echo

    3  history

使用 HISTIGNORE 忽略历史中的特定命令

# export HISTIGNORE=”pwd:ls:ls -ltr:”
# pwd
# ls
# ls -ltr
# service httpd stop
# history | tail -3
79 export HISTIGNORE=”pwd:ls:ls -ltr:”
80 service httpd stop
81 history
[Note that history did not record pwd, ls and ls -ltr]

 

原创文章,作者:mxl,如若转载,请注明出处:http://www.178linux.com/53510

(0)
mxlmxl
上一篇 2016-10-29 18:16
下一篇 2016-10-29 19:17

相关推荐

  • 用户及权限管理

     今天是学习马哥教育第四天,也是第一个博客作业,写一篇关于用户及权限管理的简介型的博客文章,作文水品有限,所以写出来有可能有病句或者意境有问题,请大家多多包涵。  首先,用户及权限管理,需要从2方面入手来说,首先来说用户管理。  何谓用户,这是马哥一上来就提到的问题,我简单的理解,用户其实就是一个人机交互的接口,人机交互的接口是…

    Linux干货 2016-09-15
  • 初学Linux之文本处理工具和正则表达

    1、各种文本工具来查看、分析、统计文本 
    2、grep 
    3、正则表达式和扩展正则表达式 
    4、egrep

    2017-12-09
  • 网络知识

    网络知识 一、网络初识 1.网络概念  在计算机领域中,网络是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享。 2.分类 按覆盖范围分: 局域网LAN(作用范围一般为几米到几十公里)。 城域网MAN(界于WAN与LAN之间)。 广域网WAN(作用范围一般为几十到几千公里)。 按拓扑结构分类: 总线型 …

    Linux干货 2016-09-01
  • 用户管理相关

    安全3A:     资源分配:       authentication:认证       authorization 授权       accouting|audition 审计 用户分为(centos7):   管理员:root 0 &…

    Linux干货 2017-02-25
  • N25-第三周作业

    N25第三周作业 博客作业 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@ip-172-31-25-9 ~]# who|awk '{print $1}'|sort -u ec2-user [root@ip-172-31-25-9&n…

    Linux干货 2017-02-06
  • 五种开源协议的比较(BSD,GPL,LGPL,Apache,BSD)

    BSD开源协议(original BSD license、FreeBSD license、Original BSD license) BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。 但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码…

    Linux干货 2016-01-16