存在一种在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) 我想在 bash 脚本中使用我现在所在的国家/地区的名称。我可以使用下一个命令获取外部 IP:
curl ifconfig.me
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能得到我的国名呢?
在 Ubuntu 中定义的 Nautilus 中使用的这些特殊 URI 在哪里?
recent:///
trash:///
x-nautilus-desktop:///
computer:///
burn:///
Run Code Online (Sandbox Code Playgroud)
通过在路径栏中键入它们,它们可以立即打开 Nautilus 中的特殊位置。
为什么当我以 root 身份打开 Nautilus 时这些不起作用(这是我第一次看到 root 没有权限做某事)?
我使用多个键盘布局,我想找到一种在它们之间切换时运行脚本的方法。
这可能吗?
到目前为止,我可以为这样的脚本分配快捷方式:
#!/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)
但是使用这种方法,我只能使用该快捷方式在布局之间切换,键盘指示器将从状态菜单中消失,这很令人不快。
我想自定义一点我的 GRUB 2 引导加载程序,所以我问如何设置一个等于 GRUB2 中命令的输出的变量?
我有兴趣将date命令的输出传递给变量。此外,我怎样才能只保留该变量中的时间或小时?
当我在 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命令。
现在我想知道这些矛盾的结果是从哪里来的?这是一个错误吗?
使用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,所以我只想知道是否有可能完成我在标题中提出的要求。
当我在终端中运行时:
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显示定义的别名。
有人可以让我了解一下这里到底发生了什么吗?
我在 中定义了以下别名~/.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 ”的文件,但它不起作用。为什么?
bash ×3
command-line ×3
ubuntu ×3
alias ×2
echo ×1
find ×1
geolocation ×1
gnome-panel ×1
grep ×1
grub2 ×1
internet ×1
ip ×1
lightdm ×1
nautilus ×1
root ×1
scripting ×1
services ×1
shell ×1
shell-script ×1
timestamps ×1