标签: bsd

批量重命名,*nix 版本

我正在寻找一种方法来重命名大量类似命名的文件,很像这个(一个与 Windows 相关的问题),只是我使用的是 *nix(分别是 Ubuntu 和 FreeBSD)。总结一下,在使用 shell(Bash、CSH 等)时,我如何批量重命名一些文件,例如,以下文件:

贝多芬 - Fur Elise.mp3
贝多芬 - 月光奏鸣曲.mp3
贝多芬 - 欢乐颂.mp3
贝多芬 - 对失去的一分钱的愤怒.mp3

会像这样重命名吗?

Fur Elise.mp3
月光奏鸣曲.mp3
欢乐颂.mp3
失落的一分钱的愤怒.mp3

我想这样做的原因是这些文件集合将位于名为“Beethoven”(即文件名的前缀)的目录下,并且在文件名本身上包含此信息将是多余的。

unix bsd shell rename

11
推荐指数
2
解决办法
4494
查看次数

您在 Mac OS X 上使用什么作为“fuser -v -n tcp”替代方案

Mac OS X 上的 fuser 命令相当原始,无法检查侦听特定端口的进程。有人知道一个好的选择吗?知道哪个进程在那个端口上监听就足够了。

bsd tcpip macos

11
推荐指数
1
解决办法
6431
查看次数

你如何在脚本中确定你是在 Linux 还是 BSD 系统上?

我有一个相当广泛的 dotfiles 选择,这些文件在 git repo 中保存了最长时间 - 我只是为 bsd-isms 维护一个单独的代码分支(例如,在 Linux 上,为了获得彩色的 ls 输出ls --color=auto,但是在类似 BSD 的系统上,包括 Mac OS,它是ls -g)。

这已经开始变得笨拙,因为我必须进行更改,然后在每次触摸我的 shell 的 rc 文件时合并分支并处理冲突解决方案。解决这个问题的正确方法是删除 git 分支,然后让我的 rc 文件确定它在哪种操作系统上,然后为别名提供适当的插件脚本。

问题是,我不知道该怎么做。

如何从脚本或 shell rc 文件中判断我是在 Linux 还是 BSD 上?

uname从那以后就不会真正起作用了,我必须为那里的各种系统编写一堆逻辑。当我对操作系统底层类型更感兴趣时,Mac 会说 Darwin、FreeBSD 等,因为这会影响我正在处理的特定工具集。对于上面的示例,我使用的是 bsdls还是 GNU ls

linux script bsd shell

11
推荐指数
1
解决办法
2848
查看次数

UTF-8 语言环境可移植性(和 ssh)

我花了很多时间ssh在各种机器上进行研究,所有机器都不同(有些是嵌入式的,有些运行 Linux,有些运行 BSD,等等)。然而,在我自己的本地机器上,我使用 OS X,它当然有一个基于 BSD 的用户空间。我在这些机器上的语言环境设置为 en_GB.UTF-8,这是可用选项之一:

% echo `sw_vers`
ProductName: Mac OS X ProductVersion: 10.8.2 BuildVersion: 12C60
% locale -a | grep -i 'en_gb.utf'
en_GB.UTF-8
Run Code Online (Sandbox Code Playgroud)

我使用的几个更强大的 Linux 系统似乎有一个等效的选项,但我注意到在 Linux 上名称略有不同:

% lsb_release -d
Description: Debian GNU/Linux 6.0.3 (squeeze)
% locale -a | grep -i 'en_gb.utf' 
en_GB.utf8
Run Code Online (Sandbox Code Playgroud)

这让我想知道:当我ssh从我的 Mac 进入一台 Linux 机器时,它LC_*使用“UTF-8”后缀转发我的所有变量,那台 Linux 机器甚至理解它的要求吗?或者它只是回退到其他地方?

编辑:这是我所指的一个例子:

% ssh -v odin
...
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LC_ALL = …
Run Code Online (Sandbox Code Playgroud)

linux bsd shell locale utf-8

9
推荐指数
1
解决办法
5803
查看次数

强制 *BSD 在单个套接字上同时接受 IPv4 和 IPv6 流量

我已经尝试了很多东西,但总是空手而归。

请允许我描述一下情况:

我在运行 Plex 媒体服务器 (Plexpass) 的 FreeNAS 中有一个 *BSD Jail 设置。它具有 IPv6 访问权限并被配置为使用它。Plex 当前构建为使用单个套接字(这完全符合标准,因为有一个 RFC 支持这种行为)。我知道 BSD 出于安全考虑,不允许在单个套接字上侦听这两种协议,因此任何未明确编程为对 IPv4 和 IPv6 使用不同套接字的应用程序将无法在套接字未绑定到的协议上进行通信。

我可以在 Web 浏览器中使用文字 IPv6 地址访问管理页面。MyPlex 无法访问服务器进行远程访问(MyPlex 目前仅支持 IPv4)。

附加信息:

root@plexmediaserver_plexpass:/ # netstat -a | grep 32400
tcp6 0 0 *.32400

我尝试了以下方法:

  • 在 rc.conf 中设置 ipv6_ipv4mapping="YES"
  • 设置 sysctl net.inet6.ip6.v6only=0
  • 使用 socat 将端口上的 TCP4 代理到 32400 到地址 [::1]:32400 上的 TCP6
  • 使用 socat 将端口上的 TCP4 代理到地址 [Public-IPv6-Address]:32400 上的 32400 到 TCP6
  • 以上的混合

我完全不知所措。我知道这对欧洲的很多人来说是一个主要问题,因为 ISP 已经开始全面转向 IPv6。这对我来说非常令人沮丧,尽管不像他们那样可怕。我无法找到有关在 Plex 中针对该问题获得永久修复的状态的任何信息。据我所知,最好的解决方法是绑定多个端口,让 …

networking bsd freenas ipv6 plex

8
推荐指数
1
解决办法
590
查看次数

Linux 上的 FreeBSD 兼容层

我知道FreeBSD上的Linux 模式Linux二进制文件可以在 FreeBSD 中无缝执行。

来自FreeBSD 手册

实际上,FreeBSD 内核中有一个 Linux 内核。实现内核提供的所有服务的各种底层功能与 FreeBSD 系统调用表条目和 Linux 系统调用表条目相同:文件系统操作、虚拟内存操作、信号传递和 System V IPC。唯一的区别是 FreeBSD 二进制文件获得 FreeBSD 粘合函数,而 Linux 二进制文件获得 Linux 粘合函数。FreeBSD 粘合函数静态链接到内核中,Linux 粘合函数可以静态链接,也可以通过内核模块访问。

这本质上是一个ABI 实现。我很好奇在Linux操作系统中是否有一个等效的 ABI 实现可以允许FreeBSD二进制文件的无缝执行。

也可以看看

在 Linux 上运行 FreeBSD 二进制文件

linux freebsd bsd compatibility kernel

7
推荐指数
1
解决办法
1179
查看次数

“chmod -w 文件”和“chflags uchg 文件”之间的技术区别是什么

BSD/MacOS 问题。

chmod -w file将从文件中删除所有写权限

chflags uchg file将在文件上设置用户不可变位(又名“锁定”位)

除了“设置权限 vs 设置标志”的明显声明之外,这两个命令的技术差异和行为差异是什么?什么时候一个比另一个更受欢迎?

mac freebsd bsd macos

7
推荐指数
1
解决办法
1696
查看次数

Linux 或 BSD“智能”手表?

许多年前(2001 年)IBM 正在开发一款带有蓝牙功能的 Linux 手表(如果没记错的话)。我想知道现在有没有类似的东西?

具体来说,我想要一个可以报时并运行 Linux(或 BSD 或某些此类系统)的手表,它具有某种无线连接(WLAN 或蓝牙),我可以通过 SSH 连接到它来设置警报等。

也许没有用,但非常令人讨厌!

有人听说过这样的产品吗?

(它也可以兼作 SD 卡等价物。)

linux wireless-networking bsd bluetooth

5
推荐指数
1
解决办法
381
查看次数

有命令行日历计算器吗?

是否有提供这些功能的命令行日历计算?

  • 日期(加|减)日期间隔计算
  • 用户指定的输入输出格式

linux unix bsd command-line

5
推荐指数
1
解决办法
2385
查看次数

如何链接 awk 打印语句?

好的,这是一个简单的例子;我分三步隔离主机的 IPV4:

ip -br a  
lo               UNKNOWN        127.0.0.1/8 ::1/128 
eth0             DOWN           
wlan0            UP             192.168.0.101/24 fe80::9fcd:45fb:1e0f:a1cc/64 
Run Code Online (Sandbox Code Playgroud)
ip -br a | awk '/wlan0/ {print $3}'  
192.168.0.101/24
Run Code Online (Sandbox Code Playgroud)
ip -br a | awk '/wlan0/ {print $3}' | awk -F '/' '{print $1}'
192.168.0.101
Run Code Online (Sandbox Code Playgroud)

而不是调用awk(将一个的输出传送到下一个)的第二个实例;怎么能一蹴而就?


只想说:问题不在于解析ip. 我只需要一个简单的例子来帮助说明这个问题;这是我想到的第一件事。真正的问题总结在标题中。

无论如何,它的价值(我必须检查它,但我很确定);这就是我在(最近)过去所做的:

ip -br a s dev wlan0 | awk -F '[ /]*' '{print $3}'
192.168.0.101
Run Code Online (Sandbox Code Playgroud)

bsd bash gnu awk text-manipulation

5
推荐指数
1
解决办法
1494
查看次数