我正在Ubuntu 20.04.1下使用urxvt版本9.22。
即使我在urxvt命令行中使用了-title MYTITLE
,并且设置了以下X资源...
URxvt.insecure: false
... 如果在urxvt中运行的任何命令发送了适当的标题更改转义序列,标题栏中的标题仍然会被覆盖。
在urxvt中是否有办法指定命令行上指定的-title
永远不会通过任何转义序列被覆盖?
提前感谢您的任何想法和建议。
我正在Ubuntu 20.04.1下使用urxvt版本9.22。
即使我在urxvt命令行中使用了-title MYTITLE
,并且设置了以下X资源...
URxvt.insecure: false
... 如果在urxvt中运行的任何命令发送了适当的标题更改转义序列,标题栏中的标题仍然会被覆盖。
在urxvt中是否有办法指定命令行上指定的-title
永远不会通过任何转义序列被覆盖?
提前感谢您的任何想法和建议。
我知道 debian 8 (Jessie) 已被弃用,但我有一个 debian 8 服务器在不久的将来无法升级。我让该服务器保持运行,到目前为止,在大多数情况下,一切都很好。
但是......我想在此服务器上安装opendkim
和opendkim-tools
包,但我无法在任何apt
回购中找到这些包。
有谁知道apt
我可以从中获得 debian 8 软件包和的opendkim
任何第 3 方回购协议opendkim-tools
?
非常感谢你提前。
我正在运行 Ubuntu 20.0.4。
考虑以下文件的这些内容(假设文件名为input
)...
/zzzzz foo bar
/hij zzz
xyz abc
/abc
ijk lmnop
qwer tyuiop
abc def
如果我运行/bin/sort input
,我会得到以下输出......
/abc
abc def
/hij zzz
ijk lmnop
qwer tyuiop
xyz abc
/zzzzz foo bar
如您所见,排序算法完全忽略了前导斜杠。手册页中没有sort
任何内容说明正斜杠以任何特殊方式处理。
但是,如果我用字符替换每个正斜杠,$
则不会发生这种行为。例如,假设一个名为的文件newinput
包含这些值...
$zzzzz foo bar
$hij zzz
xyz abc
$abc
ijk lmnop
qwer tyuiop
abc def
换句话说,除了字符已更改为字符之外,newinput
与 相同。当我这样做时,我得到这些结果......input
/
$
/bin/sort newinput
$abc
$hij zzz
$zzzzz foo bar
abc def
ijk lmnop
qwer tyuiop
xyz abc
如您所见,在这种情况下,$
确实被视为正常的可排序字符/bin/sort
。
那么,这里发生了什么?我如何引起/bin/sort
对/
角色的关注?
提前感谢您的任何想法和建议。
更新:如果我在 Debian 下执行此操作,则排序工作正常,无论是/
和$
.
所以,我想知道这种行为是否可能是 Ubuntu 的“功能”。
我想git
使用类似于git
描述“合并冲突”的语义来合并两个非基于文本文件。
例如,假设我有两个内容相似但不相同的文本文件,名为file.1
和file.2
。我想将这两个文件合并到第三个文件中,如下所示:
hypothetical-merge-utility file.1 file.2 file.merged
我希望它产生file.merged
,它将以类似于以下的方式列出文件内容和每个差异:
common line 1 ...
common line 2 ...
common line 3 ...
<<<<<<< file.1
something unique from file.1
a second line of something unique from file.1
======= file.2
something unique from file.2
>>>>>>> end of diff
common line 4 ...
common line 5 ...
<<<<<<< file.1
something unique from file.1
======= file.2
something unique from file.2
a second line of something unique from file.2
>>>>>>> end of diff
common line 6 ...
common line 7 ...
... etc. ...
换句话说,我希望和之间的每个差异file.1
看起来file.2
类似于git
“合并冲突”的表示。
我不在乎是否使用了 , 和 以外<<<<<<<<
的========
分隔符>>>>>>>>
。
我知道有许多实用程序可用于在 linux 下合并文本文件。但是,我只是在寻找以类似于git
描述“合并冲突”的方式专门呈现合并数据的东西。
有谁知道这样的实用程序?
先感谢您。
更新:根据 Ed Morton 的以下问题,这是两个测试文件的内容......
==== 文件.1 ====
common line 1 ...
common line 2 ...
common line 3 ...
something unique from file.1
a second line of something unique from file.1
common line 4 ...
common line 5 ...
something unique from file.1
common line 6 ...
common line 7 ...
==== 文件.2 ====
common line 1 ...
common line 2 ...
common line 3 ...
something unique from file.2
common line 4 ...
common line 5 ...
something unique from file.2
a second line of something unique from file.2
common line 6 ...
common line 7 ...
该命令的旧版本touch
提供了一个有效的-f
命令行选项,可以按如下方式使用:
touch -f file1 file2
使用此命令,file2
可以将 的修改时间设置为与 的修改时间相同的值file1
。
但是,该touch
命令的最新 linux 版本不再支持该-f
选项……它现在是无操作的。
谁能给我指出一个支持命令行选项touch
的版本?-f
源代码很好。
我知道我可以用C
或perl
或python
或其他提供此功能的语言编写程序,但我希望我能找到touch
提供此功能的实际命令本身的版本-f
。
非常感谢您提前。
PS:我不在乎这个请求的版本touch
是用什么语言编写的,只要它接受与标准touch
命令相同的命令行参数并且有一个工作-f
选项。如果不存在这样的东西,我最终会写它,大概在 中python
,但如果这样的东西已经存在,我不喜欢“重新发明轮子”。
我正在Debian 8.11
运行iptables v1.4.21
and ipset v6.23, protocol version: 6
。
我试图阻止除一小组主机之外的所有主机访问某些端口,但它似乎不起作用。
首先,我将一小部分 IP 地址放入一个ipset
名为allowed-hosts
. 然后,在运行sudo /sbin/iptables -F
and之后sudo /sbin/iptables -X
,我发出以下命令:
sudo /sbin/iptables -I INPUT -p tcp -m multiport --destination-port 110,143,993,995 -j DROP
sudo /sbin/iptables -I INPUT -p tcp -m multiport --destination-port 110,143,993,995 -m set --match-set allowed-hosts src -j ACCEPT
但是,即使在这样做之后,来自不存在 IP 地址的客户端allowed-hosts
仍然成功连接到所有命名端口。
没有其他有效的iptables
规则。
以下是sudo /sbin/iptables -L
...的结果
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere multiport dports pop3,imap2,imaps,pop3s match-set allowed-hosts src
DROP tcp -- anywhere anywhere multiport dports pop3,imap2,imaps,pop3s
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
这是sudo /sbin/iptables-save
...的结果
# Generated by iptables-save v1.4.21 on Wed Jun 8 11:53:09 2022
*security
:INPUT ACCEPT [16777464:2727427757]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [18889599:33356814491]
COMMIT
# Completed on Wed Jun 8 11:53:09 2022
# Generated by iptables-save v1.4.21 on Wed Jun 8 11:53:09 2022
*raw
:PREROUTING ACCEPT [21444955:3000669583]
:OUTPUT ACCEPT [18889599:33356814491]
COMMIT
# Completed on Wed Jun 8 11:53:09 2022
# Generated by iptables-save v1.4.21 on Wed Jun 8 11:53:09 2022
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Wed Jun 8 11:53:09 2022
# Generated by iptables-save v1.4.21 on Wed Jun 8 11:53:09 2022
*mangle
:PREROUTING ACCEPT [21444955:3000669583]
:INPUT ACCEPT [21444952:3000669415]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [18889599:33356814491]
:POSTROUTING ACCEPT [18889599:33356814491]
COMMIT
# Completed on Wed Jun 8 11:53:09 2022
# Generated by iptables-save v1.4.21 on Wed Jun 8 11:53:09 2022
*filter
:INPUT ACCEPT [2130649:527089827]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4465281:1887206637]
-A INPUT -p tcp -m multiport --dports 110,143,993,995 -m set --match-set allowed-hosts src -j ACCEPT
-A INPUT -p tcp -m multiport --dports 110,143,993,995 -j DROP
COMMIT
# Completed on Wed Jun 8 11:53:09 2022
我可能做错了什么?
先感谢您。
**更新**
首先,确实指定了“src”,这与下面评论中的建议相反。它出现在上面的“... src -j ACCEPT”行中。
iptables
其次,我使用的这些命令的语法来自iptables
文档和通过网络搜索找到的讨论中显示的内容。
第三,看上面的iptables -L
输出。source=anywhere
这清楚地表明,对于列表destination=anywhere
中的 IP 地址,应该接受到端口的连接allowed-hosts
。这也清楚地表明,对于不在列表中的 IP 地址,应该从source=anywhere
到断开与端口的连接。destination=anywhere
allowed-hosts
至少这iptables
似乎是在告诉我。但是,从不在列表中的 IP 地址到这些端口的连接allowed-hosts
仍然在我的机器上被接受。
此外,如果我这样做ipset test allowed-hosts aaa.bbb.ccc.ddd
,其中“aaa.bbb.ccc.ddd”表示不在的IP 地址allowed-hosts
,我正确地得到以下输出:
aaa.bbb.ccc.ddd is NOT in set allowed-hosts.
如果我这样做ipset test allowed-hosts www.xxx.yyy.zzz
了,其中“www.xxx.yyy.zzz”代表一个 IP 地址,我allowed-hosts
正确地得到以下输出:
www.xxx.yyy.zzz is in set allowed-hosts.
查看iptables-save
上面的输出,我的配置中还有什么可能导致这些与端口的连接不allowed-hosts
被接受?
再次感谢您,提前。
我debian 8
在我的服务器上运行。最近,服务器开始只对所有传出 TCP 连接使用 IPv6。但是,它仍然接受 IPv4 的传入连接。
因此,我现在无法访问任何网站(端口 80),建立任何 ssh 连接(端口 22),也无法通过服务器上的任何 TCP 端口访问任何其他传出主机。
iptables -F
我通过后跟完全禁用了所有 iptables 规则iptables -X
,问题仍然存在。
以下是一些可能相关的命令输出:
% sudo ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether aa:bf:5c:77:b2:82 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether f2:3c:91:96:da:28 brd ff:ff:ff:ff:ff:ff
inet 45.33.123.70/24 brd 45.33.123.255 scope global eth0
valid_lft forever preferred_lft forever
inet 45.33.5.47/24 scope global eth0:1
valid_lft forever preferred_lft forever
inet 192.168.135.4/17 scope global eth0:2
valid_lft forever preferred_lft forever
inet6 2600:3c00::f03c:91ff:fe96:da28/64 scope global mngtmpaddr dynamic
valid_lft 87sec preferred_lft 27sec
inet6 fe80::f03c:91ff:fe96:da28/64 scope link
valid_lft forever preferred_lft forever
4: teql0: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 100
link/void
5: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
6: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN group default qlen 1000
link/gre 0.0.0.0 brd 0.0.0.0
7: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1476 qdisc noop state DOWN group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
8: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1464 qdisc noop state DOWN group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
9: ip_vti0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
10: ip6_vti0@NONE: <NOARP> mtu 1364 qdisc noop state DOWN group default qlen 1000
link/tunnel6 :: brd ::
11: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/sit 0.0.0.0 brd 0.0.0.0
12: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000
link/tunnel6 :: brd ::
13: ip6gre0@NONE: <NOARP> mtu 1448 qdisc noop state DOWN group default qlen 1000
link/gre6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
% sudo route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 45.33.123.1 0.0.0.0 UG 0 0 0 eth0
45.33.5.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
45.33.123.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.128.0 0.0.0.0 255.255.128.0 U 0 0 0 eth0
我不知道是什么导致了这种对仅 IPv6 输出的更改。但无论如何,我只想回到 IPv4 作为所有传出连接的默认值。
感谢您的任何见解和建议。
我正在使用Debian 8 linux
.
我试图阻止对大多数 IP 地址的几个端口的输入访问,除了一个小的选择 IP 地址列表。我正在执行以下操作,但它似乎不起作用:
% sudo /sbin/iptables -v -A INPUT -p tcp -m set '!' --match-set allow-list src -m multiport --dports 110,143,993,995 -j DROP
每当尝试从不在 中的 IP 地址访问这些端口中的任何一个时allow-list
,该尝试仍然成功。
这些是前几行allow-list
:
% sudo /sbin/ipset list allow-list
Name: allow-list
Type: hash:net
Revision: 6
Header: family inet hashsize 16384 maxelem 262144
Size in memory: 687888
References: 2
Members:
125.8.0.0/13
160.94.0.0/15
104.37.68.0/22
205.233.22.0/23
[ ... more CIDR entries ... ]
这是当前的 iptables 配置:
% sudo /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere ! match-set allow-list src multiport dports pop3,imap2,imaps,pop3s
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
我做错了什么?
非常感谢您提前。
在bash
中,我知道有几种方法可以检查给定变量是否已定义并包含值。但是,我想检查环境中是否存在给定变量,而不是简单的局部变量。例如 ...
VAR1=value1 # local variable
export VAR2=value2 # environment variable
if [[ some_sort_of_test_for_env_var VAR1 ]]
then
echo VAR1 is in the environment
else
echo VAR1 is not in the environment
fi
if [[ some_sort_of_test_for_env_var VAR2 ]]
then
echo VAR2 is in the environment
else
echo VAR2 is not in the environment
fi
怎么some_sort_of_test_for_env_var
定义才能让上面的 bash 代码打印出下面两行呢?
VAR1 is not in the environment
VAR2 is in the environment
我知道我可以定义一个 shell 函数来运行env
并对变量名执行 a grep
,但我想知道是否有更直接的“类似 bash”的方式来确定给定变量是否在环境中,而不仅仅是局部变量。
先感谢您。
我知道如何inotify
在 linux 下使用来监视文件系统事件。我想知道是否有任何类似于inotify
可用于监视非文件系统事件的实用程序。
例如,我想注册事件处理程序,这些事件处理程序可以由某些可执行文件的启动或关闭、收到与其他主机的连接或断开连接、文件系统的挂载或卸载、某些用户的登录或注销等事件触发,等等
该syslog
功能不足以实现此目的,因为(例如)任意可执行文件的启动和停止都不会记录在任何地方。对于任意挂载和卸载也是如此。
我知道我可以编写程序来从/proc
文件系统读取信息并根据它找到的条件执行代码。我也知道我可以编写程序来监视wtmp
和其他此类资源,并根据找到的内容类似地执行代码。但是,我想知道是否有某种类似的工具inotify
可用于将这些类型的非文件系统监视任务封装在标准接口下。
感谢您的任何建议。
这个问题与我的Ubuntu 18系统有关,如下...
% uname -a
Linux myhost.name.net 4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
我不知道在我的常规系统升级过程中发生了多长时间,但我现在注意到我所有的终端窗口都在写UTF-8
字符。我希望所有终端窗口都使用us.ascii
(或可能iso-8859-1
)。我找不到设置这个的任何地方。
此外,所有键盘输入似乎都是UTF-8
,我也希望它是us.ascii
or iso-8859-1
。
默认情况下,该LANG
变量en_US.UTF-8
在我的终端窗口中运行的所有 shell 中都设置为,但我没有故意在任何配置文件中设置它。
这发生在xterm
、rxvt
和下,据我所知,urxvt
这些程序都没有配置为使用。UTF-8
我正在跑步XFCE4
,如果这有什么不同的话。我在设置中也找不到任何设置XFCE4
。
谁能建议一种方法来重置我的系统,以便所有终端窗口始终显示us.ascii
or iso-8859-1
,并且所有键盘输入也是us.ascii
or iso-8859-1
?
非常感谢。
我xcfe4
在linux下运行了很长时间,没有任何问题。
今天我正在对 grub 进行一些更改并重新启动以对其进行测试。现在,每次我通过lightdm
登录屏幕输入登录密码时,都会xfce4
弹出一个对话框,提示我在注销或输入新会话名称之间进行选择。我必须双击Default
或输入一些随机文本作为会话名称才能通过此屏幕。
这以前从未发生过。我猜我最近的一次重新启动使我的xfce4
会话处于某种不完整的状态,现在我在关机或重新启动后登录时总是得到这个对话框。
如果我在xfce4
没有关机或重新启动的情况下进行正常注销,甚至会发生这种情况。
我没有更改设置中的任何内容,既不涉及登录名或会话,也不涉及其他任何内容。
有谁知道如何禁用此弹出窗口,以便在登录后再次获得标准 xfce4 会话?
先感谢您。