我创建了一个别名来保存一些与 systemd 一起使用的击键:
$ alias sctl='systemctl'
Run Code Online (Sandbox Code Playgroud)
但是,这会破坏子命令的制表符完成。是否可以在不中断制表符完成的情况下对命令进行别名?
直到本月,我的 shell 配置都非常简单(主要只是一个.bashrc或.bash_profile一些别名),但我一直在重构它,因此我可以根据我是否使用 zsh 和 bash 来获得不同的行为。他们首先提供一个通用的 shell 配置文件,该文件应该适用于任何情况,然后专门用于正在使用的特定 shell(我对此进行了符号链接)。
今天ls停止工作时我很惊讶。原来,在重构过程中.bashrc,有一个别名
alias ls='ls --color=always'
Run Code Online (Sandbox Code Playgroud)
这ls在 OSX 终端上的 bash 中破坏了东西。一旦我看到 BSDls喜欢-G颜色,但 GNU(或 Ubuntu 上的任何东西)喜欢--color,很明显有很多选项不同。
我的问题是,解决 BSD 和 GNU coreutils 之间的选项差异以及诸如此类差异的最佳方法是什么?我应该在if块中测试环境变量以查看正在使用的操作系统并应用正确的行为吗?还是为每个操作系统制作单独的配置文件更有意义?
虽然对这些问题的回答可能是主观的,但对 BSD 和 GNU coreutils 之间的差异范围的概述以及解决这些问题以使通用配置可用于大多数 *nix 的策略似乎是相当客观的。
假设我正在处理一个缓慢的系统,并注意到(例如通过顶部)CPU 使用率上升了大约 100%,但我不想终止该进程。如果我想在机器上做其他工作,只是让这个过程变慢,我可以这样做:
# nice -n -10 bash
Run Code Online (Sandbox Code Playgroud)
获得一个可以更快运行命令的子shell?似乎没有,所以我很好奇,如果有什么会加速的话。仅内置?没有?
对于像 init 这样的长时间运行的进程,我可以做类似的事情
$ cat /proc/[pid]/io
Run Code Online (Sandbox Code Playgroud)
如果我想查看一个短暂运行的进程(例如 ls 之类的命令行实用程序)的统计信息,我该怎么办?我什至不知道如何查看如此短暂运行的进程的 pid ......
Linux 的多处理模型是什么?是否有默认或最常用的模型?它与 BSD 甚至 MS Windows 内核相似还是非常不同?
如果正常使用 SMP,如果需要,可以使用非对称吗?
我开始阅读 Linux Systems Programming, 2nd Ed.,我对文件表感到好奇,它是“每个进程的打开文件列表”。文件表是否类似于 SQL 数据库中的表,其中 fds 用作主键?如果是这样,这是否意味着条目是重复的,还是被拆分为单独的表并进行了规范化?
或者它的工作方式完全不同,因为我们正在处理直接的 C/汇编?如果是这样,使用什么数据结构?
这个子系统在源中的哪里定义?我这样做的大部分原因是为了更好地理解 C 和 Linux。如果我知道在哪里可以找到它,那会给我一个更好的主意。
假设我从非 btrfs 系统开始,然后添加一个格式化为 btrfs 的辅助驱动器。如何将 /var/log 安装在新驱动器的子卷上而不是原始驱动器上?这可能吗?
我已经在其上创建了 fs 和子卷“log”,但我尝试没有语法让它挂载。
我更喜欢带有-regex超过 shell 模式语法的正则表达式-name。我也想使用该posix-egrep类型,所以我想做类似的事情
alias find="find -regextype posix-egrep"
但这是一个错误,因为路径必须在表达式之前。但是,-regextype必须是表达式中的第一个(或在使用-regexor之前-iregex)。
我只是想别名或有一个 shell 函数,find以便它像往常一样工作,posix-regex只要我决定使用-regexor-iregex选项就可以使用。
我怎样才能做到这一点?