Questions tagged «bash»

与其他Bourne / POSIX shell相对,GNU的Bourne Again SHell特有的问题。对于一般关于Unix shell的问题,请改用/ shell标记。

1
仅对特定命令禁用Bash自动补全
是否可以仅针对特定命令禁用Bash的自动完成功能? 用例:出于明显的原因,我想rm在root用户时禁用命令的自动完成功能。如果我完全禁用自动补全功能,那也将是一个巨大的痛苦,所以我只想删除它rm。 可以完全做到这一点,最好不要黑客/etc/bash_completion和朋友吗?

1
如何使用cat将变量回显到文件中?
我有这样的简单脚本: #!/bin/bash BOO=bla-bla-bla cat > ./Makefile <<'EOF' Hello INCLUDES := -I/data/opt/include/ -Ideps/ -I$BOO/include EOF 但是它输出到文件中: Hello INCLUDES := -I/data/opt/include/ -Ideps/ -I$BOO/include 如何cat使用我的变量值,而不是该字符串中的名称?

3
在Bash中选择Unicode文件名
好; 假设我在Bash中,并且一个文件夹中有几个文件。其中有几个被命名为file☠☡☢☣.txt,其中☠☡☢☣以疯狂的无法键入的unicode字符开头。我将如何提及其中之一?按Tab仅自动完成到file,然后希望您键入一个疯狂的字符。有什么方法可以告诉bash“选择您刚刚给我的列表中的第三个”?


1
使用单个bash脚本在GNU屏幕上打开多个拆分窗口
我想创建一个bash脚本来自动打开一个包含4个运行预定命令的会话的屏幕窗口。我想在顶部的两个框架中打开htop和slurm,在中间的大框架中打开squidview,在底部的大框架中打开一个空白终端。是否可以使用单个bash脚本进行设置?


4
将文本放入bash命令行缓冲区
我想以编程方式在bash的命令行缓冲区中放入一段文本,阅读以进行编辑并用作命令。 我期待的是与read -i命令类似的东西。 -i text 如果使用readline读取行,则在开始编辑之前将文本放入编辑缓冲区。 编辑:以编程方式,我的意思是要在脚本中编写此代码,启动脚本,并准备命令缓冲区或修改命令历史记录(如某些问题所建议)。
9 bash  readline 

1
外壳程序的“删除单词”快捷方式删除了太多字符
在Bash领导下,Alt+的某些行为d自几年以来一直使我发疯,我发现也许可以通过设置来解决它。 如果我在终端上并发出如下命令: ...$ cat >> ~/notesSuperLongFilename.txt 然后,如果我想发出: ...$ scp ~/notesSuperLongFilename.txt 我想使用Ctrl + p(上一行)取回“ cat >>〜/ notesSuperLongFilename.txt”,然后再执行Ctrl+ a,然后Alt+ d和Alt+ d,以便获得: ...$ ~/notesSuperLongFilename.txt 然后我可以简单地输入“ scp”,然后执行Ctrl+ m(或按Enter / Return)。 但是它不起作用,因为在第一个Alt+之后d我得到: ...$ >> ~/notesSuperLongFilename.txt (到目前为止,一切都很好) 但是在第二个Alt+之后d我得到: ...$ .txt 因此,由于某种原因Alt+ d会立即删除“ >>〜/ notesSuperLongFilename”,而不仅仅是删除“ >>”。 自从多年以来,这一直是使我对Linux / Bash疯狂的最大浪费时间。 那么如何解决Alt+的这种(可能是损坏的)行为d呢? PS:我不知道谁是为“负责任的” Alt+ d行为:我不知道这是否是终端还是做,如果它的外壳(猛砸在我的情况)。

2
通过中间人服务器的SSH隧道-如何一步连接(使用密钥对)?
我的问题基本上是如何将现有的两个步骤变成一个步骤。 我使用这样的中间人服务器在两台计算机之间建立了可工作的SSH隧道: Kubuntu_laptop--->nat_fw--->Debian_Server<--nat_fw<--Kubuntu_desktop 我目前要做的是从Kubuntu_laptop到Debian_Server的SSH,然后从Debian_Server到Kubuntu_desktop的SSH。我想用bash在我的Kubuntu_laptop上发出一个SSH命令,以使我连接到Kubuntu_desktop(shell / bash)。 我现在使用的命令如下。步骤1: me@kubuntu_laptop:~$ ssh -i ~/.ssh/id_rsa admin@debian_server 第2步: admin@debian_server:$ ssh -p 1234 -i /home/admin/.ssh/id_rsa admin@localhost 然后,我通过SSH(来自kubuntu_laptop)连接到kubuntu_desktop。 所有SSH连接都需要RSA密钥。一直禁用密码登录。并请注意,两台计算机上的计算机用户帐户不同。 关于这条腿的连接: Debian_Server<--nat_fw<--Kubuntu_desktop 建立方法如下: autossh -M 5234 -N -f -R 1234:localhost:22 user@mydebian.com -p 22 注意Kubuntu_desktop以user@mydebian.com(不是admin @ debian_server)连接到中间人。但是当我连接到Kubuntu_desktop时,我以管理员用户身份连接。 我无法更改现有的监视端口(5234)或远程(-R)端口号(在此示例中为1234)。我无法更改SSH安全性以允许密码登录。我无法打开任何新的防火墙端口。我无法更改用户帐户(笔记本电脑除外)。

2
在bash脚本中以图形方式询问密码并保留默认的sudo超时设置
该sudo -A(SUDO_ASKPASS)选项显然原因sudo来失去的超时时间(例如,timestamp_timeout)设置。 我想使用sudo -A选项,但是我想在bash脚本中保留默认超时(例如,在Ubuntu上为15分钟)。我想在GUI对话框中安全地输入用户密码,但是我只想输入一次脚本(而不是50次以上)。 此外,我不想以root用户身份运行整个脚本,因为我只是认为这是一个坏主意。此外,在这种情况下,由我的脚本创建的文件拥有错误的所有权。 如果sudo -A选项保留了默认超时,它将对我有用。 从sudo手册中: 选项:‑A 通常,如果sudo需要密码,它将从用户终端读取密码。如果指定了-A(询问)选项,则将执行(可能是图形的)帮助程序来读取用户的密码并将密码输出到标准输出。如果设置了SUDO_ASKPASS环境变量,则它指定帮助程序的路径。否则,如果/etc/sudo.conf包含指定askpass程序的行,则将使用该值。例如: # Path to askpass helper program Path askpass /usr/X11R6/bin/ssh-askpass 顺便说一句,kdesudo也有同样的问题-每次调用它时都要求输入密码,即使在同一脚本中稍晚一秒钟也是如此。 我正在使用Kubuntu 12.04 64位。 这是解决方案所有部分的完整工作示例。它由bash脚本,此处建议的“ myaskpass”脚本和“ .desktop”文件组成。整个过程应该是100%GUI(完全没有终端交互),因此.desktop文件至关重要(afaik)。 $ cat myaskpass.sh #!/bin/bash kdialog --password "Please enter your password: " exit 0 $ cat askpasstest1.desktop #!/usr/bin/env xdg-open [Desktop Entry] Comment=SUDO_ASKPASS tester1 Exec=bash /home/user/test/askpasstest1.sh …

2
如何在bash脚本中添加Unix / Linux用户
这是我的测试bash脚本。我无法使其正常工作。我看到两个错误: Use of uninitialized value $answer in chop at /usr/sbin/adduser line 589. Use of uninitialized value $answer in pattern match (m//) at /usr/sbin/adduser line 590. 这是我的脚本: #!/bin/bash sudo adduser myuser << ENDX password password First Last Y ENDX exit 0 这是输出: me@mycomputer$ ./adduser.sh Adding user `myuser' ... Adding new group …
9 bash  useradd 

3
通过bash脚本编辑配置文件
我一直在尝试编写一个简单的bash脚本,该脚本将用于安装应用程序并更新其配置文件。我很难修改它的配置文件。 # DBHost=localhost DBName=test # DBPassword= 有什么建议可以使我得到如下修改吗​​? DBHost=localhost DBName=database DBPassword=password

2
如何停止bash的语法检查源文件?
我的zsh和bash都在一个文件中包含以下代码。 if test $SHELLNAME = zsh ; then lss() { l -l ${1:-.}/*(s,S,t); } laf() { l ${1:-.}/.*(.); } lad() { l -d ${1:-.}/.*(/); } lsw() { l -ld ${1:-.}/.*(R,W,X.^ND/); } fi SHELLNAME是zsh如果外壳程序是zsh并且bash外壳程序是bash。 上面的每个函数都包含适用于zsh的代码,但不适用于bash。 当我获取此文件时,会出现以下错误。 bash: <filename>: line 67: syntax error near unexpected token `(' bash: <filename>: line 67: ` …
9 bash  zsh 

1
如何将.bash_profile移离家
我需要.bash_profile与Dropbox同步。我能想到的最简单的方法是“重定向”外壳程序以.bash_profile在自定义文件夹中搜索。 那有可能吗?还是有更好的解决方案?

3
如何比较不同行中具有相同数据的两个xml文件?
我有两个文件具有相同的数据,但行不同。 文件1: <Identities> <Identity> <Id>048206031415072010Comcast.USR8JR</Id> <UID>ccp_test_79</UID> <DisplayName>JOSH CCP</DisplayName> <FirstName>JOSH</FirstName> <LastName>CCP</LastName> <Role>P</Role> <LoginStatus>C</LoginStatus> </Identity> <Identity> <Id>089612381523032011Comcast.USR1JR</Id> <UID>94701_account1</UID> <DisplayName>account1</DisplayName> <FirstName>account1</FirstName> <LastName>94701</LastName> <Role>S</Role> <LoginStatus>C</LoginStatus> </Identity> </Identities> 文件2: <Identities> <Identity> <Id>089612381523032011Comcast.USR1JR</Id> <UID>94701_account1</UID> <DisplayName>account1</DisplayName> <FirstName>account1</FirstName> <LastName>94701</LastName> <Role>S</Role> <LoginStatus>C</LoginStatus> </Identity> <Identity> <Id>048206031415072010Comcast.USR8JR</Id> <UID>ccp_test_79</UID> <DisplayName>JOSH CCP</DisplayName> <FirstName>JOSH</FirstName> <LastName>CCP</LastName> <Role>P</Role> <LoginStatus>C</LoginStatus> </Identity> </Identities> 如果我使用diff file1 file2命令,则会得到以下响应: 1,10d0 < …

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.