---
# System prepended metadata

title: 'LinuxShell: Chap3 Basic Concept'
tags: [' bash', linux-shell]

---

---
tags: linux-shell, bash
---
# LinuxShell: Chap3 Basic Concept


## 1 登入/登出
### 1.1 登入類型
登入主機可以分為

| 登入主機方式 | 意義                                                           |
| ------------ | -------------------------------------------------------------- |
| 遠端登入     | 操作者不直接面對主機，而透過網路連線主機，以虛擬終端機方式登入 |
| 本機登入     | 操作者直接面對主機，由主機的鍵盤鍵入帳密                       |

主機登入的介面分為
1 圖形介面
2 文字介面

通常Linux/BSD系統 預設會開啟7個終端機，即tty1~tty7
文字介面佔tty1~tty6
圖形介面佔tty7

**每個介面的切換方式為Ctrl+Alt+F1(tty1)~Ctrl+Alt+F7(tty7)**


遠端登入多數會使用ssh或是telnet程式來連接遠端主機

ssh連線方式較telnet為安全
因為ssh連線會在傳輸資料做加密,而telnet則為明碼傳送(可以透過Wireshark封包攔截查看內容)

### 1.2 OpenSSH的登入方法
#### ssh -l 帳號 主機名稱或IP
```shell=
ssh -l json 192.168.1.2
```
#### ssh 帳號@主機名稱或IP
```shell=
ssh json@192.168.1.2
```
#### ssh 主機名稱或IP
假設沒有指定帳號，代表以目前系統的帳號名稱為預設帳號
e.g. 假設現在使用者身份為root，則此時，使用ssh 192.168.1.2 代表使用root身份登入遠端主機
```shell=
ssh 192.168.1.2
```
### 1.3 登出主機 結束終端機程式
可以在 terminal 鍵入 exit或是輸入Ctrl+D

## 2 檔案, 目錄(屬性介紹)
Linux/BSD中，把任何東西，包括週邊硬體，都視為檔案。
### 2.1 檔案
在Unix-like的系統中，檔案可以分為幾種:
| 型態代碼 | 檔案型態 | 描述                                               |
| -------- | -------- | -------------------------------------------------- |
| -        | 一般檔案 | 純文字檔，二進位檔。如果檔案具有執行權限則為執行檔 |
| d        | 目錄     | 包含檔案的資料夾                                   |
| b        | 區塊設備檔| 主要是週邊硬體連結，作為系統跟硬體之間的溝通介面         |
| c        | 字元設備檔| 主要是週邊硬體連結，作為系統跟硬體之間的溝通介面         |
| s        | Socket檔 |內部行程通訊的一種特殊檔案，也可以做為跟遠端主機通訊的管道 |
| p        | 管線檔   |內部行程通訊的機制，資料採取FIFO，可以由一邊寫入，另一邊讀出|
| l        | 符號連結檔|稱為soft link或是symbolic link，用以連結其他的檔案或目錄|

**隱藏檔**:檔名的第一個字元是"."。隱藏檔可以是前面所提到的任一種檔案型態
### 2.2 查看檔案型態指令 ls 
```shell=
ls -la /etc/resolv.conf

-rw-r--r-- 1 root root 66 2009-02-21 00:58 /etc/resolv.conf
```

其中最左邊的- 代表檔案型態為一般檔案

```shell=
ls -ld /usr

drwxr-xr-x 16 root root 4096 2009-01-01 10:38 /usr
```
代表 /usr為目錄

### 2.3 查看檔案型態指令 file
用法如下:
```shell=
file 檔案路徑
```
範例:
1. file /etc/resolv.conf
```shell=
/etc/resolv.conf: ASCII text
```
表示 /etc/resolv.conf為純文字檔

2. file /usr/bin
```shell=
/usr/bin: directory
```
表示 /usr/bin為一個目錄

3. file /usr/bin/ssh

```shell=
/usr/bin/ssh: ELF 32-bit LSB shared object, Intel 80386, version 1(SYSV), stripped
```
代表 /usr/bin/ssh為一個2進位檔案

4. file /root/tmp/test.sh
```shell=
/root/tmp/test.sh: Bourne-Again shell script text executable
```
代表 /root/tmp/test.sh是一個bash script文字檔，具執行權

5. file /dev/tty1
```shell=
/dev/tty1: character special (4/1)
```
代表 /dev/tty1 是一個字元設備檔

6. file /dev/hda
```shell=
/dev/hda: block special (3/0)
```
代表 /dev/hda是一個區塊設備檔

7. file /dev/initctl
執行結果:
```shell=
/dev/initctl: fifo (named pipe)
```
這表示, mysqld.sock是一個socket檔

8. file /bin/sh
執行結果:
```shell=
/bin/sh: symbolic link to `bash`
```
這表示,/bin/sh是一個連結到/bin/bash的符號連結檔

### 2.4 目錄
目錄也是檔案的一種，主要是作為檔案的文件夾。
Unix-like的檔案系統採用階層式的架構

### 2.4.1 檔案路徑
檔案在樹狀目錄中，可由根目錄算起，將各階層用到的名稱組合起來，稱為該檔案的路徑。

### 2.4.2 工作目錄
工作目錄又稱為現行目錄，即目前你所處的目錄位置

執行以下指令
```shell=
pwd
```
可以拿到工作目錄的路徑

### 2.4.3 切換路徑
使用cd指令，可以切換到不同的目錄底下，稱之為 切換路徑

### 2.4.4 
## Contact info(聯絡資訊)
<a href="mailto:yuanyu90221@gmail.com?subject=contact">yuanyu90221@gmail.com</a>