认识shell

0X00、什么是shell?

shell将我们输入的指令与内核(kernel)通信,是提供给用户的操作系统接口。广义的shell既包括命令行界面的也包括图形界面的。

0X01、有哪几种shell?

  • bash(Bourne Again SHell,GNU,Linux默认的shell)
  • csh(C SHell,Sun公司)
  • ksh(Kornshell,AT&T Bell lab.)

  • 系统上合法的shell都要写入/etc/shells这个文件中。
[root@localhost sysconfig]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
...

0X03、shell提供的的功能

1、通配符

1、通配符”*”

代表任意长度的字符,但是不能匹配到”.”。

例如:”*file”不能匹配到”xxx.file”,但是”\*.file”可以。

2、通配符”?”

代表任何一个字符。

例如:”?a”表示以”a”结尾的共两个字符的字符串。

3、字符组通配符”[]”、”-“、”!”

“[]”指定一个字符范围,”[]”内为可用于匹配的字符。里面可直接给出字符,也可以由起始字符、”-“、终止字符组成。如果使用”!”,则表示不在这个范围内的其它字符。

例如:”*[abc]”或”\*[a-c]”表示所有以a、b或c结尾的字符串。”\*[!abc]”表示所有以a、b或c结尾的字符串。

2、输入输出重定向

1、标准输入输出

Linux中标准输入是键盘,标准输出或标准错误输出是屏幕。

2、输入输出重定向

shell中不使用系统标准的输入输出,重新进行指定的情况。

3、分类

  • 输出重定向
    • 概念:命令执行的结果不在标准输出上输出,而是保存到某一文件中。Bash用符号“>”实现输出重定向。
    • 保存命令结果到文件中
      [geek@localhost ~]$ ls -l >list
      [geek@localhost ~]$ ls
      模板 文档 桌面 视频 下载 list 公共 图片 音乐
      [geek@localhost ~]$ cat list
      总用量 800
      -rw-r--r--. 1 root root 5080 7月 9 13:08 1.txt
      -rw-r--r--. 1 root root 5080 7月 9 13:11 2.txt
      ...
    • 创建文本文件:配合cat命令,【Enter】换行,【Ctrl+D】结束输入。
      [geek@localhost ~]$ cat >test
      This is a test file.
      [geek@localhost ~]$

      • 合并文本文件
        [geek@localhost ~]$ cat >t1
        This is t1.
        [geek@localhost ~]$ cat >t2
        This is t2.
        [geek@localhost ~]$ cat t1 t2 >t
        [geek@localhost ~]$ cat t
        This is t1.
        This is t2.
  • 附加输出重定向
    • 附加数据到已有的文件中
      [geek@localhost ~]$ cat t1
      This is t1.
      [geek@localhost ~]$ cat >>t1
      I see.
      [geek@localhost ~]$ cat t1
      This is t1.
      I see.
  • 错误输出重定向
    • “2>”:程序执行结果显示在屏幕上,而错误信息重定向到文件;
    • “&>”:程序执行结果和错误信息都重定向到文件。
      [geek@localhost ~]$ mv 2 /home 2>error
      [geek@localhost ~]$ cat error
      mv: 无法获取"2" 的文件状态(stat): 没有那个文件或目录
      [geek@localhost ~]$
  • 输入重定向(不常用)
    [geek@localhost ~]$ cat t1
    This is t1.
    [geek@localhost ~]$ cat <t1
    This is t1.

3、管道

管道将多个命令前后连接起来形成一个管道流。管道流中的每一个命令都作为一个单独的进程运行,前一个命令的输出作为后一个命令的输入,从左到右依次执行没个命令。

geek@localhost ~]$ ls -l | grep t*
t1:This is t1.
t2:This is t2.
test:This is a test file.

4、历史记录

为避免用户的重复劳动,在用户主目录下会有一个名为.bash_history的文件,保存着曾经使用过的命令,默认最多保存1000个shell命令的历史记录。

  • 查看历史记录—-history [数字]
[geek@localhost ~]$ history
    1  ls -a
    2  ls -l
    3  pwd
...
  • 再次执行历史记录中的命令—-!序号 或 !!
[geek@localhost ~]$ !3
pwd
/home/geek
[geek@localhost ~]$ !!
pwd
/home/geek

5、别名

别名:按照shell命令的标准格式缩写的命令行的缩写。

  • 查看别名
[geek@localhost ~]$ alias 
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
  • 设置别名

暂时的,到下次登录系统时失效
----------
[geek@localhost ~]$ alias  la='ls -la'
[geek@localhost ~]$ la
总用量 72
drwx------. 14 geek geek 4096 716 22:09 .
drwxr-xr-x.  6 root root 4096 716 22:01 ..
...
-rw-r--r--.  1 geek geek  231 610 2014 .bashrc
...

写入.bashrc中,永久有效
----------
[geek@localhost ~]$ cat >>.bashrc
alias la='ls -la' 

6、自动补全

  • 一次【Tab】:自动补全,前提是具有唯一性;
  • 两次【Tab】:显示所有可能的命令或文件。

你可能感兴趣的:(shell)