在 Linux shell 中设置变量时set,env、declare和之间有什么区别export,例如bash?
在使用Linux shell时,我遇到了以下情况:
$ A=B\
> C
$ echo $A
BC
Run Code Online (Sandbox Code Playgroud)
在我看来,当换行符遇到转义字符时,它不能是 CR 字符,但它仍然是换行符。该echo $A应解释为echo B newline C和换行应该是一个IFS echo。所以输出应该是B C而不是BC.
为什么我会得到我所做的输出?
今天在工作中,我想知道一个history我不太熟悉的命令,我确定我刚刚执行了一段时间。但是,当我history在同一个终端窗口上运行时,我没有发现有关该命令的任何信息。让我更加困惑,甚至恼火的是,我在history. 有谁能告诉我为什么吗?请给出一些具体的解释。
2008 make build_asdfasdfa
2009 ls
2010 cd asdfasdf
2011 ls
2012*
2013 exxxxxxxxxxxxxxxxxxx
2014 ls
2015 exxxxxxxxxxxxxxxxxx
2016 ls
2017 exxxxxxxxxxxxxxxxxxxxxx
2018 ls
Run Code Online (Sandbox Code Playgroud) 我刚刚在网上的一个 linux 论坛上遇到了这个命令,作者警告说不要为了好奇而尝试这个命令。于是我的好奇心来了。命令“:() { :|:& }; 是什么意思?:”在外壳中?
7
00:00:30,008 --> 00:00:30,066
by line
8
00:00:31,038 --> 00:00:34,050
or later in the nineteen seventies it was usually a
9
00:00:34,005 --> 00:00:38,634^M
video consul but the council was not capable of displaying arbitrate graphics
10
Run Code Online (Sandbox Code Playgroud)
以上几行在一个名为 2.txt 的文件中。我想要不以数字开头的行。在实践中,sed -i '/^[0-9]+/d' 2.txt效果很好。然而,没有sed -i '/^\d+/d' 2.txt。\d 在正则表达式中不应该等于 [0-9] 吗?