macOS Catalina 10.15.x 系统根目录只读问题解决方法

 mac, macpro  macOS Catalina 10.15.x 系统根目录只读问题解决方法已关闭评论
1月 202020
 

macOS Catalina苹果新系统升级了根目录的文件权限,变成只读了,这么做对开发者来说简直就是灾难,好多原来的项目都不能运行了。(我原来用来破解intellidea/pycharm/webstorm的jetbrains-agent.jar 文件放在根目录/data/下,点击intellidea/pycharm/webstorm都无法启动,原来以为是jdk的问题,后来发现就是升级了Catalina新系统后,新系统居然删除了我的/data目录😱😱😱😱😱)

 

解决根目录只读的办法如下:

1. 关掉SIP(系统安全保护)
2. 重新挂载根目录
3. 重新启动项目

具体操作:
一、关掉SIP需要重新启动按住 Command + R 进入 macOS 恢复系统,在实用工具里面点击终端,加上下面这一句代码按下会车,看见successfully…之后重新启动

csrutil disable

二、重新挂载根目录需要在终端输入下面这句代码
sudo mount -uw /

三、最后就可以在根目录创建文件夹了并赋权 sudo mkdir /xxx,sudo chmod 777 /xxx

原来有启动Finder的,最好重启Finder再新建文件夹,让这次允许读写的配置在Finder中生效
killall Finder

macos 10.15.x catalina could not be verified/ xcode 11 An unknown error occurred. See the install log for more details.

 mac, macpro, xcode, 开发  macos 10.15.x catalina could not be verified/ xcode 11 An unknown error occurred. See the install log for more details.已关闭评论
1月 202020
 

2012 macpro  升级 macos 到 10.15.2  catalina  并 安装 新xcode时碰到下列问题,供其他碰到的同学参考。

  • 问题1.  “macOS Catalina” could not be verified, 在”系统偏好设置 ” -> “软件更新”下下载完catalina更新包后点安装,提示  “macOS Catalina” could not be verified.
    解决办法:打开“ 系统偏好设置”->“日期与时间”->去掉打勾”自动设置日期与时间”, 重启机器,并再次软件更新并安装。

Go to settings then date&time. Click and then unclick “set date and time automatically”. Save the changes by clicking the lock.

Then restart the computer and proceed to download the update once again through settings and software update. It resolved the issue of the update not being verified.

 

  • 问题2. macos catalina安装完,打开xcode时,提示“An unknown error occurred. See the install log for more details.”

解决方法:

  • 这个问题再次在Xcode 11.1出现,是有个证书在2019年的10月份某天过期引起的。
  • 你可以通过暂时把系统日期修改到过期的日期之前来解决。
  • 在Xcode 11这个版本下,设置系统日期为2019年10月3日,然后运行Xcode,再安装组件,(就可以安装成功了),完成之后再把系统日期改回正常状态。
  • This problem has once again appeared in Xcode 11.1 and is caused by an invalid certificate that expired some day in October 2019.
  • You can work around the problem by temporarily changing the system date to before the certificate expiration date.
  • In the case of Xcode 11, set the system date to Oct 3, 2019, run Xcode, then change the date back after the components have installed.

苹果公司就这么把版本放出来也是醉了!

 

 

MacOS下命令行查询网络端口占用情况

 mac  MacOS下命令行查询网络端口占用情况已关闭评论
12月 052019
 

MacOS下命令行查询网络端口占用情况(进程号等)

1. netstat命令
[[email protected] centos]# netstat -an | grep 8889
tcp 0 0 0.0.0.0:8889 0.0.0.0:* LISTEN
tcp6 0 0 :::8889 :::* LISTEN
8889即查询的端口号,替换成自己需要查询的端口号

但是 OS X 的 netstat 不能查看使用端口的程序名,建议使用 lsof 代替 netstat 进行查看

2.lsof命令
通过lsof(list open file)命令可以查看到当前打开文件,在linux(mac os内核也基于unix)中所有事物都是以文件形式存在,包括网络连接及硬件设备。
-n 表示不显示主机名
-P 表示不显示端口俗称
非root用户(不加sudo运行命令)下运行,只能查看以当前用户运行的程序,

[[email protected] centos]# lsof -i:8889 -P -n
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python 24433 root 4u IPv6 146243463 0t0 TCP *:8889 (LISTEN)
python 24433 root 6u IPv4 146243464 0t0 TCP *:8889 (LISTEN)

-i参数表示网络链接,:8999指明端口号,该命令会同时列出PID

举例:
查看所有进程监听的端口
sudo lsof -i -P | grep -i “listen”
sudo lsof -nP -iTCP -sTCP:LISTEN

利用mac自带QuickTime Player录制mac内部声音

 mac  利用mac自带QuickTime Player录制mac内部声音已关闭评论
12月 032019
 

前段时间想要录制下网页版微信公众号程序里的英文学习音频,我也不需要编辑等复杂功能,发现使用quicktime + 第三方插件soundflower即可, 插入耳机也可以录入声音,终于不用开扬声器也能录了。

Mac中QuickTime Player原生自带的功能里面不带有录制内部声音的功能,而是由内置麦克风录制外界声音。因此,想要录制高质量的电脑内部音源用macOS本身自带功能是捉襟见肘的。这个时候就需要借助像「soundflower」这样的第三方插件来实现我们的需求。

操作步骤

(一)下载并安装soundflower

下载:Soundflower下载(提取码:htr7 )。按照下图安装。

(二)音频【MIDI设置】

安装完毕之后,在launchpad里面找到【其他】文件夹,打开音频【MIDI设置】

进入【音频MIDI设置】之后,点击左下角+,“创建多输出设备”。

再将里面的【内建输出】和soundflower(2ch)都选上,如图。

soundflower(2ch)是双声道的意思。

(三)macOS「设置」

打开macOS的设置,选择【声音】-输出,再选择“多输出设备”

(四)使用QuciktimePlayer录制mac内部声音

配置好之后就可以打开QuickTime Player了,到屏幕左上角-【文件】-【新建音频录制】。打开之后如下图,电脑外放或者耳机有声音输入时,可以看见电平的波动,这个时候点击录制按钮就可以了。QuickTime Player界面最下面一行请把音量调到零,否则录音会有回音。

 

录制完后点停止按钮,并通过quicktime菜单  【文件】– > 【存储为…】 保存音频文件即可

DONE!

 

 

Mac下 跳到行尾、行首、Home、End、Page up、Page down、Delete、Backward、Backspace、Forward、等常用快捷键

 mac  Mac下 跳到行尾、行首、Home、End、Page up、Page down、Delete、Backward、Backspace、Forward、等常用快捷键已关闭评论
11月 202019
 

mac下没有home键,也没end等键,要实现类似的功能,该使用什么快捷键呢?

Ctrl+a:到行首(达到Home键的效果)
Ctrl+e:到行尾(达到End键的效果)
Ctrl+n:到下一行
Ctrl+p:到上一行
Ctrl+k:从光标处开始删除,直到行尾
Ctrl+u: 删除光标之前到行首的字符
fn键+左方向键是HOME
fn键+右方向键是END
fn+上方向键是page up
fn+下方向键是page down
Ctrl + d : 删除一个字符,相当于通常的Delete键
Ctrl + h退格删除一个字符,相当于通常的Backspace键
Ctrl + f光标向前(Forward)移动一个字符位置
Ctrl + b光标往回(Backward)移动一个字符位置

附录mac键盘功能键和快捷键图

 

 

使用brew services管理服务

 mac  使用brew services管理服务已关闭评论
11月 122019
 

mac使用launchctl命令加载开机自动运行的服务,而brew service 可以简化这种操作。

以brew install redis后自启动redis为例,使用launchctl启动过程如下:

  1. ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
  2. launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
  3. brew services restart redis

常用命令

brew services list  # 查看使用brew安装的服务列表

brew services run formula|–all  # 启动服务(仅启动不注册)

brew services start formula|–all  # 启动服务,并注册

brew services stop formula|–all   # 停止服务,并取消注册

brew services restart formula|–all  # 重启服务,并注册

brew services cleanup  # 清除已卸载应用的无用的配置

 

配置文件目录

/Library/LaunchDaemons # 开机自启,需要sudo

~/Library/LaunchAgents # 用户登录后自启

 

 

举例:homebrew.mxcl.redis.plist格式如下:

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=”1.0″>
<dict>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
<key>Label</key>
<string>homebrew.mxcl.redis</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/opt/redis/bin/redis-server</string>
<string>/usr/local/etc/redis.conf</string>
<string>–daemonize no</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>/usr/local/var</string>
<key>StandardErrorPath</key>
<string>/usr/local/var/log/redis.log</string>
<key>StandardOutPath</key>
<string>/usr/local/var/log/redis.log</string>
</dict>
</plist>

 

官网参考内容:
https://github.com/Homebrew/homebrew-services

Python mac运行 pygame 空白, 图片不显示内容 解决方案

 mac  Python mac运行 pygame 空白, 图片不显示内容 解决方案已关闭评论
10月 092019
 

问题描述: 运行pygame含图片相关的程序,图像不显示。

错误产生环境:macOS MOjave

问题原因:Pygame与MacOS Mojave 不兼容 #见 https://github.com/pygame/pygame/issues/555

可以使用下面一行语句测试是否是这个原因,运行系统示例代码,打开一个窗口,可以听到声音和音乐,但一直是黑色屏幕或白色屏幕表面
python -m pygame.examples.aliens

网上的解决方案:

  1. 将操作系统降级为macOS High Sierra
  2. 安装Miniconda虚拟环境运行pygame

以上方法都比较坑,其实如果为了现在可运行pygame程序,可以使用下面的方法:暂时先安装pygame 2.0的dev版本,等后续2.0正式版本出来后再更新。

以下命令安装pygame 2.0.0.dev4版本:

python3 -m pip install pygame==2.0.0.dev4 –pre –user

再运行原来的程序,done!!!

xcode 可用的磁盘不足(mac磁盘工具的可清除) 问题排查

 mac, macpro  xcode 可用的磁盘不足(mac磁盘工具的可清除) 问题排查已关闭评论
10月 062019
 

升级了mac os到10.14后出现一系列的问题,安装xcode今天提示“可用的磁盘不足”,我的天,我磁盘70多个G,但使用df  -h 查看却发现只有15G可用,使用mac磁盘工具发现有50多G是可清除状态。

磁盘工具-> 可清除 这部分空间是时间机器的本地快照. 在你不连接外部磁盘, 且磁盘空间富裕的时候apple的自动优化机制. 要清除的话, 除了停止时间机器, 还可以打开终端,

tmutil –help

tmutil localsnapshot / # 列出本地快照, 或者 listlocalsnapshotdates /

tmutil deletelocalsnapshots <snapshot_date> # 指定日期删除

但我的机器光用上面的命令没有什么效果,只能强制使用下面的命令先强制关闭time machine

直接 tmutil disable 等系统自动回收.

使用上面命令后再使用df -h 检查可用磁盘,发现空间释放出来了,再安装xcode也没有问题了!!

 

但需要备份的时候记得 tmutil enable .

mac下使用第三方工具Xnip完美滚动截图

 mac  mac下使用第三方工具Xnip完美滚动截图已关闭评论
9月 182019
 

Mac可以使用腾讯的Snip进行滚动截图,但这种截图有个缺陷: 它只能截取完整的窗口,有没有可以选取部分的滚动截图?? 有,Xnip, 而且免费,功能更是逆天!!!!!

很久以来 macOS 都被吐槽没有足够好用的截屏工具,以至于当非常强大的 Snipaste 问世时,很多用户的第一反应就是「什么时候有 Mac 版?」。在愿望成真之余,另一款截屏工具 Xnip 也悄然发布——小巧而强大,还有很多非常实用的独有功能哦。

常见的截屏功能 Xnip 都支持,比如窗口识别、标注等;特别是 Xnip 支持「步骤标注」,需要经常制作教程的用户一定喜欢。

Xnip 还优化了截屏的流程。一般来讲截屏的步骤分为「区域选择 – 确认选择 – 标注 / 编辑 – 保存」,而一旦进入了「标注 / 编辑」状态,用户便无法再次改变选择的区域。虽然可能很多用户都觉得无所谓,重新来一遍或是事后再裁剪就好了,但是如果已经标注了一大堆才发现区域不对,也挺烦恼的。而 Xnip 允许用户在标注过程中随意改变已选择的区域,不得不佩服开发者的细心。

Xnip 也支持滚动截屏,使用体验和别家也是非常不一样,滚动的时候旁边有实时预览,感觉非常爽快自然。

特别值得一提的是,Xnip 的滚动截图还能保留动图的动态,虽然我暂时没想到使用场景是什么,可能…用作呈堂证供?再次佩服开发者对各种细节的观察与思考。

Xnip 是国内开发者 ZekeDa 的作品,可在 Mac App Store 免费下载。免费版可使用所有功能,只是在保存时会被加上「水印」——说是水印,其实只会加在截屏以外的区域,并不影响阅读或破坏截屏完整性。

mac下使用第三方工具snip滚动截图

 mac  mac下使用第三方工具snip滚动截图已关闭评论
9月 182019
 

Snip是腾讯出一款截图工具,使用简单便捷。

1.我们点击pkg去安装。

2.打开snip的偏好设置…。在 启动滚动截图 处打勾。

3.在系统偏好设置–>安全性与隐私, 选择隐私标签,找到左边辅助功能界面, 将右面的snip.app处打勾

4. 使用自己在snip定义的快捷键(默认command + control + a)或直接点截屏命令截取(记得需要截的东西具有滚动功能,如果有滚动功能),如滚动截取网页:首先保持Snip在开启状态,然后使用截屏,点下网页窗口即可看到“正在截取滚动区域”框。

done!

MAC下截图及使用chrome截取长网页图

 mac  MAC下截图及使用chrome截取长网页图已关闭评论
9月 182019
 

Mac有自带截图功能。

(1)Shift + Command + 3,会将生成图片自动保存到桌面上。

(2)Shift + Command + 4,会出现十字光标,按需选中要截图的内容后,会将生成图片自动保存到桌面上。

(3)Shift + Command + 4,会出现十字光标,按空格键,出现相机图标,然后点击界面,就会把当前界面生成图片自动保存到桌面上。

以上截图方式就已经很方便,那么,如果要截长图,有什么好的办法呢?

Chorme浏览器有自带截长图功能,方便好用。

打开需要截长图的网页,右键–检查–Shift + Command + P,输入“screen”,选择

“Capture full size screenshot”:

success ~

会生成一张以当前页面url命名的长截图,并会将生成图片自动保存到下载里面,通过Finder可以找到。

当然,我们也可以用同样的方法,局部截图:

通过审查元素,选中我们需要截图的div盒子,选择:

“Capture node screenshot”

就可以实现局部截图了。

xcode 10.2.1 里修改文件名,提示”rename failed”的解决方法

 mac, xcode  xcode 10.2.1 里修改文件名,提示”rename failed”的解决方法已关闭评论
8月 062019
 

新建xcode文件时,类名和文件名都起错了,文件里的类名可以修改(refactor->rename),但修改文件名时报错: rename failed,
可通过下面方式解决(此法似乎对类名修改报错也有效):

1.关闭 xCode
2.进入 ~/Library/Developer/Xcode/DerivedData 目录并删除包含 “ModuleCache”名的目录.
3.重新打开xcode
4.再尝试该名下。

Good Luck!

升级完macOS mojave后,git命令出现xcrun 错误解决方法

 git, mac  升级完macOS mojave后,git命令出现xcrun 错误解决方法已关闭评论
3月 292019
 

今天升级macOS 到 macOS mojave,升级完后终端里使用git的时候,弹出一行错误:

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

解决方法,重装xcode command line:

xcode-select --install

如果没有解决问题,执行以下命令

sudo xcode-select -switch /

DONE!!

MAC PRO 换SSD盘时,用time machine恢复,提示“将恢复系统添加到目的磁盘时发生错误”解决方法

 mac, macpro  MAC PRO 换SSD盘时,用time machine恢复,提示“将恢复系统添加到目的磁盘时发生错误”解决方法已关闭评论
12月 292018
 

目前很多老mac pro用户都会有想着换个SSD硬盘已优化机器性能。

在使用时间机器备份完了老数据后,正常换好SSD硬盘,并在启动时使用 COMMAND + R 进入macOS实用程序界面,在正常格式话硬盘后,再使用“选择“从Time Machine备份恢复””,并选择对应的硬盘恢复时,可能会出现: 

“将恢复系统添加到目的磁盘时发生错误”,重启系统再试还是一样的效果。

后来发现,对于想要完全恢复硬盘数据或着是空硬盘的,比如换SSD硬盘的情况,开机启动后的按键:

 应该是COMMAND + OPTION + R  而不是 COMMAND + R, 

加OPTION后启动将出现进度条,启动后工具的界面也稍有不同,至此一步步往下走,问题解决,GoodLuck!!

Mac OS X 中一些常用的命令行技巧

 mac  Mac OS X 中一些常用的命令行技巧已关闭评论
12月 022018
 

挺好的文章,分享下:https://www.cnblogs.com/wwl188/p/5612505.html

一、网络设置相关

1、网卡的物理地址的动态重置

出于某些需求,例如网络中的 IP 地址或网络帐号与网卡物理地址绑定,使得多个设备无法切换上网,可尝试临时更改物理地址。不过,系统偏好设置是不能修改网卡物理地址的,这就是命令行的用武之地了。具体来说,若心中已有想修改的物理地址,例如 00:1f:3c:93:b5:99,可执行

$ sudo ifconfig en1 ether 00:1f:3c:93:b5:99

来临时修改网卡的物理地址;若没有物理地址,只是想临时启用尝试一下,可用 openssl 生成一个随机的物理地址:

$ openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'

当然,用 openssl 生成的物理地址可能会与网络中的网卡地址有冲突,在启用随机生成的网卡地址之前,最好先确认一下是否已有 IP 地址已绑定该物理地址:

$ arp -a

2、主机名、计算机名的重置

默认的主机名让人非常无语,特别是出现了一些与 locale 有关的特殊字符。通常情况下,这些并不可见,但是,频繁使用终端时,就会被这些莫名其妙的主机名恶心到了。因此,修改主机名成了当务之急,不过修改的方法很简单。顺次点击左上角的苹果图标->系统偏好设置->共享,接着修改主机电脑名与局域网主机名即可。话说回来,Unix 的命令行是强大的,因此,主机名与计算机名的修改也可以通过命令行修改。

$ sudo scutil --set ComputerName newnameformacosx
$ sudo scutil --set HostName newhostnameformacosx

好了,查看一下修改是否成功:

$ scutil --get ComputerName
$ scutil --get HostName

将主机名放入 /etc/hosts 文件

$ echo 127.0.0.1 newhostnameformacosx >> /etc/hosts

重启网络服务让上述修改立马生效:

$ sudo dscacheutil -flushcache $ sudo killall -HUP mDNSResponder

3、命令行下载工具的使用

众所周知,wget 是大多是 *nix 系统中标准的命令行下载工具。不过 Mac OS X 中并不自带 wget,取而代之的是命令行下载工具 curl。下面来介绍一下 curl 的基本用法,例如直接下载

$ curl -O http://wordpress.org/latest.zip

若想将下载文件重命名

$ curl -o wordpress-3.8.zip 'http://wordpress.org/latest.zip'

若想在下载过程中显示进度,可执行

$ curl -# -O http://wordpress.org/latest.zip

如果下载的 url 链接需要重定向,可试试下述方式

$ curl -L -o 'file.zip' 'http://example.com/download.php?fileID=foo'

若想节省带宽,可执行

$ curl -L -O --compressed 'http://example.com/large.report-tab.html'

若下载链接需要输入用户名与密码,可试试

$ curl ftp://james:[email protected]:21/path/to/backup.tar.gz $ curl http://james:[email protected]/file/path/data.tar.gz

若下载的是带加密的链接,例如下载链接由 SSL/HTTPS/SFTP 提供,可试试

$ curl --ftp-ssl -u james:123456 ftp://202.121.137.58:21/backups/07/07/2012/mysql.blog.sql.tar.gz $ curl -u james sftp://202.121.137.57/backups/data.tar.gz

4、系统更新与 Xcode.app 的命令行工具安装

通常,Mac OS X 上的软件更新是通过 App Store 完成,但是对于那些 geek 来说,可以试试下述命令:

$ sudo softwareupdate --list

会列出所有可能的更新,然后选择需要的更新进行安装

$ sudo softwareupdate --install SomeApp

若不想选择直接更新所有可能的更新,可执行

$ sudo softwareupdate -i -a

Xcode 是 Apple 推出的集成开发环境,它带有 Apple 改良过的 GCC 版本 llvm-gcc。安装它,非常容易,仅需去 App Store 下载 Xcode.app 即可。不过对于 Unix geek 来说,这是不能让人满意的。因为 Xcode.app 不自带命令行工具,需要单独安装它。在 Xcode 5.0 之前,命令行工具的安装非常简单,仅需打开 Xcode.app,然后点击偏好设置->下载->组件,然后选择 Xcode 命令行工具安装即可。但是自 Xcode 5.0 开始,安装 Xcode 的命令行工具,须在终端执行下述命令:

$ xcode-select --install

二、文件系统的相关操作

1、HFS 文件系统的扩展属性

在 Mac OS X 下的 hfs+ 文件系统上,文件经常会被附加上 Mac 专有的扩展属性。比如

$ ls -l
total 0 [email protected] 1 daniel  staff  0 16 jul 19:28 1.txt -rw-r--r--  1 daniel  staff  0 16 jul 19:28 2.txt

会有 @ 标志。这个属性是用户在 Finder 里对文件进行任意操作时就会附加上的。比如右键查看 Get Info,然后在 spotlight commands 里写上几个字再删掉,此时,该文件就会附带有 @ 属性。如果想手动去除掉文件的 @ 属性,可以使用命令 xattr。例如

$ xattr -l 1.txt
com.apple.metadata:kmditemfindercomment $ xattr -d com.apple.metadata:kmditemfindercomment 1.txt $ xattr -l 1.txt $ ls -al 1.txt

此时就没有特殊属性了。

2、文件或文件夹的复制、打包与解包

由于 Mac OS X 文件系统中的扩展属性,若将 Mac OS X 系统中的文件直接用打包释放到 Linux 系统中造成莫名奇妙的错误。这里就需要处理一下文件在复制、打包过程中的扩展属性。首先,Mac OS X 的 cp 命令有一个选项 -X,用它可在复制过程中忽略这些文件的扩展属性。因此,在打包前,先可复制出一份没有扩展属性的文件包,例如

$ cp -Xr /path/to/src - | tar czvf src.tar.gz -

当然,除去扩展属性之外,通常,文件直接打包作成中还会出现 Mac OS X 系统专有的隐藏文件,流入 _MACOSX、._Filename 与 .DS_Store 等。在打 zip 包时,可使用 -X 选项排除这些文件,例如

$ zip -r -X archive_name.zip folder_to_compress

不过,对于 *nix 系统中专有的打包命令 tar,可就没有 -X 选项这么好的东西了。好在 Mac OS X 还是提供了专门的方法,例如,在打 gzip 包时,可使用如下命令

$ COPYFILE_DISABLE=1 tar -zcvf archive_name.tar.gz folder_to_compress

打 bzip2 包也很简单:

$ COPYFILE_DISABLE=1 tar -jcvf archive_name.tar.bz2 folder_to_compress

对于其他格式的 tar 包照此处理。解包过程相对简单,这里附上一段与解包相关的 Bash 配置:

$ echo "# ignore useless invisible files or extended attributes on Mac OS X for cp and tar
export COPYFILE_DISABLE=true
# extract: Extract most know archives with one command
extract () {  if [ -f $1 ] ; then    case $1 in     *.tar.bz2)	tar xjf $1	  ;;     *.tar.gz)	 tar xzf $1	  ;;     *.bz2)		 bunzip2 $1	  ;;     *.rar)		 unrar e $1	  ;;     *.gz)		  gunzip $1		;;     *.tar)		 tar xf $1		;;     *.tbz2)		tar xjf $1	  ;;     *.tgz)		 tar xzf $1	  ;;     *.zip)		 unzip $1		 ;;     *.Z)			uncompress $1  ;;     *.7z)		  7z x $1		  ;;     *)	  echo "'$1' cannot be extracted via extract()" ;;    esac  else    echo "'$1' is not a valid file"  fi
}" >> ~/.bashrc

3、DMG 格式文件的制作以及 ISO 转换互转

DMG 格式是 Mac OS X 中常用的打包格式,创建 DMG 格式的文件,可直接利用系统自带的磁盘工具(Disk Utils)完成。不过这里稍微介绍一下命令行 hdiutil 的用法。创建 DMG 格式的文件

$ hdiutil create -size 100M -stdinpass -format UDZO -srcfolder folder_to_compress archive_name.dmg

其中可以选用的 DMG 格式有 UDZO(压缩格式,默认)、UDRO(只读格式)、UDBZ(Better compressed image)、UDRW(可读写格式)UDTO(DVD 格式)。若想修改 DMG 文件的大小,可执行

$ hdiutil resize 150M /path/to/the/diskimage

若想修改 DMG 格式中的加密口令,可执行

$ hdiutil chpass /path/to/the/diskimage

挂载 DMG 格式的文件可用

$ hdiutil attach archive_name.dmg

它的挂载点在 /Volumes 目录的同名目录下

$ ls -lah /Volumes/archive_name/

卸载 DMG 文件的方法是:

$ hdiutil eject /Volumes/archive_name/

将 ISO 格式的文件转为 DMG 格式的文件

$ hdiutil convert /path/imagefile.iso -format UDRW -o /path/convertedimage.dmg

将 DMG 格式的文件转为 ISO 格式的文件

$ hdiutil convert /path/imagefile.dmg -format UDTO -o /path/convertedimage.cdr $ hdiutil makehybrid /path/convertedimage.cdr -iso -joliet -o /path/convertedimage.iso

4、文件系统的挂载

大多数情况下,文件管理器 Finder 会自动发现诸如 USB 等外部设备,因此无须用户自行挂载分区;但是,有的时候,例如 Mac OS X 硬盘重新分区后,划出了 msdos 分区或者 ext4 等非 HFS 文件系统的分区,如果要读写这些分区,就需要手动挂载这些文件系统了。挂载文件系统的第一步是建立挂载点,例如

$ sudo mkdir /Volumes/Foo $ sudo mkdir /Volumes/bar

接着查看有哪些设备需要手动挂载并挂载它们

$ ls /dev/disk* $ sudo mount -t msdos /dev/disk1s1 /Volumes/Foo $ sudo mount -t hfs /dev/disk1s2 /Volumes/bar

最后,卸载这些不在需要的分区

$ diskutil eject /dev/disk1s1 $ diskutil eject /dev/disk1s2

4、文件或文件夹的隐藏属性

通常,为了保护 Mac OS X 系统中的文件不会被用户随意修改,文件管理器 Finder 是不会显示带隐藏属性的文件与系统文件。但是,有些时候,需要操作这些文件(夹), 此时就需要让 Finder 找到这些文件,方法也很简单。在 Finder 的菜单栏中点击 Go -> Go to folder,与之对应的,可使用快捷键  shift+command+G 。 当然,如果对于 Mac OS X 自带的文件管理器不满意,可安装第三方文件管理器,例如 totalfinder。其实,单就隐藏文件来说,Mac OS X 还提供了其他方法,下面逐一介绍它们。 

4.1 修改 Finder 配置文件 让 Finder 程序显示隐藏文件

$ defaults write com.apple.finder AppleShowAllExtensions TRUE

让 Finder 程序不显示隐藏文件

$ defaults write com.apple.finder AppleShowAllExtensions FALSE

Finder 的配置文件影响到整个文件系统,属于比较暴力的方法。

4.2、开启或关闭某些文件或文件夹的隐藏属性 用下面命令可以解除文件夹的隐藏属性:

$ chflags nohidden ~/Library

恢复文件夹的隐藏属性:

$ chflags hidden ~/Library

事实上,HFS+ 文件系统中文件和目录的隐藏属性也可通过 SetFile 命令来修改。例如,执行

$ mkdir -p ~/Sites
$ SetFile -a V ~/Sites

可开启文件夹 ~/Sites 的隐藏属性;而执行

$ SetFile -a v ~/Sites

可以关闭它的隐藏属性。

三、杂项

1、重置被遗忘的管理员密码

首先,在系统开机还未进入登录界面时按下  command+S 进入单用户模式。然后输入 

$ mount -rw /

以读写方式挂载文件系统;接着重置管理员 james 的密码

$ passwd james

完成后,输入

$ reboot

重启开机即可。

2、重建 Spotlight 数据库

比较简单的办法是用鼠标顺次点击系统偏好-> Spotlight ->重建数据库;对于命令行发烧友来说,可以试试

$ sudo mdutil -E /

3、清理缓存

$ sudo purge