热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mvn打包找不懂符号_看完后Linux这些特殊符号你还不懂的话我就哭了

不知道大家接触Linux系统有多久了,可曾了解过Linux中有哪些特殊的字符呢?其实啊,那些特殊字符都大有用处呢,今天的文章

不知道大家接触 Linux 系统有多久了,可曾了解过 Linux 中有哪些特殊的字符呢?其实啊,那些特殊字符都大有用处呢,今天的文章就给大家简单地科普一下 Linux 中你需要了解的 15 个特殊字符,想学或刚学 Linux 的小伙伴赶紧上车了为!

~ 主目录

这个波浪号 ~ 指的是主目录,也就是我们用户的个人目录,无论你身在何方,输入 cd ~ 它将带你回家!

cd ~

a1ada4b35daac7e7f926d54345d78fb2.png

更高端的玩法就是在它后面加上具体的路径,直接定位到家目录中的指定位置,是不是很方便呢?

cd ~/work/archive

35d353536ad143a9ed6ccab045881c80.png

. 当前目录

英文句号 . 代表当前目录,我们来看一下当前目录下的全部文件:

ls -al

1f052a8f56ddc5239c799a90baae15e7.png

红圈里的 . 就是指当前目录,不过这没什么意义,我们更多的是在命令中使用它,如下:

./script.sh

这样做是在告诉 bash 只要在当前目录中查找并执行 script.sh 文件就好了,不用在路径中找了。

6c505cefbc146c84a2ba7621656f7f5e.png

.. 父目录

两个英文句号 .. 代表父目录,也就是当前目录的上一级目录。假设我们要回到上一级目录:

cd ..

280621af2406fa087b80f61e3f79c0f9.png

跟前面一样,你可以在它后面加具体的目录,这里的意思就是定位到与当前目录同级的其它目录:

cd ../projects/

e686c97fdc49caa4ca870def6fdd007b.png

/ 路径目录分隔符

斜杠 "/" 指的是路径目录分隔符,这里没什么好说的。

ls ~/work/tests/

f3d684b9550324e992c7bbc900fe1d01.png

但是,有意思的是,如果 / 路径目录分隔符前面没有东西的话,是不是就是意味着这是最上级的目录了?由于 Linux 系统的目录树均始于 / ,所以仅仅一个 / 代表了我们常说的系统根目录

cd /

197e1e36d2bad14554fc388aeac419cf.png

# 注释

# 开头,代表这句话是注释

# This will be ignored by the Bash shell

35e73e1d8ab47b666b79e03acb12686a.png

虽然上面那段话就被忽略了,但它还是会添加到您的命令历史记录中。

更厉害的做法如下:

先定义一个变量并给它赋值字符串 “amazing alvin”

this_string="amazing alvin"

0f2f7b46f5360001e2f08c1961a95f37.png

${this_string#amazing} 返回的是被注释掉 amazing 的 this_string 字符串变量,可以 echo 输出看下结果:

echo awsome ${this_string#amazing}

e1e4e7a49f627052b68a04f353738865.png

amazing 只是被注释掉而已,它并未被删除,去掉注释它就回来了:

echo $this_string

221f57272f07347db8e5930d896ab576.png

? 单字符通配符

问号 "?",指的是单字符通配符。Bash Shell 支持三种通配符。

它代表文件名中任意一个字符的匹配,例如:

ls badge?.txt

45380f35d59f4748f05615781b02e1f8.png

注意,它与 badge.txt 是不匹配滴,因为 badge 后面没有字符。

正因为 "?" 匹配单个字符,所以这里有个看似很厉害的玩法,就是你想要的找的文件的文件名有多少个字符,你就输入多少个 "?"

ls ?????.txt

1c4e286b587edf71955adf8fa159d28f.png

看着挺厉害,不过我怎么感觉这好别扭?????

* 字符序列通配符

星号 * 代表的是任意字符序列,匹配任意字符,包括空字符,以刚才的 badge 为例:

ls badge*

da3f3bf64bf101b8b6c57817441e0a6c.png

可以看到,badge.txt 都匹配到了。

匹配任意类型的文件:

ls source.*

[] 字符集通配符

方括号 "[]" 指的是字符集通配符,文件名中的相关字符必须与字符集中的至少一个字符匹配。通过例子来体会一下它的作用吧:

ls badge_0[246].txt

deae04a9b844d22d559bdd0aa7264a13.png

ls badge_[01][789].txt

71a609dc62424fb59ec27a569846d06a.png

ls badge_[23][1-5].txt

ed7a5a17b2cb633393373b36e2f313cb.png

; 命令分隔符

这跟我们日常使用的 ";" 差不多,就不细说了,主要是用来分隔命令的。

ls > count.txt; wc -l count.txt; rm count.txt

a10517b4a85f91c043d42dfa9080b209.png

这里注意,用 ; 分隔命令时,即使第一个命令失败,第二个命令也会运行,即使第二个命令失败,第三个命令也会运行,依此类推。

如果要在一个命令失败的情况下就停止,请使用 "&&" ,如下:

cd ./doesntexist && cp ~/Documents/reports/* .

631b00e006def62707b686d5f8d579ce.png

& 后台处理

有时候在终端正在运行一个命令时,例如 vim,你想运行另外一个命令怎么办?这里有个小技巧就是在命令后面加一个 "&" 符号,将这个程序放在后台启动,这样你就能在终端实现后台多任务的效果了。

vim command_address.page &

16b008d3c2fccb372b079fb18c0284ac.png

上面显示的是这个后台进程的 ID 。

<输入重定向

许多 Linux 命令接受一个文件作为参数&#xff0c;并从该文件中获取数据。这些命令中的大多数还可以从流中获取输入。要创建一个流&#xff0c;可以使用左尖括号 " &#xff0c;如下将文件重定向到命令中:

sort

3488c0e76174ea15ef959c8fd33778df.png

上面将 words.txt 文件的内容并进行了排序。

注意&#xff1a;它是不显示数据来源文件的文件名的。

wc words.txt

wc

285ad919f9648cac74637db9fececc60.png

> 输出重定向

输入和输出是相反的&#xff0c;很好理解。用右尖括号 ">" 将命令的输出重定向&#xff0c;通常是重定向到文件中

ls > files.txt

cat files.txt

1ff510aa4f4572f6e7723cf263e6ca1f.png

高端玩家还可以和数字一同使用&#xff1a;

wc doesntexist.txt 2> errors.txt

cat errors.txt

611a2b0b42604f75eb9f098acfda28ce.png

这里的 2 是一个文件描述符&#xff0c;表示标准错误(stderr)

大家感兴趣的可以去搜索下文件描述符 stdin&#xff0c;stdout&#xff0c;stderr 是什么&#xff1f;

| 连接命令

我们可以将 " | " 看成将命令链接在一起的管道。它从一个命令获取输出&#xff0c;并将其作为输入送入下一个命令。管道命令的数量是任意的。

cat words.txt | grep [cC] | sort -r

73f124941770794c700be9d8f7f67938.png

解释下&#xff0c;上面先使用 cat 将 words.txt 文件的内容输入 grep , 然后 grep 提取包含小写或大写(C/c)的任何行&#xff0c;接着 grep 将这些行传递给 sort &#xff0c;最后 sort 进行 -r 反向排序。

! 逻辑非

这跟编程语言中的 " ! " 差不多&#xff0c;我们直接拿个例子来说吧&#xff1a;

[ ! -d ./backup ] && mkdir ./backup

第一个命令 -d 判断当前目录是否存在 backup 的目录文件&#xff0c;外面加个逻辑非 ! 判断&#xff0c;
第二个命令是创建 backup 目录文件&#xff0c;
中间的 && 上面说过。
总的来说就是当 backup 目录不存在时&#xff0c;创建 backup 目录&#xff1b;当不存在时则不执行第二条命令。

不妨看下文件夹的备份状态&#xff1a;

ls -l -d backup

d46b6da1496da69225f63190ab943c74.png

" ! " 的另一个用法就是重新运行历史命令&#xff1a;

!24

!!

291ae5144218eeee819c14d788b55c46.png

" !! " 是重新运行上一条命令的意思。

$ 变量表达式

"$" 开头通常表示变量&#xff0c;下面是一些系统变量&#xff1a;

echo $USER

echo $HOME

echo $PATH

e85635bb00eceeb44d773c1c04973ddb.png

当然&#xff0c;你也可以自己定义变量然后输出&#xff1a;

ThisDistro&#61;Ubuntu

MyNumber&#61;2001

echo $ThisDistro

echo $MyNumber

5383a7ecf3740884891ecb4cdff7280c.png

我们还可以通过 "{}" 解锁更高级的玩法&#xff1a;

先定义一个变量 MyString 并给它赋值 123456qwerty

MyString&#61;123456qwerty

正常输出

echo ${MyString}

加个 ":6" 返回从索引位置 6 开始的一直到最后的字符串

echo ${MyString:6}

显示从索引位置从 0 开始往后 6 个字符的字符串

echo ${MyString:0:6}

显示从索引位置从 4 开始往后 4 个字符的字符串

echo ${MyString:4:4}

4b7bcb5f7740f43452818cb67059e303.png

引用特殊字符

说了那么多&#xff0c;那么就有个问题了&#xff0c;就是我只想在命令里面将这些特殊字符作为一般的符号显示怎么办&#xff1f;这种我们称之为引用&#xff0c;Linux 中有三种引用方法。

用双引号 "" 括起来&#xff0c;不过这对 "$" 无效。

echo "Today is $(date)"

用单引号 &#39;&#39; 括起来&#xff0c;停止所有特殊字符的功能

echo &#39;Today is $(date)&#39;

反斜杠 转义&#xff0c;这在很多场合都有通用的。

echo "Today is $(date)"

bd343781b399bb1fd117a23d6ad5a5c5.png

今天的科普文章有点长&#xff0c;大家慢慢消化哈。



推荐阅读
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
author-avatar
手机用户2502883723
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有