it-swarm.cn

在Mac OS X上,什么是有用的命令行命令?

WindowsLinux 线程中,您发现在 Mac OS X Server (或客户端)中最有用的命令是什么?

58
username
say "some text"

say通常用于 将人们送回他们的公寓 ,它使用您的参数并通过音频输出设备大声朗读它们。

28
Tim

pbpastepbcopy与粘贴板(也称为剪贴板)进行交互。

例子:

# copies the directory listing
ls -l | pbcopy

# get pasteboard lines containing foo and save them in a_file
pbpaste | grep foo > a_file

我认为它们默认使用宏编码,因此,如果要使用UTF-8(您需要这样做),则应查看以下链接:

23
kch
fs_usage

使您可以监视文件系统活动。如果您想查看某些应用程序创建的文件,则非常方便。有关更多说明,请参见 http://rentzsch.com/macosx/fs_usageIntro

19
username
open .

在当前工作目录中打开一个Finder窗口。

17
richardhoskins

从命令行,我喜欢具有以下能力:

创建并刻录“通用” CD/DVD:

 $ mkisofs -allow-multidot -allow-leading-dots -d -hide-rr-moved\
-l -joliet-long -R -T -v\
- V VOLUME_NAME -o output.iso root-cd-dir /
$ hdiutil burn -noverifyburn output.iso 

从CD/DVD创建ISO映像:

 $ diskutil unmountDisk /dev/disk2s0
$ dd if =/dev/disk2s0 of = cdname.iso bs = 32m 

寻找ldd时可以忘记otool命令:

 $ alias ldd ='printf“将命令发送到\'\'otool -L \'\''-\ n” && otool -L'

从命令行挂载磁盘映像:

 $ hdid diskimage.dmg(或.iso)

使用预览来访问手册页:

 $ man -t rsync |打开-f -a /Applications/Preview.app
13
Gary Chambers

“机场” CLI实用程序是我的最爱。参见 http://osxdaily.com/2007/01/18/airport-the-little-known-command-line-wireless-utility/ 。它将向您显示详细信息,例如与您关联的AP的信号电平,噪声电平和BSSID。

12
Jason Luther
drutil tray open

当没有键盘连接时非常有价值(通过ssh),因为Apple光盘驱动器无法从机箱外部访问)。

11
James
ipconfig getpacket en0

显示主以太网接口(en0)的网络配置。

如果您习惯使用Windows,并且认为“ ipconfig”已损坏-不是);-)您只需要添加几个参数

11
username

不能说足够,“开放”很棒。您可以在其GUI程序中打开文档,也可以使用-a选择GUI程序。例如,

open -a vlc movie.avi

将打开VLC并告诉它在当前目录中加载movie.avi。

open movie.avi

将使用默认程序打开它。如果您只想打开一个程序,也可以这样做:

open -a system\ preferences

将运行系统偏好设置。您也可以打开Urls:

open vnc://myserver:5900

将打开“屏幕共享”并连接到myserver。

查看

man open

查看可以使用的所有标志。

11
w00t
softwareupdate

从CLI更新Mac。

10
dvoita
networksetup

在命令行的“系统偏好设置”的“网络偏好设置”窗格中配置所有内容。使编写脚本或远程处理很多更容易。

9
Chealion
Sudo changeip -checkhostname

检查正向和反向DNS解析是否正常,并且经常向您显示可用于解决问题的命令。如果显示“名称匹配,没有任何变化”,则表示状态良好。如果您要更改服务器的网络配置,则至关重要。在将服务器提升为Open Directory Master之前使用此功能也很重要。

8
username
dscacheutil -flushcache

我发现自己使用那堆来刷新10.5+上的DNS缓存。

8
Bruce McLeod
ping 224.0.0.1

Ping 所有子网上的设备

7
username
srm

用于安全删除的命令行版本。

7
Jauder Ho
last

显示谁登录了系统,他们使用了多长时间以及重新启动系统的时间。

这是输出示例:

clinton   ttys000                   Thu May 28 22:33   still logged in
clinton   console                   Thu May 28 08:05   still logged in
reboot    ~                         Thu May 28 08:05 
shutdown  ~                         Wed May 27 20:15 
clinton   console                   Wed May 27 17:33 - 20:15  (02:42)
...

wtmp begins Thu May 14 09:26 
7
Clinton Blackmore
 lsof

列出打开的文件

当您要弹出USB驱动器并被告知正在使用该驱动器时,请使用它,请退出所有应用程序,然后重试。

$ Sudo lsof /Volumes/CLINTON
COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    55966 clinton  cwd    DIR  14,12    16384    2 /Volumes/CLINTON
lsof    56042    root  cwd    DIR  14,12    16384    2 /Volumes/CLINTON
lsof    56043    root  cwd    DIR  14,12    16384    2 /Volumes/CLINTON

在这种情况下,我将cded放在驱动器上,因此bash正在访问该卷。

请注意,如果看到“ mds”条目,则表示聚光灯正在索引驱动器。

7
Clinton Blackmore

Apple)的命令行管理指南非常有用。

搜寻 “命令行管理mac” 可获得良好的效果。

Mac OS X的命令行管理 10.510.410.

其他有用的指南位于 http://www.Apple.com/server/macosx/resources/

7
Clinton Blackmore
osascript -e 'tell application "AppName" to quit'

使您可以从命令行管理程序中退出应用程序。

osascript -e 'tell application "Finder" to sleep'

较长的Shell脚本的最后一行很有用,脚本完成后可使Mac进入睡眠状态。我将其别名为iSleep。

pbpaste | script.sh |pbcopy

提取粘贴板的内容(编辑->复制)并将其通过管道传输到script.sh。将结果放到粘贴板上,以供您编辑->粘贴到文档中。

6
sal

http://www.commandlinefu.com

尽管不是专门用于Mac的资源,但它使用的是终端图标,大多数真正有用的命令列表都可以使用。

6
Clinton Blackmore
mcxquery

这将使您了解将哪种MCX(受管客户端)设置应用于客户端计算机。

[GUI等效项是转到System Profiler,然后在“软件”部分下,单击“受管客户端”。]

确定计算机是否受到管理以及查看计算机是否正在获取您期望的设置非常有用。

5
Clinton Blackmore
sw_vers

显示当前安装的Mac OS X版本和内部版本。

5
username
df -h

要检查当前所有磁盘上有多少磁盘空间。

4
hendrasaputra
opendiff file1 file2

file1file2上运行 FileMerge (图形化diff附带Apple开发人员工具))。

4
las3rjock
dns-sd -B _ssh
dns-sd -B _rfb
dns-sd -B _services._dns-sd._udp

列出在Bonjour中投放广告的服务器。最后一条建议列出了您可以列出的服务类型。列表是实时的,看完后按Ctrl-C。

最近的Linux和Windows的Bonjour SDK中都使用了相同的命令。

4
James
system_profiler

仅在命令行中,为您提供与选择About This Mac-> More Info相同的结果。

跑步

system_profiler -usage

或查看手册页将为您提供有关使用方法的提示。

几个例子:

system_profiler -xml > MySystem.spx
# and later,
open MySystem.spx  # or just double click on it in the Finder

这会将系统配置文件转储到一个文件中,以后可以在其他计算机上查看该文件。

system_profiler SPUSBDataType

告诉您所有USB设备的信息(包括其供应商和产品ID,它们可以帮助跟踪驱动程序)。

system_profiler SPUSBDataType | grep "Product ID" -c

会告诉您插入了多少个USB设备(包括内部USB设备),这对于查看计算机是否看到了设备(或者说Parallel抓住了设备或设备已经坏了)很有用。[请注意System Profiler GUI App,可以从菜单中选择“查看”->“刷新”以更新列表;可能会更容易。]

system_profiler SPHardwareDataType

将为您提供基本的硬件信息(可用于资产跟踪),以及

system_profiler SPHardwareDataType | grep Serial

将为您提供机器的序列号。

4
Clinton Blackmore
Sudo opensnoop

在Leopard及更高版本中,报告是否处理打开文件(无论是否成功)。您可以要求它查看由特定进程在整个系统中打开的所有文件,或者是否有任何进程在打开给定文件(带有不同类型的时间戳),并显示是否发生错误。

以下是更多详细信息:

opensnoop是 dtrace 脚本;/usr/bin中还有许多其他功能可以查看诸如进程正在执行的系统调用,正在创建的进程以及正在执行的I/O之类的事情。跑 apropos DTrace获取列表,并查看手册页以获取详细信息。


我在努力诊断为什么有网络帐户的用户在OS 10.5.8上漫画生活Magiq 1.1崩溃时发现了opensnoop。

我(通过ssh多次运行,使用不同的帐户):

Sudo opensnoop -e -n Comic > output.txt

网络用户打开的最后一个文件是这样的(带有完整路径):

/Network/Servers/.../username/Library/Icons/WebpageIcons.db

这使我想起了Safari 5.0对于网络用户的崩溃,我们通过管理不缓存收藏夹图标的首选项或重定向文件来解决此问题。 Apple显然已经解决了Safari 5.0.1中的问题,昨天我升级到Safari 5.0.2后,它修复了Comic Life Magiq用户的崩溃。

4
Clinton Blackmore
ifconfig en0 ether 00:00:00:00:00:00

更改(欺骗)MAC地址,直到下次重新启动

4
username

仅适用于Mac:我看到了“打开”。上面的按钮,但是打开将打开您传递给它的任何文档或应用。

我使用最多的通用Unix:Sudo在更改系统配置文件等方面非常方便,我实际上是在vi中进行编辑的。

挂起某些消息时(或者当另一个用户仍在后台登录到我的桌面并且我想注销他们时,kill不能夸大其词,我知道这很讨厌,但这是my桌面)

ssh/scp-我喜欢在OSX中我可以打开一个终端并连接到我们的任何服务器。仅此一点就让我很高兴放弃Windows。

ifconfig/ping/whois/nmap等

3
Alex

scutil --dns

将显示DNS解析的顺序。在创建或调试网络设置时很有用。

3
romant
lsof -i 

列出打开的Internet端口。样本输出:

COMMAND     PID    USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
SystemUIS   223 clinton   11u  IPv4 0x3e21b08      0t0  UDP *:*
ARDAgent    262 clinton   16u  IPv4 0x3e21be0      0t0  UDP *:net-assistant
ARDAgent    262 clinton   18u  IPv4 0x5f01a68      0t0  TCP *:net-assistant (LISTEN)
AppleVNCS   263 clinton    4u  IPv6 0x3e274bc      0t0  TCP *:vnc-server (LISTEN)
Opera     48365 clinton   20u  IPv4 0x5f01e64      0t0  TCP WTD-Staff-BlackmoreC:57094->stackoverflow.com:http (ESTABLISHED)
Opera     48365 clinton   23u  IPv4 0x5b12a68      0t0  TCP WTD-Staff-BlackmoreC:57095->stackoverflow.com:http (ESTABLISHED)

如果要让所有用户打开端口,请使用Sudo,并使用标志-n-P将禁用名称解析和端口名称,并为您提供数字。

3
Clinton Blackmore
Sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -restart -agent

启动远程桌面服务(如果仅具有SSH访问权限,但想使用客户端Mac上的GUI进行操作,则很有用)。有关更多选项,请参见: http://support.Apple.com/kb/HT237

3
username
drutil eject

将弹出CD。

3
Clinton Blackmore

如果您想知道文件具有哪种行尾,只需运行

file /path/to/your-file

例如:

$ file imports/sample-students.txt 
imports/sample-students.txt: ASCII text, with CR line terminators
3
Clinton Blackmore

毫无疑问,这个观众有点行人,但我使用:

屏幕捕获-i -c

从屏幕上抓住我想要的东西这真的很方便,而且Grab不允许我做这些事情。

2
Dave

获得没有启用root用户的root Shell(因为Apple本身有时需要在文档中进行一些“怪异”的事情,即在系统范围内进行设置语言)

Sudo bash

这为您提供了一个root Shell,您可以在其中以root身份执行所有操作,而不必在每个命令前都加上Sudo命令。

这可能很危险,但是我们是系统管理员,我们知道我们在做什么,不是吗? :)

2
drAlberT

除了通常的Unix怀疑者之外,我还发现以下有用的东西:

  • dsconfigad-编辑Active Directory设置并绑定计算机

  • 默认值-编辑首选项

  • plutil-将 plist 转换为文本

  • softwareupdate-从命令行运行软件更新

  • 安装程序-从命令行安装软件包

  • networksetup-设置并获取各种内容,例如计算机名称

如果您掌握了这些知识和通常的Unix知识,则可以从命令行进行Mac管理。

2
Honestpuck

如何使Time Machine备份到NAS。

defaults write com.Apple.systempreferences TMShowUnsupportedNetworkVolumes 1

查找MAC地址

ifconfig en0 | grep ether | sed s/://g | sed s/ether//

创建稀疏束复制到NAS的命令

Sudo hdiutil create -nospotlight -library SPUD -size 160g -fs "Case-sensitive Journaled HFS+" -type SPARSEBUNDLE -volname "<VOLNAME>" ./<HOSTNAME>_<MAC_ADDRESS>.sparsebundle

就像将魅力备份到我的ReadyNAS一样。

2
Jauder Ho

这是一个免费的第三方工具,但是

edit

真的很方便。这是一个命令行工具,您可以在第一次运行 TextWrangler 时选择安装。 [其他文本编辑器(BBEdit,TextMate)可能会提供类似的内容。]

edit path/to/somefile

在TextWrangler中打开文件,如果您通常不具有编辑权限,则可以让您进行身份验证。 (您甚至可以从ssh会话执行此操作,它将为登录的图形用户打开它)。

更好的是您可以通过管道传输内容。

lsof -i | edit

例如,将向您显示打开的网络连接并在TextWrangler中打开它们,您可以在其中轻松搜索(和滚动)它们。

2
Clinton Blackmore

这个问题与 与UNIX管理员无法使用的工具有关 相当多。 Mac OS X的许多命令行工具都具有UNIX根目录,例如dfduwhich;但是,有明显的例外,它们没有明显的UNIX等价物,例如osascriptopenpbcopypbpastesay

2
las3rjock

killall -9 appname强制退出应用程序。如果您无法进入活动监视器,则非常有用。

2
al.

ipconfig有时很有用:

获取接口上的当前IP地址:

$ ipconfig getifaddr en1
10.110.2.25

获取最后收到的DHCP信息:

$ ipconfig getpacket en1
op = BOOTREPLY
htype = 1
flags = 0
hlen = 6
Hops = 0
xid = 143857879
secs = 0
ciaddr = 0.0.0.0
yiaddr = 10.110.2.25
siaddr = 0.0.0.0
giaddr = 0.0.0.0
chaddr = 00:aa:bb:cc:dd:ee
sname = 
file = 
options:
Options count is 7
dhcp_message_type (uint8): ACK 0x5
server_identifier (ip): 1.1.1.1
lease_time (uint32): 0xe10
router (ip_mult): {10.110.0.1}
domain_name_server (ip_mult): {1.1.1.1, 1.1.1.2}
subnet_mask (ip): 255.255.252.0
end (none): 
2
dexedrine
ifconfig | grep cast

非常适合获取您的IP地址,并且

ifconfig en1 | grep eth

很好地用于获取MAC地址。使用en1(几乎总是)将获得机场的MAC地址,如果仅允许将已知设备允许进入您的无线网络,这将非常方便。相反,如果使用en0(内置以太网端口),则可以在Open Directory中查找计算机,如下所示:

ldapsearch -x -h odm -b "cn=computers,dc=odm,dc=pretendoco,dc=com" "macAddress=00:0d:93:b5:82:88"

(假设您的服务器是'odm',并且域是ODM.PRETENDCO.COM)。

2
Clinton Blackmore

我刚刚发现,可以使用一个漂亮的bash构造来代替Mac OS中缺少的seq命令:

echo { 18..21 }
2
geewiz
sqlite3 foo.db

启动交互式 SQLite 会话。如果foo.db不存在,它将被创建。

1
richardhoskins

du -d 1 -h

以易于阅读的形式显示当前目录的磁盘使用情况统计信息。

男人[命令]

最常用的命令之一。告诉您如何使用其他所有内容。

1
Peter Hoven

我没有看到的OS X特定的东西提到:

mdfind使用命令行中的Spotlight搜索索引,因此无需使用“搜索”下拉菜单就可以进行全文搜索。

networksetup -将向您展示其支持的所有疯狂语法;这是等效于“网络”首选项窗格的命令行。

Sudo launchctl list-显示正在运行的launchctl作业。记住launchctl stop X.XX.X只会“停止”(杀死)持久性进程的当前运行实例;要使其真正停止运行,请使用launchctl unload /System/Library/LaunchDaemons/X.XX.X.plist

1
eric sorenson
Sudo slapconfig -destroyldapserver

强制将LDAP副本降级为“独立”。如果您的Open Directory Master配置错误,有时尝试使用Server Admin降级Open Directory副本将失败(例如:您可能会发现您的副本服务器拒绝降级)。您可以在这些情况下使用slapconfig强制其降级。

1
username
 which program

搜索程序的路径,并告诉您如果在未指定完整路径的情况下运行程序将调用哪个可执行文件。

通常,它最适合用作键入路径的速记。

$ which python
/usr/bin/python
$ ls -l `which python`
lrwxr-xr-x  1 root  wheel  72 30 Jan 22:56 /usr/bin/python -> ../../System/Library/Frameworks/Python.framework/Versions/2.5/bin/python
1
Clinton Blackmore

由于Bonjour,是否曾经想知道Finder中可以看到的另一台Mac的IP地址在您的LAN上?

dscacheutil -q Host -a name OtherMac.local

dscacheutil非常有用且用途广泛。您不仅可以刷新DNS缓存(如此处其他地方所述),即用户查找以及缓存统计信息和转储,还可以做更多的事情。

1
Joe Carroll

客户端拥有哪些DHCP许可证?

Sudo ls -lt /private/var/db/dhcpclient/leases

列出防火墙允许/拒绝:

Sudo ipfw list

生成高熵密码(双击有希望的16个字符串以进行复制/粘贴):

head -c90 /dev/random | uuencode -m pwd | hexdump -C
1
Charles Stewart

这些是基本的,但如果您患有失忆症,则非常方便:

我是谁?

id

我站在哪里?

pwd

我是什么建筑?

hostname

它的地址是什么?

ifconfig |grep inet
1
username

也许不是最“有用”的命令,但是say很有趣。

例如 say I love serverfault让它读回您在“说”之后输入的内容。

0
HostBits
locate "foo"

显示系统文件名中带有“ foo”的任何文件。我必须像使用Spotlight一样频繁地使用它。

0
username
 Sudo reboot

重新启动计算机。

0
Clinton Blackmore