小编use*_*378的帖子

本地可执行文件应该放在哪里?

我有一个 perforce 版本控制客户端 ( p4)的可执行文件。我不能把它放进去,/opt/local因为我没有 root 权限。是否有一个标准位置需要放置在它下面$HOME

文件系统层次结构是否有一个约定,说明需要将本地可执行文件/二进制文件放入$HOME/bin

在 FHS维基百科文章中找不到这样的约定。

另外,如果确实有约定,我是否必须明确包含$HOME/bin目录的路径或目录的任何位置bin

fhs executable software-installation directory-structure not-root-user

106
推荐指数
4
解决办法
9万
查看次数

传递包含点的 bash 命令行参数

如何传递包含点 (.) 的命令行参数?是否有任何转义序列用于捕获像点这样的字符?

以下从 shell 调用 bash 脚本不起作用:

# ./deploy.sh input.txt
./deploy.sh: line 9: input.txt: syntax error in expression (error token is ".txt")
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

  1. 反斜杠
  2. 引用
  3. 双引号
  4. ./deploy.sh 输入(这有效)

编辑

以这个用例为例:

  1. 我有 3 个文件: server.jar client.jar gui.jar
  2. 我需要将它们从来源 scp 到目标
  3. 源目录:login1@host1:/home/xyz/deploy/
  4. 目标目录:login2@host2:/data/apps/env/software/binary/

解决方案:

  1. 从命令行读取要复制到数组中的工件
  2. 使用正确的目录前缀创建目标路径和源路径字符串
  3. 使用 for 循环 scp 每个工件(已经找出路径)

这是执行 1(将工件读入数组)的简单脚本:

#!/bin/bash
declare -a artifacts
for i
do
artifacts[i]=$i
echo ${artifacts[i]}
done
Run Code Online (Sandbox Code Playgroud)

执行1

-bash-3.00$ ./simple.sh arg1 arg2 arg3
arg1
arg2
arg3
Run Code Online (Sandbox Code Playgroud)

执行2

-bash-3.00$ ./simple.sh arg1.txt arg2.txt arg3.txt
./simple.sh: line …
Run Code Online (Sandbox Code Playgroud)

command-line bash shell-script escape-characters

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

Solaris 中的“无效参数”是什么意思?

-bash-3.00$ ./p4 -V
-bash: ./p4: Invalid argument
Run Code Online (Sandbox Code Playgroud)

Unix 中的“无效参数”是什么意思?

更多细节:

  1. p4 是当前目录中的可执行文件。
  2. p4 实际上是指 perforce。选项 -V 应该显示版本详细信息。
  3. Solaris 10 是操作系统。
  4. p4 具有可执行权限 (chmod +x p4)
  5. 官方文档对我来说不是很有帮助。

command-line solaris

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