读者来信

作者:Staff

读者来信

54G 是否和 54GL 一样好?

关于 Mick Bauer 在 2010 年 8 月、9 月、11 月和 12 月刊中发表的“使用 Linux 构建透明防火墙”系列文章:54G*L* 是必须的吗? 我使用 DD-WRT 成功升级普通的 54G 已经有一段时间了。 您认为一旦设备上安装了 OpenWrt,54G 就和 54GL 一样好吗? 我这里有一些,主要是 v.2 和 v.3,这就是我提问的原因。 期待您的回复。


Lee

Mick Bauer 回复: 很好的问题。 L 是 Linksys 表示该设备旨在运行 Linux 的方式,这意味着您得到了制造商的保证,可以加载 OpenWrt(或 DD-WRT 或其他 OpenWrt 衍生版本),并且该设备的特定无线芯片组、桥接电路等将在 Linux 下被识别。

但是,OpenWrt 在许多其他 Linksys 设备上运行,而不仅仅是型号中带有 L 的设备。 真正的衡量标准是该设备在 OpenWrt 硬件表 (wiki.openwrt.org/toh/start) 中的状态,当然,还有您自己的经验。 如果您成功地在 Linksys WTR-54G 上运行了 DD-WRT 或 OpenWrt,那么显然它是可以工作的!

请注意,早期版本的 54G 出厂时 带有 Linux 固件; WRT54G 是 OpenWrt 曾经 支持的第一个设备。

技术提示,2010 年 9 月

Tanmay Mande 的“下载带宽使用情况”让我想起了年轻时使用 MS-DOS 电脑的兴奋。 就像我的吃小麦的啮齿动物,现在 Ubuntu 和 Fedora 都无法捕捉到它一样,我也变得有点老了。 我是一个孤独的 SUSE/Puppy/Slackware 用户,避开了 4M 公司(强大的垄断巨头微软)。 我的年龄意味着我绝对不想通过学习无数的 *nix 编程语言和编写像 Tanmay 的下载测量器这样的实用程序来重新发明轮子,尽管如果我能在二手书店找到一本 Bash 书籍,学习 Bash 脚本是值得的。 在花费了大量时间和麻烦打开我通往赛博地球的窗口后,我找不到 FireFox 的下载/上传计量器插件。 在运行 SUSE 时,每次启动路由器后,都必须在 root 文本窗口中运行下载 iptables 设置脚本; boot.local 不像 Tanmay 暗示的那样工作。 除了 Slackware 之外,较新的发行版不再是 DIY-边学边做的 Linux,它们变得过于复杂且对 WinDoze 用户友好。 Tanmay Mande,感谢你让我今天过得很愉快!


Wilfred Tritscher

从脚本发推文

在 2010 年 11 月刊的 Linux Journal 中,Jamie Popkin 提到使用 curl 发布到 Twitter,以便在有人取消他孩子电脑上的用户会话时提醒他 [参见 Jamie 的文章“使用智能手机控制您的 Linux 系统”]。 不幸的是,这种发布到 Twitter 的方法不再有效,因为它已转移到 OAuth 规范。 幸运的是,在 Google 上搜索“Twitter OAuth 命令行”会返回几个网站,解释如何再次使其工作。


John Grafton

如何获得我的 Netflix 体验?

好吧,Netflix 在 Linux 上无法工作让我非常恼火。 现在回答我这个问题,这真的让我百思不得其解。 为什么运行在 Linux 上的 Roku 设备可以流式传输视频,但我在 Ubuntu 9.10 中却不能做同样的事情? 必须有一种方法可以在不使用双启动 PC 的情况下获得我的 Netflix 体验。


jpm1973

Linux 驱动的 Roku 可以流式传输 Netflix,但这绝对是真的,但 Linux 桌面不能。 我也不知道任何“伪造”它的方法。 我尝试过 Wine 和抱怨,但似乎都没有帮助。 希望 Netflix 会纠正这种荒谬的局面,但我对此并不抱太大希望。—编辑。

文件名中的空格

喜欢你们的杂志。 我是 IBM 员工,我们很多人正在转向 Linux(主要是因为 Windows XP 是 32 位的,而 Linux 是 64 位的)。

我对 Dave Taylor 在 2010 年 11 月刊中发表的“编写常见文件重命名操作脚本”一文有一个问题。 我喜欢这个脚本,但它是否处理文件名中的空格?

这是我常用的一个脚本,但由于空格而失败

for n in $(find . -name ".copyarea.db"); do rm -f $n; done

Linux 命令都不太喜欢空格。 而且,当我尝试用双引号括起来时,也不起作用。 有什么想法吗? 谢谢。


Doug

Dave Taylor 回复: Doug,您绝对正确。 UNIX/Linux 确实 不喜欢文件名中的空格。 至少可以说,这很麻烦。

一个在大多数情况下都有效的简单解决方案是,只需确保在脚本中用双引号将任何文件名出现的地方括起来(而不是单引号,单引号会阻止“$”变量被展开)。 所以,试试这个

for n in $(find . -name ".copyarea.db"); do rm -f "$n"; done

您还应该看看-print0find 中的选项,并考虑使用非 for 循环,像这样

find . -name ".copyarea.db -print0 | xargs -0 /bin/rm -f

我没有测试过,但这应该可以做同样的事情,而且速度会快得多! 谢谢,并感谢您的来信。

在您的路径中查找程序文件

我经常想知道我的系统上是否有一个命令与我正在做的事情有关,最终会手动列出目录并使用 grep 搜索它。 我编写了一个小脚本来简化此操作,并将其命名为 findip,表示 find-in-path。 它可以轻松查找,例如,所有与音量相关的程序文件,即,findip volum列出所有名称中包含 volum 的文件。 这是脚本

# find in path ignore case
NAME=$1
find $(echo $PATH|tr ':' ' ') -iname "*${NAME}*"
exit 0

感谢您提供非常有帮助且有趣的出版物。


Alex

我喜欢 Linux 脚本的灵活性。 祝贺您能够随意使用命令行!—编辑。

另一种计数文件的方法

关于 Dave Taylor 在 2010 年 11 月的 Work the Shell 专栏:另一种计数文件并避免使用 grep 过滤掉“No such file”错误消息的方法是使用“echo pattern*”

pat=$1
matches=$(echo $pat*)
if [ "$matches" != "$pat*" ] ; then
  matches=$(echo $matches | wc -w)
else
  matches=0
fi



Michael Eager

Dave Taylor 回复: 没错。 我从来没有真正想过在这种情况下使用 echo。 好主意!

祝贺第 200 期

现在可能有点晚了,但迟到总比不到好。 总之,祝贺第 200 期! 这是一个里程碑! 我认为每一期都是一个达到的里程碑,但我期待的下一个重大里程碑是 2013 年 6 月刊和 2014 年 7 月刊。 第一个是 LJ 的 20 周年纪念,另一个是第 0x100 期(我并不总是用我的十个 [1010B] 手指来计数)。 我可能差了一两期,但这无关紧要。 我喜欢每一期!

有些人写歌或诗歌来庆祝里程碑,但像我这样的人编写代码。 这是给你们的

issue = 200L;
while (1 == 1) {
    publish(issue);
    if (mod (issue, 100L) == 0) {
        celebrate();
        bragAbouIt();
    }
    enjoy(issue);
    issue++;
}



JSchiavon

10 PRINT "Thank You!"
20 GOTO 10

—编辑。

Work the Shell 中教授的不良习惯?

我尽量忽略 Dave Taylor 的大多数 Work the Shell 专栏,但当我看到重复的例子教导不良的 bash 编程习惯时,我发现很难保持沉默。

在 2010 年 11 月的专栏中,所有示例都未能引用传递给 mv 等命令的参数,这肯定会在脚本在文件名中带有空格的文件上运行时立即崩溃。 此外,同一个例子不必要地调用了 sed,而 bash 参数扩展,如 “yy${name#xx}” 或 “${name/xx/yy}” 就可以很好地完成。 为什么不教读者 bash 的这些有用功能呢?

此外,作者煞费苦心地处理没有文件与模式匹配的情况,包括生成三个单独的进程并过滤其中一个命令的错误消息输出。 bash 中更好的做法是简单地使用命令启用 nullglobshopt -s nullglob,这允许 glob 扩展扩展为空字符串。 如果没有匹配项,使用 nullglob 将是一种简单、更有效且更可靠的方式来避免循环的任何迭代。


Bob Bell

Dave Taylor 回复: 感谢您的来信,Bob。 如果您让两位程序员进入房间,不可避免地会出现至少三种意见。 您说的“不良习惯”是我不断演示的“完成工作,继续您的工作”效率。 我写过关于编程的书籍,我知道您可以花费大量时间来微调任何给定的代码片段以使其达到最佳状态,但在现实世界中,在生产环境中,特别是使用 shell 脚本编程,关键是解决问题。 通常,解决方案是懒惰的、低效的,甚至是不完整的。 但是,如果它完成了工作,您就可以继续执行下一个任务。 同意吗?

就文件名中带有空格而言,您是对的。 我参与 UNIX 和 Linux 已经很长时间了,如果我在文件名中放置空格,我会感到身体不适(只是部分开玩笑!),所以我经常忘记确保我的演示脚本适用于包含空格的文件名。 坦率地说,Linux 本来就不是一个对文件名中的空格非常友好的环境。

再次感谢您的来信。 与往常一样,我鼓励读者将我写的东西用作启动平台,一个了解更多关于 shell 脚本编程的地方,获得解决问题的不同方法的想法,并享受解决难题的乐趣,即使解决方案不一定是 a) 最优的或 b) 您会如何做!

Ben NanoNote 上的 Wi-Fi

我今天在图书馆阅读你们的杂志,我还阅读了 Daniel Bartholomew 在 2010 年 10 月刊中关于 Ben NanoNote 的文章。

以下是一些链接,您可以在其中看到一些 microSD-Wi-Fi 适配器与 Ben NanoNote 配合使用:en.qi-hardware.com/wiki/Ben_NanoNote_Wi-Fiwww.linux.com/news/embedded-mobile/netbooks/296251:a-review-ben-nanonote-gets-small-with-embedded-linux

因此,该设备也可以用于例如网页浏览,但如果设法将 USB-Wi-Fi 适配器嵌入到设备中会更好(如果 Ben NanoNote 确实有 USB 主机,则并非不可能)。

感谢这篇文章。 阅读它很愉快,并让我为那些制作(特别是硬件)copyleft 的人感到高兴。

我将首先尝试破解我的(基于 Linux 的)Eee PC,然后可能会尝试破解 Ben NanoNote(当互联网上描述更多破解方法时)。 感谢这本优秀的杂志!


Oussama

Daniel Bartholomew 回复: 是的,有一些 Wi-Fi 适配器可以与 Ben NanoNote 配合使用,但根据我读到的内容,您需要重新编译内核以包含相应的驱动程序,并且存在一些问题(尚不支持热插拔是其中之一)。 我同意最好将无线芯片组和天线集成到 NanoNote 中。 我期待看到第二代 NanoNote,并希望无线网络成为其中的一部分。 话虽如此,没有什么可以阻止具有适当技能的人创建他们自己的 NanoNote 版本并包含他们有能力包含的任何硬件(无线或其他)。 这就是 copyleft 硬件如此棒的原因。 感谢您的评论,祝您破解愉快!

rename.sh

在 Dave Taylor 2010 年 11 月的 Work the Shell 专栏中,我读到“ls -l实际上会生成错误消息ls: No such file or directory”。 这并非总是如此。 在我的电脑上,它会生成荷兰语的错误消息(我住在比利时,荷兰语是我的母语)Bestand of map bestaat niet。 所以,这行代码grep -v "No such file"在这里不起作用。 我认为应该添加 LANG=C。

此外,我已经下载了完整的重命名脚本 (10885.tgz),但其中存在一些错误。

例如,在 rename.sh 脚本的第 14 行,我看到echo "。 我认为缺少第二个引号。 脚本中还有一个没有 “esac” 的 “case” 和一个没有 “done” 的 “do”。 我认为这部分应该是这样的

for i; do
 case "$i"
 in
  -n ) renumber=1 ; shift ;;
  -p ) fixpng=1   ; shift ;;
  -t ) doit=0     ; shift ;;
  -- ) shift ; break ;;
 esac
done

在进行这些更改后,脚本对我来说可以正常工作了。


Jan Wagemakers

Dave Taylor 回复: 感谢您提醒我与本地化 Linux 相关的问题! 我无法解释为什么代码缺少某些元素。 可能是传输故障。 它在我的测试系统上运行正常,然后我才发送它。 真的。

放弃 Linux

我写信的原因是也许 可以改变我的想法。 自 2005 年以来,我一直是 Linux 用户。 先是 Mandrake,然后是 openSUSE,最后是 Ubuntu 10.04(自 6.06 起)。 我为开源软件而奋斗,我真诚地相信它,直到我厌倦了尝试让 Linux 以我需要的方式为我工作,并且花费更多的时间研究、构建和编译,而不是实际做我需要做的事情。

对于基本的网页浏览和打字文档,这还可以。 Linux 的稳定性和安全性非常出色,等等。 当涉及到电影编辑时,我遇到了很多问题。 之后是翻录 CD 的问题。 花费的时间太长了,以至于我不得不回到 Vista 来翻录并将数据传输到 Linux。 当我尝试将其翻录为 Ogg 文件时,我的音乐听起来不对劲。 听起来好像缺少了一些片段。 后来,似乎我经常丢失 MP3 的元数据,这对我来说很重要,因为我正在将教堂的布道从 CD 转换为 MP3 并上传到网站。 最后,使用 Brasero 刻录 CD 太容易出错了,所以我改用 K3B。 同样,对于写入简单数据来说,这很好,但是当我想在 CD 上刻录布道时,出现的不是应该出现的元数据或信息,而是一些外语。

没有电影编辑我也可以生活,但对我来说,CD、MP3、元数据和 CD 刻录问题太多了。 所以您看,我花费更多的时间试图解决这些问题,而不是实际完成我的工作。 因此,不幸的是,我不得不将 所有 工作都切换回 Windows Vista。

我不敢相信我所说的话,但 Windows Vista 第一次就能把工作做好。

也许我应该尝试另一个发行版。 我不知道了。 我不想再经历学习新发行版的过程,再次花费数小时试图修复它。 过去一年半我病得很重,所以我精疲力尽,我需要事情有时能正常工作。

所以如果您能提供帮助,我将不胜感激。 如果不能,也没关系,但我在 Linux 社区的旅程结束了。


JF

首先,我坦率地承认我理解您的痛苦。 我在电影编辑方面苦苦挣扎(这是我在 Linux Journal 这里工作的重要组成部分),有时,我觉得我花费更多的时间准备工作而不是实际工作。 由于 Linux 基本上是人们为自己开发的(这是一个粗略的概括),因此通常最常见的事情开箱即用效果最好。

有时我发现通过 shell 脚本操作底层命令行工具对我来说效果更好。 视频格式转换等尤其如此。 虽然我个人在 CD 刻录方面做得不多,但可能情况也是如此。

如果您仍然有兴趣尝试另一个发行版,也许专门针对媒体创建的发行版可能更适合您的需求。 Ubuntu Studio 是其中一种选择,但可能还有其他选择。

最后,我不确定您是否熟悉此类事情的在线支持。 您提到 Ubuntu 是您最近选择的发行版,Ubuntu 论坛对于从同行和开发人员那里获得支持来说真的非常棒。 当然,最终,由您自己决定使用任何满足您需求的系统。 我们不会评判您!—编辑。

加载 Disqus 评论