request.getparameter特殊字符变成?号问号_15 个不可不知的 Linux 特殊字符,你懂几个?...

news/2024/7/2 12:39:24

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

主目录

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

cd ~

7b7360ffc0386c58d29a39bda3d1d038.png

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

cd ~/work/archive

f1a3fbece105e7f3775cd5d58e149a7d.png

.当前目录

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

ls -al

c2ddc9b5d35377f97d6f3e17a0d0b242.png

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

./script.sh

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

fc9e1476c784d5fa9bed0f0ede986bb4.png

.. 父目录

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

cd ..

f048cef8f3ca152a7d1cbded48fba19b.png

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

cd ../projects/

ac9c97f9fecbe29a6ce4ef985cdbe575.png

/ 路径目录分隔符

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

ls ~/work/tests/

dce33a068934b3af5cd53b1eb7fc043d.png

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

cd /

d1f55de7219409a6f6ab960dcc844e84.png

# 注释

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

# This will be ignored by the Bash shell

03b04606ffe6cfecd4a72c62a8d23925.png

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

更厉害的做法如下:

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

this_string="amazing alvin"

ff8d7bb18a3972dc2f33009d5e400d5d.png

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

echo awsome ${this_string#amazing}

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

echo $this_string

db0595f2042d0fce3d8c697c74e23aab.png

? 单字符通配符

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

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

ls badge?.txt

f1fa6b312301801b4da9f1173957fef2.png

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

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

ls ?????.txt

30670730aa1a17886d65fbcb0cd3edf4.png

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

* 字符序列通配符

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

ls badge*

3d4eb80108d1c14e7944b2b579b87fbf.png

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

匹配任意类型的文件:

ls source.*

[] 字符集通配符

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

ls badge_0[246].txt

f9bad16f38299e26103e6c270d8c3f5e.png

ls badge_[01][789].txt

481eb268acc9aee62193d9e41894aca9.png

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

960cdbca4e034a9d054276ad8030a162.png

; 命令分隔符

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

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

2d392cdf76e5a816e7f67174fe3d7b98.png

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

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

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

754744c0d29a0fa44d005beecb49ca09.png

& 后台处理

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

vim command_address.page &

ba82559aca9870ec406ff192777d594d.png

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

< 输入重定向

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

sort < words.txt

28ab827e69ccb358ee5b7b2a8e4fcecb.png

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

注意:它是不显示数据来源文件的文件名的。

wc words.txt
wc < words.txt

602ed18926a1ffb80e20c2d03b805722.png

> 输出重定向

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

ls > files.txt
cat files.txt

6d7e7feea6860e0229441c0e6a564697.png

高端玩家还可以和数字一同使用:

wc doesntexist.txt 2> errors.txt
cat errors.txt

84179cc3233b814d0c5c331047993f8d.png

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

大家感兴趣的可以去搜索下文件描述符 stdin,stdout,stderr 是什么?

| 连接命令

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

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

1f5de0472e89b0a76a567fe29f9e4b41.png

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

! 逻辑非

这跟编程语言中的 " ! " 差不多,我们直接拿个例子来说吧:

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

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

不妨看下文件夹的备份状态:

ls -l -d backup

ba2a0370fcc2c6569269b276cf294073.png

" ! " 的另一个用法就是重新运行历史命令:

!24
!!

81a5e52323726a6546d2a10345ef9a1e.png

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

$ 变量表达式

"$" 开头通常表示变量,下面是一些系统变量:

echo $USER
echo $HOME
echo $PATH

34b421f4efe759afb244e06f84dcd69b.png

当然,你也可以自己定义变量然后输出:

ThisDistro=Ubuntu
MyNumber=2001
echo $ThisDistro
echo $MyNumber

f321e3b8d05e2ba75194c00997518268.png

我们还可以通过 "{}" 解锁更高级的玩法:

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

MyString=123456qwerty

正常输出

echo ${MyString}

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

echo ${MyString:6}

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

echo ${MyString:0:6}

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

echo ${MyString:4:4}

a270810cb28a5566d5902deb37c2b56b.png

引用特殊字符

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

用双引号 "" 括起来,不过这对 "$" 无效。

echo "Today is $(date)"

用单引号 '' 括起来,停止所有特殊字符的功能

echo 'Today is $(date)'

反斜杠 \ 转义,这在很多场合都有通用的。

echo "Today is \$(date)"

57cd79421f49ab8bf028401502585393.png

今天的科普文章有点长,大家慢慢消化哈。


http://lihuaxi.xjx100.cn/news/245778.html

相关文章

Libgdx学习笔记:Simple text input

2019独角兽企业重金招聘Python工程师标准>>> 官方Wiki&#xff1a;https://github.com/libgdx/libgdx/wiki/Simple-text-input 实现接口TextInputListener public class MyTextInputListener implements TextInputListener { Overridepublic void input (String …

javascript与java的不同之处

javascript与java的不同之处 虽然很像&#xff0c;但不是一种语言。 二者的区别体现在&#xff1a; 首先&#xff0c;它们是两个公司开发的不同的两个产品&#xff0c;Java是SUN公司推出的新一代面向对象的程序设计语言&#xff0c;特别适合于Internet应用程序开发, 而JavaScri…

学术青年如何克服拖延症——5条技巧助你前进

雷锋网 AI 科技评论按&#xff1a;「我准备好了就开始」&#xff08;或者说「拖延症」&#xff09;&#xff0c;以及「即便动起手来也觉得举步维艰」大概是每个现代人都逃不过的日常感受&#xff0c;不管是学习、在企业中工作&#xff0c;还是从事学术研究。我们可能都看过许多…

php 能打印一个没有实例化的类_你理解 PHP 中的静态方法吗?

它仍然是一个有争议的话题。让我们尝试了解原因。函数中的静态变量您可能已经看过以下代码&#xff1a;function testStatic() {static $x 0;$x;return $x; }在这里&#xff0c;我们每次调用 testStatic() 时&#xff0c;关键字 static 允许递增 $x&#xff1a;testStatic(); …

mysql之修改表引擎

版权声明&#xff1a;欢迎转载&#xff0c;请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/49817841 刚入门mysql的时候&#xff0c;对innodb引擎和myisam引擎没有很好的理解&#xff0c;所以表引擎用的基本上就是myisam&#xff0c;反正也不懂哪一个好…

Unix_Linux系统定时器的应用(案例)

2014-05-05 Created By BaoXinjian 一、摘要 关于任务定时的命令crontab&#xff0c;在Linux中应用还算常见&#xff0c;这次为了配合开发完成一些辅助功能&#xff0c;以及一些备份更新等脚本&#xff0c;就需要crontab来完成&#xff0c;在windows下也就是一个批处理&#xf…

约瑟夫环 猴子选大王

<? /*** 猴子选大王&#xff1a;一群猴子排成一圈&#xff0c;按1,2,…,n依次编号。* 然后从第1只开始数&#xff0c;数到第m只,把它踢出圈&#xff0c;从它后面再开始数&#xff0c;再数到第m只&#xff0c;在把它踢出去…&#xff0c;* 如此不停的进行下去&#xff0c;直…

linux修改mysql密码sa_数据库sa初始密码

SQL Server之备份和还原系统数据库系统数据库是管理和维护SQL Server所必须的数据库&#xff0c;对服务器实例的运行至关重要。每次进行大量更新后必须备份多个系统数据库&#xff0c;包括master、model、msdb&#xff0c;备份这些系统数据库&#xff0c;就可以在发生系统故障(…