Questions tagged «shell»

Shell是Unix的命令行界面。您可以交互地在外壳程序中键入命令,也可以编写脚本来自动执行任务。使用此标记可解决适用于/ bin / sh和大多数兼容shell(ash,bash,ksh,zsh等)的问题。对于有错误的Shell脚本,请在此处发布之前在http://shellcheck.net中对其进行检查。

3
导出其中带有点(。)的变量
如何导出其中带有点的变量。我尝试时得到“无效的变量名”: export my.home=/tmp/someDir -ksh: my.home=/tmp/someDir: invalid variable name 即使转义元字符点(。)也无济于事 $ export my\.home=/tmp/someDir export: my.home=/tmp/someDir: is not an identifier

5
当我的系统管理员拒绝让我更改它时,如何使用bash作为我的登录shell
Unix的系统管理员那里我的工作是不愿意给我访问我的登录shell从改变ksh到bash。他提供了各种借口,最有趣的是,因为他们编写了所有脚本,ksh因为如果我尝试运行它们,它们将无法工作。我不知道他从哪里得到这些想法,但是由于我无法说服他,我还有其他选择吗? (chsh已安装在这些计算机上,但是我们使用公共/专用密钥对进行登录,并且我没有任何密码,因此当chsh提示我输入密码时,我什么也没有提供。)
38 shell  login  profile 

6
如何诱使命令认为其输出将发送到终端
给定一条命令,该命令在其输出将输出到终端时会更改其行为(例如,产生彩色输出),如何在保留更改的行为的同时在管道中重定向该输出?必须有一个我不知道的实用程序。 某些命令(如grep --color=always)具有选项标志来强制执行该行为,但问题是如何解决仅依赖于测试其输出文件描述符的程序。 如果有关系的话,我的外壳bash在Linux上。
38 shell  pipe  utilities  stdout  pty 

6
如何从通配符扩展中获得第一场比赛?
诸如Bash和Zsh之类的Shell会将通配符扩展为参数,与模式匹配的参数一样多: $ echo *.txt 1.txt 2.txt 3.txt 但是,如果我只希望返回第一个比赛而不是所有比赛,该怎么办? $ echo *.txt 1.txt 我不介意特定于shell的解决方案,但是我想要一个可以在文件名中使用空格的解决方案。
38 shell  wildcards 

3
可以在命令行上设置权限来创建文件吗?
创建目录时,mkdir -m <mode> <dir>可以创建一个(或多个)具有给定模式/权限集的目录。 在命令行上是否有用于创建文件的等效项? 类似于: open("file", O_WRONLY | O_APPEND | O_CREAT, 0777); 在这里使用touch后跟是chmod我唯一的选择吗? 编辑:尝试使用teppic的建议后install,我进行了遍历strace以查看它与原子的接近程度。答案不是非常: $ strace install -m 777 /dev/null newfile ... open("newfile", O_WRONLY|O_CREAT|O_EXCL, 0666) = 4 fstat(4, {st_mode=S_IFREG|0666, st_size=0, ...}) = 0 ... fchmod(4, 0600) = 0 close(4) = 0 ... chmod("newfile", 0777) = 0 ... 尽管如此,它仍然是单个shell命令,而我以前是不知道的。

7
〜/ Documents是相对路径还是绝对路径?
这只是一个词汇问题,但一直在我脑海中回荡。 它来自LPIC准备书中的实践考试。根据这本书的正确答案~/Documents是相对目录,因为它是相对于主目录的。 但是,这本书包含错别字和错误的比率很高,所以我不能认为那里写的一切都是理所当然的。在这里我并不同意,因为对我而言,它~充当由Shell扩展为变量内容$HOME或当前用户主目录路径(参见参考资料man bash)的变量,因此实际路径/home/myuser/Documents确实是绝对目录。 即使是Wikipedia,这一次对我似乎也无济于事(即使似乎确认这本书在这方面是错误的): 无论当前工作目录如何,绝对路径或完整路径都指向文件系统中的同一位置。为此,它必须包含根目录。 相反,相对路径从某些给定的工作目录开始,从而避免了提供完整的绝对路径。 再次重申,我不同意:根据此定义,/opt/kde3/bin/../lib不依赖于当前工作目录的路径应该是绝对路径,但是我目前对此的理解与本书的作者相匹配,因此该路径是相对路径。 快速的Web搜索只是增加了我的无奈,根据韦氏词典: 绝对路径 -相对于根目录的路径。它的第一个字符必须是路径名分隔符。 那么$HOME/Documents,甚至$HOME不被认为是绝对目录?还是这个定义意味着变量扩展?外壳的~特征如何?我在某处可以找到相对目录和绝对目录的可靠定义,而且我一路走错了吗?
37 shell  filenames 



3
chmod +静默模式+尽管有错误,如何强制退出代码0
是否可以执行chmod并忽略命令中的错误 示例(不存在备注file.txt来显示示例) 当我打字 chmod 777 file.txt 我在输出中收到错误 chmod: cannot access file.txt : no such file or directory 因此,我将-f标志添加到命令中,如下所示:(为了显示这种情况,file.txt不存在) chmod -f 777 file.txt echo $? 1 但是从示例chmod返回1 请提供错误信息,建议如何强制chmod命令给出退出代码0

2
Bash是否具有类似Fish的自动建议和突出显示等功能?
我最近注意到Fish中有2个功能,并且想知道是否有人知道Bash中是否也有这些功能? 语法高亮 细节: 您很快就会注意到,fish在您键入时会执行语法突出显示。默认情况下,无效命令显示为红色: 命令可能因为它不存在而无效,或者引用了您无法执行的文件。该命令生效后,将以其他颜色显示 键入时,fish将在有效文件路径下划线 这告诉您存在一个以'somefi'开头的文件,这在您键入时很有用。 自我建议 细节: fish在键入时会建议命令,并在光标右侧以灰色显示该建议。 它知道路径和选项 要接受自动建议,请按向右箭头或Control-F。如果自动建议不是您想要的,请忽略它。
37 bash  shell  fish 

2
env <command>在做什么?
命令env ls -al在做什么? 我进行了Linux测试,并提出了一个问题:“如何直接运行命令,而不是别名?” 我知道有解决方案,例如在命令前加上一些特殊符号,但我忘记了。现在我知道了\。(从这篇文章中阅读)。 但我也记得在某处我读到要摆脱别名,可以在命令前加上env。我做到了,而且似乎可行,但我的回答被认为是错误的。我读info和man上env,但并没有理解太多。 正在env做什么,并且完全env &lt;command&gt;没有任何争议env?



5
重新连接时,为什么必须在tmux中重新设置环境变量?
我主要在Mac上工作,并将ssh / tmux附加到Linux机器上以完成工作。我在Linux机器上运行ssh-agent。我有 set -g update-environment "SSH_AUTH_SOCK SSH_ASKPASS WINDOWID SSH_CONNECTION XAUTHORITY" 在我的.tmux.conf。然而,每当我重新参加本次会议时,我都必须跑步 tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK 为了$SSH_AUTH_SOCK正确设置新的tmux窗口。我希望不必这样做。有任何想法吗? 更新资料 我想我的解释不太好。这是我的shell函数,用于在远程计算机上打开shell: sshh () { tmux -u neww -n ${host} "ssh -Xt ${host} $*" } 当TMUX运行此ssh命令,$SSH_AUTH_SOCK是没有设置,即使是在我的本地环境设置。如果使用setenv上面的命令将其放在tmux的环境中,则一切正常。我的问题是,为什么我必须完全运行setenv命令? 更新2 更多信息: 当我附加到现有会话时,$SSH_AUTH_SOCK未在tmux环境(或全局环境)中设置。 % tmux showenv | grep -i auth_sock -SSH_AUTH_SOCK 如果我手动设置它,则工作正常: % tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.