小编Min*_*nix的帖子

使用 $(pwd) 还是 $PWD 更好?

BASEDIR=$(pwd)在脚本中遇到过。

BASEDIR="$PWD"除了可能$PWD会被覆盖之外,使用 是否有任何优点或缺点?

shell-script pwd

62
推荐指数
2
解决办法
14万
查看次数

为什么 ( exit 1 ) 不退出脚本?

我有一个脚本,当我想要它时它不会退出。

具有相同错误的示例脚本是:

#!/bin/bash

function bla() {
    return 1
}

bla || ( echo '1' ; exit 1 )

echo '2'
Run Code Online (Sandbox Code Playgroud)

我假设会看到输出:

:~$ ./test.sh
1
:~$
Run Code Online (Sandbox Code Playgroud)

但我实际上看到:

:~$ ./test.sh
1
2
:~$
Run Code Online (Sandbox Code Playgroud)

()命令链是否以某种方式创建了一个范围?exit如果不是脚本,退出是什么?

shell-script exit subshell

60
推荐指数
3
解决办法
5万
查看次数

是否有一个 unix 命令可以给出两个数字的最小值/最大值?

我正在寻找一个命令来限制从stdin.

我为此编写了一个小脚本(欢迎批评),但我想知道是否没有针对此简单且(我认为)常见用例的标准命令。

我的脚本找到了两个数字中的最小值

#!/bin/bash
# $1 limit

[ -z "$1" ] && { echo "Needs a limit as first argument." >&2; exit 1; }

read number

if [ "$number" -gt "$1" ]; then
        echo "$1"
else
        echo "$number"
fi
Run Code Online (Sandbox Code Playgroud)

scripting numeric-data

54
推荐指数
6
解决办法
9万
查看次数

什么会在每次启动时覆盖 /etc/resolv.conf?

我得到了一个 mini 的文件linux,它可以直接启动到firefox. 它适用于它应该做的所有事情,只是我没有互联网连接。

我们在网络中有 3 个 DNS 服务器,它们都可以正常工作。我也可以ping通他们。但是当我尝试ping google.dewget google.de我得到一个bad address错误。

nslookup google.de 出于某种原因工作。

我将问题追溯到我resolv.conf在启动系统上的内容与resolv.conf我放入.iso文件中的内容不同。

我尝试了解创建和修改resolv.conf. 我不太确定我是否掌握了所有内容,但我绝对没有在那里找到我的解决方案。

所以作为最后的努力,我尝试resolv.conf使用

:~# chattr +i /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,当重新构建并再次启动时,我的文件被重命名为resolv.conf~,取而代之的是一直困扰着我的同一个标准文件。

文件内容让我相信它是从网络本身获取信息的。.iso在没有互联网访问权限的情况下启动Virtualbox 时,我的文件将保持原样。

我试图/etc/dhcp/dhclient.conf通过删除domain-name-serverdomain-name-searchrequest文件的一部分来改变不从网上获取信息。

不幸的是没有工作。

我没有安装 NetworkManager。ISO 基于 Ubuntu 14.04。

可能缺少重要信息。我很乐意提供它。

更新:

我想我找到了清除resolv.conf.

好像是 /usr/share/udhcpc/default.script

#!/bin/sh

# udhcpc script edited by Tim Riker …
Run Code Online (Sandbox Code Playgroud)

networking dhcp udhcpc busybox resolvconf

40
推荐指数
3
解决办法
16万
查看次数

在 shell 脚本中表示布尔值的最佳实践是什么?

我知道,在 中有布尔值bash,但我从未看到它们在任何地方使用。

我想为我的机器上一些经常查找的信息编写一个包装器,例如,这个特定的 USB 驱动器是否已插入/安装。

实现这一目标的最佳实践是什么?

我主要想知道,想要使用包装器的其他人会期望什么。他们会期望一个布尔值,一个像变量这样的命令还是一个要调用的函数?

从安全的角度来看,我认为第二种选择是最安全的,但我很想听听您的经验。

shell shell-script

20
推荐指数
1
解决办法
4万
查看次数

如何确定控制台输出的当前颜色?

我知道,如果有彩色终端可用,则可以使用转义字符为其输出着色

但是有没有可能找出输出当前显示为哪种颜色?或者更好的是,如果我现在输出它,文本会是什么颜色?

我要求在使用这些转义字符时不要破坏任何以前的颜色设置。“默认前景色”转义字符是从配色方案中获取它的信息,而不是我更改它之前的文本颜色。

colors escape-characters console

16
推荐指数
2
解决办法
9091
查看次数

内核崩溃后如何向上滚动?

在修补 Linux VM 时,我经常遇到内核恐慌,这会用我不理解的东西推高所有有用的输出,这可能对我没有帮助。

恐慌主要发生在initramfs阶段。我正在使用VirtualBox.

正常的Shift+Pg Up不起作用(就我而言)。

有没有另一种方法可以向上滚动并查看之前任何内容的输出?

terminal kernel-panic

15
推荐指数
1
解决办法
1万
查看次数

只有写权限的文件夹没用......对吗?

使用 Linux 多年,发现自己有一些空闲时间,我决定重新审视一些基础知识。因此,我重新阅读了有关权限的内容(不检查源代码)及其文件夹的特殊情况,并提出了一种新的(至少对我而言......)考虑文件夹权限的方式(对于特定用户/ group/others):我将文件夹想象为一个包含两列的表格,如下所示:

filename | inode    
foo      | 111  
bar      | 222 
Run Code Online (Sandbox Code Playgroud)

权限意味着可以阅读(列表)表的左栏中,写入权限对应于添加和删除条目表,和执行权限对应于能够从文件名到inode的转换; 即您可以访问文件夹的内容。

我做了一些实验,结果都符合我的这个“世界观”,但一个结论似乎是不可避免的:一个有权限的文件夹d-w-------,完全没用。详细说明:您无法列出其内容,您无法读取您知道其中存在的任何文件(因为您无法将名称翻译成 inode),您无法删除或重命名或添加文件,因为这又意味着翻译,你甚至不能添加硬链接(因为,我推测,这意味着添加一个名称和一个 inode 编号,这意味着你会知道两者,反过来,再次猜测,违反了取消设置执行权限的目的) . 当然,如果有内部的一个这样的文件夹的文件,那么你就不能删除该文件夹或者,因为你不能删除其内容。

所以……我想问两个问题:

  1. 我的这个比喻是正确的,还是一个大错误?
  2. 不管之前的答案是什么,是否有任何情况下拥有具有所述权限的文件夹是合适的?

permissions directory

11
推荐指数
1
解决办法
4715
查看次数

[ "$VAR" = "" ] 和 [ -z "$VAR" ] 总是等价的吗?

我的代码看起来像这样:

VAR=""

while [ -z "$VAR" ]; do
  VAR=$( command | grep "important_string" )
done
Run Code Online (Sandbox Code Playgroud)

所以我想轮询 , 的输出command,直到important_string出现并放入$VAR.

有没有之间的功能差异[ -z "$VAR" ][ "$VAR" = "" ]

shell-script

8
推荐指数
1
解决办法
1209
查看次数

在 Raspbian 中列出用户和用户组

让我惊讶的是,没有任何搜索让我想到这样一个简单的问题。我想要的只是获取用户和用户组的列表(无论第二件事实际上是什么)。

我发现了许多有关创建或删除用户帐户的资源,但听起来每个人都牢记系统上的所有帐户。我想不是那样的。

那么我如何列出他们,他们的权限以及如何列出组?

users debian

7
推荐指数
2
解决办法
6万
查看次数