或者,有关强大的文件名处理和在 shell 脚本中传递的其他字符串的介绍性指南。
我写了一个 shell 脚本,它在大多数情况下运行良好。但它在某些输入(例如某些文件名)上窒息。
我遇到了如下问题:
hello world
,它被视为两个单独的文件hello
和world
.\[*?
,它们会被一些文本替换,这实际上是文件的名称。'
(或双引号"
),在那之后事情变得很奇怪。\
分隔符)。这是怎么回事,我该如何解决?
我需要隐藏我正在运行的程序的一些敏感参数,但我无权访问源代码。我也在共享服务器上运行它,所以我不能使用类似的东西,hidepid
因为我没有 sudo 权限。
以下是我尝试过的一些事情:
export SECRET=[my arguments]
,然后调用./program $SECRET
,但这似乎没有帮助。
./program `cat secret.txt`
哪里secret.txt
有我的论据,但全能ps
者能嗅出我的秘密。
有没有其他方法可以隐藏我的论点而不涉及管理员干预?
如果用户有权访问某些内容,他如何直接执行系统调用,例如 geteuid() - 从 bash 获取有效的用户 ID(这只是一个示例),我该怎么做?
我知道在 Linux 中有两个执行阶段,处理我们运行的每个命令。我会说出我对它们的理解方式,因为我不知道原文的措辞:
外壳处理---外壳编辑命令(将其拆分为不同的行等),所有这些都在与当前外壳不同的外壳中完成。
在 shell 处理之后执行结果(在我们使用的原始 shell 中)。
有人可以回答这些操作的名称并参考他认为最适合新学习者的一些阅读材料吗?
你好呀!
目前,我正在学习 shell 编程,在那里我刚刚学习了符号链接、硬链接、文件、目录相关主题。我试图理解——
好的解释对我很有帮助。
提前致谢。
最好的问候-
Nazmul
linux ×2
arguments ×1
bash ×1
executable ×1
filesystems ×1
process ×1
ps ×1
quoting ×1
shell ×1
shell-script ×1
system-calls ×1
whitespace ×1