2016年11月2日 星期三

Linux 檔案類型(*.bat, *.exe...)


Linux檔案中的『副檔名』,對系統的識別檔案類型,並沒有任何意義。頂多只是讓使用者方便知道它是什麼類型。

實際上檔案的類型,請打指令 ls -l後,所顯示出來的第一欄(十個字元)的第一個字元,即為檔案的類型,即檔案屬性,例:-rwxrwxrwx,。

檔案屬性:
  -:正規檔案 ,可能為"純文字檔(ASCII)"、"二進位檔(binary)"、"資料格式檔(data)"。
  d:目錄   ,目錄。
  l :連結檔  ,似Windows的捷徑。
  b:區塊設備檔,例如:硬碟、軟碟。
  c:字元設備檔,例如:鍵盤、滑鼠。
  s:資料接口檔,檔案通常被用在網路上的資料承接。
  p:資料輸送檔,FIFO是一種特殊的檔案類型,主要在解決多個程序同時存取一個檔案所造成的錯誤問題。

如果是執行檔,如何執行檔案呢?console模式下,執行:"./程式名",即可。

Linux 基本指令


pwd: (Print Working Directory) - 顯示目前所在目錄

ls: (List information about file(s)) - 顯示檔案名稱與內容
  ls -a    顯示隱藏檔 (以"."開頭的檔案)
  ls -al   -a + -l
  ls -al|more 將檔案內容以一頁一頁顯示
  ls --color  以彩色顯示檔案資料
  ls -d   僅列出目錄
  ls -h    檔案容量以人類較易讀的方式(例如 GB, KB 等等)列出來;
  ls -l     詳細列出檔案系統結構
  ls -r     連同子目錄內容一起列出來
  ls -S    以檔案容量大小排序,而不是用檔名排序
  ls -t     依時間排序,而不是用檔名

cd: (Change Directory) - 變換工作路徑
  cd ..     回到上一層(.. 上一層), (. 目前目錄)
  cd     回到使用者目錄
  cd /usr/bin  到/usr/bin這個目錄(絕對路徑)
  cd .. /usr/bin  到上一層/usr/bin這個目錄(相對路徑)
  cd usr/bin   到usr/bin這個目錄(相對路徑)

cat: (Concatenate files and print on the standard output) - 顯示檔案內容

mkdir: (Create new folder(s)) - 建立新資料夾
rmdir: (Remove folder(s)) - 移除資料夾

rm: (Remove files) - 刪除檔案
  rm -irf    目錄下的東西都一起刪除
mv: (Move or rename files or directories) - 移動檔案或目錄
cp: (Copy one or more files to another location) - 複製檔案或目錄

ln: (Make links between files) - 把某個檔案(資料夾)內容連結到某個檔案(資料夾)
  ln -s 來源檔(資料夾) 目的檔(資料夾)
  此時目的檔(資料夾),可以看到來源檔(資料夾)裡面的內容

chmod: (change mode) - 改變檔案的屬性、 SUID 、等等的特性
chown: (change owner) - 改變檔案所屬人
chgrp: (change group) - 改變檔案所屬群組

參考路徑:
http://www.mediacollege.com/linux/command/linux-command.html
http://linux.vbird.org/linux_basic/redhat6.1/linux_06command.php

2016年11月1日 星期二

hello world(gcc) - (console)(Ubuntu 16.04.1)

Install:
  1. 安裝gcc
    sudo apt-get install g++
  2. 安裝基本library
    sudo apt-get install build-essential

撰寫第一個Hello world程式:

1. 開啟編輯器,順便開檔案
command 模式下->/usr/bin/vi hello_world.c

2. 把下面內容打入(vi 編輯器使用方式,請上往查詢)

#include<stdio.h>

int main()
{
  printf("%s", "Hellow World!!!\n");
}

3. build code
command 模式下->gcc hello_world.c -o hello_world

4. 執行程式
./hello_world


2016年10月31日 星期一

PCMan X(Ubuntu 16.04.1)


1. Enter command window(Ctrl + Alt + t)

2. sudo apt-get install pcmanx-gtk2


中文字會有重疊問題: View --> Non-ASCII Font --> AR PL UKai TW

注音輸入法(Ubuntu 16.04.1)


1. Enter command window(Ctrl + Alt + t)

2. sudo apt-get install ibus-chewing

3.  ibus restart

4. 點輸入法 --> [Text Entry Settings] --> [+] --> [選擇Chinese (Chewing)]


Win + 空白 --> 切換字型

Linux 資料夾介紹

/
   根目錄

/bin:User Binaries
   執行檔的存放路徑,個人或所有人所使用的執行檔,都可能放在此路徑。

/boot:Boot Loader Files
   系統一開始的所需的檔案,包含:Kernel initrd, vmlinux, grub files(開機選單)。

/dev:Device Files
   存放此系統存在的裝置內容(例:terminal devices, usb, or any device attached to the system.)。

/etc:Configuration Files
   拿來存放程式的一些設定檔(configuration)或者一些Script檔。

/home:Home Directories
   所有使用者的家目錄,例:/home/john, /home/nikita。

/lib:System Libraries
   存放/bin and /sbin所需要的含式庫,附檔名通常為:ld* or lib*.so.*。Ubuntu 的 64bit 的版本時,還會出現 lib32 和 lib64 二個資料夾。

/media:Removable Media Devices
   暫時掛載可移除裝置的目錄。
   例:/media/cdrom for CD-ROM
     /media/floppy for floppy drives
     /media/cdrecorder for CD writer

/mnt:Mount Directory
   暫時掛載某些額外的裝置的目錄。(系統管理者才有權限)

/opt:Optional add-on Applications
   給第三方(individual vendors)協力軟體放置的目錄。

/proc:Process Information
   存放系統正在執行的Process資訊。此為虛擬的檔案系統,包含正在執行的Process(/proc/{pid})與一些資源訊息(/proc/uptime),等資訊。

/root
   root帳號的home,只有root有存取權。

/sbin:System Binaries
   跟/bin一樣,都是拿來存放執行檔,裡面存放的檔案通常給系統管理者(super user) or root使用者使用,目的是拿來管理系統用。

/srv:Service Data
   一些Service啟動之後,所需要取用的資料目錄。
   例:/srv/cvs -->CVS service所需要的相關資料
     /srv/www/

/tmp:Temporary Files
   存放系統跟使用者的暫存檔,重開機會清掉

/usr:User Programs
   使用者所存放的一些資料,含執行檔(binaries),函式庫(libraries),文件檔(documentation),原始程式碼(source-code),等。

   /usr/bin 使用者的xxx
      當/bin裡找不到,可到/usr/bin裡找。
   /usr/sbin 使用者的xxx
      當/sbin裡找不到,可到/usr/sbin裡找。
   /usr/lib 使用者的xxx
      當/lib裡找不到,可到/usr/lib裡找。
   /usr/local 使用者的xxx
      通常自己編譯和安裝的程式會被放到這個資料夾。例:裝apache(透過原始碼),會放在/usr/local/apache2

xxx請參考跟目錄下同資料夾名稱的說明

/var:Variable Files
   存放系統上的動態資料,如:Log files(/var/log)、database files、emails (/var/mail); print queues (/var/spool); lock files (/var/lock); temp files needed across reboots (/var/tmp)。

參考資料:
http://www.thegeekstuff.com/2010/09/linux-file-system-structure/?utm_source=tuicool
http://www.arthurtoday.com/2012/12/ubuntu-file-system-tree-directories.html
http://linux.vbird.org/linux_basic/0210filepermission.php

Linux 軟體安裝(封裝軟體)格式 - apt, dpkg, rpm, yum

apt指令(Advanced Packaging Tool):
  源出自 Debian Linux,而Ubuntu、FreeBSD、SUSE 也支援此方式。安裝包內包含相容性檢查。
  支援安裝、升級、更新。

dpkg指令(Debian Package):
  一樣源出自 Debian Linux,而Ubuntu、FreeBSD、SUSE 也支援此方式。

P.S. dpkg是Debian底層的套件管理程式,其上還有強大的apt,在其上更有非常強大的aptitude管理系統。


YUM指令(Yellowdog Updater, Modified):
  Red Hat 所發展的線上更新方式,可自動更新, Red Hat 相關的 Linux,都支援此種方式,例如 : RedHat、Fedora Core、CentOS 都支援此方式更新。
  克服RPM 屬性相依的問題。

RPM指令(RedHat Package Managmer):
  Red Hat 所發展的封裝方式,多半是 Red Hat 公司出的 Linux 居多,所以 Red Hat 相關的 Linux,都支援此種方式,例如 : RedHat、Fedora Core、CentOS。
  支援安裝、升級、更新。

up2date指令(又被稱作Red Hat Update Agent):
  這是一個由較舊版本的Red Hat Enterprise Linux、CentOS及Fedora Core所使用。

tarball指令:
  內容為Linux的壓縮檔(*.tgz、*.tar.gz、*.gz、*.tbz、*.bz2), 為最原始的檔案,可能包含:原始程式碼檔案、偵測程式檔案 (可能是 configure 或 config 等檔名)、本軟體的簡易說明與安裝說明 (INSTALL 或 README),需檢視install跟readme,來自行安裝,流程較複雜,更新也需手動更新。