使用版本控制系统时,当差异显示为 时,我对噪音感到恼火No newline at end of file。
所以我想知道:如何在文件末尾添加换行符以摆脱这些消息?
我使用grep -i得更频繁,我发现它比egrep等效的慢,我匹配每个字母的大写或小写:
$ time grep -iq "thats" testfile
real 0m0.041s
user 0m0.038s
sys 0m0.003s
$ time egrep -q "[tT][hH][aA][tT][sS]" testfile
real 0m0.010s
user 0m0.003s
sys 0m0.006s
Run Code Online (Sandbox Code Playgroud)
是否grep -i做额外的测试,egrep不?
你如何阻止命令service <name> status使用less在它的输出?
我有一个脚本可以自动执行一些 sysadmin 操作,在我将服务器升级到 Ubuntu 16.04 后,它中断了,因为检查服务状态的操作被阻塞,因为它使用类似less显示输出的东西,特别是supervisor服务。
我有几个守护进程配置为运行,当运行时sudo service supervisor status,我得到:
* supervisor.service - Supervisor process control system for UNIX
Loaded: loaded (/lib/systemd/system/supervisor.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2017-02-06 20:35:34 EST; 12h ago
Docs: http://supervisord.org
Process: 18476 ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown (code=exited, status=0/SUCCESS)
Main PID: 20228 (supervisord)
CGroup: /system.slice/supervisor.service
|- 7387 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
|- 7388 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A …Run Code Online (Sandbox Code Playgroud) 我对用于描述 Linux 信号传递的术语感到困惑。大多数文本都会说“信号被传递到进程”或“信号被传递到线程”。
据我了解,当内核调用该处理程序时,信号被“传递”到驻留在进程中的信号处理程序。该进程本身是异步运行的,这个“交付”过程类似于 CPU 调用中断处理程序。中断处理程序(信号处理程序)不是进程线程,也不是该进程下运行的任何线程,对吗?它是由内核启动的一个单独的线程。
因此,信号不会传递给线程或进程,而是传递给驻留在进程中的信号处理程序,并且不一定与任何特定线程关联。如果这不正确,请告诉我,例如,信号处理程序和 pthread 之间的关联,它证明了“信号传递到 pthread”这一术语的合理性。
我目前正在参加一门教授 UNIX 基础知识的课程,例如常用命令等。在对 UNIX 进行了一些挖掘之后,我遇到了关于谁拥有 UNIX 的法律斗争和 UNIX 战争的陷阱。我做了一些研究,但来源有点过时(大约 2003 - 2004 年)并且就谁拥有它而言有相互矛盾的信息。
以下是我找到的几个来源:
https://www.zdnet.com/article/who-really-owns-unix/ - 声明 Open Group 拥有它
https://www.informit.com/articles/article.aspx?p=175171&seqNum=2 - 声明 SCO 拥有它
阅读这些资料后,听起来 Open Group 声称拥有 UNIX 商标,而 SCO 声称拥有 UNIX 源代码。我理解正确吗?
我正在尝试从文件(UTF-8)中删除一些字符。我tr为此目的使用:
tr -cs '[[:alpha:][:space:]]' ' ' <testdata.dat
Run Code Online (Sandbox Code Playgroud)
文件包含一些外来字符(如“??????????”或“àé”)。tr似乎不理解它们:它将它们视为非 alpha 并删除。
我试过更改我的一些语言环境设置:
LC_CTYPE=C LC_COLLATE=C tr -cs '[[:alpha:][:space:]]' ' ' <testdata.dat
LC_CTYPE=ru_RU.UTF-8 LC_COLLATE=C tr -cs '[[:alpha:][:space:]]' ' ' <testdata.dat
LC_CTYPE=ru_RU.UTF-8 LC_COLLATE=ru_RU.UTF-8 tr -cs '[[:alpha:][:space:]]' ' ' <testdata.dat
Run Code Online (Sandbox Code Playgroud)
不幸的是,这些都没有奏效。
我怎样才能tr理解Unicode?
玩 e2fsprogs debugfs,由于更改/意外,filen/ame创建了一个名为的文件。显然,正斜杠字符/用作路径名中的特殊分隔符。
仍在使用debugfs我想删除名为 的文件filen/ame,但我没有成功,因为该/字符没有被解释为文件名的一部分?
debugfs 是否提供删除包含斜杠的文件的方法?如果是这样怎么办?
我用了:
cd /tmp
echo "content" > contentfile
dd if=/dev/zero of=/tmp/ext4fs bs=1M count=50
mkfs.ext4 /tmp/ext4fs
debugfs -w -R "write /tmp/contentfile filen/ame" /tmp/ext4fs
debugfs -w -R "ls" /tmp/ext4fs
Run Code Online (Sandbox Code Playgroud)
输出:
debugfs 1.43.4 (31-Jan-2017)
2 (12) . 2 (12) .. 11 (20) lost+found 12 (980) filen/ame
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法来删除filen/ame文件:
debugfs 1.43.4 (31-Jan-2017)
2 (12) . 2 (12) .. 11 (20) lost+found 12 (980) filen/ame
Run Code Online (Sandbox Code Playgroud)
但这不起作用,只会产生:
debugfs …Run Code Online (Sandbox Code Playgroud) 我正在使用 Zabbix 来监控我的环境并每 60 秒zabbix_agentd以用户身份执行zabbix一个自定义脚本;它用于sudo将此脚本作为root.
在/var/log/auth.log我看到每 60 秒:
Aug 11 17:40:32 my-server sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Aug 11 17:40:32 my-server sudo: pam_unix(sudo:session): session closed for user root
Run Code Online (Sandbox Code Playgroud)
我想阻止此消息淹没我的日志。我在/etc/pam.d/sudo文件之前添加了以下行session required pam_unix.so:
session [success=1 default=ignore] pam_succeed_if.so service in sudo quiet uid = 0
Run Code Online (Sandbox Code Playgroud)
并且消息消失了。
但问题是,当有人使用sudoas执行脚本时,我通过这种方式抑制了每条 PAM 消息root。
我只想为用户zabbix(不是所有其他用户)停止消息。sudo知道zabbix用户想要以root特权执行脚本,有什么方法可以告诉 PAM?如何告诉 PAM …
我正在运行 CentOS 7.9,今天我的终端显示奇怪的字符。有些字母看起来不错,但有些符号显示为一些非英文字符。例如,我制作了一个包含以下内容的文本文件:
!@#$%^&*()_+{}
Run Code Online (Sandbox Code Playgroud)
当我打开这个vi或者nano它看起来正如我上面写的是正确的。但在终端中它看起来像这样:
$ cat chars.txt
!É#$%Ü&*()_+äå
$ od -An -vtx1 < chars.txt
21 40 23 24 25 5e 26 2a 28 29 5f 2b 7b 7d 0a
Run Code Online (Sandbox Code Playgroud)
这些奇怪的字符随处可见,即使在我打字时也是如此。这台机器一直工作到今天。我认为这是在我下载了一个二进制文件curl并忘记使用该-O参数之后发生的。重新启动并以其他用户身份登录没有帮助。我的语言环境设置如下;我不知道还有什么要找的。我使用的 shell 是 Bash 4.2 版,没什么异常。
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)
编辑:说服务器的外壳是 bash 4.2 会更准确。我在 macOS Big Sur 上使用 Terminal.app 登录。
给定以下 3 个脚本:
printf 'a\nb\nc\n' > file && { head -n 1; cat; } < fileprintf 'a\nb\nc\n' | { head -n 1; cat; }{ head -n 1; cat; } < <(printf 'a\nb\nc\n')我期望每个的输出是:
a
b
c
Run Code Online (Sandbox Code Playgroud)
但对于其中一些系统,在某些系统上,情况并非如此。例如,在 cygwin 上:
$ printf 'a\nb\nc\n' > file && { head -n 1; cat; } < file
a
b
c
Run Code Online (Sandbox Code Playgroud)
$ printf 'a\nb\nc\n' | { head -n 1; cat; }
a
Run Code Online (Sandbox Code Playgroud)
$ { head -n 1; cat; } < <(printf 'a\nb\nc\n')
a …Run Code Online (Sandbox Code Playgroud)