学习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

相关推荐

  • liunx文本处理三剑客及文本处理工具的使用与练习。

    linux文本处理三剑客: grep ==擅长过滤,把想要的或者不想要的分离开。linux三剑客 老三  -A: 除了显示匹配的一行之外,并显示该行之前的num行;-B:除了显示匹配的一行之外,并显示该行之后的num行;-C:除了显示匹配的一行之外,并显示该行之前后各num行     sed==擅长取行、替换。三剑客老…

    2017-07-28
  • Linux运维学习历程-第十天-文件查找工具

    概述:本篇主要讲解locate命令和find命令,来帮助我们在linux中完成文件查找,方便我们快速定位文件。 一、文件查找    即在文件系统上查找符合条件的文件,常用工具有locate和find  1、locate命令    locate命令其实是find -name的另一种写法,但是要比后者快得多,原因…

    Linux干货 2016-08-21
  • 条件判断(if,case)和循环(for,until,while等)详解(附例题正解)

    脚本中的if条件判断和循环 在linux下,写脚本是我们必不可少的。在写脚本的过程中,if判断和各种的循环是我们常用的。这里,详细的说一下条件判断以及循环的使用。 条件判断:if 和 else 1.if shell程序中的条件分支是通过if条件语句来实现的,其格式一般为if -then -fi ,这样的是单分支语句,还有的一种就是if-then-else-f…

    Linux干货 2016-08-18
  • keepalived实战之小试牛刀

    keepalived是什么 keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。 keepalived工作原理 keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。 虚拟路由冗余协议,可以认为是实现路…

    Linux干货 2017-06-24
  • 重定向与管道

         本次内容    1.三种I/O设备    2.把I/O从定向入文件    3.命令tr    4.使用管道链接命令    5.tee   我们都知道程序是由:指令+数据    &n…

    2017-07-23
  • egrep及文本处理工具十三道实例

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 2、编辑/etc/group文件,添加组hadoop。 3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。 4、复制/etc/sk…

    2018-03-20