是否有一种相当简单的方法来处理tar目录中的多个(特定)文件?例如,假设以下是一个目录:
-rw-r--r-- 1 allend bin 98 Jul 20 15:50 scriptlog.log
-rw-r--r-- 1 allend bin 19533 Jul 29 21:47 serveralert.log
-rwxr--r-- 1 allend bin 1625 Jul 29 21:47 orion
-rw-r--r-- 1 allend bin 24064 Jul 29 21:49 orion_files.tar
-rwxr--r-- 1 allend bin 156 Aug 4 21:22 htmltest
-rw-r--r-- 1 allend bin 131 Aug 4 21:23 page.html
Run Code Online (Sandbox Code Playgroud)
如果我只想要tar文件serveralert.log和page.html?
我正在管理一个网络环境,昨天我遇到了一个有趣的情况。当普通用户要求主机关闭时,如果其他用户在本地登录,则主机拒绝这样做。但是,当其他用户通过 SSH 登录时,情况并非如此。如果一个用户在本地登录并且一个用户通过 SSH 登录,并且本地登录的用户尝试关闭它甚至没有警告就成功了,并且另一个用户的 SSH 连接突然终止。我的问题是,有没有办法像针对本地用户的政策那样防止这种情况发生?我已经查看了手册页,sshd_config但找不到任何似乎相关的内容。
编辑(附加信息。):
网络上有 4 个操作系统:Mandriva 2009、Mandriva 2010.2、Mandriva 2011 和 Ubuntu 11.04。我所指的具体情况是 SSH 用户位于 Mandriva 2009 主机上,本地用户位于 Mandriva 2011 主机上。
Mandriva 2009 主机使用 GNOME 2.28 环境,2010.2 主机使用 GNOME 2.32,2011 主机使用 KDE Plasma,Ubuntu 11.04 主机使用 Unity。
更新
正如我在这个问题中所指出的,我查看了下面的polkit操作/usr/share/polkit-1/actions/并发现(在文件中org.freedesktop.consolekit.policy)一个称为org.freedesktop.consolekit.system.stop-multiple-users抛出消息的操作
System policy prevents stopping the system when other users are logged in
Run Code Online (Sandbox Code Playgroud)
我在想(由于org.freedesktop.*命名约定)这是通过 D-BUS 发送到 DM 的某种信号。我想如果我能找出触发这个polkit动作的信号,我应该能够修改它的行为。有任何想法吗?
更新 2
我今天尝试了一个小实验,它给了我非常奇怪的结果。我尝试通过 SSH 登录到一个盒子,并确保没有其他用户登录到任何 …
当登录到一台机器时,我可以从w. 作为系统管理员,我是否可以在用户不知情的情况下窃听此终端?换句话说,我希望看到在这个终端上所做的一切都作为我自己终端上的输出。
请注意以下事项:
strace解决方案)。接近的一种解决方案是建议使用gdb. 但这只能让我看到另一个终端的标准输出。我试过的
我从我的终端试过这个:
tee /dev/pts/user_pts </dev/pts/user_pts
Run Code Online (Sandbox Code Playgroud)
这使我可以在用户键入时看到用户在另一个伪终端中键入的每个字符。问题是,每隔几个字符,它就会“跳过”:它会在一个终端设备上显示一个流氓字符,而不是另一个。它还可以防止从用户的伪终端设备执行任何命令。我不确定为什么会发生这种情况以及是否有办法改进它。
我想看什么
USER TERMINAL | MY TERMINAL
$ echo "Test" | # slick_command_here
Test | echo "Test"
$ | Test
Run Code Online (Sandbox Code Playgroud) 很长一段时间以来,我一直在反对这一点。它与这个问题有关。我想知道当我选择从 GUI 关闭我的 Linux 机器时会发生什么。这似乎记录不佳(如果有的话)。
理想情况下,我希望得到一个与 DE 和 OS 无关的答案。除此之外,我对运行 Gnome 的 Mandriva 2010.1 和 Debian 6.x (Squeeze) 和 7.0 (Wheezy) 的具体情况感兴趣。(如果你密切关注,是的,那就是 Gnome 2 和 Gnome 3)
基本上,我想知道当我按“关闭”或“重新启动”时启动了哪个命令/脚本/脚本序列,以便我可以修改它们的行为。我看过的一些论坛帖子建议进行黑客攻击,/etc/polkit-1/*但例如,这个目录结构只是我的 Debian (Squeeze) 机器上的一个骨架。
任何人都可以帮忙吗?
编辑
到目前为止我尝试过的
shutdown用我自己的脚本替换了可执行文件。这不起作用:当我按下shutdownGnome 时,不执行我的脚本就注销了。/usr/share/menu,没什么帮助。解决方案的可能途径
strace使用 GUI 选项(这甚至可能吗?)shutdown的源代码gnome-session的源代码更新
根据我对下面答案的评论,我查看了下面的polkit操作/usr/share/polkit-1/actions/并发现(在文件中org.freedesktop.consolekit.policy)一个称为org.freedesktop.consolekit.system.stop-multiple-users抛出消息的操作
System policy prevents stopping the system when other users …Run Code Online (Sandbox Code Playgroud) 我正在我的机器上查看一个软件的手册页,我需要复制粘贴一些文本,但文本远不止一页。我知道我可以将输出定向到文件并使用基于 UI 的软件(例如gedit)来复制我需要的文本。但这可以从终端完成吗?
Joseph建议了一个命令行方法(对我来说有点复杂,我还不太擅长 Linux 上的正则表达式)。但我想知道是否有办法在我还在终端上时使用 mouse来做到这一点。
我希望我得到一个通用的答案,但是,我使用的是 Ubuntu。
我正在管理一个用户通过 NIS 进行身份验证的网络环境。除了一台机器,所有机器都可以通过 SSH 连接到服务器。在有问题的机器上,我收到消息
ssh: connect to host servername port 22: Connection refused
我比较strace了有问题的机器和可以正确通过 SSH 连接到服务器的机器的输出。
事实证明,无法通过 SSH 连接到服务器/etc/hosts的机器不会进行咨询,而可以通过 SSH 正确连接的机器会进行咨询。两台机器都/etc/hosts设置了服务器的名称和 IP。最后,不咨询的机器/etc/hosts最终尝试连接到 127.0.0.1(localhost) 并失败并显示上述消息。什么可能导致这种情况?
附加信息:
ssh machinename
strace日志显示机器咨询名称服务器(这时候成功地)和管理,以正确解析远程计算机的名称,并连接到它。编辑:我很乐意提供您认为可能有助于解决此问题的任何其他信息。
当前是否有一个通用命令可以“旋转”输入。
例如
#labeled.file
name: bob
title: code monkey
name: joe
title: pointy haired
Run Code Online (Sandbox Code Playgroud)
转换为:
name title
bob code monkey
joe pointy haired
Run Code Online (Sandbox Code Playgroud)
反之亦然
我有一个包含如下数据的文件:
report aaaaaaaa
- ..
-th bbbbbbbbb
-to ccccccccc
.. --.Run Code Online (Sandbox Code Playgroud)
问题:我想删除任何不以以下字符串开头的行:
report
-th
-toRun Code Online (Sandbox Code Playgroud)
这意味着欲望输出将删除所有中间不需要的点和散列,看起来像这样:
report aaaaaaaa
-th bbbbbbbbb
-to cccccccccRun Code Online (Sandbox Code Playgroud)
sed// awk/ grepetc 任何可行的解决方案。
GNUtar(1)有一个简洁的选项,称为--transform. 从手册页:
--transform, --xform EXPRESSION
使用 sed 替换 EXPRESSION 来转换文件名
这允许在提取存档时动态转换路径名,以便您可以控制提取的位置和方式。
我的问题是,有没有办法在原位执行类似的转换;即,不提取存档?
例子
[user@host]$ tar tf test.tar
./foo/blah ./foo/bleh
[user@host]$ some_deep_magic 's/foo/bar/' test.tar
[user@host]$ tar tf test.tar
./bar/blah ./bar/bleh
Run Code Online (Sandbox Code Playgroud)
用例
我正在tar向基本上一无所知的最终用户分发一个存档,并希望它能够在不受我干扰的情况下提取到正确的路径中。我试图避免提取存档,重命名目录和重新打包的琐碎解决方案,因为存档很大。