热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Shell基础(一)

第一节Shell概述1.1定义1.2分类1.3Shell脚本的执行方式1.4Bash的基本功能1.4.1历史命令与命令补全1.4.2命令别名与常用快捷键1.4.3输入

第一节 Shell概述

1.1 定义

1.2 分类

1.3 Shell脚本的执行方式

1.4 Bash的基本功能

1.4.1 历史命令与命令补全

1.4.2 命令别名与常用快捷键

1.4.3 输入输出重定向

1.4.4 多命令顺序执行与管道符




第一节 Shell概述


1.1 定义

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


1.2 分类


  • Bourne Shell:从1979起Unix就开始使用Bourne Shell,Bourne Shell的主文件名为 sh。
  • C Shell: C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名。
  • Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主 要包括:csh、tcsh。
  • Bash: Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell。

    Linux支持的Shell可通过/etc/shells查看,可以通过在命令行输入相应Shell类型切换。


1.3 Shell脚本的执行方式

#!/bin/bash
echo -e ‘Hello World!’

#!/bin/bash这一句并不是注释,是标识,说明以下语句是Shell脚本。

1) 赋予执行权限,直接运行
chmod 755 hello.sh
./hello.sh

2) 通过bash调用执行脚本
bash hello.sh
不需要执行权限就可以执行
 


1.4 Bash的基本功能


1.4.1 历史命令与命令补全

history [选项] [历史命令保存文件]
-c: 清空历史命令
-w: 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history

历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改
找到HISTSIZE=1000进行修改,随意修改到100000条都可以,修改之后重启使配置文件生效

1) 历史命令的调用


  1. 使用上、下箭头调用以前的历史命令
  2. 使用“!n”重复执行第n条历史命令
  3. 使用“!!”重复执行上一条命令
  4. 使用“!字串”重复执行最后一条以该字串开头的命令


2) 命令与文件补全
在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全


1.4.2 命令别名与常用快捷键


命令别名

alias 别名=‘原命令’ 设定命令别名
alias 查询命令别名

让别名永久生效
vi  ~/.bashrc

删除别名
unalias 别名

Bash常用快捷键


ctrl+a    把光标移动到命令行开头。
ctrl+e 把光标移动到命令行结尾。
ctrl+c 强制终止当前的命令。
ctrl+l 清屏,相当于clear命令。
ctrl+u 删除或剪切光标之前的命令。
ctrl+k删除或剪切光标之后的内容。
ctrl+y 粘贴ctrl+u或ctrl+k剪切的内容。
ctrl+r在历史命令中搜索,按下ctrl+r之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索。
ctrl+d退出当前终端。
ctrl+z  暂停,并放入后台。这个快捷键牵扯工作管理的内容
ctrl+s  暂停屏幕输出。
ctrl+q  恢复屏幕输出。


注意:ctrl+z 快捷键一定要谨慎使用,如果使用的多了,系统会占用大量存储空间来存放暂停的数据,用多了系统会变卡!!!


1.4.3 输入输出重定向
 


设备设备文件名文件描述符 类型
键盘 /dev/stdin0标准输入
显示器/dev/sdtout1标准输出
显示器/dev/sdterr2标准错误输出

        
输出重定向
就是改变输出方向,比如由屏幕输出到文件,非常有用


类型符号作用
标准输出重定向 命令>文件 以覆盖的方式,把命令的正确输出输出到指定的文件或设备中。
标准输出重定向命令>>文件  以追加的方式,把命令的正确输出输出到指定的文件或设备中。
标准错误输出重定向错误命令2>文件  以覆盖的方式,把命令的错误输出输出到指定的文件或设备中
标准错误输出重定向 错误命令2>>文件以追加的方式,把命令的错误输出输出到指定的文件或设备中。

在输入报错文件中2和>>必选连着写,标准错误输出不常用


命令>文件 2>&1以覆盖的方式,把正确输 出和错误输出都保存到同 一个文件当中。
命令>>文件 2>&1 以追加的方式,把正确输 出和错误输出都保存到同 一个文件当中。
命令&>文件以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
命令&>>文件以追加的方式,把正确输出和错误输出都保存到同一个文件当中。
命令>>文件1 2>>文件2  把正确的输出追加到文件1中,把错误的输出追加到文件2中

  • 命令 >> 文件 2>&1 ,命令 &>>文件 两种保存都一样,只不过是格式不同
  • 有一个用法:命令 &>/dev/unll 不管命令是否正确,直接丢人这个文件夹,不保存任何数据,在写shell脚本时有用

输入重定向
不通过键盘输入,通过文件输入,在实际中用的不多,用在给源码包打补丁。

wc [选项] [文件名]

-c 统计字节数
-w 统计单词数
-l 统计行数


用法:
命令 <文件 把文件作为命令的输入


1.4.4 多命令顺序执行与管道符

多命令顺序执行


 格式作用
命令1 ;命令2多个命令顺序执行&#xff0c;命令之间没有任何逻辑联系&#xff0c;第一条报错&#xff0c;第二条也会执行
&&命令1 && 命令2 逻辑与当命令1正确执行&#xff0c;则命令2才会执行 当命令1执行不正确&#xff0c;则命令2不会执行
||命令1 || 命令2 逻辑或当命令1 执行不正确&#xff0c;则命令2才会执行 当命令1正确执行&#xff0c;则命令2不会执行

例子&#xff1a;


  • date ; 命令 ; date
  • 命令 && echo yes || echo no


管道符
命令1 | 命令2 &#xff1a;命令1的正确输出作为命令2的操作对象

例子&#xff1a;


  • ll /etc | more
  • netstat -an | grep

grep [选项] “搜索内容” 文件名

-i: 忽略大小写
-n: 输出行号
-v: 反向查找
–color&#61;auto 搜索出的关键字用颜色显示


推荐阅读
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • UNIX高级环境编程 第11、12章 线程及其属性
    第11章线程11.2线程概念线程资源:线程ID,一组寄存器,栈,调度优先级和策略,信号屏蔽字,e ... [详细]
  • 201720181 20155339 《信息安全系统设计基础》第六周学习总结
    2017-2018-120155339《信息安全系统设计基础》第六周学习总结教材学习内容总结控制转移:从ak指令到a(k1)指令的过渡。控制转移序列称为处理器的控制流 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • Linux下C语言的几道经典面试题小结(分享)
    本篇文章整理了几道Linux下C语言的经典面试题,相信对大家更好的理解Linux下的C语言会有很大的帮助,欢迎大家探讨指正。1、如果在Linux下使用GCC ... [详细]
author-avatar
humphrey7247
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有