Shell的作用是将用户输入的文本命令转换成内核能识别的数据指令交给内核进行执行,内核需要翻译成二进制交由CPU底层来执行
    用户层->Shell->调用对应应用程序->kernel->硬件层->运算和周边外设->传递给kernal->应用程序->shell->用户
    Shell就是底层命令解释器,Shell就是用户界面
    Shell有两种语法: Bourne和C
    Bourne家族包括:sh、ksh、Bash、psh、zsh
    C家族包括:csh、tcsh(主要应用于Unix)
    Bash是当前Linux系统的标准shell
    echo $SHELL可以查看到shell对应的位置是:bin/bash
    支持的shell在/etc/shells文件下
    可以分级调用进入多个shell
 
    输出命令:
    echo "Hello World"会在命令行返回命令
    echo -e "H\te\tl\nl\to"
    -e指定识别转义字符,\t tab键 \n 换行
    输出彩色打印:
    echo -e "\e[1;31m hello world \e[0m"
    \e[1;和\e[0m是固定格式,代表开启颜色和关闭颜色,如果不关闭后续命令行全部是指定颜色,中间部分指定颜色和内容
    30m黑色,31m 红色, 32m 绿色, 33m 黄色,34m蓝色,35m洋红,36m青色,37m白色
 
    第一个shell脚本编写:
    建立脚本:vim hello.sh
    输入:
    #!bin/bash
    # The first shell program
    echo -e "\e[1;34m Hello Shell \e[0m"
    :wq保存脚本
    赋予可执行权限:chmod 755 hello.sh
    执行:./hello.sh(常用方法)
    或者直接调用:bash hello.sh
 
    shello别名是为了简化命令执行
    alias 查看当前shell的默认别名,系统默认添加了一些常用必要参数
    设置别名,比如:alias ls='ls --color=never'这样默认就添加了别名的参数,简化了命令输入
    比如:alias vi='vim'
    别名为了方便用户习惯
    alias命令设置的别名,当重新启动操作系统后设置会失效
    不重启的情况下取消别名设置:unalias vi='vim'
    永久修改,修改对应存放别名的环境变量:vim ~/.bashrc
    保存后立即生效:source ~/.bashrc
    
    命令执行优先级:绝对或者相对路径执行命令 > 别名 > Bash内部命令 > 环境变量定义的顺序查找的第一个命令
    shell常用快捷键:
    强制终止程序 Ctrl+c
    清屏 Ctrl+l
    删除光标到行首的命令:Ctrl+u
    光标定位到行首:Ctrl+a
    光标定位到行尾:Ctrl+e
    把前台执行的命令放到后台:Ctrl+z
    在历史命令中搜索:Ctrl+r 按快捷键后,输入命令,根据搜索结果回车执行
 
    查看所有的历史输入命令:history
    清除历史输入命令:history -c
    历史命令存放位置:~/.bash_history
    文件中存放的命令比history查询到的少一些,因为在用户退出时文件才会更新
    立即同步当前命令到~/.bash_history:history -w
    建立不要随便删除历史命令,便于排错和检查入侵
    history命令最多保存1000条,可以编辑/etc/profile修改HISTSIZE的属性值即可
 
    上下箭头执行历史命令
    history查询编号使用!n执行历史中的编号为n的命令,!!执行上一条命令,!字符串重复执行以该字符串开头的最后一条命令
 
    TAB键执行命令和目录和文件补全,补全数据依赖于环境变量和操作路径
 
 
 
    标准输入:/dev/stdin 文件描述符:0 设备:键盘
    标准输出:/dev/stdout 文件描述符:1 设备:显示器
    标准错误输出:/dev/stderr 文件描述符:2 设备:显示器
    其实都是软链接,链接到实时硬件内存目录/proc
 
 
    标准输出重定向:命令 > 文件 把正确命令输入覆盖到文件中,命令 >> 文件 内容追加
    标准错误输出重定向:命令 2> 文件,命令 2>>文件 作用同上,注意2后面不要加空格
 
    正确和错误同时输出到文件:命令 > 文件 2>&1 或者 命令 >> 文件 2>&1
    或者使用:命令 &> 文件 和 命令 &>> 文件
    分开文件写:命令 >> 文件1 2>>文件2 将正确结果放到文件1,错误结果放到文件2
 
    命令 &>/dev/null 命令不输出任何一种执行结果,/dev/null相当于Linux下的黑洞,输出就不存在了
 
    输入重定向 wc
    然后输入文本按Ctrl+d结束
    shell会返回统计行数,单词数和字符数
    wc -c 只统计字符数包括空格和换行
    wc -w 只统计单词数
    wc -l 只统计行数
 
    wc < success.log 或者 wc server.log   统计文件中的数据
    命令 < 文件 把文件内容交给命令执行
    wc << ddd
    输入文本输入到ddd后输入就结束了,返回统计,ddd就是自定义结束标识符
 
    多命令顺序执行:
    命令1 ; 命令2  多个命令顺序执行,命令之间没有任何逻辑关系
    命令1 && 命令2 逻辑与当命令1执行正确命令2才会执行
    命令1 || 命令2 逻辑或当命令1执行不正确,命令2会执行;当命令1正确执行,命令2不会执行
 
    统计某个操作脚本执行时间:date ; 命令 ; date
    data +%s 显示当前Unix时间戳,便于统计
    返回简单的正确或者错误提示:命令 && echo "yes" || echo "no"
 
    管道符:命令1 | 命令2
    命令1的输出结果作为命令2的操作对象;如果命令1执行错误,命令2不会被执行
    比如:ls -l /etc/ | more 实现分屏显示
    命令2一定能严格操作命令1的输出,不能随便使用
    比如:netstat -an | grep ESTABLISHED | wc -l 处理命令结果中的指定数据,统计一些结果等
 
 
    通配符:* 匹配一个或多个 ? 匹配1个 [abc]匹配abc中的1个 [a-z] [0-9]匹配a-z中的任何一个字母和0-9中的任何一个数字 [^0-9]匹配不是数字的的字符
 
    特殊符号:
    比如:aa=123 #定义变量
    echo $aa 这样可以输出变量值
    echo '$aa' 输出就是$aa这个字符串
    echo "$aa" 输出就是$aa的变量值
    单引号中''所有特殊符号都原样输出 双引号中,$ ` \都有特殊含义
    比如:aa=`ls`是把ls执行结果存放到变量aa中,使用反引号可以执行系统命令
    aa=$(ls)和上面作用一致,建议使用
    \$单纯代表$这个字符,比如:echo \$aa就输出$aa这个字符串,和单引号作用一致
    #代表注释

Shell基础整理的更多相关文章

  1. Shell基础学习小结

    0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本 ...

  2. Shell基础-环境变量配置文件

    Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...

  3. shell基础二十篇 一些笔记

    shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read (read命令更具体的说明见博客收藏的一 ...

  4. 常用的shell命令整理

    工作快一年了,shell命令也玩了一年了.还是有点积累的,下面是本人常用的. 1.pwd | xargs -i basename {}   获取当前所在目录的名称 2.ps -ef|grep -w   ...

  5. shell基础(转)

    shell基础1:文件安全与权限 http://bbs.chinaunix.net/forum/viewtopic.php?t=434579&highlight=wingger 附:Linux ...

  6. Linux实战教学笔记17:精简shell基础

    第十七节 精简shell基础 标签(空格分隔): Linux实战教学笔记 1,前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, ...

  7. 机器学习 —— 基础整理(六)线性判别函数:感知器、松弛算法、Ho-Kashyap算法

    这篇总结继续复习分类问题.本文简单整理了以下内容: (一)线性判别函数与广义线性判别函数 (二)感知器 (三)松弛算法 (四)Ho-Kashyap算法 闲话:本篇是本系列[机器学习基础整理]在time ...

  8. shell基础及变量

    一 Shell概述 1.Shell的作用——命令解释器,“翻译官” shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上. ...

  9. Shell 基础教程

    一个比较好的shell基础教程: http://www.runoob.com/linux/linux-shell.html

随机推荐

  1. SQL行转列和列转行

    行列互转,是一个经常遇到的需求.实现的方法,有case when方式和2005之后的内置pivot和unpivot方法来实现. 在读了技术内幕那一节后,虽说这些解决方案早就用过了,却没有系统性的认识和 ...

  2. git stash恢复

    今天下午在使用Git命令进行代码管理时,因为自己一时疏忽直接把自己一天的劳动成果给弄丢了,这还了得,吓死宝宝了.真的,相信有代码丢失的朋友肯定能体会我当时的心情,不能体会我心情的那就祝你们也丢次代码, ...

  3. Spring 4.3.2下实现http多次断点下载

    其实跟 spring 无关,如果是直接下载资源很多 web sever 不用程序就直接实现了断点. 但我们的应用是 download?url=xxxx 这种方式 下载资源由 download 来负责, ...

  4. mysql中You can’t specify target table for update in FROM clause错误解决方法

    mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表( ...

  5. WPF与winform与silverlight的区别

    收到了一封学生的邮件: =========================== 金老师您好: 最近在学C#.NET,基本语法学习的差不多了,接下来准备学习图形界面设计部分.但是我目前对于.NET的Wi ...

  6. Windows环境下面搭建Object C开发环境[转]

    1.安装编译器 Objective-C的编译器有很多,其中LLVM属于从GCC发展出来的,主要使用在苹果的平台中,GNU可以使用GnuStep,网址是http://wwwmain.gnustep.or ...

  7. Requirements of an SAP system administrator

    Requirements of an SAP system administrator Have a "proper" attitude Protect and safeguard ...

  8. HTTP 错误 500.21 - Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法

    IIS在发布网站后找不到首页,提示以上错误,原因是在“应用程序池”中,把对应的网站的“托管管道模式”设置为“集成”即可.

  9. C# 遍历DLL导出函数

    C#如何去遍历一个由C++或E语言编写的本地DLL导出函数呢 不过在这里我建议对PE一无所知的人 你或许应先补补这方面的知识,我不知道为什么PE方面的 应用在C#中怎么这么少,我查阅过相关 C#的知识 ...

  10. Hadoop 2.7.1 源代码目录结构分析

    采用的源代码是2.7.1的,从这个网站下可以找到2.7.1的代码:https://git1-us-west.apache.org/ ,使用gitclone出来,然后git checkout到2.7.1 ...