shell简介
shell从系统层面来讲,位于内核之上,与应用程序处于同一个层次,是用户操作内核的接口。
第一个流行的shell是由Stephen R. Bourne发展出来的,为了纪念他成为Bourne shell
,简称sh
。目前linux常用的bash
,全称为Bourne Again SHell
,是Bourne shell
的加强版。
另一个语法类似C语言的shell由伯克利大学的Bill Joy设计的C shell
,简称csh
。学术界sun使用较多,所以csh
很重要且流传很广。
查看可用shells
合法shells均被写入/etc/shells
。对于manjaro系统使用cat
命令显示如下:
$ cat /etc/shells
# Pathnames of valid login shells.
# See shells(5) for details.
/bin/sh
/bin/bash
/bin/zsh
/usr/bin/zsh
/usr/bin/git-shell
每个用户登录以后得到的shell可在文件/etc/passwd
中查看。
$ cat /etc/passwd
root:x:0:0::/root:/bin/zsh
这里节选passwd部分内容,可知root账户使用的zsh
。
shells实践(zsh)
zsh功能
- 历史命令。所有执行过的均被实时记录自爱
~/.zsh_history
文件里面。 - 命令与文件补全。使用[Tab]可补全命令或文件名。
- 命令别名设置。
alias
,例如
alias lm="ls -al"
执行lm
等同于ls -al
。不过,这样只在当前有效,退出,
重开一个命令窗口都会失效,永久有效需要在~/.zshrc
文件内写入命令。 - 任务管理,前台,后台控制。
- 程序化脚本。即,把连续执行的命令组织在一个文件里面。
- 通配符。使用通配符辅助高效工作。
查看命令类型
type 命令介绍
$ type -S
-S -- show steps in the resolution of symlinks
-a -- print all occurrences in path #在检索路径PATH中查询到的命令都显示出来
-f -- output contents of functions
-m -- treat the arguments as patterns
-p -- always do a path search
-s -- print symlink free path as well
-w -- print command type #展示命令类型
type实例
# 查看所有查询结果
$ type -a ls
ls is an alias for ls --color=tty
ls is /usr/bin/ls
# 查看ls类型
$ type -w ls
ls: alias#
$ type -w cd
cd: builtin
命令编辑相关技巧
- 命令太长 键入
并直接回车,中间无其他字符。
$ sudo
> nvidia-smi
[ctrl] + u
删除所有[ctrl] + k
从当前位置向后删除[ctrl] + a
定位到行首,[ctrl] + e
定位到行尾
参考
《鸟哥的linux私房菜》