2017/6/17

使用dd指令備份sd卡遇到問題[已解決]

今天想說來備份一下sd卡
結果沒想到會出現一個網路上也找不到解決辦法的問題

我輸入dd指令後出現了以下訊息:
sudo dd if=/dev/disk4 of=~/Desktop/170617_rpi3_backup.img bs=1m
dd: ~/Desktop/170617_rpi3_backup.img: No such file or directory  


不知道該怎麼辦啊...



-

[ 20170617 - 更新 ] 

把問題發到樹莓派的stackexchange之後,有人發現我的錯誤了:P
點此

原來使用sudo時,必須要輸入所謂的full path路徑才會被系統認可,不然就是要cd到目的路徑才可正常執行。
原因猜測是因為sudo代表最高使用者的權限,如果輸入~ (代表$HOME)的路徑,他會搞不清楚是哪個使用者吧。
 


2017/6/4

安裝binary檔案到osx/linux並使用其terminal指令

有時候我們在網路上找到的程式是binary檔而不是osx上常見的dmg,這時候就要將其移動到系統當中的一個特定地點 /usr/local/bin,osx/linux只會從這些資料夾查看可以使用的程式。

安裝方法:
將下載來的binary檔案移動到 /usr/local/bin 即可在terminal中使用其指令。

可以使用 mv 或者 cp 這兩個指令
用法:
mv [source] [destination]
cp [source] [destination]


說明:
When you type commands like ngrok in the terminal, Macs (and other Unix OSs) look for these programs in the folders specified in your PATH. The PATH is a list of folders that's specified by each user. To check your path, open the terminal and type: echo $PATH.
You'll see output that looks something like: /usr/local/bin:/usr/bin:/bin. This is a : separated list of folders.
So when you type ngrok in the terminal, your Mac will look for this executable in the following folders: /usr/local/bin, /usr/bin/ and /bin.


像我目前如果在terminal中輸入 echo $PATH 則會出現:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Library/TeX/texbin
代表這些地方都有存放可在terminal中執行指令的程式


各個path的比較:

  1. /bin (and /sbin) were intended for programs that needed to be on a small / partition before the larger /usr, etc. partitions were mounted. These days, it mostly serves as a standard location for key programs like /bin/sh, although the original intent may still be relevant for e.g. installations on small embedded devices.
  2. /sbin, as distinct from /bin, is for system management programs (not normally used by ordinary users) needed before /usr is mounted.
  3. /usr/bin is for distribution-managed normal user programs.
  4. There is a /usr/sbin with the same relationship to /usr/bin as /sbin has to /bin.
  5. /usr/local/bin is for normal user programs not managed by the distribution package manager, e.g. locally compiled packages. You should not install them into /usr/bin because future distribution upgrades may modify or delete them without warning.
  6. /usr/local/sbin, as you can probably guess at this point, is to /usr/local/bin as /usr/sbin to /usr/bin.

      In addition, there is also /opt which is for monolithic non-distribution packages, although before they were properly integrated various distributions put Gnome and KDE there. Generally you should reserve it for large, poorly behaved third party packages such as Oracle.





參考資料:
https://stackoverflow.com/questions/30188582/ngrok-command-not-found
https://unix.stackexchange.com/questions/8656/usr-bin-vs-usr-local-bin-on-linux 
https://linux.die.net/man/7/hier