我了解到我可以更改PS1的格式,尤其是字符串的颜色。那么,是否可以根据外壳的背景颜色更改颜色?或者,如何检测外壳的背景颜色?
我要查看(和/或编辑)在Emacs着色的文字,如输出的ls -l --color=always,tree...或者别的什么东西。
我引用的文本存在于文件中。当我在 emacs 中打开该文件时,我希望能够看到它被着色,或者切换它以显示 ANSI (SGR) 转义序列。
ansi-color.el 似乎是我需要的,但我无法让它对 ANSi 转义序列进行任何着色,但我确实看到单个控制字节(例如^A和^[)的蓝粗体......我不是确定这是否是 的一个特征ansi-color,但我认为是。
根据ansi-color.el 注释,它可以处理字符串和区域,但即使这样似乎也不起作用.. 例如,该函数ansi-color-apply-on-region不被M-x. 它说,“不匹配”
我已经添加(require 'ansi-color)到我的.emacs文件中,甚至(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on). emacs 启动时我没有收到错误或警告,所以我被卡住了。
如何让标准功能工作,以及在打开名称后缀为 的文件时是否可以自动应用.col?
失礼:我在下面提到的“快速”方法并不比慢速方法快 60 倍。它快了 30 倍。我会把错误归咎于这个小时(凌晨 3 点不是我一天中清晰思考的最佳时间:)。
更新:我添加了测试时间摘要(如下)。
速度因素似乎涉及两个问题:
所有的测试都是用 100 万个文件完成的。
(真实时间、用户时间和系统时间在测试脚本中)
测试脚本可以在paste.ubuntu.com找到
#
# 1 million files
# ===============
#
# |time |new dir |Files added in ASCENDING order
# +---- +------- +-------------------------------------------------
# real 01m 33s Add files only (ASCENDING order) ...just for ref.
# real 02m 04s Add files, and make 'rm' source (ASCENDING order)
# Add files, and make 'rm' source (DESCENDING order)
# real 00m 01s Count of filenames
# …Run Code Online (Sandbox Code Playgroud) 我有一个运行 ZFS 的 FreeBSD 8 系统,带有一个大约 355GB 的 MySQL 5.5 服务器,预计会增长到几个 TB。
MySQL 正在触发有关“打开的文件太多”的错误/etc/hosts.allow。我们没有明确使用/etc/hosts.allow,但它被hosts_access(3) ( libwrap.a) 使用,它被很多东西使用。
mysqld[1234]: warning: /etc/hosts.allow, line 15: cannot open /etc/hosts.allow: Too many open files
Run Code Online (Sandbox Code Playgroud)
但是当我检查时似乎没有达到任何实际限制。kern.openfiles stays持续一段时间内报告的打开文件数低于 40,000,我们的限制要高得多:
# sysctl -a |grep files
kern.maxfiles: 204800
kern.maxfilesperproc: 184320
kern.openfiles: 38191
# ulimit -n
184320
Run Code Online (Sandbox Code Playgroud)
Openfiles 应设置为无限制:
# grep openfiles /etc/login.conf
:openfiles=unlimited:\
Run Code Online (Sandbox Code Playgroud)
MySQL 说它应该能够打开 184320 个文件句柄:
# mysqladmin variables | grep open_files_limit
| open_files_limit | 184320 |
Run Code Online (Sandbox Code Playgroud)
以及一些来自 MySQL 用户的信息。我停止 …
这是一个运行 GNU bash 4.0 版的 FreeBSD 7.x 系统。
在 Bash 中,该set -u选项可以强制 shell 在遇到未设置的变量时打印错误,如下所示:
$ set -u
$ echo $THISISUNSET
-su: THISISUNSET: unbound variable
$ echo $?
1
Run Code Online (Sandbox Code Playgroud)
但是,对于 $*,我也遇到了同样的错误:
$ echo $*
-su: $*: unbound variable
$ echo $?
1
$ echo $@
-su: $@: unbound variable
Run Code Online (Sandbox Code Playgroud)
The Bash Manual 4.3.1 The Set Builtin特别指出set -u忽略 $* 和 $@:
-u 执行参数扩展时,将未设置的变量和特殊参数 '@' 或 '*' 以外的参数视为错误。错误消息将写入标准错误,并且非交互式 shell 将退出。
我怎样才能解决这个问题?
我有两个文件:
oldlist- 这包含文件列表和每个文件的 md5 哈希。这是一年前生成的。newlist- 这还包含文件列表和每个文件的 md5 哈希值。但是,一些文件已更改(例如,它们的 md5 哈希值不同)并添加了一些新文件。我想查看oldlist和之间的所有差异newlist,但我想忽略oldlist.
也就是说,我不关心新文件。我只想比较每个旧文件的 md5 哈希值,以便我可以查看去年是否有任何文件发生了更改。
我在 ubuntu 18.04 服务器上。我需要运行一个更新 CloudFlare 上的 IP 地址的脚本(一种 DynDNS 脚本)。在以前的版本中,我可以使用接口 enp1s0 的 DHCLIENT 退出挂钩来执行此操作。
\n\n但是,systemd 现在使用自己的内置 DHCP 客户端。如何编写一个 systemd 单元,在向 DCHP 客户端提供新 IP 地址后立即执行 bash 脚本?
\n\nSystemd 正在管理接口 enp1s0:
\n\n#sudo systemctl status systemd-networkd\n\xe2\x97\x8f systemd-networkd.service - Network Service\n Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled-runtime; vendor preset: enabled)\n Active: active (running) since Tue 2018-09-18 01:54:16 +08; 10h ago\n Docs: man:systemd-networkd.service(8)\n Main PID: 878 (systemd-network)\n Status: "Processing requests..."\n Tasks: 1 (limit: 4915)\n CGroup: /system.slice/systemd-networkd.service\n \xe2\x94\x94\xe2\x94\x80878 /lib/systemd/systemd-networkd\n\nSep 18 01:54:27 xxx systemd-networkd[878]: enp1s0: Configured\n …Run Code Online (Sandbox Code Playgroud) 我正在将旧的 ksh 脚本移植到 Bourne shell。旧的 ksh 脚本包含以下代码:
#!/bin/sh
tmpLog=/var/tmp/logfile.$$
exec 1> $tmpLog
exec 2>&1
eval $*
another_command_1
another_command_2
Run Code Online (Sandbox Code Playgroud)
从我读到的内容来看,这两个 exec 语句似乎是为了执行 $*、another_command_1、another_command_2 和所有以下命令;然后将这些命令中的所有 STDERR 和 STDOUT 重定向到/var/tmp/logfile.$$. 但是,当我在脚本中运行它时,脚本在exec 2>&1.
stefanl@host:~ $ sh -xv ./output.sh echo "Hello"
#!/bin/sh
tmpLog=/var/tmp/logfile.$$
+ tmpLog=/var/tmp/logfile.39918
exec 1> $tmpLog
+ exec
exec 2>&1
+ exec
stefanl@host:~ $
Run Code Online (Sandbox Code Playgroud)
当我在命令行上运行它时,我的外壳在我执行后冻结exec 2>&1:
stefanl@host:~ $ tmpLog=/var/tmp/logfile.$$
stefanl@host:~ $ exec 1> $tmpLog
stefanl@host:~ $ exec 2>&1
### FREEZE ###
Run Code Online (Sandbox Code Playgroud)
我的问题:
exec 2>&1应该做的?在 Unix Bash 命令行上,我想使用基本操作系统(例如 No Perl 或 Python)计算 1125 天前的日期。
在运行GNU Date 的系统上,我可以执行以下操作:
ubuntu $ date --date="1125 days ago"
Wed Nov 7 15:12:33 PST 2007
Run Code Online (Sandbox Code Playgroud)
FreeBSD 或 MacOSX 系统不附带 GNU Date,也不支持像“X 天前”这样的值。
freebsd81 $ date --date="+1125 days ago"
date: illegal option -- -
Run Code Online (Sandbox Code Playgroud)
我可以在 Mac 或 FreeBSD 系统上计算几天前的日期,但这仅限于几天:
# Today is really Dec 6, 2010. 4 days ago it was:
macosx $ TZ=GMT+96 date +%Y%m%d
20101202
# But that doesn't work if I want to see …Run Code Online (Sandbox Code Playgroud) 我试图在 RedHat 系统上找出有关cron 和 /etc/cron.d/ 的一些详细信息。具有讽刺意味的是,我的答案可以在vixie-cron-*.src.rpm 中查看,但其手册页cron与vixie-cronRPM提供的文本不匹配。
如果我在 MANPATH 中搜索关键字cron,它会显示一些结果,例如vixie-cron (rpm). 这个(rpm)标签是什么意思,为什么系统上没有安装这些联机帮助页,我可以查看这些联机帮助页吗?
$ man -k cron
/etc/anacrontab [anacrontab] (5) - configuration file for anacron
anacron (8) - runs commands periodically
anacron (rpm) - A cron-like program that can run jobs lost during downtime.
cron (8) - daemon to execute scheduled commands (ISC Cron V4.1)
crontab (1) - maintain crontab files for individual users (ISC Cron V4.1) …Run Code Online (Sandbox Code Playgroud)