今天,要使用 Pandoc 将 Markdown 转换为 PDF,需要安装pdflatex
.
我这样做了brew install basictex
,然后有必要重新启动终端。为此,我干脆退出并再次打开。但是是否可以使用类似命令重新启动它relaunch terminal
?
今天,要使用 Pandoc 将 Markdown 转换为 PDF,需要安装pdflatex
.
我这样做了brew install basictex
,然后有必要重新启动终端。为此,我干脆退出并再次打开。但是是否可以使用类似命令重新启动它relaunch terminal
?
我正在做一些文本操作,我想替换最后一次出现的"
(with ", "four"
) ,之前]
它可能位于不同的行中。(这实际上在数组中添加了一个新项目)
例如:
array = ["one", "two", "three"]
other_array = ["one", "two", "three"]
array = ["one", "two",
"three"]
array =
[
"one",
"two",
"three"
]
array = ["one", "two",
"three"
]
应该成为
array = ["one", "two", "three", "four"]
other_array = ["one", "two", "three"]
array = ["one", "two",
"three", "four"]
array =
[
"one",
"two",
"three", "four"
]
array = ["one", "two",
"three", "four"
]
PS:-我们保证得到一个有效的数组,因此array = ["one", "two]", "three"]
无效,因为数组内的字符串遵循这种模式 [a-zA-Z0-9],所以你保证得到它-另请注意,它们是其他数组,但我的数组我感兴趣的是一个名为“array”的数组,它是唯一的。
尝试过sed
#this works for the first scenario:
sed 's/\(array.*"\)\([^"]*]\)/\1, "newItem"\2/' file.txt
# but couldn't figure out how to do this for scenarios #2 & #3
我有可以从同一台计算机上的不同用户运行的脚本。该脚本应在每次运行时将日志写入同一文件。
脚本的最小版本:
#!/usr/bin/env bash
# 2
touch /var/tmp/lll.log # 3
chmod 666 /var/tmp/lll.log # 4 (You can comment this line, but this will change nothing)
echo ghghhghg >> /var/tmp/lll.log # 5
从 root 启动然后从其他用户启动时没有问题,但顺序相反时会抛出错误。
./savetmp.sh: line 5: /var/tmp/lll.log: Permission denied
ls -ld /var/tmp /var/tmp/lll.log 的输出:
.rw------- 9 armoken 1 May 10:52 /var/tmp/lll.log
drwxrwxrwt - root 1 May 10:52 /var/tmp
猫 /proc/sys/fs/protected_regular:
1
如何解决这个问题?
我有自定义脚本的 zsh 补全,其中一个参数必须是 URL(即字符串),然后有几个可选参数: --AAA --BBB --CCC:
_arguments -S : \
'--AAA' \
'--BBB' \
'--CCC' \
'1: :'
然而,补全仅在提供 URL 参数后才起作用,即:
myscript URL --A<TAB>
这将自动完成--AAA
但是当我有:
myscript --A<TAB>
然后它会列出唯一匹配的选项 --AAA,但即使我这样做它也不会自动完成它--AA<TAB>
。我必须手动输入。
当我将完成脚本更改为:
_arguments -S : \
'--AAA' \
'--BBB' \
'--CCC'
参数的自动完成功能有效,但一旦我提供 URL,就不会完成其他选项。
那么我如何告诉 zsh 完成,我的脚本需要一个 URL(即一个字符串参数 - 我不希望 zsh 在当前位置开始完成文件名),并且可选参数可以在此 URL 之前或之后完成?
注意:我并不是想自动完成 URL。我只是想在这个 URL 字符串之前和之后完成工作。
注意:script
指的是script
命令,它将 stdin 和 stdout 记录到文件中。
我试图使用该 script
实用程序运行一个脚本来保存输出以供以后检查,同时保留终端上的文本颜色。
SIGTSTP
,控制台会打印^Z
并且脚本不会停止。SIGSTOP
)htop
将所有进程显示为Z
模式),但它不会释放终端。
Ctrl+Q确实恢复它们。我现在很困惑为什么
Ctrl+S有效,但SIGSTOP
SIGTSTP
( Ctrl+ Z) 无效。
我知道可能会被困住,但我看不出有任何理由这样做,并且的手册页SIGTSTP
中也没有任何相关内容。script
我尝试强制脚本解释器进入交互模式,但结果让我更加困惑。发出Ctrl+ Z( SIGTSTP
) 确实会挂起正在运行的脚本,但script
表示脚本已完成然后退出,这会杀死所有挂起的子进程。
在这种情况下有没有办法让正常挂起?另外,有人能准确解释一下发生了什么吗?
对此有多个问题,例如了解 ls 输出、ls -la 中的列是什么?, 'ls -la' 有什么作用?, ls -al 输出中的字段是什么意思?等等。
我还遇到过许多其他网站,其中有文章试图解释它。
他们每个人的共同点似乎是,尽管写下了各列的含义,但从来没有任何链接/引用指向他们最初获取该信息的位置。第三个问题的答案链接到coreutils 手册,但很像手册页,仍然没有提供任何说明。
上述资源不完整,因为我正在开发一个驱动程序,并发现ls -l
提供了块/字符设备的主要和次要编号(这与文件或目录的常规输出不同):
这里是设备的主要/次要编号分别为1和3。
我只是发现这一点,因为有人在答案中提到了它(不相关的问题)。如果我以前想知道这些数字意味着什么,我可能无法找到答案,除非我偶然发现了这个答案。或者去查看源代码。
对于几乎每个 Linux 用户都使用的工具来说,没有任何关于其输出的正确信息似乎很奇怪。那么我错过了什么吗?它记录在哪里?
编辑:Muru 在评论中提到了另一个问题How to find the fields in ls -lmean - 该问题中的建议答案主要提到了手册页(一个直接粘贴它),对于 GNU coreutils 来说,这并没有提供完整的答案(联机帮助页没有提及主要/次要设备编号)。BSD 手册页确实如此,但 Stephen 对 posix 标准的回答是(我认为)最正确的。
我想要exec
一个程序并控制它的参数,包括 arg0 和环境。使用 CI 可以实现execve
. 我可以在 POSIX shell 中执行此操作吗?
对于 NodeJs 应用程序,我编写了以下脚本来部署该应用程序:
"scripts": {
"deploy": "source private/create_env.sh && ./deploy.sh",
}
private/create_env.sh
创建脚本中使用的环境变量deploy.sh
。
export USERNAME=alphonsio
export SERVER=ftp.example.com
export ...
组合&&
器会阻止环境变量在deploy.sh 脚本中可用。
如何使它们在部署脚本中可用?
当我使用 zsh 补全命令时umount
:
umount /mnt/t<TAB>
它完成了安装的文件系统/mnt/tmp
。
但是当我不小心按 Tab 太多次时,它会试图提供太多帮助,并建议其他安装点,这会导致无意义的完成,例如:
umount /mnt/tmp /
如何将卸载完成限制为仅一个安装点,以便其他选项卡不会添加任何其他参数?
我想我已经在以下位置找到了相关部分/usr/share/zsh/functions/Completion/Unix/_mount
:
# Completion for umount.
local excl='-V --version -h --help'
args=(
'(- *)'{-h,--help}'[show help]'
'(- *)'{-V,--version}'[show version]'
"($excl -v --verbose)"{-v,--verbose}'[verbose mode]'
"($excl -n --no-mtab)"{-n,--no-mtab}"[don't write /etc/mtab]"
"($excl)-r[remount read-only on failure]"
"($excl)-d[for loopback mount, free loop device]"
"($excl)-i[don't call /sbin/umount.<fs> helper]"
"($excl *)-a[unmount all file systems from /etc/mtab]"
"($excl)-t[specify file system type]:file system type:_file_systems"
"($excl *)-O[with -a, restrict filesystems by options]:file system option:->fsopt"
"($excl)-f[force unmount]"
"($excl)-l[lazy unmount]"
'*:dev or dir:->udevordir'
)
_arguments -C -s "$args[@]" && ret=0
我需要修改什么?