Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

2
ls忽略“没有匹配项”
我想列出的所有文件的文件夹,名为中foldername有扩展test,atest或btest。 我立即想到要跑步 ls ./foldername/*.{a,b,}test 除非扩展名没有任何内容,否则此方法工作正常atest,在这种情况下,我会收到错误消息zsh: no matches found: ./foldername/*.atest。 有什么方法可以简单地忽略此错误并打印确实存在的文件? 我需要在ZSH和BASH中都可以使用。

5
如何在Kali Linux中安装特定版本的GCC?
这个问题似乎可以在Google容易找到的几个问题和其他地方正确解决,但是由于以下原因,我认为该解决方案并不令人满意。但是为了完整起见,我添加了一些相关链接: /ubuntu/138284/how-to-downgrade-a-package-via-apt-get /ubuntu/428772/how-to-install-specific-version-of -some-package / 428778 /ubuntu/26498/choose-gcc-and-g-version ... 和别的。 但是,这个问题是关于在Kali Linux中安装非常特定的GCC版本,该版本似乎不容易作为特定的软件包使用。特别是,问题在于如何安装6.3.0版本,因为我需要使用此版本来编译特定程序:https ://www.reddit.com/r/Monero/comments/6d0ah8/xmrig_miner_new_release/ (作为一个奖励问题,如果有一种更理性的方法来解决此特定问题而不使用其他版本的GCC,请随时回答,但是我相信这个问题是笼统的,无论如何我都想知道如何解决如何正确建立上述程序链接) 可通过以下方式确定可用于安装任何软件包的版本,例如gcc: apt-cache showpkg gcc 它将在“版本:”下列出可用版本,例如 4:7.2.0-1d1 4:4.9.2-2 安装就像发行一样简单 apt-get install gcc:4:4.9.2-2 这将安装旧版本4:4.9.2-2,只需(我相信)覆盖7.2.0-1d1安装(如果存在)。 要使版本4:4.9.2-2完全可用,我必须添加deb http://old.kali.org/kali sana main non-free contrib到 /etc/apt/sources.list文件中,然后运行apt-get update。 但是,如果未列出我需要的版本怎么办? 我一直在尝试各种来源,例如在这里找到的那​​些来源:http: //snapshot.debian.org/以及来自Google搜索的各种其他问题和网站。 他们中的大多数给我忽略或错误,例如如下 Ign:3 http://snapshot.debian.org/archive/debian/20091004T111800Z lenny InRelease 即使这行得通,安装特定版本的方法似乎也很糟糕,因为添加一些任意源可能没有我想要的特定版本。 如果我在snapshot.debian.org上搜索gcc,则只会得到很旧的版本:http : //snapshot.debian.org/package/gcc/ 我最终对这种方法感到沮丧,并从源代码压缩包中编译了GCC 6.3.0。编译成功,但是接下来我要面对如何安装它。我谨慎运行make install,因为我担心它会篡改apt和dpkg,并可能破坏系统。 相反,我尝试直接从build目录运行它。我试图简单地将构建目录添加为PATH中的第一个条目,但这没有用。然后,我尝试重命名gcc-6.3.0可执行文件所在的位置/usr/bin/gcc并进行符号链接/usr/bin/gcc。这带来了以下问题: cc: …

6
基于返回值而不是退出代码构造管道的优美方法?
当状态代码无效时,是否仍然可以根据stdout的输出构造管道? 我希望答案不是解决用例,而是shell脚本范围内的问题。我要尝试做的是根据国家和语言代码猜测名称,从而找到存储库中最具体的软件包。 以这个为例 $PACKAGE1=hunspell-en-zz $PACKAGE2=hunspell-en 第一个猜测更合适,但可能不存在。在这种情况下,我想回到hunspell-en($PACKAGE2),因为第一个选项hunspell-en-zz($PACKAGE1)也不会存在。 apt-cache的管道 apt-cache只要命令能够运行(从的文档apt-cache),该命令就会返回成功(由shell定义为退出代码零) apt-cache在正常运行时返回零,在错误时返回十进制。 这使得在管道中使用该命令更加困难。通常,我期望404的等效程序包搜索会导致错误(如curl或会发生wget)。我想搜索以查看是否存在一个软件包,如果不存在,则回退到另一个软件包。 这不会返回任何内容,因为第一个命令将返回成功(因此,||从不运行rhs ) apt-cache search hunspell-en-zz || apt-cache search hunspell-en apt-cache search 有两个参数 这不会返回任何内容,因为apt-cache它的参数是AND, apt-cache search hunspell-en-zz hunspell-en 来自的文档 apt-cache 可以使用单独的参数来指定多个和在一起的搜索模式。 因此,由于其中一个参数显然不存在,因此不会返回任何内容。 问题 什么是外壳惯用语来处理约定,例如apt-cache在返回代码对任务无用的情况下?而成功仅取决于STDOUT上是否存在输出? 相似 一无所获使查找失败 他们都源于同一个问题。那里选择的答案提到find -z了可悲的是这里不适用于解决方案,并且是针对用例的。没有提及习惯用法或在不使用空终止的情况下构建管道(不是的选项apt-cache)

5
在具有64位处理器的32位OS上安装64位程序
我很好奇。是否可以在具有64位处理器的32位OS上安装64位程序? 我在树莓派3上运行Linux,尝试安装较新版本的MongoDB: armv7l GNU/Linux PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)" NAME="Raspbian GNU/Linux" VERSION_ID="9" VERSION="9 (stretch)" ID=raspbian ID_LIKE=debian
8 linux  arm  64bit  32bit 

1
升级到内核4.13后关闭电源时电池电量耗尽
升级到4.13内核后,我的笔记本电脑的电池在关闭电源时开始耗尽(一天约占30%)。如果从内核4.12或Windows 8.1引导笔记本电脑,则不会发生这种情况,因此问题显然与新的内核版本有关。 由于局域网唤醒(WoL),我曾经有过类似的问题。但是,这是很久以前通过永久禁用WoL来解决的。我可以轻松地验证ethtoolWoL是否仍处于禁用状态。 从关机菜单中关闭笔记本电脑时,是否可以重新启用WoL?确实,如果我强制硬关机(即,按住电源按钮),则不会发现电池耗尽。但是,我没有足够的技能来验证这个假设。 如果有人可以帮助我调试此问题,那就太好了。

1
为什么以存储的嵌套命令返回码退出会导致Dash和Bash中的返回码不同?
跑步 bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;' 根据我的理解,这导致将结果test1打印到控制台并echo $?进行打印1,因为命令应该返回内部[b/d]ash -c返回的内容,而 dash -c 'dash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;' 结果相同,但0根据则返回echo $?。 我想了解这种差异,以便加深对Shell和可移植Shell编程的了解。 我在Ubuntu 17.10(Artful Aardvark)上使用bash4.4.12和dash0.5.8-2.3ubuntu1。

3
为什么我不能以这种方式grep?
我想将“ disable = yes”行更改为“ disable = no”到以下文件中: [root@centos2 ~]# cat /etc/xinetd.d/tftp service tftp { ... server_args = -s /var/lib/tftpboot disable = yes per_source = 11 ... } 我尝试了这个: [root@centos2 ~]# grep 'disable = yes' /etc/xinetd.d/tftp [root@centos2 ~]# 只需用鼠标复制空间,但不会复制任何内容... 为什么以及如何知道“ disable”和“ =”之间的元素是什么?是几个空格吗?表格? 我知道我可以使用以下正则表达式进行grep: [root@centos2 xinetd.d]# grep -E 'disable.+= yes' /etc/xinetd.d/tftp disable …
8 sed  grep 

1
用种子重击随机?
我一直在使用$((1 + RANDOM % 1000))生成一个随机数。 是否可以做类似的事情但提供种子? 这样,给定相同的种子,总是会输出相同的随机数吗?
8 bash  random 

1
Unix管道另一端的进程名称?
如果两个过程通过管道连接, > cmd1 | cmd2 有什么方法cmd1可以找出管道另一边的过程名称(或PID cmd2)? 另外,反之亦然,是否有任何方法cmd2可以获取的名称/ PID cmd1? 我知道isatty(3)要检查输出是否到达终端(或输入来自终端),所以我想知道是否有办法找到更多有关另一端的信息。
8 linux  process  pipe  proc 

2
为什么只读内存映射的区域有脏页?
执行(例如)以下命令以获取内存映射页面的列表: pmap -x `pidof bash` 我得到以下输出: 为什么有些只读页面被标记为“脏”,即需要写回的已写页面?如果它们是只读的,则该过程将无法对其进行写...(在所提供的示例中,脏页始终为4 kB,但我发现其他情况下它们的值不同) 我还检查了/ proc / pid / smaps,这些页面被描述为“私人脏污”。

2
如何从一个Debian来源卸载所有软件包?
我以前向其中添加了一些外部资源,/etc/apt/sources.list.d但现在想删除其中之一。我也想: 仅从该来源中删除所有软件包 将所有软件包还原为我原始来源中的版本 或者,列出此源中所有软件包的列表,以便我可以手动执行此过程 我怎样才能做到这一点?

4
设置Android Studio卡住了
我是在设置刚安装的Ubuntu Mate 16.04时,是时候设置Android Studio 3.0了: 看来安装程序尝试 反复从https://dl.google.com/android/repository/android_m2repository_r47.zip下载 ,我认为它内部失败。 当我在浏览器中尝试使用URL时,它仍然有效。有人熟悉这个问题吗? [补充] •Java版本:8u152 •已执行:sudo apt-get install libc6:i386 libncurses5:i386 libstdc ++ 6:i386 lib32z1 libbz2-1.0:i386
8 ubuntu  java  android 

1
了解核心ID
只是为了了解核心ID: 我有4个CPU: $ cat /proc/cpu* | grep proc* processor: 0 processor: 1 processor: 2 processor: 3 的结果nproc也是4。 但是如果我使用,cat /proc/cpu* | grep 'core id'我会得到两次相同的结果 core id: 0 core id: 2 core id: 0 core id: 2 为什么它们没有像CPU那样编号,以及如何区分相同的内核ID? 的全部内容/proc/cpuinfo如下: processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 37 …
8 linux  cpu 

2
bg之后是否可以停止命令的输出?
假设这种情况 wget http://file wget开始下载文件。 我把它放在后台。 ^Z bg 该命令进入后台。 但是,如果控制台仍处于打开状态,它的输出也仍然在控制台上。 是否可以停止命令的输出? Wget只是一个例子。考虑一个写很多输出的命令。 在控制台上,我知道可以执行此操作bg,然后关闭终端然后再打开另一个终端,但是如果我只有一个终端可用而没有伪终端怎么办?

2
使新用户能够通过ssh登录
我已获得一台用于某些计算的服务器。我已经获得了root密码,他们告诉我为自己创建一个帐户。 我使用ssh root@host 并输入了root密码访问了服务器。然后,我使用创建了一个用户sudo useradd -m myname并设置了密码。然后我注销,并尝试ssh做ssh myname@host 但是,在我输入密码后,我的连接立即关闭: Connection to host closed by remote host. Connection to host closed. 我尝试查看host.deny和host.allow文件,但它们似乎没有被修改(它们用#注释掉) 然后,我尝试研究etc/ssh/sshd_config,但是我不知道到底要寻找什么。这些是一些似乎相关的参数: # Authentication: LoginGraceTime 120 PermitRootLogin yes StrictModes yes RSAAuthentication yes PubkeyAuthentication yes #AuthorizedKeysFile %h/.ssh/authorized_keys # Don't read the user's ~/.rhosts and ~/.shosts files IgnoreRhosts yes # For this …

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.