当前位置: 首页 > Linux

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

时间:2023-04-06 06:23:14 Linux

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