我不明白为什么su -
优先于su
以 root 身份登录。
为什么几乎所有共享库/usr/lib/
都设置了可执行权限位?我没有看到任何执行它们的用例。有些确实设法连接某种形式的main
功能来打印简短的版权和版本说明,但许多甚至不这样做并且在执行时出现段错误。
那么,设置这个有x
什么意义呢?所有的库打包者都必须这样做吗?如果我dlopen()
是一个有0644
权限的共享库会发生什么?
与 Bash 的 source
可以在不设置执行位的情况下执行脚本。这是记录在案的预期行为,但这不是反对使用执行位吗?
我知道,这source
不会创建子shell。
几周前,我参加了一个似乎来自 Windows 背景的人关于 Git 的演讲。我说“似乎是”是因为他在提到命令行选项时一直说“破折号”。然后我回忆起我在早期学习 Linux 时觉得很好奇的事情;也就是说,在提到选项时,常驻 Unix 负责人总是说“减号”。那是:
rm -rf /var/tmp/bogus/junk
Run Code Online (Sandbox Code Playgroud)
会说“arr em 减去arr ef”,而不是“arr em dash arr ef”。
为什么是这样?
在维基百科上,.sh的文章说:
有关 .sh 文件扩展名类型,请参阅Bourne shell。
其他unix shell怎么样?
我知道在文件中 使用shebang来指示要执行的解释器,但我想知道:
我注意到很多问题、答案和评论都表示不屑(有时甚至害怕)编写脚本而不是单行代码。所以,我想知道:
我何时以及为什么应该编写独立脚本而不是“单行脚本”?或相反亦然?
两者的用例和优缺点是什么?
是否某些语言(例如 awk 或 perl)比其他语言(例如 python)更适合单行?如果是这样,为什么?
这只是个人喜好问题还是在特定情况下编写一个或另一个有很好的(即客观的)理由吗?这些原因是什么?
one-liner
:直接键入或粘贴到 shell 命令行中的任何命令序列。常累及管道和/或使用的语言,如sed
,awk
,perl
,和/或工具,如grep
或cut
或sort
。
命令行上的直接执行是定义特征 - 长度和格式无关紧要。“一行”可能全部在一行上,也可能有多行(例如 sh for 循环,或嵌入的 awk 或 sed 代码,带有换行和缩进以提高可读性)。
script
: 任何解释性语言中的任何命令序列,它们被保存到一个文件中,然后被执行。脚本可能完全用一种语言编写,也可能是使用其他语言的多个“单行”的外壳脚本包装器。
我有我自己的答案(稍后我会发布),但我希望这成为关于该主题的规范问答,而不仅仅是我的个人意见。
我想重构我系统上的文件和目录。但是我不确定什么是最佳实践。
阅读完这个问题及其答案后,我认为最重要的部分是保持一致。然而,这就是我被卡住的地方。例如,在 root 中,有诸如/bin
and 之类的目录/usr
,它们都使用小写字母。但是在我的用户目录中/home/foobar/
,已经有一堆目录,例如~/Pictures
,~/Documents
和~/Music
(大写)!
也许这只是因为我使用 Ubuntu,但什么被认为是最佳实践?
文件xx.d
夹中的许多 unix 配置文件都以数字为前缀,例如:
$ ls /etc/grub.d/
00_header 10_linux 30_os-prober 40_custom
05_debian_theme 20_linux_xen 30_uefi-firmware 41_custom
Run Code Online (Sandbox Code Playgroud)
这个数字有什么约定吗?这是什么意思 ?
可能只是为了避免名称冲突,但我很好奇是否还有其他内容。
试图解决友好的争论。“cron”是某物的首字母缩写词吗?
此外,它当前的规范名称“cron”是否源于诸如 chronos 或 chronological 之类的缩写?
我想知道是否有关于您想要源而不是运行的 shell 脚本的文件类型扩展名的约定。例如:
如果我想在子shell中运行这个脚本。
./script.sh
Run Code Online (Sandbox Code Playgroud)
如果我想记住从当前 shell 运行这个脚本。
. script.source
Run Code Online (Sandbox Code Playgroud)
是否有一个惯例在第2例的文件类型(如POSIX例如)?像.source
或.sourceme
?
这个问题不询问任何意见。我明确表示我想知道这种脚本是否有标准化的文件扩展名。这个问题甚至比这个关于类似问题的广受欢迎的问题更不基于意见(对 bash 脚本使用 .sh 或 .bash 扩展名?)。
conventions ×10
filenames ×2
permissions ×2
scripting ×2
shell-script ×2
bash ×1
cron ×1
executable ×1
files ×1
history ×1
libraries ×1
linux ×1
shell ×1
source ×1
standard ×1
su ×1