Unix & Linux

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

4
使用yum删除yum repo
我在工作的计算机上没有root用户访问权限,但是我有sudo权限使用sudo yum(并且只有yum)。 最近,我不小心安装了错误的存储库(投递箱),现在我想将其删除。由于我没有对该yum.repos.d目录的写访问权,因此手动编辑或删除该repo文件是不可能的。 我知道您可以使用yum安装存储库(这就是我所做的),但是您可以使用yum删除存储库吗? 使用Scientific Linux 6。 顺便说一句,我知道我可以yum --disablerepo=忽略有问题的回购。但是我想永久删除它,因为它还会引起图形包管理器的问题(它不断弹出通知,指出无法检索到更新)。


4
带有硬链接的cp的行为感到惊讶
我非常了解硬链接的概念,并且已经阅读了一些基本工具的手册页,例如cp---甚至是最新的POSIX规范---。我仍然惊讶地观察到以下行为: $ echo john > john $ cp -l john paul $ echo george > george 在这一点上john,它们paul将具有相同的inode(和内容),并且george在两个方面都将有所不同。现在我们做: $ cp george paul 在这一点上,我期望george并paul拥有不同的inode编号,但是内容相同-实现了这一期望-但我也期望paul现在拥有与in相同的inode编号john,并且john仍然具有内容john。这就是我感到惊讶的地方。事实证明,将文件复制到目标路径paul还导致在共享inode的所有其他目标路径上安装相同文件(相同inode)的结果paul。我当时想cp创建一个新文件,然后将其移动到旧文件所占据的位置paul。相反,它似乎要做的是打开现有文件paul,将其截断并写入george的内容添加到该现有文件中。因此,具有相同inode的任何“其他”文件都将同时更新“其”内容。 好的,这是系统性的行为,现在我知道可以期待它了,因此我可以弄清楚如何解决它,或者适当地利用它。让我感到困惑的是应该在哪里看到该行为记录在案?如果我没有看过文档中的某处,我会感到惊讶。但是显然我错过了,现在找不到讨论此行为的消息来源。
20 cp  hard-link 

1
在LVM中交换分区?
我想知道将交换分区放入逻辑卷组是否有任何缺点(例如性能),还是将其作为单独的主/逻辑分区“一样”? 我喜欢这样的事实,如果有必要可以很容易地调整它的大小,但是不确定可能存在的缺点。 应用案例:CentOS 7 Web服务器。

5
Pip vs Package Manager,用于处理Python软件包
Python软件包通常托管在许多发行版的存储库中。在阅读了本教程的内容之后,特别是标题为“您真的要执行此操作”的部分,我避免使用pip,而是首选使用系统存储库,只是在不需要在存储库中安装软件包时才求助于pip。 但是,由于这是不一致的安装方法,因此仅使用pip会更好吗?对于在两个地方都可用的软件包,在系统自己的存储库上使用pip有什么好处/缺点? 我包含的链接指出 始终使用标准Debian / NeuroDebian软件包的优点是,这些软件包经过了仔细的测试,可以相互兼容。Debian软件包记录了与其他库的依赖关系,因此您将始终在安装过程中获得所需的库。 我用拱门。除apt以外的其他软件包管理系统是否属于这种情况?

3
为什么[-n]不像[-n“”]一样假?
我的问题是关于此代码产生的返回值: if [ -n ]; then echo "true"; else echo "false"; fi 打印true。 它的补充测试[ -z ]还使用打印true: if [ -z ]; then echo "true"; else echo "false"; fi 在上面的代码中,为什么[ -n ]测试会假设根本没有传递的字符串值不为null? 下面的代码打印出来false。这是预期的,因为传递的字符串值为null,长度为零。 if [ -n "" ]; then echo "true"; else echo "false"; fi
20 bash 

6
是否可以选择在Linux上替换GNU coreutils?
我一直在考虑停止在Linux系统上使用GNU Coreutils,但是老实说,与许多其他GNU组件不同,我想不出任何替代方法(在Linux上)。GNU coreutils有哪些替代方案?我需要多个包裹吗?链接项目是命名发行包的必不可少的奖励点。 另外,除非您知道它们可以在Linux上运行并且可以参考说明,否则请不要提出任何建议。我怀疑我是否会很快切换内核,而对于简单性之外的任何事情我都太懒了./configure; make; make install。我当然不会为此而破解C。 警告:如果您的发行版使用coreutils,则删除它们可能会破坏发行版功能。但是,不要让它们成为您的第一$PATH也不应该破坏事情,因为大多数脚本应该使用绝对路径。

6
为什么su world可执行?
我有一台无头服务器,该服务器由多个用户远程登录。sudoers文件中没有其他用户,因此他们不能通过获得root用户sudo。然而,由于权限上su有-rwsr-xr-x没有什么东西尝试暴力破解root密码阻止他们。 有人可能会争辩说,如果用户知道root密码,他们仍然会危害系统,但我认为情况并非如此。OpenSSH使用PermitRootLogin no和进行配置,PasswordAuthentication no其他用户均无权访问该服务器。据我所知,世界上的执行权限/usr/bin/su是试图在我的服务器上获得root 权限的用户的唯一途径。 更令我困惑的是,它似乎根本没有用。它使我可以su直接运行而不需要执行操作sudo su,但这并不麻烦。 我在俯视什么吗?世界是否su出于历史原因就在那里执行许可?删除我尚未遇到的权限是否有不利之处?
20 sudo  su  headless 

3
bash中的“ true”的目的是什么?然后”
我已经一起破解了这个bash脚本,该脚本可以测试用户是否具有超级用户特权,如果没有,它会要求他们。最终,我试图反转第二个“ if”语句,以便删除以下两行(回显“ password ok”和下一行的else) # Root user only if [[ "$EUID" != 0 ]]; then sudo -k # make sure to ask for password on next sudo if sudo true; then echo "Password ok" else echo "Aborting script" exit 1 fi fi echo "do my ops" 第四行“真”的目的仅仅是一个空语句吗? 我需要在第四行反转测试,该怎么做?这是我尝试过的: if sudo …
20 bash  sudo 

2
使用文件系统监视程序在2台计算机之间同步文件夹,以便每次修改文件后立即将其复制
我有: 我通过IP 203.0.113.0端口1234上的SSH连接的Linux服务器 家用计算机(在路由器后面),公用IP 198.51.100.17,它是Debian或Windows + Cygwin 使文件夹/home/inprogress/ 同步(双向),最简单的方法是什么,有点像rsync,但是使用filesystem watcher,以便每次修改文件时,立即将其复制到另一侧?(即无需手动调用同步程序) 我正在寻找命令行/无GUI解决方案,因为服务器没有头。 有Linux / Debian内置解决方案吗?

7
避免列出以〜结尾的文件(备份文件)
我的要求是列出目录中的所有文件,但以~(.backup files)结尾的文件除外。 我试图使用命令: ls -l | grep -v ~ 我得到以下输出: asdasad asdasad~ file_names.txt normaltest.txt target_filename testshell1.sh testshell1.sh~ testshell2.sh testshell2.sh~ testtwo.txt testtwo.txt~ test.txt test.txt~ 我只想获取这些文件: asdasad file_names.txt normaltest.txt target_filename testshell1.sh testshell2.sh testtwo.txt test.txt
20 ls  filenames 

4
调用程序时是否有POSIX(或至少是流行的)实用程序来设置当前工作目录?
我们有env(1)来修改我们要运行的命令的环境(例如env MANPAGER=more man dtrace)。除了修改要在其中启动命令的目录之外,是否有类似内容? 理想情况下,我希望它看起来像这样: theMagicCommand /new/cwd myProgram 这样,它可以与其他类似env(1)的命令“链接”,例如, daemon -p /tmp/pid env VAR=value theMagicCommand /new/cwd myProgram 到目前为止,我可以想到以下解决方案,不幸的是,该解决方案没有与env(1)相同的接口: cd /new/cwd && myProgram 另外,我可以像这样创建一个简单的shell脚本: #! /bin/sh - cd "${1:?Missing the new working directory}" || exit 1 shift exec "${@:?Missing the command to run}" 但是我正在寻找已经存在的东西(至少在macOS和FreeBSD上)。 myProgram不一定是桌面应用程序(在这种情况下,我可以只使用.desktop文件中的Path键)。
20 shell  freebsd  cwd 

1
为什么“#!/ bin / sh -a”中的-a影响sed而“ set -a”却不影响?
如果我运行以下.sh文件: #!/bin/sh -a echo "a" | sed -e 's/[\d001-\d008]//g' 结果是一个错误: sed:-e表达式#1,字符18:无效的范围结尾 但是,如果我运行以下.sh文件: #!/bin/sh set -a echo "a" | sed -e 's/[\d001-\d008]//g' 它运行没有错误。第二个代码不是应该等同于第一个吗?为什么在第一个错误?

5
如何根据另一个变量简洁地为变量分配不同的值?
我如何缩短这个shell脚本? CODE="A" if test "$CODE" = "A" then PN="com.tencent.ig" elif test "$CODE" = "a" then PN="com.tencent.ig" elif test "$CODE" = "B" then PN="com.vng.pubgmobile" elif test "$CODE" = "b" then PN="com.vng.pubgmobile" elif test "$CODE" = "C" then PN="com.pubg.krmobile" elif test "$CODE" = "c" then PN="com.pubg.krmobile" elif test "$CODE" = "D" then …

5
在Bash中键入单个感叹号有什么作用?
Bash使用惊叹号扩展历史记录,如对此问题的答案所述(例如,使用来sudo !!运行先前的命令行sudo)。但是,我找不到任何地方可以解释运行以下命令(即单个感叹号)的作用: ! 它似乎什么也没打印,并以1退出,但是我不确定为什么要这样做。我已经在网上和Bash手册页中进行了查找,但是除了它是一个“保留字”这一事实外,什么都找不到,但是},并运行以下命令: } 打印错误: bash: syntax error near unexpected token `}'

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.