相关疑难解决方法(0)

为什么我的 shell 脚本会因空格或其他特殊字符而阻塞?

或者,有关强大的文件名处理和在 shell 脚本中传递的其他字符串的介绍性指南。

我写了一个 shell 脚本,它在大多数情况下运行良好。但它在某些输入(例如某些文件名)上窒息。

我遇到了如下问题:

  • 我有一个包含空格的文件名hello world,它被视为两个单独的文件helloworld.
  • 我有一个带有两个连续空格的输入行,它们在输入中缩小为一个。
  • 前导和尾随空格从输入行中消失。
  • 有时,当输入包含其中一个字符时\[*?,它们会被一些文本替换,这实际上是文件的名称。
  • 输入中有一个撇号'(或双引号"),在那之后事情变得很奇怪。
  • 输入中有一个反斜杠(或者:我使用的是 Cygwin 并且我的一些文件名具有 Windows 样式的\分隔符)。

这是怎么回事,我该如何解决?

shell bash shell-script quoting whitespace

341
推荐指数
3
解决办法
32万
查看次数

在没有源代码的情况下隐藏程序的参数

我需要隐藏我正在运行的程序的一些敏感参数,但我无权访问源代码。我也在共享服务器上运行它,所以我不能使用类似的东西,hidepid因为我没有 sudo 权限。

以下是我尝试过的一些事情:

  • export SECRET=[my arguments],然后调用./program $SECRET,但这似乎没有帮助。

  • ./program `cat secret.txt`哪里secret.txt有我的论据,但全能ps者能嗅出我的秘密。

有没有其他方法可以隐藏我的论点而不涉及管理员干预?

linux process ps arguments

15
推荐指数
4
解决办法
4877
查看次数

直接执行系统调用

如果用户有权访问某些内容,他如何直接执行系统调用,例如 geteuid() - 从 bash 获取有效的用户 ID(这只是一个示例),我该怎么做?

system-calls

6
推荐指数
2
解决办法
1万
查看次数

Linux 中的主要执行阶段是什么(程序在 Linux 中基本上是如何执行的)?

我知道在 Linux 中有两个执行阶段,处理我们运行的每个命令。我会说出我对它们的理解方式,因为我不知道原文的措辞:

  1. 外壳处理---外壳编辑命令(将其拆分为不同的行等),所有这些都在与当前外壳不同的外壳中完成。

  2. 在 shell 处理之后执行结果(在我们使用的原始 shell 中)。

有人可以回答这些操作的名称并参考他认为最适合新学习者的一些阅读材料吗?

executable

5
推荐指数
1
解决办法
189
查看次数

为什么基于 Linux 的操作系统会创建 . 文件相同的目录和.. 文件在它的子目录中?它是如何工作的?

你好呀!

目前,我正在学习 shell 编程,在那里我刚刚学习了符号链接、硬链接、文件、目录相关主题。我试图理解——

  1. 为什么目录有两个链接以及何时创建目录 - 为什么有. ..目录中的文件?以及它们是如何工作的?
  2. 为什么目录中的文件是必需的吗?

好的解释对我很有帮助。

提前致谢。

最好的问候-
Nazmul

linux filesystems

3
推荐指数
1
解决办法
132
查看次数