整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

理解 Bash 中的尖括号

初学者介绍尖括号。

-- Paul Brown

Bash 内置了很多诸如 ls、cd、mv 这样的重要的命令,也有很多诸如 grep、awk、sed 这些有用的工具。但除此之外,其实 Bash 中还有很多可以 起到胶水作用 的标点符号,例如点号(.)、逗号(,)、括号(<>)、引号(")之类。下面我们就来看一下可以用来进行数据转换和转移的尖括号(<>)。

转移数据

如果你对其它编程语言有所了解,你会知道尖括号 < 和 > 一般是作为逻辑运算符,用来比较两个值之间的大小关系。如果你还编写 HTML,尖括号作为各种标签的一部分,就更不会让你感到陌生了。

在 shell 脚本语言中,尖括号可以将数据从一个地方转移到另一个地方。例如可以这样把数据存放到一个文件当中:

ls > dir_content.txt

在上面的例子中,> 符号让 shell 将 ls 命令的输出结果写入到 dir_content.txt 里,而不是直接显示在命令行中。需要注意的是,如果 dir_content.txt 这个文件不存在,Bash 会为你创建;但是如果 dir_content.txt 是一个已有的非空文件,它的内容就会被覆盖掉。所以执行类似的操作之前务必谨慎。

你也可以不使用 > 而使用 >>,这样就可以把新的数据追加到文件的末端而不会覆盖掉文件中已有的数据了。例如:

ls $HOME > dir_content.txt; wc -l dir_content.txt >> dir_content.txt

在这串命令里,首先将家目录的内容写入到 dir_content.txt 文件中,然后使用 wc -l 计算出 dir_content.txt 文件的行数(也就是家目录中的文件数)并追加到 dir_content.txt 的末尾。

在我的机器上执行上述命令之后,dir_content.txt 的内容会是以下这样:

Applications

bin

cloud

Desktop

Documents

Downloads

Games

ISOs

lib

logs

Music

OpenSCAD

Pictures

Public

Templates

test_dir

Videos

17 dir_content.txt

你可以将 > 和 >> 作为箭头来理解。当然,这个箭头的指向也可以反过来。例如,Coen brothers (LCTT 译注:科恩兄弟,一个美国电影导演组合)的一些演员以及他们出演电影的次数保存在 CBActors 文件中,就像这样:

John Goodman 5

John Turturro 3

George Clooney 2

Frances McDormand 6

Steve Buscemi 5

Jon Polito 4

Tony Shalhoub 3

James Gandolfini 1

你可以执行这样的命令:

sort < CBActors

Frances McDormand 6 # 你会得到这样的输出

George Clooney 2

James Gandolfini 1

John Goodman 5

John Turturro 3

Jon Polito 4

Steve Buscemi 5

Tony Shalhoub 3

就可以使用 sort 命令将这个列表按照字母顺序输出。但是,sort 命令本来就可以接受传入一个文件,因此在这里使用 < 会略显多余,直接执行 sort CBActors 就可以得到期望的结果。

如果你想知道 Coens 最喜欢的演员是谁,你可以这样操作。首先:

while read name surname films; do echo $films $name $surname > filmsfirst.txt; done < CBActors

上面这串命令写在多行中可能会比较易读:

while read name surname films;\

do

echo $films $name $surname >> filmsfirst;\

done < CBActors

下面来分析一下这些命令做了什么:

  • while …; do … done 是一个循环结构。当 while 后面的条件成立时,do 和 done 之间的部分会一直重复执行;
  • read 语句会按行读入内容。read 会从标准输入中持续读入,直到没有内容可读入;
  • CBActors 文件的内容会通过 < 从标准输入中读入,因此 while 循环会将 CBActors 文件逐行完整读入;
  • read 命令可以按照空格将每一行内容划分为三个字段,然后分别将这三个字段赋值给 name、surname 和 films 三个变量,这样就可以很方便地通过 echo $films $name $surname >> filmsfirst;\ 来重新排列几个字段的放置顺序并存放到 filmfirst 文件里面了。

执行完以后,查看 filmsfirst 文件,内容会是这样的:

5 John Goodman

3 John Turturro

2 George Clooney

6 Frances McDormand

5 Steve Buscemi

4 Jon Polito

3 Tony Shalhoub

1 James Gandolfini

这时候再使用 sort 命令:

sort -r filmsfirst

就可以看到 Coens 最喜欢的演员是 Frances McDormand 了。(-r 参数表示降序排列,因此 McDormand 会排在最前面)


via: https://www.linux.com/blog/learn/2019/1/understanding-angle-brackets-bash

作者: Paul Brown 选题: lujun9972 译者: HankChow 校对: wxy

本文由 LCTT 原创编译, Linux中国 荣誉推出

点击“了解更多”可访问文内链接

TML教程

超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。

您可以使用 HTML 来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器来解析。

在本教程中,您将学习如何使用 HTML 来创建站点。

HTML 很容易学习!相信您能很快学会它!

本教程包含了数百个 HTML 实例。

使用本站的编辑器,您可以轻松实现在线修改 HTML,并查看实例运行结果。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>孙叫兽的博客</title>
    </head>
    <body>
        <h1>我的第一个标题</h1>
        <p>我的第一个段落。</p>
    </body>
</html>

HTML 文档的后缀名

.html

.htm

都可以。

  • HTML 简介

实例:

<!doctype html>
<html>
<header>
<meta charset="utf-8">
<title>孙叫兽的博客</title>
</header>
<body>
<h1>这是我的标题</h1>
<p>这是我的段落</p>
</body>
</html>

实例解析

  • <!DOCTYPE html> 声明为 HTML5 文档
  • <html> 元素是 HTML 页面的根元素
  • <head> 元素包含了文档的元(meta)数据,如 <meta charset=“utf-8”> 定义网页编码格式为 utf-8。
  • <title> 元素描述了文档的标题
  • <body> 元素包含了可见的页面内容
  • <h1> 元素定义一个大标题
  • <p> 元素定义一个段落

什么是HTML?

  • HTML 是用来描述网页的一种语言。
  • HTML 指的是超文本标记语言: HyperText Markup Language
  • HTML 不是一种编程语言,而是一种标记语言
  • 标记语言是一套标记标签 (markup tag)
  • HTML 使用标记标签来描述网页
  • HTML 文档包含了HTML 标签及文本内容
  • HTML文档也叫做 web 页面
  • HTML 标签
  • HTML 标记标签通常被称为 HTML

标签

  • HTML 标签是由尖括号包围的关键词,比如 <html>
  • HTML 标签通常是成对出现的,比如 <b> 和 </b>
  • 标签对中的第一个标签是开始标签,第二个标签是结束标签
  • 开始和结束标签也被称为开放标签和闭合标签
  • <标签>内容</标签>

    html元素

    “HTML 标签” 和 “HTML 元素” 通常都是描述同样的意思.

    但是严格来讲, 一个 HTML 元素包含了开始标签与结束标签,如下实例:

    HTML 元素:

    <p>这是一个段落</p>

    web浏览器

    Web浏览器(如谷歌浏览器,Internet Explorer,Firefox,Safari)是用于读取HTML文件,并将其作为网页显示。

    浏览器并不是直接显示的HTML标签,但可以使用标签来决定如何展现HTML页面的内容给用户

    html网页结构

    <html>
        <head>
            <title>页面标题</title>
        </head>
        <body>
            <h1>这是一个标题</h1>
            <p>这是一个段落。</p>
            <p>这是另外一个段落。</p>
        </body>
    </html>

    html的版本:

    <!DOCTYPE>声明

    <!DOCTYPE>声明有助于浏览器中正确显示网页。

    网络上有很多不同的文件,如果能够正确声明HTML的版本,浏览器就能正确显示网页内容。

    doctype 声明是不区分大小写的,以下方式均可:

    <!DOCTYPE html>
    <!DOCTYPE HTML>
    <!doctype html>
    <!Doctype Html>

    html5

    <!DOCTYPE html>

    html4

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4 Transitional//EN""
    http://www.w3.org/TR/html4/loose.dtd">

    xhtml1.0

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""
    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    中文编码

    目前在大部分浏览器中,直接输出中文会出现中文乱码的情况,这时候我们就需要在头部将字符声明为 UTF-8。

    学习一门编程语言之前,了解它的特性,带着对特性的好奇和疑问去学习是最快最好的学习方法。就像你知道某个地方有很多宝藏,带着藏宝图去寻找宝藏,你一定会大有收获的。

    编程语言就是人与计算机进行沟通的语言,在现实生活中,见什么人说什么话我们都很清楚,那在与计算机沟通的世界中,做什么事用什么编程语言沟通也是同样的道理,前提就是我们要了解这些编程语言,在你需要选择的时候做出正确的判断,这也正是我写此篇文章的意义。


    什么是 HTML?


    HTML的英文全称是 Hyper Text Marked Language,中文意思为超文本标记语言。

    什么是超文本标记语言?我们先对超文本标记这五个字进行一一的拆分,然后去更好的理解它的意思。在理解超文本时,我们先来理解一下文本在我们的日常生活中代指的是什么东西?

    文本包含了比如说你新建的一个Word文档,一个txt文件,甚至一个Html文件。这三个文件有相同的地方, 也有不同的地方。

    相同的地方在于不论是Word文档,还是txt文件或者是Html文件,我们都能编写文本的内容。Word文档的不同在于我们可以在Word文档中设置一些超链接,放一些图片等操作。

    txt文件就有一定的局限性,比如你放一张图片或者设置超链接等这些行为都是不行。在Html文件中,可以存放文本、图片、音频、视频等,甚至在网页中见到的一些很炫酷的小游戏,都可以在Html文件中去编写。

    那接下来解释下超文本。我们在Html文件中编写代码,其实编写的是超文本。所谓超文本,大家应该能联想到超,即超出文本,超文本比文本更高一级,它包含了我们常见的音频、视频以及超链接等。

    这些被我们称为超文本,在Html文件里面既能存放这些内容,也能存放文本内容,甚至是文章里的一级标题、二级标题、列表、选项等,都可以通过HTML代码去编写,这些内容我们就称为超文本。

    那么这些内容到底用哪些来去展现或展示呢?标记。

    什么是标记呢?


    用百度官网来分析一下“标记”,在网页页面上存放很多的内容,有超链接、图片、输入框等。我们先看看右上角的新闻字样,这是一个超链接,我们看下源码,打开后的样子是这样的:

    我们把蓝色的新闻部分,也就是我用红框标记的部分复制一下,其他代码删除:


    “新闻”被左边和右边的“a”包裹起来了,这就构成了超链接,这就像我们常见的书名号。如果我们单是输出红楼梦字样,就是一个文本,但如果用《》书名号包裹起来,《红楼梦》,大家都能知道这是一本书。

    把包裹在“新闻”两边的a标签对应包裹在红楼梦两边的书名号来看很类似。用书名号这个标记把红楼梦给包裹起来,就叫做书名,同理,用带尖括号的a这个标记把新闻这个文本内容给包裹起来,在网页中称为超链接,这对带尖括号的a就叫做标记。

    标记是用HTML自己的语法规则把文本内容给包裹起来,这就叫做标记。这种标记的书写也非常简单,包裹在文本左边的叫开始标记,包裹在文本右边的叫结束标记。我们看到的网页中显示的一级标题、二级标题、超链接、图片、音频等内容其实学习它们所对应的标记就可以了。


    HTML的历史发展过程



    接着我们来看下HTML从最原始到现在至今整个HTML语言的历史发展过程。

    • HTML 1.0:在1993年6月作为互联网工程工作小组(IETF)工作草案发布,由此超文本标记语言第一版诞生。
    • HTML 2.0:1995年1 1月作为RFC 1866发布,于2000年6月发布之后被宣布已经过时。
    • HTML 3.2:1997年1月14日,HTML3.2版本诞生,成为W3C的推荐标准。
    • HTML 4.0:1997年12月18日,HTML4.0版本诞生,由此成为了W3C的推荐标准。
    • HTML 4.01(微小改进):1999年12月24日,HTML4.01版本诞生,成为W3C的推荐标准。
    • HTML 5:2014年10月28日,HTML5版本诞生,H5成为W3C推荐的标准。

    HTML5的诞生,标记着互联网时代的发展。比如在HTML5里面诞生的音频、视频、图像、动画等都做了新的标准,它对于浏览器的兼容也是得到了一定的处理,由此可见,HTML的整个历史发展目前为止我们所使用的版本主要是99年诞生的HTML 4.01以及2014年诞生的HTML5。



    HTML的应用


    时代在进步,科技在发展,这个超文本标记语言从HTML1.0版本发展到如今的HTML5版本,已经有了极大的改善。

    在以前的HTML版本中,常用的是对文本的编辑、超链接、图片等,其用途很广泛,许多公司用来创建和发布消息,比如布告、技术手册、各种信函等,都能用它来描述。

    HTML是一门严谨的编程语言,有组织性、模块化、规范化的。不过对于开发者而言,不同浏览器HTML的兼容性是考虑的问题。随着HTML5的诞生,我们迎来了一个新的网络世纪,各种动画、音频、视频、图像等炫酷的东西都可以做。还有各种小程序、小游戏以及App的开发应用数不胜数,其兼容性也得到了很大的改善,这意味着对前端的需求以及重视程度都有了极大的改变。

    HTML是前端很重要的一环,我们学好它才能在前端大军中齐头并进,在各种应用小程序的使用中游刃有余,未来的美好生活就掌握在你的手中。

    【END】