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

Linux学习(7)——Shell基础

目录Shell概述echo命令第一个Shell脚本别名与快捷键历史命令输出重定向输入重定向管道符通配符学习视频乃是慕课教程:https:www.im

目录

Shell概述

echo命令

第一个Shell脚本

别名与快捷键

历史命令

输出重定向

输入重定向

管道符

通配符


 

学习视频乃是慕课教程:https://www.imooc.com/video/4524

本节是学习所作笔记及总结。

 

Shell概述

1、Shell是什么

接收输入的命令,将命令翻译成二进制,调用操作。

  • Shell是一个命令行解释器,它为用户提供一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

  • Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。

2、Shell的分类

  • 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。

3、使用echo $SHELL查看用的是什么Shell。

例1:echo $SHELL命令,查看用的是什么Shell。

本机用的正式bash。

4、使用vi /etc/shells命令查看支持哪些Shell。

例1:vi /etc/shells命令,查看支持的Shell。

 

echo命令

语法:

echo [选项] [输出内容]选项:-e 支持反斜线控制的字符转换

控制字符作用
\a输出警告音
\b退格键,就是向左删除键
\n换行符
\r回车键
\t制表符,也就是Tab键
\v垂直制表符
\Onnn按照八进制ASCII码表输出字符。其中0为数字零,nnn是三位八进制数
\xhh按照十六进制ASCII码表输出字符。其中hh是两位十六进制数。

例1:echo "Hello Linux"命令,输出“Hello Linux"。

例2:echo -e "a\nb\nc"命令,换行输出。

例3:echo -e "\e[1;31m世界那么大,我想去看看。\e[0m"命令,显示颜色。

 

第一个Shell脚本

按Ctrl+X离开。

所有命令如下:

其中#代表的是注释,"#!/bin/bash"必须写上。"nano hello.sh"命令是创建hello.sh文件并编辑内容。

脚本执行:

  • 赋予执行权限,直接运行

    • chmod 755 hello.sh

    • ./hello.sh

  • 通过Bash调用执行脚本

    • bash hello.sh

 

别名与快捷键

可以设置别名来调用很长的命令,而不至于每次都输入长命令。

可以通过alias命令来设置别名。

语法:

alias查看系统中所有的命令别名
alias 别名='原命令'设定命令别名
vi ~/.bashrc写入环境变量配置文件,设置别名永久生效。让配置别名不用重启就直接生效,使用[source .bashrc]命令
unalias 别名删除别名

由于执行的别名可能和系统已有的命令相同,如rm,那么它们的执行是有先后顺序的。

命令生效顺序:

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

  • 第二顺位执行别名。

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

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

例1:alias命令,查看系统中所有已存在的别名。

例2:alias lh='ls -lh'命令,将"ls -lh"命令创建一个名为"lh"的别名,用来人性化显示文件详细信息。

但这个设置的别名是临时的,即重启后别名又会消失。

例3:vi ~/.bashrc命令和source /root/.bashrc命令,设置永久别名。

”source /root/.bashrc"命令可以使上面的设置立即生效,不用重启就能永久配置别名。

测试la命令

例4:unalias lh命令,删除名为lh的别名。

常用快捷键:

  • Ctrl+C 强制终止当前命令
  • Ctrl+L 清屏
  • Ctrl+A 光标移动到命令行首
  • Ctrl+E 光标移动到命令行尾
  • Ctrl+U 从光标所在位置删除到行首
  • Ctrl+X 把命令放入后台
  • Ctrl+R 在历史命令中搜索

 

历史命令

语法:

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

例1:history命令,查看当前历史命令。

例2:history -c命令,清空历史命令。

例3:cat ~/.bash_history命令,查看历史命令保存文件。

历史命令的调用:

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

  • 使用"!n"重复执行第n条命令

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

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

历史命令的补全:

  • 使用Tab键可以加快输入速度,便于命令排错。
  • 在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按”Tab“键就会自动进行补全。

 

输出重定向

例1:ls > test.log命令,将ls命令的结果内容保存到test.log文件中,但是是覆盖原内容。

例2:ls >> test.log命令,将test.log文件中追加ls命令的结果内容。

例3:lss 2> test.log命令,lss是一个错误的命令,将产生的结果内容覆盖保存到test.log文件中。

例4:abc 2>> test.log命令,abc也是一个错误的命令,不过是将错误追加到test.log文件中,而不是覆盖。

如果是正确的命令,“2>>"则不会将输出保存到文件中。

例5:ls > test.log 2>&1命令和lss > test.log 2>&1命令,其中前者是正确命令,后者是错误命令,都会将结果内容以覆盖的方式保存到test.log文件中

例6:ls >> test.log 2>&1和lss >> test.log 2&1命令,其中前者是正确命令,后者是错误命令,都会将结果内容以追加的方式保存到test.log文件中

例7:ls &> test.log命令和lss &> test.log命令,以覆盖的方式将正确结果和错误结果都保存到test.log文件中。

例8:ls &>> test.log命令和lss &>> test.log命令,以追加的方式将正确结果和错误结果都保存到test.log文件中。

例9:ls >> success.log 2>> error.log命令和lss >> success.log 2>> error.og命令,前者是正确命令,后者是错误命令,即将产生的正确结果保存到success.log文件中,将错误结果保存到error.log文件中。

例10:ls &> /dev/null命令,将产生的结果无论正确还是错误都扔掉。

 

输入重定向

统计语法:

wc [选项][文件名]通过Ctrl+D显示统计结果选项:-c 统计字节数-w 统计单词数-l 统计行数

例1:wc命令,统计输入内容的字节数,单词数,行数。

例2:wc -l命令,统计行数。

例3:wc error.log命令,统计文件中的字符数行数等。

 

管道符

可以使用管道符实现多命令顺序执行。

多命令顺序执行:

多命令顺序执行语法:

命令1 ; 命令2 ; 命令3多个命令顺序执行,命令之间没有任何逻辑联系。
命令1 && 命令2逻辑与。当命令1正确执行,则命令2才会执行。当命令1执行不正确,则命令2不会执行。
命令1 || 命令2逻辑或。当命令1执行不正确,则命令2才会执行。当命令1正确执行,则命令2不会执行。

管道符语法:

命令1 | 命令2命令1的正确输出作为命令2的操作对象,命令2必须能够操作命令1的输出

例1:ls ; lss ; cd /命令,几个命令顺序执行,无论命令是否正确都会执行完。

例2:ls && cd /命令和lss && ls命令,只有命令1正确执行,命令2才会正确执行,如果命令1错误,则命令2不会执行。

例3:ls || cd /命令和lss || ls命令,如果命令1正确执行,则命令2不会执行;如果命令1错误,那么命令2就会执行。

例4:ls && echo yes || echo no命令,如果ls命令正确则输出yes,不正确则输出no。

例5:netstat -an | grep ESTABLISHED命令,查看正在连接的用户。

 

通配符

例1:find install.log*命令,查询匹配install.log的文件。

例2:echo `date`命令和echo $(date)命令,都可以执行系统命令,但推荐后者$(),因为反引号容易被看成单引号。

例3:d=date命令和$d命令,即输出变量。


推荐阅读
  • 20145216《信息安全系统设计基础》第一周学习总结教材学习内容总结Linux基础1.ls命令ls或ls.显示是当前目录的内容,这里“.”就是参数,表示当前目录,是缺省的 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • Centos7安装高版本zshzim框架安装powerlevel10k
    1.安装高版本zsh1.1卸载低版本zshsudoyumremovezsh-y1.2下载源码源码:https:zsh.sourceforge.ioArcsour ... [详细]
  • Linux 命令行获取天气
    目标:使用Linux命令行显示天气预报。发行版:所有Linux发行版。要求:能连上因特网的Linux难度:容易约定& ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • C语言的经典程序有哪些
    本篇内容介绍了“C语言的经典程序有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有