[TOC]
# Linux文件與目錄管理
## 1 目錄的相關操作
### 1.1 `cd`:切換目錄
### 1.2 `pwd`:顯示當前目錄
### 1.3 `mkdir`:新建一個新的目錄
### 1.4 `rmdir`:刪除一個空的目錄
## 2 文件與目錄管理
### 2.1 `ls`:查看文件與目錄
### 2.2 `cp`:復制文件
### 2.3 `rm`:移除文件/目錄
### 2.4 `mv`:移動/更名文件/目錄
### 2.5 `scp`: 遠程拷貝文件
兩臺機器IP分別為:A.104.238.161.75,B.43.224.34.73。
在A服務器上操作,將B服務器上/home/lk/目錄下所有的文件全部復制到本地的/root目錄下,命令為:
`scp -r root@43.224.34.73:/home/lk /root`。
具體過程為:
~~~
[root@XX ~]# scp -r root@43.224.34.73:/home/lk /root
root@43.224.34.73's password:
k2.sql 100% 0 0.0KB/s 00:00
k.zip 100% 176 0.2KB/s 00:00
.bash_history 100% 32 0.0KB/s 00:00
.bash_logout 100% 18 0.0KB/s 00:00
.bashrc 100% 231 0.2KB/s 00:00
k3.sql 100% 0 0.0KB/s 00:00
.bash_profile 100% 193 0.2KB/s 00:00
[root@XX ~]# ls
~~~
在A服務器上將/root/lk目錄下所有的文件傳輸到B的/home/lk/cpfile目錄下,命令為:
`scp -r /root/lk root@43.224.34.73:/home/lk/cpfile`。
具體過稱為:
~~~
[root@XX lk]# scp -r /root/lk root@43.224.34.73:/home/lk/cpfile
root@43.224.34.73's password:
k2.sql 100% 0 0.0KB/s 00:00
k3.sql 100% 0 0.0KB/s 00:00
.bash_profile 100% 193 0.2KB/s 00:00
.bash_logout 100% 18 0.0KB/s 00:00
.bash_history 100% 32 0.0KB/s 00:00
k.zip 100% 176 0.2KB/s 00:00
.bashrc 100% 231 0.2KB/s 00:00
[root@XX lk]#
~~~
scp在夸機器復制的時候為了提高數據的安全性,使用了ssh連接和加密方式,如果機器之間配置了[ssh免密碼登錄](http://www.cnblogs.com/likui360/p/6012035.html),那在使用scp的時候密碼都不用輸入。
1.命令格式:
`scp?\[參數\]?\[原路徑\]?\[目標路徑\]`
2.命令功能:
`scp`是?secure?copy的縮寫,?scp是linux系統下基于ssh登陸進行安全的遠程文件拷貝命令。linux的scp命令可以在linux服務器之間復制文件和目錄。
3.命令參數:
`-1`??強制scp命令使用協議ssh1??
`-2`??強制scp命令使用協議ssh2??
`-4`??強制scp命令只使用IPv4尋址??
`-6`??強制scp命令只使用IPv6尋址??
`-B`??使用批處理模式(傳輸過程中不詢問傳輸口令或短語)??
`-C`??允許壓縮。(將-C標志傳遞給ssh,從而打開壓縮功能)??
`-p`?保留原文件的修改時間,訪問時間和訪問權限。??
`-q`??不顯示傳輸進度條。??
`-r`??遞歸復制整個目錄。??
`-v`?詳細方式顯示輸出。scp和ssh(1)會顯示出整個過程的調試信息。這些信息用于調試連接,驗證和配置問題。???
`-c?cipher`??以cipher將數據傳輸進行加密,這個選項將直接傳遞給ssh。???
`-F?ssh_config`??指定一個替代的ssh配置文件,此參數直接傳遞給ssh。??
`-i?identity_file`??從指定文件中讀取傳輸時使用的密鑰文件,此參數直接傳遞給ssh。????
`-l?limit`??限定用戶所能使用的帶寬,以Kbit/s為單位。?????
`-o?ssh_option`??如果習慣于使用ssh\_config(5)中的參數傳遞方式,???
`-P?port`??注意是大寫的P,?port是指定數據傳輸用到的端口號???
`-S?program`??指定加密傳輸時所使用的程序。此程序必須能夠理解ssh(1)的選項。
## 3 文件內容查看
### 3.1 直接查看文件內容
#### 3.1.1 `cat`:在屏幕上正序顯示文件所有內容
~~~Linux
# cat [-AbEnTv] fileName
~~~
#### 3.1.2 `tac`:在屏幕上倒序顯示文件所有內容
~~~Linux
# tac fileName
~~~
#### 3.1.3 `nl`:在屏幕上正序顯示文件所有內容,添加行號
~~~Linux
# nl [-bnw] fileName
~~~
### 3.2 翻頁查看文件內容
#### 3.2.1 `more`:往后一頁一頁翻看
~~~Linux
# more fileName
~~~
在more這個程序的運行過程中,有幾個按鍵可以按
* `空格鍵(Space)`:向下翻一頁
* `Enter`:向下滾動一行
* `/字符串`:在當前顯示的內容中,向下查詢"字符串"這個關鍵字
* `n`:重復前一個查詢
* `:f`:立刻顯示出文件名以及目前顯示的行數
* `q`:立刻離開more,不再顯示該文件內容
* `b`或`[ctrl]-b`:往回翻頁,不過這操作只對文件有用,對管道無用。
#### 3.2.2 `less`:往前、后一頁一頁翻看
~~~Linux
# less fileName
~~~
同樣,在less這個程序的運行過程中,也有幾個按鍵可以按
* `空格鍵(Space)`或`[PageDown]`:向下翻一頁
* `[PageUp]`:向上翻一頁
* `/字符串`:向下查詢"字符串"這個關鍵字
* `?字符串`:向上查詢"字符串"這個關鍵字
* `n`:重復前一個查詢(與`/`或`?`有關)
* `N`:反向重復前一個查詢(與`/`或`?`有關)
* `q`:立刻離開less,不再顯示該文件內容
### 3.3 簡單選取文件內容
#### 3.3.1 `head`:取出前面幾行
~~~Linux
# head [-n number] fileName
~~~
默認顯示頭10行。
#### 3.3.2 `tail`:取出后面幾行
~~~Linux
# tail [-n number] fileName
~~~
默認顯示尾10行。
### 3.4 `od`:顯示非純文本文件
~~~Linux
# od [-t TYPE] fileName
~~~
TYPE的類型:
* `a`:利用默認的字符來輸出
* `c`:使用 ASCII字符來輸出
* `d[size]`:利用十進制(decimal)來輸出數據,每個整數占用size bytes
* `f[size]`:利用浮點數(floating)來輸出數據,每個數占用 size bytes
* `o[size]`:利用八進制(octa1)來輸出數據,每個整數占用size bytes
* `x[size]`:利用十六進制(hexadecimal)來輸出數據,每個整效點用size bytes.
### 3.5 `touch`: 創建新文件或修改文件時間
~~~Linux
# touch [-acdmt] fileName
~~~
參數:
* `-a`:僅修改訪問時間
* `-c`:僅修改文件的時間,若該文件不存在則不創建新文件
* `-d`:后面可以接欲修改的日期而不用目前的日期,也可以便用--date="日期或時間"
* `-m`:僅修改 mtime
* `-t`:后面可以接欲修改的時間而不用目前的時間,格式為\[YYMMDDhhmm].
每個文件在linux下面都會記錄許多的時間參數,有三個主要的變動時間
* modification time ( mtime)
當文件的“內容數據”更改時,就會更新這個時間。內容數據指的是文件的內容,而不是文件的屬性或權限。
* status time ( ctime)
當該文件的“狀態”(status)改變時,就會更新這個時間,舉例來說,像是權限與屬性被更改了,都會更新這個時間。
* access time (atime)
當"該文件的內容被取用"時就會更新這個讀取時間(access)。舉例來說,我們使用cat去讀取/etc/man.config,就會更新該文件的atime了。
### 3.6 `umask`: 新建文件/目錄時的默認去除權限值
在默認權限的屬性上,目錄與文件是不一樣的。`x`的權限對于目錄時很重要的,但一般文件創建時是不應該有的(一般文件通常用于數據的記錄,只需要`r`和`w`)。所以默認情況下:
* `文件`:默認權限為`-rw-rw-rw-`,數值為“666”
* `目錄`:默認權限為`drwxrwxrwx`,數值為“777”
1. 查詢`umask`的值,
:-: 
:-: root的`umask`值
若root新建文件/目錄的權限如下:
* 新建`文件`權限:文件默認權限(`-rw-rw-rw-`)-`umask`值(-----w--w-)==>`-rw-r--r--`
* 新建`目錄`權限:目錄默認權限(`drwxrwxrwx`)-`umask`值(-----w--w-)==>`drwxr-xr-x`
2. 設置`umask`的值
:-: 
:-: root設置`umask`值
### 3.7 `chattr` /`lsattr` : 文件隱藏屬性的設置/顯示
### 3.8 `SUID` /`SGID` : 二進制文件的特殊權限
### 3.9 `SBIT`: 目錄的特殊權限
### 3.9 `file`:查看文件類型
如果想要知道某個文件的基本數據,例如是屬于ASCII或者是data文件,或者是binary,其中有沒有使用到動態函數庫(share library)等等的信息,就可以利用這個命令來查看。
### 3.10 命令與文件的查詢
#### 3.10.1 `which`:尋找執行文件
`which`:尋找“執行文件”
`which`查找的范圍是當前用戶的PATH變量內所規范的目錄。
#### 3.10.2 `whereis`:尋找特定文件
#### 3.10.3 `locate`:尋找特定文件
#### 3.10.4 `find`:尋找特定文件
- WebAPP
- Linux Command
- 入門
- 處理文件
- 查找文件單詞
- 環境
- 聯網
- Linux
- Linux目錄配置標準:FHS
- Linux文件與目錄管理
- Linux賬號管理與ACL權限設置
- Linux系統資源查看
- 軟件包管理
- Bash
- Daemon/Systemd
- ftp
- Apache
- MySQL
- Command
- Replication
- mysqld
- remote access
- remark
- 限制
- PHP
- String
- Array
- Function
- Class
- File
- JAVA
- Protocals
- http
- mqtt
- IDE
- phpDesigner
- eclipse
- vscode
- Notepad++
- WebAPI
- Javasript
- DOM
- BOM
- Event
- Class
- Module
- Ajax
- Fetch
- Promise
- async/await
- Statements and declarations
- Function
- Framwork
- jQurey
- Types
- Promise
- BootStrap
- v4
- ThinkPHP5
- install
- 定時任務
- CodeIgniter
- React.js
- node.js
- npm
- npm-commands
- npm-folder
- package.json
- Docker and private modules
- module
- webpack.js
- install
- configuration
- package.json
- entry
- modules
- plugins
- Code Splitting
- loaders
- libs
- API
- webpack-cli
- Vue.js
- install
- Compile
- VueAPI
- vuex
- vue-router
- vue-devtools
- vue-cli
- vue-loader
- VDOM
- vue-instance
- components
- template
- Single-File Components
- props
- data
- methods
- computed
- watch
- Event-handling
- Render Func
- remark
- 案例學習
- bootstrap-vue
- modal
- fontAwesome
- Hosting Font Awesome Yourself
- using with jquery
- using with Vue.js
- HTML
- CSS
- plugins
- Chart.js
- D3.js
- phpSpreadSheet
- Guzzle
- Cmder
- Git
- git命令
- git流程
- Postman
- Markdown
- Regular Expressions
- PowerDesigner
- 附錄1-學習資源