热门标签 | 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命令,即输出变量。


推荐阅读
  • 本文深入探讨了Linux内核中进程地址空间的设计与实现,包括虚拟地址空间的概念、内存描述符`mm_struct`的作用、内核线程与用户进程的区别、进程地址空间的分配方法、虚拟内存区域(VMA)的结构以及地址空间与页表之间的映射机制。 ... [详细]
  • 本文将详细介绍如何在Windows 10操作系统中轻松设置本地连接,包括基本步骤和常见问题的解决方案,帮助用户快速掌握操作技巧。 ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • 本文探讨了异步编程的发展历程,从最初的AJAX异步回调到现代的Promise、Generator+Co以及Async/Await等技术。文章详细分析了Promise的工作原理及其源码实现,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
  • 本文详细介绍了如何在最新版本的Xcode中重命名iOS项目,包括项目名称、应用名称及相关的文件夹和配置文件。通过本文,开发者可以轻松完成项目的重命名工作。 ... [详细]
  • Fiddler 安装与配置指南
    本文详细介绍了Fiddler的安装步骤及配置方法,旨在帮助用户顺利抓取用户Token。文章还涵盖了一些常见问题的解决方案,以确保安装过程顺利。 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • 本文详细介绍了在 Red Hat Linux 系统上安装 GCC 4.4.2 的步骤,包括必要的依赖库的安装及常见问题的解决方法。 ... [详细]
  • 深入解析C语言中的关键字及其分类
    本文将全面介绍C语言中的关键字,并按照功能将其分为数据类型关键字、控制结构关键字、存储类别关键字和其他关键字四大类,旨在帮助读者更好地理解和运用这些基本元素。C语言中共有32个关键字。 ... [详细]
  • 本文详细介绍了在Luat OS中如何实现C与Lua的混合编程,包括在C环境中运行Lua脚本、封装可被Lua调用的C语言库,以及C与Lua之间的数据交互方法。 ... [详细]
  • Eclipse Java 开发环境入门指南
    本文介绍了Eclipse开发环境的基本操作,包括界面布局、创建新项目、包和类的方法。 ... [详细]
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社区 版权所有