首页 > 代码库 > Linux - Bash shell的功能;内建命令type

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

命令编修能力 (history):

        bash 的功能里头,相当棒的一个就是『他能记忆使用过的命令!

』 这功能真的相当的棒!由于我仅仅要在命令列按『上下键』就能够找到前/后一个输入的命令!

而在非常多 distribution 里头。默认的命令记忆功能能够到达 1000 个!也就是说, 你以前下达过的命令差点儿都被记录下来了。

        这么多的命令记录在哪里呢?在你的家文件夹内的 .bash_history 啦!

只是,须要留意的是。~/.bash_history 记录的是前一次登陆曾经所执行过的命令, 而至于这一次登陆所执行的命令都被缓存在内存中,当你成功的注销系统后。该命令记忆才会记录到 .bash_history 其中!

        这有什么功能呢?最大的优点就是能够『查询以前做过的举动。』 如此能够知道你的执行步骤。那么就能够追踪你曾下达过的命令。以作为除错的工具! 但如此一来也有个烦恼。就是假设被黑客入侵了。那么他仅仅要翻你以前执行过的命令, 刚好你的命令又跟系统有关 (比如直接输入 MySQL 的password在命令列上面),那你的主机可就伤脑筋了!

究竟记录命令的数目越多还是越少越好?这部份是见仁见智啦,没有一定的答案的。



命令与文件补全功能: ([tab] 按键的优点)

    [Tab] 接在一串命令的第一个字的后面,则为命令补全。
    [Tab] 接在一串命令的第二个字以后时。则为『文件补齐』!


命令别名配置功能: (alias)

能够在命令列输入 alias 就能够知道眼下的命令别名有哪些了。也能够直接下达命令来配置别名:

技术分享


工作控制、前景背景控制: (job control, foreground, background)

        使用前、背景的控制能够让工作进行的更为顺利!

至于工作控制(jobs)的用途则更广, 能够让我们随时将工作丢到背景中执行!而不怕不小心使用了 [Ctrl] + c 来停掉该程序。真是好样的!

此外,也能够在单一登录的环境中。达到多任务的目的呢!


程序化脚本: (shell scripts)

        在 DOS 年代还记得将一堆命令写在一起的所谓的『批处理文件』吧?在 Linux 底下的 shell scripts 则发挥更为强大的功能,能够将你平时管理系统常须要下达的连续命令写成一个文件, 该文件而且能够透过对谈交互式的方式来进行主机的侦測工作!也能够藉由 shell 提供的环境变量及相关命令来进行设计。曾经在 DOS 底下须要程序语言才干写的东西,在 Linux 底下使用简单的 shell scripts 就能够帮你达成了!


通配符: (Wildcard)

        除了完整的字符串之外。 bash 还支持很多的通配符来帮助用户查询与命令下达。 举例来说,想要知道 /usr/bin 底下有多少以 X 为开头的文件吗?使用:『 ls -l /usr/bin/X* 』就行知道啰~此外。还有其它可供利用的通配符。 这些都可以加快使用者的操作呢!


Bash shell 的内建命令: type

        怎么知道这个命令是来自于外部命令(指的是其它非 bash 所提供的命令) 或是内建在 bash 其中的呢? 嘿嘿!

利用 type 这个命令来观察就可以!

举例来说:

[root@www ~]# type [-tpa] name
选项与參数:
    :不加不论什么选项与參数时,type 会显示出 name 是外部命令还是 bash 内建命令
-t  :当增加 -t 參数时,type 会将 name 以底下这些字眼显示出他的意义:
      file    :表示为外部命令。
      alias   :表示该命令为命令别名所配置的名称;
      builtin :表示该命令为 bash 内建的命令功能;
-p  :假设后面接的 name 为外部命令时。才会显示完整文件名称。
-a  :会由 PATH 变量定义的路径中。将全部含 name 的命令都列出来,包括 alias

范例一:查询一下 ls 这个命令是否为 bash 内建?
[root@www ~]# type ls
ls is aliased to `ls --color=tty‘ <==未加不论什么參数,列出 ls 的最主要使用情况
[root@www ~]# type -t ls
alias                             <==仅列出 ls 执行时的根据
[root@www ~]# type -a ls
ls is aliased to `ls --color=tty‘ <==最先使用 aliase
ls is /bin/ls                     <==还有找到外部命令在 /bin/ls

范例二:那么 cd 呢?
[root@www ~]# type cd
cd is a shell builtin             <==看到了吗? cd 是 shell 内建命令

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