学习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
下一篇 2016-10-29

相关推荐

  • Linux的用户,组及文件权限管理

    Linux用户与组的创建,删除,属性修改,文件权限管理

    Linux干货 2018-02-24
  • 开始学习总结的一些基本知识点

       第一VNC软件(面授班课堂用的),这款软件采用C/S架构(client/sever客户端和服务器端)还有VNC协议(virtual Network computing虚拟网络计算)协议。虽说这款软件对网络班没有实际用途,但自己了解下这款软件的构成也是不错的。    第二开始学习需要的虚拟机软件其中包括VMWARE…

    Linux干货 2016-10-29
  • 2

    2

    Linux干货 2018-03-26
  • ACL实现灵活的权限管理

    ACL实现灵活的权限管理 除了文件的所有者,所属组和其它人,可以对更多的用户设置权限 CentOS7当中,无论是操作系统安装时还是之后手工创建的文件系统(xfs、ext4)均会开启ACL功能。 CentOS6及之前的版本,仅操作系统安装时创建的文件系统才会默认开启ACL,手工创建的文件系统,需要手工开启ACL功能。 mount -o acl /dev/sda…

    2017-07-27
  • Linux概述

    计算机组成概述 计算机组成原理 如上图计算机的组成结构,CPU运行速度远远高于内存,而内存运行速度又远远高于I/O;由于三者运行速度巨大差异,如果系统仅运行一个任务(单任务系统),那么将有大量的CPU空闲时间等待缓慢的I/O及内存的读取。为提高CPU的使用效率,于是便产生了多任务系统系统的需求。 多任务系统 多任务实现的基础,我们知道计算机处理任务主要靠CP…

    Linux干货 2016-12-02
  • N25_第十周作业

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) POST –> BootSequence(BIOS) –>Bootloader(MBR) –>Kernel(ramdisk)–>rootfs(readonly)–>switchroot&#821…

    Linux干货 2017-02-14