吹静静

欢迎QQ交流:592590682

Shell 基础

一、Shell 概述

 

1、Shell是什么

  >>> Shell是一个命令行解棒器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止客至是编写一些程序。
  
  >>> Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。

 

2、Shell 的两种主要语法

  >>> Shell 的两种主要语法类型有 Bourne 和 C,这两种与方法彼此不兼容。Bourne 家族主要包括 sh、ksh、Bash(大部分Linux应用)、psh、zsh;

    C 家族主要包括:csh(大部分Uinx应用)、tcsh。

  >>> Linux 和 Uinx 大部分命令通用

  >>>  vi  /etc/shells 查看支持的 shell 版本。

  >>>   切换 Shell

 

二、脚本执行方式

1、echo 输出命令

  >>> echo   [选项]   [输出命令]

  # 输出命令有空格时加上双引号。

  选项:

      -e :  支持反斜线控制的字符转换

 

控制字符     作用

  \a      输出警告音

  \b      退格键,也就是向左删除键

  \n      换行符

  \r      回车键

  \t      制表符,也就是Tab键

  \v      垂直制表符

  \0nnn    按照八进制ASCII码表输出字符。其中0为数字零,nnn是三位八进制数

  \xhn      按照十六进制ASCII码表输出字符。其中hh是两位十六进制数

  >>> [root@localhost ~]# echo  -e \ "\x68\t\x65\t\x6c\n\"x6c\t\x6f\t"
    # 按照十六进制ASCH码也同样可以输出

 

   >>> [root@localhost ~] # echo  -e  "\e[1;31m 嫁人就要嫁凤姐\e[0m"
    # 输出颜色
    30m=黑色  31m=红色   32m=绿色  33m=黄色  
    34m=蓝色  35m=洋红   36m=青色  37m=白色

 

 2、第一个脚本

   >>> [root@localhost ~] # vi  hello.sh

    #!/bin/bash   (必须写,调用其他语言时用)

    # The first program  (注释)

3、脚本执行

(1):赋予执行权限,直接运行

  >>> chmod  755 hello.sh    (赋予可执行权限)

  >>> ./hello.sh  (本目录下执行这个文件)

(2):通过 Bash 调用执行脚本

  >>> bash hello.sh

 

三、Bash 的基本功能

1、命令别名与快捷键

  >>>[root@localhost ~] # ll = 'ls  -l  --color = auto'

            别名   原名           颜色自动

(1):查看与设定别名

  >>> [root@localhost ~] # alias

    # 查看系统中所有的命令别名

  >>>[root@localhost ~] # alias   别名= ‘原命令’

    # 设定命令别名(临时设定,系统重启后消失)

 

 (2):永久别名生效与删除别名

   >>>[root@localhost ~] # vi   ~/.bashrc

    # 写入环境变量配置文件   (永久生效)

  >>> [root@localhost ~] # source .bashrc

    # 直接使永久命令生效

   >>>[root@localhost ~] # unalias   别名

    # 删除别名 (也是临时生效)

 

使环境变量立即生效

source 配置文件

如:#source /etc/profile

3、命令生效顺序

  第一顺位执行用绝对路径或相对路径执行的命令。

  第二顺位执行别名。

  第三顺位执行Bash的内部命令。

  第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令

 

  # 别名的优先级高于原名令(Bash 的内部命令)

  # 自己设定的别名不应该跟系统中的原名冲突。

2、历史命令

(1):历史命令

  >>>[root@localhost ~] # history   [选项]   [历史命令保存文件]

  选项:

    -c  :  清空历史详细   (不建议清空历史命令)

    -w :  把缓存中的历史命令写入历史命令保存文件 ~/.bash_history

  >>> 历史命令默认会保存1000条,可以在环境变量配置文件 /etc/profile 中进行修改

(2):历史命令的调用

  使用上、下箭头调用以前的历史命令

  使用 “!n” 重复执行地 n 条历史命令

  使用 “!!” 重复执行上一条命令

  使用 “!字符串” 重复执行最后一条以该字符串开头的命令

3、输出重定向

 1、标准输入输出

设备    设备文件名  文件描述符     类型
键盘      /dev/stdin     0       标准输入    
显示器     /dev/stdout        1       标准输出
显示器   /dev/stderr      2       标准错误输出

2、输出重定向

(1):[root@localhost ~] # 命令  >>  文件   (不覆盖原来命令)

 

(2):[root@localhost ~] # 错误命令  2>>文件  (不覆盖原来命令)

 

(3):[root@localhost ~] # 命令  >> 文件 2>&1

 

(4):[root@localhost ~] # 命令  >> 文件1   2>>文件2  (常用)

 

(5):[root@localhost ~] # ls   &>/dev/null  (null:黑洞,垃圾站)

    # 啥也不输出

3、输入重定向

  >>> [root@localhost ~] # wc  [选项]  [文件名]

  选项:    -c  :  统计字节数

    -w :  统计单词数

    -l  :  统计行数

    

    命令  <  文件把文件做为命令的输入

    命令  <<  标识符

    。。。

    标识符把标识符之间内容作为命令的输入

  >>> [root@localhost ~] # wc 标识符

 

4、管道符

(1)、多命令顺序执行

  >>> [root@localhost ~] # 命令1 ; 命令2   (顺序执行)

  >>> [root@localhost ~] # 命令1 && 命令2  (命令1正确执行,命令2才会执行)

                       (命令1 执行不正确,命令2不会执行)

  >>> [root@localhost ~] # 命令1 || 命令2   (命令1 执行不正确,命令2才会执行)

                      (命令1 执行正确,命令2不会执行)

  >>> [root@localhost ~] # 命令1  &&  命令2  ||  命令3

    # 命令1 执行正确,就执行命令2,否则执行命令3

 

(2):管道符

  >>> [root@localhost ~] # 命令1  |  命令2

    # 命令1 的正确输出作为命令2 的操作对象

grep 字符串查询命令

5、通配符

 

 

 

 

 

四、Shell 命令快捷键

  在shell命令终端中,Ctrl+n相当于方向向下的方向键,Ctrl+p相当于方向向上的方向键。
 
  在命令终端中通过它们或者方向键可以实现对历史命令的快速查找。这也是快速输入命令的技巧。
 
  在命令终端中可以通过Ctrl+r 实现快速检索使用过的历史命令。Ctrl+r中r是retrieve中r。
 
  Ctrl+a:  光标回到命令行首。 (a:ahead)
   
  Ctrl+e:  光标回到命令行尾。 (e:end)
 
  Ctrl+b:  光标向行首移动一个字符。 (b:backwards)
 
  Ctrl+ f:  光标向行尾移动一个字符。 (f:forwards)
 
  Ctrl+w:  删除光标处到上一个字符
 
  Ctrl+k:  删除光标处到行尾的字符。
 
  Ctrl+u:  删除整个命令行文本字符。
 
  Ctrl+h:  向行首删除一个字符。
 
  Ctrl+d:  向行尾删除一个字符。
 
  Ctrl+y:  粘贴Ctrl+u,Ctrl+k,Ctrl+w删除的文本。
 
  Ctrl+p:    上一个使用的历史命令。 (p:previous)
 
  Ctrl+n:    下一个使用的历史命令。(n:next )
 
  Ctrl+r:  快速检索历史命令。(r:retrieve)。
 
  Ctrl+t:     交换光标所在字符和其前的字符。
 
  Ctrl+i:   相当于Tab键。
 
  Ctrl+o:    相当于Ctrl+m.
 
  Ctrl+m:   相当Enter键。

其他控制键:

  Ctrl+s:  使终端发呆,静止,可以使快速输出的终端屏幕停下来。
 
  Ctrl+q:  退出Ctrl+s引起的发呆。
 
  Ctrl+z:  使正在运行在终端的任务,运行于后台。 (可用fg恢复)
 
  Ctrl+c:  中断终端中正在执行的任务。
 
  Ctrl+d:  在空命令行的情况下可以退出终端。
 
  Ctrl+[ :  相当于Esc键。
 
  Esc键:  连续按3次显示所有的支持的终端命令。
 
  Tab键:  命令、文件名等自动补全功能。
 

五、more 命令和 less 命令

1、more命令

    more功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一  页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件。

(1).命令格式:

  >>> [root@localhost ~] # more  [-dlfpcsu ]  [-num ]  [+/ pattern]  [+ linenum]  [file ... ] 

(2).命令功能:

  more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能。

(3).命令参数:

  +n        从笫n行开始显示

  -n         定义屏幕大小为n行

  +/pattern   在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示  

  -c         从顶部清屏,然后显示

  -d         提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能

  -l         忽略Ctrl+l(换页)字符

  -p         通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似

  -s         把连续的多个空行显示为一行

  -u         把文件内容中的下画线去掉

(4).常用操作命令:

  Enter      向下n行,需要定义。默认为1行

  Ctrl+F     向下滚动一屏

  空格键    向下滚动一屏

  Ctrl+B    返回上一屏

  =            输出当前行的行号

  :f         输出文件名和当前行的行号

  V           调用vi编辑器

  !命令     调用Shell,并执行命令 

  q           退出more

2、less指令

    less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。 在 more 的时候,我  们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按 键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之  外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

(1).命令格式:

  >>> [root@localhost ~] # less [参数]  文件 

(2).命令功能:

  less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

(3).命令参数:

  -b         <缓冲区大小> 设置缓冲区的大小

  -e         当文件显示结束后,自动离开

  -f          强迫打开特殊文件,例如外围设备代号、目录和二进制文件

  -g         只标志最后搜索的关键词

  -i          忽略搜索时的大小写

  -m        显示类似more命令的百分比

  -N        显示每行的行号

  -o  文件名      将less 输出的内容在指定文件中保存起来

  -Q       不使用警告音

  -s        显示连续空行为一行

  -S        行过长时间将超出部分舍弃

  -x <数字>    将“tab”键显示为规定的数字空格

(4).常用操作命令:

  /字符串     向下搜索“字符串”的功能

  ?字符串    向上搜索“字符串”的功能

  n         重复前一个搜索(与 / 或 ? 有关)

  N         反向重复前一个搜索(与 / 或 ? 有关)

  b         向后翻一页

  d         向后翻半页

  h         显示帮助界面

  Q        退出less 命令

  u         向前滚动半页

  y         向前滚动一行

  空格键     滚动一行

  回车键     滚动一页

  [pagedown]    向下翻动一页

  [pageup]      向上翻动一页

posted on 2018-02-02 20:16  吹静静  阅读(147)  评论(0编辑  收藏  举报