shell 基本认识

来源:互联网 发布:妩媚航班 知乎 编辑:程序博客网 时间:2024/06/06 11:01

初识shell

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Ken Thompson 的 sh 是第一种 Unix Shell。鸟哥说shell是linux的任督二脉。

查看系统支持的shell

查看/etc/shells文件,该文件列出了当前可用的shell。在登录的时候系统会分配一个shell来让我工作,而这个登录取得的shell就记录在/etc/passwd中。

cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin

cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash


bash的主要一些优点

  • 命令记忆 history
    • 记录的命令可以通过上下键来调出来,或者history直接显示所有的。
    • 这些命令的历史记录记录在主文件夹内的.bash_history中,不过需要注意的是当前执行的命令都是缓存在内存中的,当成功注销系统之后这些命令才会记录到~/.bash_history中。奋斗如果别人登录某些操作的时候使用明文的话,直接通过查看就可以得到别人的密码等信息,如登录mysql的时候使用 mysql -uroot -ptest  那么这条命令会被记录到历史记录中,通过查看历史记录我们可以知道mysql的用户名为root密码为test。
  • 命令文件补全 【tab】
    • 按一次tab自动补全,两次tab列出所有可以匹配的命令。
  • 命令别名 alias
    • 可以将经常使用的一些组合的命令或者很长的命令取个别名如:alias islinux='uname -a | grep -i linux | wc -l'
  • 作业控制
    • 可以控制程序或者脚本在前台或者后台执行等。
  • 程序脚本
    • 可以将常用的处理写成脚本。
  • 通配符
    • 如 * 匹配任意个字符;?匹配单个字符;[list]匹配list中的任意单个字符;[!list]匹配除list中的任意单个字符;[s-e]匹配s到e之间的任意单个字符;[string1,string2,string3...]匹配string中的任意单个字符串。

bash shell有许多的内置命令

type命令可以查看命令是外置命令还是shell内置命令。

type [-tpa] name

加入-t参数时候,会以file外置命令;-p name为file时会显示全路径;-a 会有PATH变量定义的路径中将所以包含name的命令都列出来,包括别名的。

type -t mkdir
file
type -a mkdir
mkdir 是 /bin/mkdir


Shell 常识

unset 取消变量的设置

命令中还需要其他命令提供信息可以使用`命令`(为单反引号)或者$(命令)

若变量需要在其他子进程执行则需要使用export使变量变成环境变量

可以通过转义字符\转义特殊符号

双引号内的内容保持原有的特性,但是单引号中的内容为纯文本

等号之间不能有空格