的词源是$PWD什么?是首字母缩略词吗?
我知道有一个pwd打印工作目录的命令,但在我看来,$CWD为当前工作目录命名变量会更有意义,因为 shell 变量包含数据,而不是打印它们。
在 bash 中,我可以写:
caller 0
Run Code Online (Sandbox Code Playgroud)
并接收调用者上下文的:
这对于调试非常有用。鉴于:
yelp () { caller 0; }
Run Code Online (Sandbox Code Playgroud)
然后我可以写yelp来看看到达了哪些代码行。
我可以实现caller 0在bash如下:
echo "${BASH_LINENO[0]} ${FUNCNAME[1]} ${BASH_SOURCE[1]"
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得相同的输出caller 0中zsh?
今天,我惊讶地ssh发现我的运行 Arch Linux 的机器/run/user/$(id -u)并不存在。
XDG基本目录规范指出:
$XDG_RUNTIME_DIR定义相对于用户特定的非必需运行时文件和其他文件对象(例如套接字、命名管道...)应存储的基目录。该目录必须由用户拥有,并且他必须是唯一对其具有读写访问权限的人。它的 Unix 访问模式必须是0700.目录的生命周期必须与登录的用户绑定。它必须在用户首次登录时创建,如果用户完全注销,则必须删除该目录。如果用户登录多次,他应该被指向同一个目录,并且该目录必须从他第一次登录到最后一次注销在系统上继续存在,并且在这期间不能被删除。目录中的文件不能在重新启动或完整的注销/登录周期后继续存在。
在盒子上systemd,是/run/user/$(id -u)首选位置$XDG_RUNTIME_DIR(即使需要创建?)
如果没有,创建的最佳实践是什么$XDG_RUNTIME_DIR?
如何确保仅当我“完全”注销时才删除该目录?
(“完全”是否意味着登录 shell 创建的所有进程都已退出?如何检查?)
使用 安装软件包时pacman,我看到:
error: failed to commit transaction (conflicting files)
station: /usr/bin/station exists in filesystem
Run Code Online (Sandbox Code Playgroud)
pacman无论如何,我如何告诉安装软件包,覆盖现有文件?
读取单个字符,如何区分 null<EOF>和\n?
例如:
f() { read -rn 1 -p "Enter a character: " char &&
printf "\nYou entered '%s'\n" "$char"; }
Run Code Online (Sandbox Code Playgroud)
带有可打印字符:
$ f
Enter a character: x
You entered 'x'
Run Code Online (Sandbox Code Playgroud)
按下时Enter:
$ f
Enter a character:
You entered ''
Run Code Online (Sandbox Code Playgroud)
按Ctrl+ 时D:
$ f
Enter a character: ^D
You entered ''
$
Run Code Online (Sandbox Code Playgroud)
为什么在最后两种情况下输出相同?我如何区分它们?
在 POSIX shell 和 POSIX shell 中是否有不同的方法来做到这一点bash?
可惜timedatectl set-timezone没有更新/etc/timezone。
我如何获得当前时区Region/City,例如,给定:
% timedatectl | grep zone
Time zone: Asia/Kuala_Lumpur (+08, +0800)
Run Code Online (Sandbox Code Playgroud)
我可以得到最后一部分:
% date +"%Z %z"
+08 +0800
Run Code Online (Sandbox Code Playgroud)
如何在Asia/Kuala_Lumpur不获得全部awk病房的情况下获得零件?
我在 Linux 上,但是还有 POSIX 方式吗?
我预计更改时区时timedatectl会更新,但没有:/etc/timezone
% sudo timedatectl set-timezone 'Asia/Kuala_Lumpur'
% cat /etc/timezone
Asia/Bangkok
Run Code Online (Sandbox Code Playgroud)
有没有理由不这样做?(漏洞?)
如果我手动更新/etc/timezone为 match timedatectl set-timezone,是否有我应该注意的副作用?
还有其他地方我应该考虑更改时区,例如xfce4 面板时钟吗?
man ntfs-3g使big_writes挂载选项看起来像是一件好事:
big_writes
This option prevents fuse from splitting write buffers into 4K
chunks, enabling big write buffers to be transferred from the
application in a single step (up to some system limit, generally
128K bytes).
Run Code Online (Sandbox Code Playgroud)
没有列出缺点......我什么时候想避免安装 big_writes?
信号绞盘
所述SIGWINCH信号被发送到时,其控制终端改变其大小(一流程赢道康宁CH安格)。
是否可以从键盘发送 SIGWINCH?
如果是这样,如何?
在我的 Manjaro linux 机器上,我有一个文件/etc/timezone,其中包含:
Asia/Bangkok
Run Code Online (Sandbox Code Playgroud)
另一个 Manjaro 论坛用户也有相同的文件。该线程总体上包含有关此问题的一些现有技术。
奇怪的是timedatectl status不使用这个文件来报告Region/City. 这是初始状态:
$ timedatectl status
Local time: Fri 2018-06-29 11:01:28 +07
Universal time: Fri 2018-06-29 04:01:28 UTC
RTC time: Fri 2018-06-29 04:01:28
Time zone: Asia/Bangkok (+07, +0700)
System clock synchronized: no
systemd-timesyncd.service active: no
RTC in local TZ: no
Run Code Online (Sandbox Code Playgroud)
现在我/etc/localtime用它指向的文件内容覆盖符号链接:
$ sudo ln -f "$(realpath /etc/localtime)" /etc/localtime
$ timedatectl status
Local time: Fri 2018-06-29 04:04:03 UTC
Universal time: Fri 2018-06-29 04:04:03 UTC …Run Code Online (Sandbox Code Playgroud)