一、網絡設置相關
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:123456@202.121.137.58:21/path/to/backup.tar.gz $ curl http://james:123456@202.121.137.58/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
-rw-r--r--@ 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