小编Rad*_*anu的帖子

回声前的时间戳

存在一种在echo?前面创建时间戳的更好方法。

目前我这样做:

#!/bin/sh

if mount | grep -q /mnt/usb; then
        echo `date +%R\ ` "usb device already mounted"
else
        echo `date +%R\ ` "mounting usb device..."
        mount -t msdosfs /dev/da0s1 /mnt/usb

        if mount | grep -q /mnt/usb; then
                echo `date +%R\ ` "usb device successfully mounted"
        fi
fi
Run Code Online (Sandbox Code Playgroud)

输出应该是这样的:

10:36 usb device already mounted
Run Code Online (Sandbox Code Playgroud)

shell echo timestamps

12
推荐指数
3
解决办法
4万
查看次数

在bash中通过IP获取我的国家

我想在 bash 脚本中使用我现在所在的国家/地区的名称。我可以使用下一个命令获取外部 IP:

curl ifconfig.me
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能得到我的国名呢?

ip internet geolocation

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

Nautilus 特殊 URI

在 Ubuntu 中定义的 Nautilus 中使用的这些特殊 URI 在哪里?

recent:///
trash:///
x-nautilus-desktop:///
computer:///
burn:///
Run Code Online (Sandbox Code Playgroud)

通过在路径栏中键入它们,它们可以立即打开 Nautilus 中的特殊位置。

为什么当我以 root 身份打开 Nautilus 时这些不起作用(这是我第一次看到 root 没有权限做某事)?

root ubuntu nautilus

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

在键盘布局之间切换时如何运行脚本

我使用多个键盘布局,我想找到一种在它们之间切换时运行脚本的方法。

这可能吗?

到目前为止,我可以为这样的脚本分配快捷方式:

#!/bin/bash

#switch between two layouts (English and Greek in this case)
current_layouts=$(gsettings get org.gnome.libgnomekbd.keyboard layouts)

if [ "$current_layouts" = "us" ]; then
    gsettings set org.gnome.libgnomekbd.keyboard layouts "['gr']"
else 
    gsettings set org.gnome.libgnomekbd.keyboard layouts "['us']"
fi

exec /path/to/another/script
Run Code Online (Sandbox Code Playgroud)

但是使用这种方法,我只能使用该快捷方式在布局之间切换,键盘指示器将从状态菜单中消失,这很令人不快。

ubuntu shell-script gnome-panel keyboard-layout

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

如何设置一个变量等于 GRUB2 中命令的输出?

我想自定义一点我的 GRUB 2 引导加载程序,所以我问如何设置一个等于 GRUB2 中命令的输出的变量?

我有兴趣将date命令的输出传递给变量。此外,我怎样才能只保留该变量中的时间或小时?

scripting grub2

5
推荐指数
1
解决办法
3091
查看次数

Lightdm 服务 - `status` 命令的结果相互矛盾

当我在 gnome 终端中运行时:

service lightdm status
Run Code Online (Sandbox Code Playgroud)

一切看起来都不错,并且符合预期:

lightdm start/running, process 1221
Run Code Online (Sandbox Code Playgroud)

但是当我运行时:

service --status-all 2>&1 | grep lightdm
Run Code Online (Sandbox Code Playgroud)

输出是:

 [ ? ]  lightdm
Run Code Online (Sandbox Code Playgroud)

由于?,AFAIK 意味着 lightdm 服务没有status命令。

现在我想知道这些矛盾的结果是从哪里来的?这是一个错误吗?

command-line ubuntu services lightdm

5
推荐指数
1
解决办法
2057
查看次数

如何禁用shell关键字?

使用enable内置命令,我们可以禁用 shell 内置命令,例如echo,如下所示:

enable -n echo
Run Code Online (Sandbox Code Playgroud)

但是我们如何禁用 shell 关键字,例如time?如果我们尝试:

enable -n time
Run Code Online (Sandbox Code Playgroud)

我们将得到以下“答案”:

bash: enable: time: not a shell builtin
Run Code Online (Sandbox Code Playgroud)

注意:我知道如何运行里面的time那个/usr/bin,所以我只想知道是否有可能完成我在标题中提出的要求。

command-line bash

4
推荐指数
2
解决办法
5311
查看次数

为什么 bash 命令中缺少别名?

当我在终端中运行时:

alias
Run Code Online (Sandbox Code Playgroud)

我的所有别名(在~/bashrc~/.bash_aliases文件中定义)的列表将显示在我的终端上。这很好,正如预期的那样!

但是当我运行时:

bash -c "alias"
Run Code Online (Sandbox Code Playgroud)

没有输出,所以没有别名。首先,我认为该~/.bashrc文件不是第二种情况下的来源,所以我跑了:

bash -c ". ~/.bashrc && alias"
Run Code Online (Sandbox Code Playgroud)

但是,昏迷,再次没有输出......

奇怪的是,当我运行时:

bash -c ". ~/.bash_aliases && alias"
Run Code Online (Sandbox Code Playgroud)

~/.bash_aliases显示定义的别名。

有人可以让我了解一下这里到底发生了什么吗?

command-line bash alias

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

find 和 grep 的问题

我在 中定义了以下别名~/.bashrc

 alias fg='find . -name $1 | xargs grep --color $2'
Run Code Online (Sandbox Code Playgroud)

为了写

fg "*.txt" " my_text "
Run Code Online (Sandbox Code Playgroud)

并找到所有扩展名为 .txt 并包含“ my_text ”的文件,但它不起作用。为什么?

grep bash find alias

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