Shell基础(1)-bash简介、type
每周二、四、六定期更新!
为什么要有shell
基于kernel安全的考虑,用户不能直接控制硬件,也不能直接操作系统内核。于是,我们就搞出了一个叫做shell的东西,用户通过shell和内核打交道。
shell就处在内核和应用程序之间。shell翻译成中文为“壳”。充当用户和内核之间的翻译官。用户输入命令--告诉shell,shell就调用相应的程序解析命令、执行命令。
在大部分linux发行版本中,默认的shell是bash。
bash shell
Bourne shellBourne shell又包括Bourne shell (sh)、Korn shell (ksh)、Bourne Again Shell(bash)三种类型。
C shellC shell又包括csh、tcsh两种类型。
[root@studyclub zhuo]# cat /etc/shells # 查看有哪些shell类型
/bin/sh
/bin/bash # 大部分Linux发行版默认的shell类型
/usr/bin/sh
/usr/bin/bash
[root@studyclub ~]# echo $SHELL # 查看默认的shell类型
/bin/bash
bash的功能
命令与文件补全功能:
还记得我们学习以来一直使用的[tab]键吗,是不是在敲命令的时候或输入文件名的时候,我们还没有把单词拼写完成,tab两下就自动补全了呢,总结对照一下看看是不是下面的规律:
如果命名没有写全直接按两下[tab],则会自动补全命令 如果是在命令中用空格和命令分开,按两下[tab],这时候出现的是目录或文件名的补全 如果想自动补全参数,则需要安装一个工具:bash-completion
技巧:敲命令或者输入路径的时候记得多敲几下[tab],这会让你的输入既快捷又准确。
设置命令别名:alias、unalias
我们知道,在用ls命令去查看文件的时候,不同的文件类型会显示为不同的演示,例如目录显示为蓝色,普通文件显示为白色,可执行文件显示为绿色等等。那么这是怎么做到的呢,我们看看ls的命令的使用:[root@studyclub ~]# ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
......
--color[=WHEN] colorize the output; WHEN can be 'never', 'auto',
or 'always' (the default); more info below
.....
Using color to distinguish file types is disabled both by default and
with --color=never. With --color=auto, ls emits color codes only when
standard output is connected to a terminal.
......
我们通过查看ls命令的帮助文档发现,ls有一个选项是--color,他的作用就是用来设置输出信息的颜色,让用户可以根据颜色区分不同的文件类型。那为什么我们输入ls返回的内容会有颜色呢?细想一下,如果每次都输入ls --color=auto这一串内容,输入会很麻烦,所以为了方便大家的使用,系统为我们配置了命令别名:
[root@studyclub ~]# alias ls # 查看ls的命令别名
alias ls='ls --color=auto'
看到了吗,我们现在使用ls命令就相当于直接输入了“ls --color=auto”。这和我们数学里面的方程式一样,如果a=25,那么我们用a计算方程式a+12=?的时候,自然就能知道a就是25。
设置命令别名也很简单:
[root@studyclub ~]# alias jasonlist='ls -l' # 设置一个ls -l命令的别名,
[root@studyclub ~]# jasonlist # 使用刚才的别名看看效果
total 170860
-rw------- 1 root root 1486 Feb 17 16:51 anaconda-ks.cfg
-rw-r--r-- 1 root root 60 Mar 23 17:28 args.sh
......
[root@studyclub ~]# unalias jasonlist # 取消前面设置的别名
[root@studyclub ~]# jasonlist # 验证取消设置别名的操作是否成功
-bash: jasonlist: command not found
查询命令是否为bash shell的内置命令:type
[root@studyclub ~]# type [-tpa] command
选项与参数:
:不加任何选项与参数时,type 会显示出 command 是外部命令还是 bash 内部命令
-t :当加入 -t 参数时,type 会简单直白的显示 command 的意义:
file :表示为外部命令;
alias :表示该命令为命令别名所配置的名称;
builtin :表示该命令为 bash 内建的命令功能;
-p :如果后面接的 command 为外部命令时,才会显示完整文件名;
-a :会由 PATH 变量定义的路径中,将所有含 command 的命令都列出来,包含 alias
例子:
1. 查询ls
[root@studyclub ~]# type -a ls # 列出所以PATH变量中定义的ls
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls
[root@studyclub ~]# type ls # 显示ls是外部命令还是内部命令
ls is aliased to `ls --color=auto'
[root@studyclub ~]# type -t ls # 简洁的显示ls命令的类型
alias # 表示当前的ls是命令别名,去掉-t选项后可以查看是哪个命令的别名。
2. 查询cd
[root@studyclub ~]# type cd
cd is a shell builtin
[root@studyclub ~]# type -t cd
builtin
[root@studyclub ~]# type -a cd
cd is a shell builtin
cd is /usr/bin/cd
新手应知:
《Linux基础及进阶》:
看完本文有收获?请分享给更多人
推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!
微信号|bjdream-1
Cloud研习社 ·