我倾向于在经常使用的文件和文件夹前面加上“重音符号”字符(非移位波浪号、反勾号或普通的旧口音,whathaveyou..),因为它很容易理解,让我来看看按字母顺序排序,同时让我选择在顶部显示一些项目。它运行良好,除非我通过 CLI 或 SSH/SCP 访问这些文件。
如果我尝试运行命令,调用未转义的文件?它让我进入一个交互式会话......例如?
# scp -r dns.local:/`Downloads/CrazyRussianCars/ ~/
?
>
Run Code Online (Sandbox Code Playgroud)
然而,如果我尝试合乎逻辑的解决方案?
# scp -r dns.local:/\`Downloads/CrazyRussianCars/ ~/
?
bash: -c: line 0: unexpected EOF while looking for matching ``'
bash: -c: line 1: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)
我知道“新”规则是使用像export NOW=$(date)vs export NOW=
`date`这样的语法 (实际上,我什至用 SE MD 语法编写后者...),但这与ENV脚本或任何脚本无关。 ..
注意: 这是一个 Mac OS X 环境,但也就是说,GUI 在日常处理这个字符时从来没有遇到过问题,通常,如果终端中出现语法问题,Apple在禁用 GUI 中的行为方面做得非常好......不确定这是否是一个错误,或者处理此类路径的技术是否只是晦涩难懂......但到目前为止,我一直无法找到方式“逃避它”?
我有一台 Windows 7 机器,当普通用户运行命令提示符时,它无法在%PATH%. 如果命令提示符改为以管理员身份运行(右键单击,以管理员身份运行),则%PATH%适当展开。
具体来说,%PATH%以cmd.exe用户身份运行(通过 显示set path)如下:
Path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\Wbem;%SYSTEMROOT\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\
Run Code Online (Sandbox Code Playgroud)
...而%PATH%以cmd.exe管理员身份运行如下:
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\Wbem;%SYSTEMROOT\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\
Run Code Online (Sandbox Code Playgroud)
我尝试以新用户身份登录以创建新配置文件,该问题也仍然存在于该配置文件中。HKEY_CURRENT_USER\Environment\PATH不存在,并且HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path与计算机属性 -> 环境变量中定义的系统范围路径相匹配。
有没有人知道这可能是什么,或者我可以在哪里看?
每次我登录时,我们环境中的组策略都会覆盖 PATH 变量,并且当我运行“非标准”计算机时,它完全错误(C:\Windows vs C:\WINNT,缺少目录等)。目前,我每次登录时都会手动更改它,但这开始变得令人厌烦。
如果我使用 SET 命令更改批处理文件中的 PATH 变量,它仅具有本地范围,因此更改仅适用于批处理文件中的命令。
set PATH=C:\WINNT;C:\WINNT\System32
set PATH
Run Code Online (Sandbox Code Playgroud)
这个批处理文件将输出新路径,但如果我set PATH之后在命令行上运行,它仍然是原始路径。
如何在批处理文件中设置全局PATH 环境?或者我可以使用另一种技术吗?
我很困惑为什么 rsync 需要 --rsync-path 标志,即使远程 rsync 在路径中。
考虑:
$ rsync -avze 'ssh -p 22' --delete public/ pmatos@domain.com:~/public_html
bash: /usr/local/bin/rsync: No such file or directory
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(601) [sender=3.0.7]
Run Code Online (Sandbox Code Playgroud)
然后我尝试添加 --rsync-path
$ rsync -avze 'ssh -p 22' --rsync-path=/usr/bin/rsync --delete public/ pmatos@domain.com:~/public_html
sending incremental file list
...
Run Code Online (Sandbox Code Playgroud)
因此,第一个 rsync 没有成功,因为它正在 /usr/local/bin 中搜索 rsync,但是一旦我使用 --rsync-path 传递了 rsync 的明显路径,它就会起作用。
为什么是这样?(此命令行是 octopress 中 rake deploy 发出的命令行)
我经常修改我的 .bashrc 然后获取它。但是,当export PATH="~/bin:~/perl5/bin:$PATH"我的文件中有类似内容
时,PATH每次获取文件时环境变量都会增加。
例如,第一次获取 .bashrc 时,PATH变量由.bashrc组成~/bin:~/perl5/bin:/usr/bin:/bin。
第二次它由~/bin:~/perl5/bin:~/bin:~/perl5/bin:/usr/bin:/bin.
第三次它由~/bin:~/perl5/bin:~/bin:~/perl5/bin:~/bin:~/perl5/bin:/usr/bin:/bin.
有没有一种简单的方法可以让它只添加任何不在 PATH 中的东西?
当使用 SSH 将 rsync 连接到远程服务器时,如何在远程路径中转义空格等?一个简单的反斜杠转义本地 bash 提示符的空间,但在远程机器上,该空间被读取为路径中的中断,从而标记该路径的结尾。
因此,当我这样rsync -avz /path/to/source/some\ dir/ user@host.tld:/path/to/dest/some\ dir/做时,远程服务器正在读取它/path/to/dest/some/,因为它无法远程找到该目标,因为实际目标是“某个目录”而不仅仅是“某个”。
如果我尝试相同的命令并转义反斜杠和空格以通过本地 bash 提示符并维护远程服务器的反斜杠(总共三个反斜杠:)/path/to/dest/some\\\ dir/,它确实将反斜杠发送到远程服务器,但远程服务器然后将路径解释为/path/to/dest/some\/而不是/path/to/dest/some\ dir/仍然剥离空格和它后面的字符。
如果我尝试用引号包裹路径,它的行为方式几乎相同,有效地在空格处切断路径。所以它也只能通过本地 bash 提示。
最初我使用的路径中有一个“ - ”(空格-连字符-空格)段,远程服务器返回一个错误rsync: on remote machine: -: unknown option,这是整个空间转义努力的开始。
那么我必须做些什么才能使远程服务器正常工作,而不必从远程路径中删除空格或其他错误字符(如连字符)?
我正在applicationhost.config为 IIS 7.5 Express配置一个站点:
<site name="default" id="1" serverAutoStart="true">
<application path="/">
<virtualDirectory path="/" physicalPath="%IIS_BIN%\..\Somewhere\Else" />
<!-- ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -->
</application>
...
</site>
Run Code Online (Sandbox Code Playgroud)
我发现指定所示的相对路径似乎不起作用,并且会导致 HTTP 500.19 Internal Server Error. IIS 进一步报告错误代码0x8007007b,经过一些谷歌搜索后,似乎表明文件路径语法无效。
有什么办法可以解决这个错误,以便我可以为我的站点的根使用相对物理路径?
所以我尝试在 Ubuntu 10.04 上安装 Mercurial。首先我使用了 ppa repo,但是遇到了pythonpath错误,我放弃了。下一次尝试从源代码安装,一切顺利,除了找不到 hg:
$ hg
-bash: /usr/bin/hg: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但是, hg 安装在 /usr/local/bin/ 中:
$ which hg
/usr/local/bin/hg
Run Code Online (Sandbox Code Playgroud)
PATH 包含此目录,为什么找不到 hg?
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)
如果我使用完整路径执行 hg ,它会起作用:
$ /usr/local/bin/hg --version
Run Code Online (Sandbox Code Playgroud)
任何帮助真的很感激!
我的问题似乎微不足道,但我没有在互联网上找到任何有用的东西。我有一个二进制文件
/urs/bin/binary
Run Code Online (Sandbox Code Playgroud)
但它已经过时,例如在某些安装上可以使用较新的版本
/mount/new_version/binary
Run Code Online (Sandbox Code Playgroud)
有一个 bash 脚本以类似的形式调用这个二进制文件
binary -doSomething
Run Code Online (Sandbox Code Playgroud)
我需要此脚本来调用新版本的二进制文件而不是旧版本,但我无权更改此脚本。是一种以某种方式覆盖它的路径但仅适用于我的用户的方法吗?任何帮助,将不胜感激。
我正在尝试像这样运行 macports:
port install php5
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我收到此错误:
Error: Unable to open port: can't read "build.cmd": Failed to locate 'make' in path: '/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin' or at its MacPorts configuration time location, did you move it?
Run Code Online (Sandbox Code Playgroud)
所以我看了一下我的路径:
declare -x PATH="/Developer/usr/bin:/opt/subversion/bin:/opt/local/bin:/opt/local/sbin:/usr/local/php5/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin"
Run Code Online (Sandbox Code Playgroud)
然后查看以确保 make 位于其中一个目录中:
ls -l /Developer/usr/bin/make
$ lrwxr-xr-x 1 root admin 7 Aug 7 16:47 /Developer/usr/bin/make -> gnumake
Run Code Online (Sandbox Code Playgroud)
并键入:
make
Run Code Online (Sandbox Code Playgroud)
产生:
make: *** No targets specified and no makefile found. Stop.
Run Code Online (Sandbox Code Playgroud)
所以我知道它就在那里。
但是macports找不到它。有任何想法吗?
G-Man