这样做时sudo visudo,默认编辑器是nano.
我想将其更改为vi或vim。
我已经作出vim的默认编辑器,并使用它作为替代gedit,以开放的PHP,txt文件,.c和.h文件,通过将vim.desktop文件~/.local/share/applications/,并通过正确地编辑无论是 ~/.local/share/applications/mimeapps.list或/etc/gnome/defaults.list。但是显然这不适用于nano.
任何线索?
我想超越@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(例如1、2、...)时的 mount-option(s) 规范困难的帖子仍未得到答复。
一种处理与规则x-gvfs-show结合使用的 GVFS 选项udev,当安装的卷必须出现在DevicesNautilus GUI 的下方并且非 root 用户必须能够卸载它时。为了至少涵盖最后一个方面,我恢复到不在我的 …
我希望能够用任意字符串填充数组的元素,例如,可能包含 \ 和空格的字符串。我写了这个:
#!/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) 我在 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) 我在某个博客上读到,在实际执行命令甚至在命令行中按 Enter 键之前可以使用自动历史记录扩展。它涉及“魔法空间”和创建~/.inputrc配置文件。
该文件应该包含什么内容以及何时读取(在登录和非登录 bash shell 中)?
在编写 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或使用搜索引擎中追踪它们的含义。 …
> man cron, 告诉我 cron 的默认日志级别是 1;即 cron “将记录所有 cron 作业的开始。 ”
我想将其设置为 7,所以我检查了所有错误的地方,从文件/etc/syslog.d/50-default.conf. 我正在运行 Trusty 14.04。
指点任何人?
一个用户 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 上下文中不被识别。
是这样吗?如果是这样,.定义的系统范围别名在哪里?