Linux下高效编写Shell—shell特殊字符汇总

2023-11-19

全文转载

 

Linux下高效编写Shell——shell特殊字符汇总

Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好,往往能给我们起到事半功倍的效果,为此,特地将Shell里面的一些符号说明罗列成对照表的形式,以便快速的查找。看看你知道下表中哦你的哪些Shell符号呢?

Shell符号及各种解释对照表

Shell符号 使用方法及说明
#

注释符号(Hashmark[Comments])

1.在shell文件的行首,作为include标记,#!/bin/bash;

2. 其他地方作为注释使用,在一行中,#后面的内容并不会被执行,除非;

3. 但是用单/双引号包围时,#作为#号字符本身,不具有注释作用。

; 作为多语句的分隔符(Command separator [semicolon])。多个语句要放在同一行的时候,可以使用分号分隔。注意,有时候分号需要转义。
;; 连续分号(Terminator [double semicolon])。在使用case选项的时候,作为每个选项的终结符。在Bash version 4+ 的时候,还可以使用[;;&], [;&]
.

点号(dot command [period])。

1. 相当于bash内建命令source,如:

#!/bin/bash
. data-file
#包含data-file;

2. 作为文件名的一部分,在文件名的开头,表示该文件为隐藏文件,ls一般不显示出来(ls -a 可以显示);

3. 作为目录名,一个点代表当前目录,两个点号代表上层目录(当前目录的父目录)。注意,两个以上的点不出现,除非你用引号(单/双)包围作为点号字符本身;

4. 正则表达式中,点号表示任意一个字符。

" 双引号(partial quoting [double quote])。部分引用。双引号包围的内容可以允许变量扩展,也允许转义字符的存在。如果字符串内出现双引号本身,需要转义,因此不一定双引号是成对的。
' 单引号(full quoting [single quote])。单引号括住的内容,被视为单一字符串,引号内的禁止变量扩展,所有字符均作为字符本身处理(除单引号本身之外),单引号必须成对出现。
,

逗号(comma operator [comma])。

1. 用在连接一连串的数学表达式中,这串数学表达式均被求值,但只有最后一个求值结果被返回。如:

#!/bin/bash
let t1=((a=5+1, b=7+2))
echo t1=$t1, a=$a, b=$b
## 这个$t1=$b;

2. 用于参数替代中,表示首字母小写,如果是两个逗号,则表示全部小写,注意,这个特性在bash version 4的时候被添加的。例子:

a="ATest"
echo ${a,}
echo ${a,,}
## 前面输出aTest,后面输出的是atest。
\

反斜线,反斜杆(escape [backslash])。

1. 放在特殊符号之前,转义特殊符号的作用,仅表示特殊符号本身,这在字符串中常用;

2. 放在一行指令的最末端,表示紧接着的回车无效(其实也就是转义了Enter),后继新行的输入仍然作为当前指令的一部分。

/

斜线,斜杆(Filename path separator [forward slash])。

1.作为路径的分隔符,路径中仅有一个斜杆表示根目录,以斜杆开头的路径表示从根目录开始的路径;

2.在作为运算符的时候,表示除法符号。如:

a=4/2
`

反引号,后引号(Command substitution[backquotes])。命令替换。这个引号包围的为命令,可以执行包围的命令,并将执行的结果赋值给变量。如:

a=`dirname '/tmp/x.log'` 
## 后面dirname返回的结果会赋值给a,
## 注意,此处Mitchell特地使用了反引号和单引号,注意区别。
:

冒号(null command [colon])。空命令,这个命令什么都不做,但是有返回值,返回值为0(即:true)。这个命令的作用非常奇妙。

1. 可做while死循环的条件;

2. 在if分支中作为占位符(即某一分支什么都不做的时候);

3. 放在必须要有两元操作的地方作为分隔符,如:

: ${username=`whoami`}

4. 在参数替换中为字符串变量赋值,在重定向操作(>)中,把一个文件长度截断为0(:>>这样用的时候,目标存在则什么都不做),这个只能在普通文件中使用,不能在管道,符号链接和其他特殊文件中使用;

5. 甚至你可以用来注释(#后的内容不会被检查,但:后的内容会被检查,如果有语句如果出现语法错误,则会报错);

6. 你也可以作为域分隔符,比如环境变量$PATH中,或者passwd中,都有冒号的作为域分隔符的存在;

7. 你也可以将冒号作为函数名,不过这个会将冒号的本来意义转变(如果你不小心作为函数名,你可以使用unset -f : 来取消function的定义)。

!

感叹号(reverse (or negate) [bang],[exclamation mark])。取反一个测试结果或退出状态。

1. 表示反逻辑,比如后面的!=,这个是表示不等于;

2. 表示取反,如:ls a[!0-9] #表示a后面不是紧接一个数字的文件;

3. 在不同的环境里面,感叹号也可以出现在间接变量引用里面;

4. 在命令行中,可以用于历史命令机制的调用,你可以试试!$,!#,或者!-3看看,不过要注意,这点特性不能在脚本文件里面使用(被禁用)。

*

星号(wildcard/arithmetic operator[asterisk])。

1. 作为匹配文件名扩展的一个通配符,能自动匹配给定目录下的每一个文件;

2. 正则表达式中可以作为字符限定符,表示其前面的匹配规则匹配任意次;

3. 算术运算中表示乘法。

** 双星号(double asterisk)。算术运算中表示求幂运算。
?

问号(test operator/wildcard[Question mark])。

1. 表示条件测试;

2. 在双括号内表示C风格的三元操作符((condition?true-result:false-result));

3. 参数替换表达式中用来测试一个变量是否设置了值;

4. 作为通配符,用于匹配文件名扩展特性中,用于匹配单个字符;

5. 正则表达式中,表示匹配其前面规则0次或者1次。

$

美元符号(Variable substitution[Dollar sign])。前面已经表示过一种意思。

1. 作为变量的前导符,用作变量替换,即引用一个变量的内容,比如:echo $PATH

2.在正则表达式中被定义为行末(End of line)。

${} 参数替换(Variable substitution)。请参考具体内容以获得的详细信息。
$‘...’ 引用内容展开,执行单引号内的转义内容(单引号原本是原样引用的),这种方式会将引号内的一个或者多个[\]转义后的八进制,十六进制值展开到ASCII或Unicode字符。
$*, $@ 位置参数,这个在使用脚本文件的时候,在传递参数的时候会用到。两者都能返回调用脚本文件的所有参数,但$*是将所有参数作为一个整体返回(字符串),而$@是将每个参数作为单元返回一个参数列表。注意,在使用的时候需要用双引号将$*,$@括住。这两个变量收$IFS的影响,如果在实作,要考虑其中的一些细节,更多请自行查阅参考位置参数(Positional Parameters)的相关信息。
$? 此变量值在使用的时候,返回的是最后一个命令、函数、或脚本的退出状态码值,如果没有错误则是0,如果为非0,则表示在此之前的最后一次执行有错误。
$$ 进程ID变量,这个变量保存了运行当前脚本的进程ID值。
()

圆括号(parentheses)。

1, 命令组(Command group)。由一组圆括号括起来的命令是命令组,命令组中的命令实在子shell(subshell)中执行。因为是在子shell内运行,因此在括号外面是没有办法获取括号内变量的值,但反过来,命令组内是可以获取到外面的值,这点有点像局部变量和全局变量的关系,在实作中,如果碰到要cd到子目录操作,并在操作完成后要返回到当前目录的时候,可以考虑使用subshell来处理;

2. 用于数组的初始化。

{xx,yy,zz,...}

花括号扩展(Brace Expansion)。 在命令中可以用这种扩展来扩展参数列表,命令将会依照列表中的括号分隔开的模式进行匹配扩展。注意的一点是,这花括号扩展中不能有空格存在,如果确实有必要空格,则必须被转义或者使用引号来引用。例子:

echo {a,b,c}-{\ d," e",' f'}
{a..z} 在Bash version 3时添加了这种花括号扩展的扩展,可以使用{A..Z}表示A-Z的所有字符列表,这种方式的扩展Mitchell测试了一下,好像仅适用于A-Z,a-z,还有数字{minNo..maxNo}的这种方式扩展。
{} 代码块(curly brackets)。这个是匿名函数,但是又与函数不同,在代码块里面的变量在代码块后面仍能访问。注意:花括号内侧需要有空格与语句分隔。另外,在xargs -i中的话,还可以作为文本的占位符,用以标记输出文本的位置。
{} \; 这个{}是表示路径名,这个并不是shell内建的,现在接触到的情况看,好像只用在find命令里。注意后面的分号,这个是结束find命令中-exec选项的命令序列,在实际使用的时候,要转义一下以免被shell理解错误。
[]

中括号(brackets)。

1. 测试的表示,Shell会测试在[]内的表达式,需要注意的是,[]是Shell内建的测试的一部分,而非使用外部命令/usr/bin/test的链接;

2. 在数组的上下文中,表示数组元素,方括号内填上数组元素的位置就能获得对应位置的内容,如:

Array[1]=xxx
echo ${Array[1]};
3. 表示字符集的范围,在正表达式中,方括号表示该位置可以匹配的字符集范围。
[[]] 双中括号(double brackets)。这个结构也是测试,测试[[]]之中的表达式(Shell的关键字)。这个比单中括号更能防止脚本里面的逻辑错误,比如:&&,||,<,>操作符能在一个[[]]里面测试通过,但是在[]却不能通过。[[]]里面没有文件名扩展(filename expansion)或是词分隔符(Word splitting),但是可以用参数扩展(Parameter expansion)和命令替换(command substitution)。不用文件名通配符和像空白这样的分隔符。注意,这里面如果出现了八进制,十六进制等,shell会自动执行转换比较。
$[...]

词表达表示整数扩展(integer expansion),在方括号里面执行整数表达式。例:

a=3
b=7
echo $[$a+$b]
echo $[$a*$b]
##返回是10和21
(()) 双括号(double parentheses)。 表示整数扩展(integer expansion)。功能和上面的$[]差不多,但是需要注意的是,$[]是会返回里面表达式的值的,而(())只是执行,并不会返回值。两者执行后如果变量值发生变化,都会影响到后继代码的运行。可对变量赋值,可以对变量进行一目操作符操作,也可以是二目,三目操作符。
>,&<,>&,>>,<,<>

重定向(redirection)。

scriptname >filename

重定向scriptname的输出到文件filename中去,如果文件存在则覆盖;

command &>filename

,会重定向command的标准输出(stdout)和标准错误(stderr)到文件filename中;

command >&2

把command的标准输出(stdout)重定向到标准错误(stderr)中;

scriptname >>filename

,吧scriptname的输出(同>)追加到文件filenmae中,如果文件不存在则创建。

[i]<>filename

 

打开filename这个文件用来读或者写,并且给文件指定i为它的文件描述符(file descriptor),文件不存在就会创建。

(command)>,<(command) 这是进程替换(Process Substitution)。使用的时候注意,括号和<,>之间是不能有空格的,否则报错。其作用有点类似通道,但和管道在用法上又有些不同,管道是作为子进程的方式来运行的,这个命令会在/dev/fd/下面产生类似/dev/fd/63,/dev/fd/62这类临时文件,用来传递数据。Mitchell个人猜测之所以用这种方法来传递,是因为前后两个不属于同一个进程,因此需要用共享文件的方式来传递资料(这么说其实管道也应该有同样的文件?)。网上有人说这个只是共享文件而已,但是经过测试,发现虽然有/dev/fd/63这样的文件产生,但是这个文件其实是指向pipe:[43434]这样的通道的链接。
<< 双小于号(here-document[double less then marks])。这个也被称为Here-document,用来将后继的内容重定向到左侧命令的stdin中。<<可以节省格式化时间,别且使命令执行的处理更容易。在实作的时候只需要输入<<和终止标志符,而后(一般是回车后)你就可以输入任何内容,只要在最后的新行中输入终止标志符,即可完成数据的导入。使用here-document的时候,你可以保留空格,换行等。如果要让shell脚本更整洁一点,可以在<<和终止符之间放上一个连字符(-)。
<<< 三个小于号(here-strings)。Here-字串和Here-document类似,here-strings语法:command [args] <<<["]$word["];$word会展开并作为command的stdin。
<,> 小于,大于号(ASCII Comparison)。ASCII比较,进行的是变量的ASCII比较,字串?数字?呃...这个...不就是ASCII比较么?
\<...\> 词界符(word boundary)。这个是用在正则表达式中的一个特殊分隔符,用来标记单词的分界。比如:the会匹配there,another,them等等,如果仅仅要匹配the,就可以使用这个词界符,\<the\>就只能匹配the了。
| 管道(pipe)。管道是Linux,Unix都有的概念,是非常基础,也是非常重要的一个概念。它的作用是将管道前(左边)的命令产生的输出(stdout)作为管道后(右边)的命令的输入(stdin)。如:ls | wc l,使用管道就可以将命令连接在一起。注意:管道是每一个进程的标准输出都会作为下一个命令的标准输入,期间的标准输出不能跨越管道作为后继命令的标准输入,如:            
cat filename | ls -al | sort
##想想这个的输出? 同时,管道是以子进程来运行的,所以管道并不能引起变量改变。
>| 强制重定向(force redirection)。这会强制重写已经存在的文件。
& 与号(Run job in background[ampersand])。如果命令后面跟上一个&符号,这个命令将会在后台运行。有的时候,脚本中在一条在后台运行的命令可能会引起脚本挂起,等待输入,出现这种情况可以在原有的脚本后面使用wait命令来修复。
&&,|| 逻辑操作符(logical operator)。在测试结构中,可以用这两个操作符来进行连接两个逻辑值。||是当测试条件有一个为真时返回0(真),全假为假;&&是当测试条件两个都为真时返回真(0),有假为假。
-

减号,连字符(Hyphen/minus/dash)。 1. 作为选项,前缀[option, prefix]使用。用于命令或者过滤器的选项标志;操作符的前缀。如:

## COMMAND -[选项列表] 
ls -al
sort -dfu $file
set -- $variable
 
if [ $file -ot $file2 ]
then
    echo "$file is older than $file2."
fi

 

2. 用于stdin或者stdout的重定向的源或目的[dash].在tar没有bunzip2的程序补丁时,我们可以这样:

bunzip2 linux-2.6.13.tar.bz2 | tar xvf - 
##将前面解压的数据作为tar的标准输入
##(这里使用一个-表示)

注意:在实作的时候,如果文件名是以[-]开头的,那么在加上这个作为定向操作符的时候,可能会出错,此时应该为文件加上合适的前缀路径,以避免这种情况发生,同样的,在echo变量的时候,如果变量是以[-]开始,那么可能也会产生意想不到的结果,为了保险起见,可以使用双引号引用标量:

var="-n"
echo $var
## 试试看有什么输出?

 

还有,这种表示方法不是Bash内建的,要达到此点的这种效果,需要看你使用的软件是否支持这种操作;

3. 表示先前的工作目录(previous working directory),因此,如果你cd到其他目录下要放回前一个路径的时候,可以使用cd -来达到目的,其实,这里的[-]使用的是环境变量的$OLDPWD,注意:这里的[-]和前一点是不同的;

4. 减号或者负号,用在算术操作中。

=

等号(Equals)。

1. 赋值操作,给变量赋值,么有空格在等号两侧;

2. 在比较测试中作为比较符出现,这里要注意,如果在中括号中作为比较出现,需要有空格符在等号左右两侧。

+

加号(Plus)。

1. 算术操作符,表示加法;

2. 在正则表达式中,表示的是其前的这个匹配规则匹配最少一次;

3.在命令或过滤器中作为选项标记,在某些命令或者内置命令中使用+来启用某些选项,使用-来禁止;

4. 在参数替换(parameter substitution)中,+前缀表示替代值(当变量为空的时候,使用+后面的值)

%

百分号(modulo[percent sign])。

1.在算术运算中,这个是求模操作符,即两个数进行除法运算后的余数;

2. 在参数替换(parameter substitution)中,可以作为模式匹配。例子:

p=b*9
var="abcd12345abc479"
echo ${var%p}, ${var%%p}
##从右边开始查找(想想从左是那个符号?)
##任何在b和9之间的内容(含)
##第一个是找到最短的符合匹配项
##后一个是找最大符合的匹配项(贪婪匹配?)
~ 波浪号(Home directory[tilde]),这个和内部变量$HOME是一样的。默认表示当前用户的家目录(主目录),这个和~/效果一致,如果波浪号后面跟用户名,表示是该用户的家目录,
~+ 当前的工作目录(current working directory)。这个和内置变量$PWD一样。
~- 前一个工作目录(previous working directory)。这个和内部变量$OLDPWD一致,之前的[-]也一样。
=~ Bash 版本3中有介绍,这个是正则表达式匹配。可用在[[]]测试中,比如:            
var="this is a test message."
[[ "$var" =~ tf*message ]] && echo "Sir. Found that." || echo "Sorry Sir. No match be found."
##你可以修改中间的正则表达式匹配项,正则表达式可以但不一定需要使用双引号括起来。
^

脱字符(caret)。

1. 在正则表达式中,作为一行的行首(beginning-of-line)位置标志符;

2. 在参数替换(Parameter substitution)中,这个用法有两种,一个脱字符(${var^}),或两个(${var^^}),分别表示第一个字母大写,全部大写的意思(Bash version >=4)。

空白 空白符(Whitespace)。空白符不仅仅是指空格(spaces),还包括制表符(tabs),空行(blank lines),或者这几种的组合。可用做函数的分隔符,分隔命令或变量,空行不会影响脚本的行为,因此可以用它来规划脚本代码,以增加可读性,在内置的特殊变量$IFS可以用来针对某些命令进行输入的参数进行分割,其默认就是空白符。在字符串或变量中如果有空白符,可以使用引号来规避可能的错误。

 

怎样,你有多少是了解的呢?Mitchell在开始的Shell脚本时候,发现在这里面有好多都是不认识呢。

说明:

因为涉及到翻译,文中内容不一定完全翻译准确,如果你发现有错误的地方,还请包涵指正。

参考:

  1. 本文主要内容来源:Advanced Bash-Scripting Guide

  2. 对话 UNIX: !$#@*%

  3. wikipedia的Here文档

参考内容为本篇成文之际给予Mitchell帮助较大的文章,在整个过程中还有很多网站信息给我提供了帮助,在此对他们的作者的无私贡献表示感谢!

 

 

转载于:https://blog.51cto.com/foolishfish/1431360

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux下高效编写Shell—shell特殊字符汇总 的相关文章

  • 操作系统常见面试题及答案

    操作系统 从系统观点看 是计算机系统的一个系统软件 管理和控制计算机系统中的资源 从用户观点看 操作系统是用户与计算机之间的接口 从软件观点看 操作系统是程序和数据结构的集合 1 什么是进程 process 和线程 thread 有何区别
  • linux中esc无法正常退出insert

    ctrl c
  • 在android 输出log 信息 用于调试

    要想在 jni native 代码中看打印信息 printf 是不行的 需使用 android log print 如下所示 android log print ANDROID LOG INFO ProjectName I am d n n
  • python的文件操作

    一 文件的基本操作 1 读文件read f open filename r encoding utf 8 data f read 读文件 f close 关闭文件 1 绝对路径的易错点 文件路径中 前要加转义字符 或者 使用r使转义字符失效
  • Android declare-styleable:自定义控件的属性(attr.xml,TypedArray)的使用

    android 自定义属性类型的使用 转自 http www cnblogs com ufocdy archive 2011 05 27 2060221 html 做Android布局是件很享受的事 这得益于他良好的xml方式 使用xml可
  • 关于define与defined的区别

    1 define用来定义一个常量 常量也是全局范围的 不用管作用域就可以在脚本的任何地方访问 常量 一个常量一旦被定义 就不能再改变或者取消定义 如 define path root www web define 为常量的值root www
  • 什么是计算机域名和域名定义?

    domain is a very popular term used in computer and information technology Users generally do not know or misinterpret th
  • BAT面试题 - 找一个无序实数数组中的最大差值

    题目描述 一个无序的实数数组a i 要求求里面大小相邻的实数的差的最大值 比如 double a 1 5 4 0 2 100 这个无序的数组 相邻的数的最大差值为100 5 95 题目分析 这题有个简单的做法 首先就是对数组进行一个排序 然
  • 免费送书啦!细数Github大神们的开源书籍!

    作者 弗拉德 来源 弗拉德 公众号 fulade me Go 系列 Mastering GO 推荐语 本书适用于Golang程序员 您之前应该阅读有关Go的介绍性书籍 本书的内容包括但不限于并发 网络编程 垃圾回收 组合 GO UNIX系统
  • STM32F10X_系统定时器(systick)

    目录 1 参考文献 2 systick简介 3 systick寄存器 3 1 控制及状态寄存器 3 2 重装载数值寄存器 3 3 当前数值寄存器 3 4 校准数值寄存器 4 systick中断时间计算 5 systick配置库函数 1 参考
  • YOLOv5 提升模型训练结果小技巧

    一 数据集 1 每类图片数 建议 gt 1500张 2 每类实例数 推荐每类标签实例数 gt 10000 3 图片多样性 必须代表部署环境 对于现实世界我们推荐图片来自一天中不同时间 不同季节 不同天气 不同光照 不同角度和不同相机等 4
  • 线程封闭概念

    线程封闭概念 为什么要有线程封闭这个概念呢 多线程中访问共享可变数据时 涉及到线程间数据同步的问题 并不是所有时候都需要共享数据 所以线程封闭概念就出来了 在Java中线程封闭该怎么做呢 可以通过两个方法来做 ThreadLocal 1 T
  • 34 openEuler使用LVM管理硬盘-创建并挂载文件系统

    文章目录 34 openEuler使用LVM管理硬盘 创建并挂载文件系统 34 1 创建文件系统 34 2 手动挂载文件系统 34 3 自动挂载文件系统 34 openEuler使用LVM管理硬盘 创建并挂载文件系统 在创建完逻辑卷之后 需
  • android代码获取当前package的de目录

    获取de目录首先要获取DE CONTEXT Context deContext getApplicationContext createDeviceProtectedStorageContext 然后通过DE CONTEXT获取de目录 S
  • SpringBoot + MyBatis-plus + Druid 实现简单增删查改、动态条件查询和分页功能

    本文主要讲解 SpringBoot集成Mybatis plus 数据库连接池使用alibaba的druid 实现简单增删查改 动态条件查询和分页功能 项目整体结构 项目添加相关框架依赖 pom xml
  • 辐射强度、辐亮度、辐照度——一文搞定

    先写定义 上图是从网上看到的并重写的 其中我们最容易混淆的就是辐射强度 辐亮度 辐照度的关系 如果我们没有接触专业领域 那么我们可能接触最多的就是辐射强度 而这种现象是不对的 因为我们一般考虑的均为这光好强呀 照得屋里特别亮 这里的光亮 我
  • untiy的纹理格式介绍

    Desktop RGB Compressed DXT1 压缩的RGB纹理 这是最常见的漫反射纹理格式 4位 像素 32 KB 256x256 RGBA Compressed DXT5 压缩的RGBA纹理 这是漫反射和高光控制纹理的主要格式
  • 如何区分网线是几类的_怎么看网线是几类?

    我来回答下本行业的问题 我是做智能化弱电的 在弱电监控系统中网线是连接弱电局域网中必不可少的材料 也是综合布线系统中最常用的一种传输材质 网线是由4对线8芯组成 每芯都有颜色区分 用于数据传输 网线的分类 网线按照性能划分 可以分为五类线
  • 基于sklearn的简单分类器

    基于sklearn的简单分类器 输入 输出 3 1 0 2 5 1 1 8 1 6 4 0 5 2 0 3 5 1 4 7 1 4 1 0 7 5 已知部分输入和部分输出求当输入为7 5时输出为多少 我们观察上面的规律不难发现 当输入的第一
  • react 使用 scss

    react 使用 scss 日常记录开发中遇到的坑 1 使用 npm install sass loader node sass S 进行安装 2 在页面中直接使用 有时候可以 有时候不行 原因 我个人觉得安装的两个插件本版兼容问题 nod

随机推荐

  • vue,vue-cli和@vue/cli是什么关系?有什么区别?

    vue是构建用户界面的渐进式JavaScript 框架 vue cli是vue的一个官方脚手架工具 快速工程化命令工具 用来帮助程序员们快速搭建基于vue框架的开发环境 vue有很多脚手架工具 vue cli只是其中一种 侧重于单页面应用
  • pytorch 取对角线元素/矩阵对角线元素置0

    pytorch 取对角线元素 矩阵对角线元素置0 使用 torch diag 取对角线元素 使用 torch diag embed 恢复维度 import torch a torch randn 3 3 print a tensor 0 7
  • 在Echarts中的tooltip上添加点击按钮

    需求 在Echarts的tooltips中添加点击按钮并可以鼠标悬停点击该按钮 功能实现 在option中的tooltip添加enterable true的属性 表示鼠标可以移入tooltip中 再在formatter中添加
  • 从Java到区块链:如何成为区块链开发人员

    最近这些天 区块链是每个开发人员的谈资 来自各个领域的许多软件开发商现在正试图进入区块链市场 我们与Mobilunity的区块链软件开发人员Eugene Kyselev 讨论了他是如何走出区块链开发方面的第一步的 希望对大家有所帮助 JAX
  • 上海链节科技:通证经济的到来,拉开了去中心化协作序幕

    国家在肯定扶持区块链技术的同时 也针对币圈进行了强监管 区块链行业经历疯狂到沉默 开始回归理性 重新审视技术带来的变革 技术是无罪的 分布式存储 去中心化 智能合约 加密 挖矿等种种技术或设计理念 都是为了保障信任 实现价值传递 降低交易成
  • Dockerfile: ENTRYPOINT vs CMD

    Dockerfile ENTRYPOINT和CMD的区别 dongmao zhang software engineer 132 人赞同了该文章 翻译 Dockerfile ENTRYPOINT vs CMD 在我们查阅Dockerfile
  • ANDROID

    1 环境构建 2 模拟测试 3 Activity 4android中的资源 5 UI 6 各种控件
  • 剑指offer第二版面试题20:表示数值的字符串(java)

    题目描述 请实现一个函数用来判断字符串是否表示数值 包括整数和小数 例如 字符串 100 5e2 123 3 1416 和 1E 16 都表示数值 但是 12e 1a3 14 1 2 3 5 和 12e 4 3 都不是 分析 1 在数值之前
  • ubuntu18.04上安装TensorFlow2.0

    推特上几乎每天都有关于深度学习中Keras TensorFlow哪个个才是最好的框架的口水战 2019年后 这将不在是个问题 2019年初 tf keras 子模块已引入TensorFlow v1 10 0中 现在 在TensorFlow
  • 线性代数——二次型

    一 通过矩阵研究二次方程 二次型的定义 把含有n个变量的二次齐次函数或方程称为二次型 例如 二次型可以用矩阵来表示 可以表示为 更一般的情况 可以表示为 令 则上式表示为 这就是我们常见的二次型表示方式 在 Linear Algebra a
  • spark groupByKey和groupBy,groupByKey和reduceByKey的区别

    1 groupByKey Vs groupBy 用于对pairRDD按照key进行排序 author starxhong object Test def main args Array String Unit val sparkConf n
  • java文件引用规则 同目录的不用引用 包中的需要引用

    import com Employee public class Hello public static void main String args Person p new Person John Doe11 Employee e new
  • Java中实现数组全排列

    全排列 从n个不同元素中任取m m n 个元素 按照一定的顺序排列起来 叫做从n个不同元素中取出m个元素的一个排列 当m n时所有的排列情况叫全排列 例如 1 2 3三个元素的全排列为 1 2 3 1 3 2 2 1 3 2 3 1 3 1
  • 抖音seo矩阵系统源码搭建开发详解

    抖音SEO矩阵系统是一个用于提高抖音视频在搜索引擎排名的工具 如果你想开发自己的抖音SEO矩阵系统 以下是详细的步骤 开发步骤详解 确定你需要的功能和算法 抖音SEO矩阵系统包含很多功能 比如关键词研究 内容优化 链接建设 社交媒体营销等
  • csdn样式设置

    csdn样式设置 一 文字字体 颜色 大小 二 字体居中 加粗 倾斜 分割线 三 缩进 四 下划线 删除线 空行 换行 五 添加跳转目录 一 文字字体 颜色 大小 设置文字字体的基本语法如下 字体 常见的有宋体 微软雅黑 黑体 华文行楷 方
  • 《每日一题》NO.38:谈谈芯片的IO排布形式,与封装之间的关系?

    芯司机 每日一题 会每天更新一道IC面试笔试题 其中有些题目已经被很多企业参考采用了哦 聪明的你快来挑战一下吧 多多刷题 巩固技术知识 也为求职笔面试加加分 大家快来做题吧 今天是第38题 本题来谈谈芯片的IO排布形式 与封装之间的关系 今
  • 2021-Efficient Two-Stream Network for Violence Detection Using Separable Convolutional LSTM

    使用可分离卷积LSTM进行暴力检测的高效两流网络 本文亮点为作者对视频进行了预处理 1 取帧差作为输入 2 进行背景抑制 突出运动对象 在模型方面 作者选择了一种轻量级的CNN进行特征提取 MobileNet 模型分为双流 一个流的输入为帧
  • 【深度学习】 Python 和 NumPy 系列教程(廿一):Matplotlib详解:2、3d绘图类型(7)3D表面投影图(3D Surface Projection Plot)

    目录 一 前言 二 实验环境 三 Matplotlib详解 1 2d绘图类型 2 3d绘图类型 0 设置中文字体 1 3D线框图 3D Line Plot 2 3D散点图 3D Scatter Plot 3 3D条形图 3D Bar Plo
  • vue引入 wps在线编辑版,可进行 预览,编辑, 打印等功能。

    项目需求是 在vue中进行文档管理 因此最后选择了wps在线编辑版本 一 使用方法 在官网下载js sdk js文件 全局引入 import as WPS from assets js jwps es6 将其挂载到原型对象上 Vue pro
  • Linux下高效编写Shell—shell特殊字符汇总

    全文转载 Linux下高效编写Shell shell特殊字符汇总 Linux下无论如何都是要用到shell命令的 在Shell的实际使用中 有编程经验的很容易上手 但稍微有难度的是shell里面的那些个符号 各种特殊的符号在我们编写Shel