当前位置: 首页 > 科技观察

15个你必须知道的Linux特殊字符,妈妈再也不用担心我看不懂这些符号了!

时间:2023-03-12 03:41:19 科技观察

不知道你接触Linux系统多久了。你了解过Linux中的特殊字符吗?事实上,那些特殊字符非常有用。今天的文章就给大家简单介绍一下Linux。你需要知道的15个特殊字符,想学习或者刚学Linux的朋友们赶紧上车吧!主目录中的波浪号~指的是主目录,也就是我们用户的个人目录。无论您身在何处,输入cd~它都会带您回家!cd~比较高级的方法是在它后面加上一个具体的路径,直接定位到家目录下的指定位置。是不是很方便?cd~/work/archive.currentdirectory英语时期。代表当前目录。让我们看一下当前目录下的所有文件:.ls-al红圈中指的是当前目录,但是这个是没有意义的。我们在命令中用的比较多,如下:./script.sh告诉bash只在当前目录中搜索并执行script.sh文件,而不是在路径中查找。..parentdirectory中的两个英文句点..代表parentdirectory,也就是当前目录上面的目录。假设我们要回到上一级目录:cd..和之前一样,可以在它后面加一个具体的目录,意思是定位到与当前目录同级的其他目录:cd../projects//path目录分隔符斜线“/”指的是路径目录分隔符,这里没什么好说的。ls~/work/tests/不过有意思的是,如果/路径目录分隔符前面没有任何东西,是不是就代表这是顶级目录呢?由于Linux系统的目录树以/开头,所以只有一个/代表我们常说的系统根目录。cd/#注释以#开头,表示这句话是注释。#ThiswillbeignoredbytheBashshell即使上面的段落被忽略,它仍然会被添加到你的命令历史记录中。更强大的方法如下:先定义一个变量,赋值字符串"amazingalvin"this_string="amazingalvin"${this_string#amazing}返回this_string字符串变量,把amazing注释掉,可以回显输出看结果:echoawsome${this_string#amazing}amazing只是被注释掉了,并没有删除,取消注释后又会回来:echo$this_string?单字符通配符问号“?”指单字符通配符。BashShell支持三种通配符。表示匹配文件名中的任意字符,例如:lsbadge?.txt注意不匹配badge.txt,因为badge后面没有字符。就因为“?”匹配单个字符,这里有个看似厉害的玩法,就是你要查找的文件的文件名有多少个字符,你就可以输入多少个“?”。ls??????.txt看起来很强大,但是为什么我觉得这样很别扭??????*字符序列通配符星号*代表任意字符序列,匹配任意字符,包括空字符。以badge为例:lsbadge*可以看到匹配到badge.txt。匹配任何类型的文件:lssource.*[]字符集通配符方括号中的“[]”指的是字符集通配符,文件名中的相关字符必须至少匹配字符集中的一个字符。下面通过一个例子来体验一下它的作用:lsbadge_0[246].txtlsbadge_[01][789].txtlsbadge_[23][1-5].txt;命令分隔符类似于“;”我们每天都在用,就不说了,主要是用来分隔命令的。ls>count.txt;wc-lcount.txt;rmcount.txt注意这里,使用的时候;将命令分开,即使第一个命令失败,第二个命令也会运行,即使第二个命令失败,第三个命令也会运行,以此类推。如果你想在命令失败时停止,使用“&&”,如下:cd./doesntexist&&cp~/Documents/reports/*.&后台处理有时在终端运行命令时,比如vim,你想如何运行另一个命令?这里有一个小技巧,就是在后台启动程序的命令后加一个“&”符号,这样就可以在终端实现后台多任务的效果。vimcommand_address.page&显示后台进程的ID。<输入重定向许多Linux命令接受文件作为参数并从该文件获取数据。大多数这些命令也可以从流中获取输入。要创建流,请使用左尖括号“<”将文件重定向到命令中,如下所示:sortoutput重定向输入和输出是相反的,容易理解。使用右尖括号“>”将命令的输出重定向到一个文件中。ls>files.txtcatfiles.txt高端玩家也可以用数字:wcdoesntexist.txt2>errors.txtcaterrors.txt这里2是文件描述符,表示标准错误(stderr)。有兴趣的可以搜索文件说明什么是stdin、stdout、stderr的符号?|连接命令我们可以把“|”想象成一个将命令链接在一起的管道。它从一个命令获取输出并将其作为输入提供给下一个命令。管道命令的数量是任意的。catwords.txt|grep[cC]|sort-r解释一下,先用cat把words.txt文件的内容输入grep,然后grep提取出任何包含小写或大写的行(C/c),然后grep把这些行传递给sort,最后sort进行-r反向排序。!逻辑非这个类似于编程语言中的“!”,我们直接举个例子:[!-d./backup]&&mkdir./backup第一个命令-d判断当前目录下是否有备份目录文件,添加逻辑非!判断一下,第二个命令是创建一个备份目录文件,中间的&&就是上面说的。一般情况下,当备份目录不存在时,创建备份目录;当不存在时,不执行第二条命令。我们来看看文件夹的备份情况:ls-l-dbackup"!"的另一个用法是重新运行历史命令:!24!!“!!”意思是重新运行之前的命令。$变量表达式的开头“$”通常表示一个变量。这里是一些系统变量:echo$USERecho$HOMEecho$PATH当然你也可以自己定义变量并输出:ThisDistro=UbuntuMyNumber=2001echo$ThisDistroecho$MyNumber我们也可以通过"{}"来解锁更高级的玩法:先定义变量MyString赋值123456qwertyMyString=123456qwerty正常输出echo${MyString}加":6"返回索引位置6到末尾的字符串echo${MyString:6}显示从6字符开始的字符串index0echo${MyString:0:6}显示从index4开始的4个字符的字符串echo${MyString:4:4}说了这么多关于引用特殊字符,那么就有一个问题了,就是应该怎么写如果我只想在命令中将这些特殊字符显示为一般符号,我会怎么做?我们称这种引用方式,Linux中有三种引用方式。用双引号“”括起来,但这对“$”没有影响。echo"Todayis$(date)"用单引号''括起来,停止所有特殊字符功能。echo'Todayis$(date)'反斜杠\转义,在很多场合都很常见。echo"Todayis\$(date)"今天的科普文章有点长,请大家慢慢消化。