有 5 个大文件(file1、file2、..file5),每个文件大约 10G,磁盘上剩余的可用空间极少,我需要将所有这些文件连接成一个。不需要保留原始文件,只保留最后一个。
通常的连接是cat按顺序进行的文件file2.. file5:
cat file2 >> file1 ; rm file2
Run Code Online (Sandbox Code Playgroud)
不幸的是,这种方式需要至少 10G 的可用空间,我没有。有没有办法在不实际复制文件的情况下连接文件,但以某种方式告诉文件系统 file1 不会在原始 file1 结束处结束并在 file2 开始处继续?
附:如果重要的话,文件系统是 ext4。
在尝试通过 SSH 连接到主机时,我收到了以下消息xauth:
/usr/bin/xauth: 锁定权限文件 /home/sam/.Xauthority 超时
注意:我试图通过 SSH 连接远程显示 X11 GUI,因此我需要xauth能够$HOME/.Xauthority成功创建文件,但正如该消息所指示的那样,显然不是。
尝试运行任何基于 X11 的应用程序,例如xeyes收到此消息:
$ xeyes
X11 connection rejected because of wrong authentication.
Error: Can't open display: localhost:10.0
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
我想要cat当前文件夹中的文件和所有子文件夹(和子文件夹)中的所有文件。
这是我的目录结构
$ tree
.
??? f
? ??? foo
??? yo
Run Code Online (Sandbox Code Playgroud)
我想猫foo和yo。
我试过这个命令但没有用:
cat */*
Run Code Online (Sandbox Code Playgroud)
它只是catš foo。
是否可以导出块设备(例如 DVD 或 CDROM)并使其可以作为块设备安装在另一台计算机上?
注意:我对使用 NFS 或 Samba 不感兴趣,我实际上希望光驱在远程计算机上显示为光驱。
我运行了一个 VPS,我想使用 UFW 保护它,只允许连接到端口 80。但是,为了能够远程管理它,我需要保持端口 22 打开并使其可以从家里访问。
我知道可以将 UFW 配置为仅允许从特定 IP 地址连接到端口:
ufw allow proto tcp from 123.123.123.123 to any port 22
Run Code Online (Sandbox Code Playgroud)
但是我的 IP 地址是动态的,所以这还不是解决方案。
问题是:我使用 DynDNS 进行动态 DNS 解析,那么是否可以使用域而不是 IP 创建规则?
我已经试过了:
ufw allow proto tcp from mydomain.dyndns.org to any port 22
Run Code Online (Sandbox Code Playgroud)
但我得到了 ERROR: Bad source address
这个问题是由关于ls'-1选项的问题以及人们反复提出问题和答案的倾向引起的,包括处理ls.
输出的这种重用ls似乎是可以理解的,例如:如果您知道如何对文件列表进行排序,ls那么您可能希望以这种方式使用输出作为其他内容的输入。
如果这些问答不包含对由行为良好的文件名(没有空格和换行符之类的特殊字符)组成的文件名列表的引用,则经常有人评论它们,指出命令序列在出现时不起作用的危险是带有换行符、空格等的文件。
find,sort和其他实用程序解决了将“困难”文件名传达给的问题,例如,xargs通过使用一个选项将文件名与 NUL 字符/字节分开,这不是文件名中的有效字符(除了/?之外的唯一一个) Unix/Linux 文件系统。
我查看了手册页ls和输出ls --help(列出了更多选项),但找不到ls(from coreutils) 有一个选项来指定 NUL 分隔的输出。它确实有一个-1选项可以解释为“用换行符分隔的输出文件名”)
问:是否有技术或哲学原因为什么ls没有“输出由 NUL 分隔的文件名”的--zero或-0选项?
如果您执行的操作仅输出文件名(而不使用 eg -l),则可能有意义:
ls -rt -0 | xargs -r0 …
Run Code Online (Sandbox Code Playgroud)
我可能会遗漏一些为什么这不起作用的东西,或者我忽略了这个例子的替代方案,而且不是更复杂和/或模糊。
附录:
这样做ls -lrt -0可能没有多大意义,但在以同样的方式find . -ls -print0不对,所以这不是一个理由不提供-0/ -z …
我在我的主机上看不到 VirtualBox 来宾 VM 中的任何 USB 设备。如何为我的来宾 VM 启用访问权限?

假设我有 2 个用户帐户user1和user2. 当我以 登录user1,然后切换到user2使用时su,我可以执行命令行程序,但 GUI 程序失败。
例子:
user1@laptop:~$ su - user2
user2@laptop:~$ leafpad ~/somefile.txt
No protocol specified
leafpad: Cannot open display:
Run Code Online (Sandbox Code Playgroud)
那么如何运行 GUI 应用程序呢?
当我通过 ssh 进入未运行任何类型的 X11 桌面环境的远程服务器时,我收到以下消息。
$ ssh user@server
X11 forwarding request failed
$ ssh user@server ls
X11 forwarding request failed on channel 1
file1
file2
...
Run Code Online (Sandbox Code Playgroud)
我怎样才能摆脱这些消息?
在 bash 子 shell 中,运行 cd 时出现以下错误
sudo: cd: command not found
Run Code Online (Sandbox Code Playgroud)
这是意料之中的,因为我没有路径。通常要解决这个问题,我只提供完整路径,如下所示:(/usr/local/bin/foo)
令我惊讶的是,cd它似乎不在任何正常的地方。
which cd
whereis cd
ls /bin | grep cd
Run Code Online (Sandbox Code Playgroud)
相比之下,ls正是我所期望的。
which ls
/bin/ls
Run Code Online (Sandbox Code Playgroud)
cd命令位于何处?为什么与所有其他命令不同?
更新
另一个有趣的花絮,cd 没有出现在 hash
hash
0 /bin/ls
2 /usr/bin/find
2 /sbin/ip
1 /usr/bin/updatedb
1 /usr/bin/apt-get
Run Code Online (Sandbox Code Playgroud) shell ×4
x11 ×3
bash ×1
block-device ×1
cat ×1
cd-command ×1
command-line ×1
data-cd ×1
directory ×1
dvd ×1
dynamic-dns ×1
fhs ×1
files ×1
filesystems ×1
firewall ×1
linux ×1
ls ×1
mount ×1
security ×1
ssh ×1
su ×1
tree ×1
ufw ×1
usb ×1
virtualbox ×1
xauth ×1
xorg ×1