Tag: bash

自动完成不适用于“sudo apt-get install”

我的一所大学只是向我展示了你能做到的 sudo apt-get install 它会自动完成包的名称。 仅举例…… sudo apt-get install ged导致sudo apt-get install gedit 现在我试着这样做,但这对我不起作用。 我怎么解决这个问题? 我必须安装包吗? 我的大学告诉我,他没有安装任何额外的东西。

在文件夹层次结构中搜索重复的文件名?

我有一个名为img的文件夹,这个文件夹有很多级别的子文件夹,所有子文件夹都包含图像。 我要将它们导入图像服务器。 通常,图像(或任何文件)可以具有相同的名称,只要它们位于不同的目录路径中或具有不同的扩展名即可。 但是,我导入它们的图像服务器要求所有图像名称都是唯一的(即使扩展名不同)。 例如,不允许使用images background.png和background.gif ,因为即使它们具有不同的扩展名,它们仍然具有相同的文件名。 即使它们位于单独的子文件夹中,它们仍然需要是唯一的。 所以我想知道我是否可以在img文件夹中进行递归搜索,以查找具有相同名称(不包括扩展名)的文件列表。 有没有可以做到这一点的命令?

Bash选项卡完成:’-bash:寻找匹配时出现意外EOF’)’ – bash:语法错误:意外结束文件

我正在尝试使用此命令从文件中使用特定环境变量进入irb会话: $ env $(cat env.sh) irb 但是当我输入env.后尝试按Tab时env. 为了完成它,我得到以下错误: $ env $(cat env.-bash: unexpected EOF while looking for matching `)’ -bash: syntax error: unexpected end of file 另一个有趣的事情是,如果我以root身份登录,则不会发生此错误。 这是find ~ -uid 0的输出: $ find ~ -uid 0 /home/(redacted)/.rpmdb /home/(redacted)/.rpmdb/Group /home/(redacted)/.rpmdb/Conflictname /home/(redacted)/.rpmdb/Installtid /home/(redacted)/.rpmdb/Sha1header /home/(redacted)/.rpmdb/Providename /home/(redacted)/.rpmdb/__db.002 /home/(redacted)/.rpmdb/Requirename /home/(redacted)/.rpmdb/Sigmd5 /home/(redacted)/.rpmdb/__db.001 /home/(redacted)/.rpmdb/Obsoletename /home/(redacted)/.rpmdb/.dbenv.lock /home/(redacted)/.rpmdb/Name /home/(redacted)/.rpmdb/Basenames /home/(redacted)/.rpmdb/Triggername /home/(redacted)/.rpmdb/Packages /home/(redacted)/.rpmdb/Dirnames /home/(redacted)/.rpmdb/__db.003 任何人都可以向我解释为什么会发生这种情况,如果是这样,当我不是root用户时,我该如何解决?

“&disown”和“nohup &disown”之间的差异

这是我对& , disown和nohup的使用的理解: :在终端的当前bash实例中, 在前台运行进程(即进程被列为bash前台作业, stdin , stdout和stderr仍然绑定到终端 ); 不能免于挂断 ; & : 在后台的终端当前bash实例中运行进程(即进程被列为bash后台作业, stdin , stdout和stderr仍然绑定到终端 ); 不能免于挂断 ; & disown : 在后台运行终端当前bash实例中的进程,但该进程与bash的jobs列表分离 (即该进程未列为bash前台/后台作业和stdin , stdout和stderr仍然绑定到终端 ); 免于挂断 ; nohup & disown : 在后台运行终端当前bash实例中的进程,但是该进程与bash的jobs列表分离 (即该进程未被列为bash前台/后台作业和stdin , stdout和stderr还没有 绑定到终端 ); 免于挂断 ; 因此,除了nohup & disown阻塞stdin并默认将stdout和stderr重定向到nohup.out ,在我看来它可以被认为完全等同于 & disown 。 以上都是正确的吗? 有什么误解吗?

“bash – ”中的“ – ”是什么意思?

什么是bash -在下面的bash shell代码中意味着什么? 它似乎用于将输出的最后一个代码作为输入。 如果是这样,我可以把它写成bash或xargs bash吗? curl –silent –location https://rpm.nodesource.com/setup | bash –

我如何在Ubuntu中教bash一些诅咒词?

当bash遇到一个未知的命令(单词?)时,它会这样做: The program ‘hello’ can be found in the following packages: * hello * hello-debhelper Try: sudo apt-get install 我想知道的是如何做到这一点所以我可以编辑它或在它之前添加一些东西来交叉检查本土词典中的未知单词,该单词将有短语:回复对然后可以发送到输出。 我很不满意它周围……但是我试过挖掘的几个bash指南没有任何关于此的东西。 也许我正在寻找错误的地方..任何指针? 是的,我这样做,所以每当我在程序失败时键入wtf,我想要一些好的东西扔给我…

检查它是否存在脚本中的文件

所以我有一个文件名bobv1.txt,我不想手动检查以查看bobv2.txt是否在网站上。 在网站上bobv1.txt将被bobv2.txt取代。 我已经下载了html页面并确定了bobvX.txt的完整下载路径,我知道该文件在我的文件系统中。 如何判断文件是否已存在于我的文件系统中? 我需要这个适用于所有后续版本。

如何撤消上一个cd命令?

在对不同的目录执行cd之后,有没有办法跳回到上一个工作目录? 我的用例是我正在遍历Java项目的目录结构,我希望当前目录只有一个子目录。 所以,我输入cd并快速点击Tab和Enter 。 但是, Tab失败了,因为我错误地预期了一个子目录,实际上还有更多。 所以现在,我刚刚执行了cd ,现在在我的主目录中,而不是Java项目。 有没有办法“撤消”这个cd并跳回我所在的目录?

制作.sh脚本以检查SSH连接是否存在,如果不存在则连接

我正在努力写下我认为应该是一个简单的脚本。 基本上我有一台计算机在工作,它隐藏在我无法访问的NAT后面。 我需要SSH到这台计算机,所以唯一的方法是设置一个反向端口重定向,这个NATted计算机将连接到我家的服务器,同时重定向端口为自己,然后我可以简单地ssh到它通过我的家庭服务器。 .sh脚本将由计算机每5分钟执行一次,这就是我希望它做的事情: 检查我的服务器是否存在活动的ssh连接,如果是,则不执行任何操作并退出脚本。 如果未检测到活动连接,则通过执行“ssh me@1.2.3.4 -i key.priv”进行连接并退出脚本。 如果ssh连接尝试由于某种原因而挂起,比如超过2分钟,则强制退出脚本(不确定是否可以这样做,如果没有,那么它不必在那里) 谢谢你的建议。

无法在/etc/profile.d中设置LD_LIBRARY_PATH

我在Ubuntu Mate 16.04中安装了nVidia CUDA 7.5。 但是,我在设置环境变量时遇到问题。 这是我在/etc/profile.d文件夹中的nvidia-settings.sh文件: export PATH=/usr/local/cuda-7.5/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:/usr/lib/nvidia-361:$LD_LIBRARY_PATH export LIBRARY_PATH=/usr/lib/nvidia-361:/usr/local/cuda-7.5/lib64:$LIBRARY_PATH 但是,重新启动后, LD_LIBRARY_PATH环境不会自动可用。 以下是显示问题的终端输出: ponir@mate:~$ echo $LD_LIBRARY_PATH ponir@mate:~$ echo $LIBRARY_PATH /usr/lib/nvidia-361:/usr/local/cuda-7.5/lib64: ponir@mate:~$ export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:/usr/lib/nvidia-361:$LD_LIBRARY_PATH ponir@mate:~$ echo $LD_LIBRARY_PATH /usr/local/cuda-7.5/lib64:/usr/lib/nvidia-361: ponir@mate:~$ 但是在执行export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:/usr/lib/nvidia-361:$LD_LIBRARY_PATH终端I中的export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:/usr/lib/nvidia-361:$LD_LIBRARY_PATH可以得到该变量。 可能是什么问题? 谢谢。