Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 对于新手来说,最重要的shell/终端概念/命令是什么? 虽然我不得不涉猎shell脚本和命令,但我仍然认为自己是新手,我很乐意听取别人的意见,认为他们是重要的知识点。p>_Bash_Shell_Terminal - Fatal编程技术网

Bash 对于新手来说,最重要的shell/终端概念/命令是什么? 虽然我不得不涉猎shell脚本和命令,但我仍然认为自己是新手,我很乐意听取别人的意见,认为他们是重要的知识点。p>

Bash 对于新手来说,最重要的shell/终端概念/命令是什么? 虽然我不得不涉猎shell脚本和命令,但我仍然认为自己是新手,我很乐意听取别人的意见,认为他们是重要的知识点。p>,bash,shell,terminal,Bash,Shell,Terminal,下面是一个我认为很重要的例子: 我认为理解$PATH是至关重要的。例如,为了运行psql,必须将PostgreSQL文件夹添加到$PATH变量中,初学者很容易忽略这一步 帮你自己一个忙,买本书:管道的概念。您可以轻松地重定向输出并将复杂任务划分为几个简单任务,这一点至关重要 阅读并理解: Greg Wooledge's和该网站上的所有其他内容 如果你在写shell脚本,一个重要的习惯就是总是在变量替换前后加上双引号。也就是说,总是写“$myvariable”(类似地,“$(mycommand

下面是一个我认为很重要的例子:


我认为理解$PATH是至关重要的。例如,为了运行psql,必须将PostgreSQL文件夹添加到$PATH变量中,初学者很容易忽略这一步

帮你自己一个忙,买本书:

管道的概念。您可以轻松地重定向输出并将复杂任务划分为几个简单任务,这一点至关重要

阅读并理解:

  • Greg Wooledge's和该网站上的所有其他内容

如果你在写shell脚本,一个重要的习惯就是总是在变量替换前后加上双引号。也就是说,总是写
“$myvariable”
(类似地,“$(mycommand)”),永远不要简单地写
$myvariable
$(mycommand)
,除非您确切地理解为什么需要省略它们。(同样,问题不是“我应该使用引号吗?”,而是“我为什么要省略引号?”)

原因是当您将变量替换保留为不带引号时,shell会做一些糟糕的事情。(这些讨厌的事情被称为字段拆分和路径名扩展。它们在某些情况下很好,但在变量或命令替换的结果上几乎不起作用。)

如果您省略了引号,您的脚本乍一看可能会正常工作。这是因为只有当变量的值包含一些特殊字符(空格、
\
*
[
)时,才会发生令人讨厌的事情。这种潜在的错误往往会在您创建一个名称包含空格的文件的那一天被发现,而您的脚本最终会删除您的源代码树/论文/婴儿图片/

因此,例如,如果有一个变量
$filename
,其中包含要传递给命令的文件名,请始终写入

mycommand "$filename"

而不是
mycommand$filename

我同意,管道无疑是一个重要的工具,尤其是当从其他命令中生成输出时。这应该标记为Community Wiki。