获取OS X中命令行的部分结果


1

我想使用以下命令行来获取当前的Wi-Fi频道。

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I

我想使用这个命令,因为我可能正在使用结果的更多部分。 所以我需要AppleScript只返回命令的当前Wi-Fi通道。

我很感谢任何帮助。 :)

Answers:


2

以下是使用tron_jones的答案在AppleScript中的示例。

该命令的结果设置为 _channel 然后在对话框中使用以显示结果。明显 _channel 可以以各种方式使用。

set _channel to do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | grep 'channel:' | awk '{print $2}'"
display dialog "Wi-Fi is using Channel: " & _channel

注意:完全限定的路径名 grep 和或 awk 可能需要提供。还有双引号 grep "channel:" 被单引号替换,因此命令可以用双引号封装,以便编译,因为单引号 awk 命令。

顺便说一下,使用星号可以将命令缩减为以下内容( * )缩短书面路径 airport 命令:

set _channel to do shell script "/S*/L*/P*/A*/V*/C*/R*/airport -I | grep 'channel:' | awk '{print $2}'"

要进一步缩短命令行,感谢bmike,在终端中使用以下命令创建符号链接:

sudo ln -s "/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport" "/usr/local/bin/airport"

然后,作为终端中的示例,您需要做的就是输入: airport -I

或者在使用前一个示例的AppleScript命令中:

set _channel to do shell script "airport -I | grep 'channel:' | awk '{print $2}'"

对于什么是 $2
user121028

它是输入记录的第二个字段 awk.../airport -I | grep "channel:" 输出 channel: 11 管道 awk 并打印“ 11 “ 就像它一样 $2。如果你说 awk '{print $1}' 结果将是“ channel: ”。
user3439894

感谢您的广泛回复。它有效并且非常有帮助。 :)
user121028

也许你也可以帮我解决这个问题:如何从完整的结果中创建AppleScript中的列表?同 as list 我收到了一个错误。我认为问题是返回前没有逗号。
user121028

1
@ user121028每个问题的一个问题 - 在评论中要求新问题被认为是非常糟糕的形式。它让人看起来有点像“帮助吸血鬼”,尽管除了在评论中提出这个问题之外你没有表现出任何这种疾病的迹象。
bmike

4

我建议使用“ grep的 “和” AWK “来自bash的命令。您可以使用它们来解析bash中给出的数据。以下是使用您在上面描述的详细信息的示例。

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | grep "channel" | awk '{print $2}'

帮自己一个忙,sym将二进制文件链接到/ usr / local / bin,这样你就可以输入机场(或编写脚本)

airport -I | grep "channel" | awk '{print $2}'

我在哪里可以改变 /user/local/bin?使用新的终端窗口它不起作用。
user121028

@ user121028,在终端中,使用以下命令创建符号链接: sudo ln -s "/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport" "/usr/local/bin/airport" 然后,作为示例,您需要做的就是输入: airport -I
user3439894

你为什么要用 grepawkairport -I | awk '/channel/{print $2}'
Mark Setchell
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.