小编Lin*_*eak的帖子

如何检查是否在bash脚本中以root身份运行

我正在编写一个需要根级别权限的脚本,我想这样做,如果脚本不是以root身份运行,它只是回应"请以root身份运行".并退出.

这是我正在寻找的一些伪代码:

if (whoami != root)
  then echo "Please run as root"

  else (do stuff)
fi

exit
Run Code Online (Sandbox Code Playgroud)

我怎么能最好(干净,安全)完成这个?谢谢!

啊,只是为了澄清:(做东西)部分将涉及运行内部和自身需要root的命令.因此,以普通用户身份运行它只会出现错误.这只是为了干净地运行需要root命令的脚本,而不在脚本中使用sudo,我只是在寻找一些语法糖.

bash shell root

245
推荐指数
12
解决办法
16万
查看次数

如何在Bash中生成随机数?

如何在Bash中生成一个范围内的随机数?

random bash shell

191
推荐指数
16
解决办法
18万
查看次数

在Bash或Shell脚本中转​​发函数声明?

例如bash,在C/C++中众所周知的前向声明是否有类似的东西或至少类似的东西(解决方法)?

或者有这样的事情,因为例如它总是一次性执行(一行一行)?

如果没有前向声明,我该怎么做才能使我的脚本更容易阅读.它相当长,这些函数定义在开始时与全局变量混合,使我的脚本看起来很难看,难以阅读/理解)?我要求学习一些这些案例的知名/最佳实践.


例如:

# something like forward declaration
function func

# execution of the function
func

# definition of func
function func
{
    echo 123
}
Run Code Online (Sandbox Code Playgroud)

bash function sh forward-declaration

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

如何在纳米文本编辑器中打开多个文件并在它们之间切换?

emacs,您可以使用Ctrl+ X, Ctrl+ 打开新文件F

和去与以前的文件Ctrl+ B,并转到下一个文件Ctrl+ N.

如何在nano文本编辑器中执行此操作?虽然nano启动,然后打开新文件,以及如何在打开的文件之间切换nano文本编辑器?

text editor nano

22
推荐指数
3
解决办法
2万
查看次数

如何在Linux中附加VHDx或VHD文件?

如何在Linux中附加VHDX或VHD文件?

我的意思是将虚拟硬盘作为块设备附加,并使用外部工具来读取这些设备.

里面的文件系统不可安装.我不需要挂载文件系统,但是就像它在真正的硬盘上一样处理它.

我阅读了手册页guestfish,但找不到怎么做.

linux vhd

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

如何从String中删除所有空格字符?

亲爱的程序员,

我正在使用C#Visual Studio 2013编写代码,我刚刚意识到我可能不需要使用Trim()Replace(" ", string.Empty).

一个例子如下:

SanitizedString = RawString
    .Replace("/", string.Empty)
    .Replace("\\", string.Empty)
    .Replace(" ", string.Empty)
    .Trim();
Run Code Online (Sandbox Code Playgroud)

因为我以前的代码结构不同,我没有注意到它:

SanitizedString = RawString.Trim()
    .Replace("/", string.Empty)
    .Replace("\\", string.Empty)
    .Replace(" ", string.Empty);
Run Code Online (Sandbox Code Playgroud)

我知道这些方法的工作方式不同,因为Trim()删除了所有空白字符,而Replace(" ", string.Empty)只删除了空格字符.

这就是为什么我有一个不同的问题.

我没有看到任何明显的方法来实现与替换.我的问题是,当我希望从字符串中删除所有空白字符时,我将如何处理它?

我找到了以下内容:

从String中删除所有空格的有效方法?

但由于我从未使用正则表达式,我对如何将其应用于字符串犹豫不决?

c# string whitespace

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

Delphi:TFrame错误没有帧可供插入

碰巧我,Delphi XE6 IDE 忘记TFrame了我过去创建的所有后代.

更具体地说,当我单击标准 - >框架时,选择我的框架的对话框不再显示.

相反,它显示以下错误消息:

没有框架可供插入.可以从File | New | Other选项创建新帧.

有办法纠正这种情况吗?

EDIT1重现的步骤很遗憾:我真的不确定这是怎么发生的,但事实确实如此.我认为从某些版本的Delphi升级到另一个版本时可能存在罪魁祸首.因为我随着时间的推移多次升级,我记得在Delphi 7中启动项目,然后有一些版本我不记得哪些版本,我使用的最后两个版本是XE2,直到现在是XE6.


Edit2如果在XE2之前使用Delphi版本创建了框架,则会发生这种情况.

delphi tframe

6
推荐指数
1
解决办法
1124
查看次数

如何抑制不相关的 ShellCheck 消息?

环境

系统:Linux Mint 19(基于Ubuntu 18.04)。

编辑器:我使用带有 ShellCheck 插件的Visual Studio Code官方网站)来即时检查错误、警告和提示。


壳牌检查

是每个 shell 脚本编写者的必备工具。

尽管开发人员必须付出巨大的努力使其尽可能好,但它有时会产生不相关的警告和/或信息。

示例代码,带有此类消息(警告SC2120 + 直接相邻信息SC2119):


POSIX shell 脚本片段

am_i_root()
# expected arguments: none
{
    # check if no argument has been passed
    [ "${#}" -eq 0 ] || print_error_and_exit 1 "am_i_root" "Some arguments have been passed to the function!\\n\\tNo arguments expected.\\n\\tPassed: ${*}"

    # check if the user is root
    # this will return an exit code of the command itself …
Run Code Online (Sandbox Code Playgroud)

linux shell shellcheck

5
推荐指数
2
解决办法
4094
查看次数

C:为什么我的程序中的输出数字不在标准 RGB 范围内:0-255?

仅凭对 C 的最低限度的了解,我将以下代码放在一起,我在 Linux Mint 19 上编译了这些代码:

gcc-7 -o getPixelColor getPixelColor.c -L/usr/X11/lib -lX11
Run Code Online (Sandbox Code Playgroud)

并在没有参数的情况下执行:

./getPixelColor
Run Code Online (Sandbox Code Playgroud)
gcc-7 -o getPixelColor getPixelColor.c -L/usr/X11/lib -lX11
Run Code Online (Sandbox Code Playgroud)

题:

我不知道为什么输出数字不在标准RGB 范围内:0-255?

当前输出示例(取自桌面图片,[0,0]):

./getPixelColor
Run Code Online (Sandbox Code Playgroud)

预期输出(使用 Wine 运行的 Windows 颜色选择器获取):

#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <stdio.h>

void get_pixel_color(Display *d, int x, int y, XColor *color)
{
    XImage *image;
    image = XGetImage(d, RootWindow(d, DefaultScreen(d)), x, y, 1, 1, AllPlanes, XYPixmap);
    color->pixel = XGetPixel(image, 0, 0);
    XFree(image);
    XQueryColor(d, DefaultColormap(d, DefaultScreen(d)), color);
}

int main(int argc, char const *argv[])
{ …
Run Code Online (Sandbox Code Playgroud)

c linux colors

5
推荐指数
0
解决办法
419
查看次数

如何在Visual Studio 2015中禁用PDB文件创建?

IDE:我使用Visual Studio 2015 Update 3(语言:C#,.NET 4.5).

问题:编译发布解决方案时,会生成PDB文件.

问题:如何在Visual Studio 2015中禁用PDB文件创建?

pdb-files visual-studio-2015

3
推荐指数
1
解决办法
2106
查看次数