小编Cbh*_*ihe的帖子

sudo visudo 时更改默认编辑器

这样做时sudo visudo,默认编辑器是nano.
我想将其更改为vivim

我已经作出vim的默认编辑器,并使用它作为替代gedit,以开放的PHP,txt文件,.c和.h文件,通过将vim.desktop文件~/.local/share/applications/,并通过正确地编辑无论是 ~/.local/share/applications/mimeapps.list/etc/gnome/defaults.list。但是显然这不适用于nano.

任何线索?

vim nano default-programs visudo

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

udev-rule 在 14.04.3 上挂载 ext3 fs 的挂载选项

我想超越@AB 的这个优秀解决方案,它允许使用udev规则自动挂载给定的可移动 ext3 FS 。具体来说,我想指定几个挂载选项:“ nodev,noexec,x-gvfs-show”,最好在udev用于挂载它的特定规则内,因为它处理一种非常特定的物理介质。

在没有指定选项的情况下,卷挂载如下:

$ cat /proc/mounts | grep -e MYLABEL
/dev/mmcblk0p1 /mnt/MYLABEL ext3 rw,relatime,data=ordered 0 0
Run Code Online (Sandbox Code Playgroud)

为了指定挂载选项,我尝试udev从以前的解决方案中扩展规则,因此:

KERNEL=="mmc*", ENV{ID_FS_UUID}=="______", RUN+="/usr/local/sbin/mount_by.sh '%E{ID_FS_LABEL}' '%E{ID_FS_UUID}' 'nodev,noexec,x-gvfs-show'"
Run Code Online (Sandbox Code Playgroud)

其中/usr/local/sbin/mount_by.sh包括:

#!/bin/sh
/bin/mount "/dev/disk/by-uuid/$2" "/mnt/$1" -o "$3"
Run Code Online (Sandbox Code Playgroud)

由于 root 定义的挂载选项似乎被拒绝,并且卷(一张 SD 卡)被静默地挂载在 /media/MYUSER/MYLABEL 上,上述内容悄然中断。

怎么了 ?


我试图做的事情:

我看到的许多关于使用udev(例如12、...)时的 mount-option(s) 规范困难的帖子仍未得到答复。

一种处理与规则x-gvfs-show结合使用的 GVFS 选项udev,当安装的卷必须出现在DevicesNautilus GUI 的下方并且非 root 用户必须能够卸载它时。为了至少涵盖最后一个方面,我恢复到不在我的 …

mount ext3 udev 14.04

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

bash:用包含空格和特殊字符的元素填充数组

我希望能够用任意字符串填充数组的元素,例如,可能包含 \ 和空格的字符串。我写了这个:

#!/bin/bash
function populate_array () {
    if [ "$#" -gt 0 ] ; then
        # Enter array w/ elements as argument of executable 
        array=($@)
        n=$#
    else
        # Invoke executable with no arg,, enter array element later
        read -p "Enter array elements separated by spaces: " -a array  
        n=${#array[@]} 
    fi
    printf "%d array elements \n" "$n"
} 

populate_array "$@"

while (("$n" > 0))   # while [ "$n" -gt 0 ] ALSO WORKS
do
    printf "%s \n" "${array[$n-1]}"
    n=$n-1
done …
Run Code Online (Sandbox Code Playgroud)

bash special-characters scripts

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

为什么 i386 软件包会自动安装在 64 位机器上?

我在 64 位计算机上运行 Trusty Desktop,因此如果我查询已安装的软件包,例如:

$ dpkg-query -l gcc* | grep 'ii '
ii  gcc                      4:4.8.2-1ubuntu6        amd64        GNU C compiler
ii  gcc-4.8                  4.8.4-2ubuntu1~14.04    amd64        GNU C compiler
ii  gcc-4.8-base:amd64       4.8.4-2ubuntu1~14.04    amd64        GCC, the GNU Compiler Collection (base package)
ii  gcc-4.8-base:i386        4.8.4-2ubuntu1~14.04    i386         GCC, the GNU Compiler Collection (base package)
ii  gcc-4.8-doc              4.8.4-2ubuntu1~14.04    all          Documentation for the GNU compilers (gcc, gobjc, g++)
ii  gcc-4.8-multilib         4.8.4-2ubuntu1~14.04    amd64        GNU C compiler (multilib files)
ii  gcc-4.9-base:amd64       4.9.1-0ubuntu1          amd64        GCC, the GNU Compiler Collection (base …
Run Code Online (Sandbox Code Playgroud)

64-bit 32-bit software-installation

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

如何使用“魔法空间”启用命令的自动历史记录扩展?

在某个博客上读到,在实际执行命令甚至在命令行中按 Enter 键之前可以使用自动历史记录扩展。它涉及“魔法空间”和创建~/.inputrc配置文件。

该文件应该包含什么内容以及何时读取(在登录和非登录 bash shell 中)?

command-line bash history

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

设备的环境变量列表的前缀(P、N、S、E)是什么意思?

在编写 udev 规则时,例如对于 USB 存储卷,我可以使用以下任一方式显示插入设备的相关属性:

$ udevadm info -q property -n /dev/sdc1
/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:1.0/host5/target5:0:0/5:0:0:0/block/sdc/sdc1
sdc1
disk/by-id/usb-Hitachi_HTS541612J9AT00-0:0-part1
disk/by-path/pci-0000:00:1d.7-usb-0:3.1.3:1.0-scsi-0:0:0:0-part1
DEVLINKS=/dev/disk/by-id/usb-Hitachi_HTS541612J9AT00-0:0-part1 /dev/disk/by-path/pci-0000:00:1d.7-usb-0:3.1.3:1.0-scsi-0:0:0:0-part1
DEVNAME=/dev/sdc1
DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:1.0/host5/target5:0:0/5:0:0:0/block/sdc/sdc1
DEVTYPE=partition
ID_BUS=usb
ID_INSTANCE=0:0
ID_MODEL=HTS541612J9AT00
ID_MODEL_ENC=HTS541612J9AT00\x20
ID_MODEL_ID=0702
ID_PART_ENTRY_DISK=8:32
ID_PART_ENTRY_NUMBER=1
ID_PART_ENTRY_OFFSET=2048
...
Run Code Online (Sandbox Code Playgroud)

或者

$ udevadm info -q all -n /dev/sdc1
P: /devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:1.0/host5/target5:0:0/5:0:0:0/block/sdc/sdc1
N: sdc1
S: disk/by-id/usb-Hitachi_HTS541612J9AT00-0:0-part1
S: disk/by-path/pci-0000:00:1d.7-usb-0:3.1.3:1.0-scsi-0:0:0:0-part1
E: DEVLINKS=/dev/disk/by-id/usb-Hitachi_HTS541612J9AT00-0:0-part1 /dev/disk/by-path/pci-0000:00:1d.7-usb-0:3.1.3:1.0-scsi-0:0:0:0-part1
E: DEVNAME=/dev/sdc1
E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:1.0/host5/target5:0:0/5:0:0:0/block/sdc/sdc1
E: DEVTYPE=partition
E: ID_BUS=usb
E: ID_INSTANCE=0:0
E: ID_MODEL=HTS541612J9AT00
E: ID_MODEL_ENC=HTS541612J9AT00\x20
E: ID_MODEL_ID=0702
E: ID_PART_ENTRY_DISK=8:32
E: ID_PART_ENTRY_NUMBER=1
E: ID_PART_ENTRY_OFFSET=2048
...
Run Code Online (Sandbox Code Playgroud)

...明显的区别是第二种情况下的 P、N、S、E 前缀。

我无法在搜索引擎的手册页udev和/udevadm或使用搜索引擎中追踪它们的含义。 …

udev 14.04

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

如何将我的 cron 日志级别从默认值 1 更改为 7?

> man cron, 告诉我 cron 的默认日志级别是 1;即 cron “将记录所有 cron 作业的开始。
我想将其设置为 7,所以我检查了所有错误的地方,从文件/etc/syslog.d/50-default.conf. 我正在运行 Trusty 14.04。
指点任何人?

cron log 14.04

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

在 cron 环境中无法识别 bash 中内置的“源”

一个用户 crontab 条目,内容如下:

0 */4 * * * $HOME/postscript/fprogcache-sync
Run Code Online (Sandbox Code Playgroud)

工作正常。想在 cron-job 上下文中添加一些环境变量,然后我尝试

0 */4 * * * source $HOME/.profile; $HOME/postscript/fprogcache-sync
Run Code Online (Sandbox Code Playgroud)

直到我更改source.. 错误消息(通过 postfix 邮件发送到 root)是/bin/sh: 1: source: not found,然后确认脚本继续愉快地执行。

我记得曾在某处阅读过在 bash shell中source被定义为内置函数的别名的地方.。如果是这样,它将解释为什么source在 cron 上下文中不被识别。

是这样吗?如果是这样,.定义的系统范围别名在哪里?

bash cron alias 14.04

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