目錄:
cd : 切換目錄
cd 路徑: 切換至該文件路徑
cd ~[username] : 切換至該用戶的家目錄,
cd - : 切換至上一次所在的目錄
pwd:pring working directory: 顯示當前所在目錄
mkdir : 創建目錄
-p : 先創建父目錄, 也就是 遞歸 創建
-v : 顯示 創建 時 的 詳細 信息
這裏 涉及 到 一個 特性, bash關鍵字 的 展開, 例如
{a,b}_{c,d} 展開 之後 就是 a_c, a_d, b_c, b_d, 這個 在 創建 多個 文件 或 目錄 時 很有用
rmdir : 刪除空目錄: 這裏 注意, 要 刪除 的 目錄 一定 是 空 的。。,
-p : 遞歸 刪除
-v : 顯示 刪除 信息。。
shell中的 引用:
"" :強引用, 引用中可以加${PAHT}之類的變量引用,
'' :弱引用, 引用中間的字符串只能是字符串
`` :命令替換, 引用中的命令會被執行。, 當然,也可使用$(命令) 這種 形式 進行 命令替換
echo : 輸出 一句 話, 寫 腳本的 時候 有用, 相當於 c語言 裏的 printf, shell裏 也有 printf
${NAME} 這個 是 引用 環境變量, 其中 {} 在 大多數情況 下 是 可以 省略 的, 但 如
${PATH}bbbb 這種 情況 就 不能 省略 了, 省略之後 就 變成
#PATHbbbb 了, 系統中 是 沒有 這個 環境變量 的。
shell特性 之 命令歷史:
bash會保留命令歷史在緩衝區中,當shell退出時,命令歷史會由緩衝區存放 到 ~/.bash_history 中
使用 ↑↓ 尖頭 可以 翻看 曾經執行 過 的 命令
history 快捷方式:
!#: #爲命令歷史列表中的命令編號,可用於執行第#條命令
!!: 執行上一條命令
!-#: 執行倒數第#條命令
!$: 引用上一個命令的最後一個參數
執行 history 就 可以 看到 命令歷史 了, 這裏 太長了, 就 截取 了 最後 一部分, 先 看一下 快捷 方式 把,
這裏我又執行了下909號 的 這個 命令,
這個是執行上一條語句,其實 還是 再 執行 一次 echo 語句,
這個 和 !! 沒區別 的, 也是 執行 上一條 語句, 當然, 把-1 改成 別的 就 有 區別 了。。
最後說下 !$ 把,
我 最開始 是 在 / 目錄 下 查看 了 一下 我 的 家目錄, 然後 用 cd !$ 直接 跳轉 到 我的 家目錄, 這裏 的 !$ 就是 上個 命令 的 參數。。
----------------------------------------------------------
history選項:
-c: 清空歷史
-d#:刪除指定命令歷史,#爲命令歷史的編號
-a:追加當前命令歷史到命令歷史文件中去。
命令歷史相關的環境變量:
HISTSIZE:命令歷史中可以保存的命令的個數;
HISTFILE: 命令歷史文件;
HISTFILESIZE:命令歷史文件可以保存的命令的個數;
HISTCONTROL: 控制命令歷史的生成;
ignoredups: 忽略記錄重複的命令;連續的相同命令才爲重複;
ignorespace: 不記錄以空白字符開頭的命令;
ignoreboth: 同時具有上面兩種特性;
shell中變量賦值:
FHS:文件系統目錄標準, 這個標準列出了Linux應該具有哪些目錄,這裏給出 根目錄下 的 一些 重要 的 目錄 的 作用。
/bin: 所有用戶可執行的程序
/sbin: 管理員可執行的程序
/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin
/boot: 存儲系統引導文件:內核、ramfs文件、bootloader(grub);
/dev: 設備文件存放目錄;
/etc: 配置文件的存放目錄;
/etc/sysconfig:
/etc/init.d: 系統服務腳本
/home: 普通用戶,默認在/home下有一個與其名稱同名目錄,作爲用戶的家目錄;
/root: 管理員的家目錄;
/lib, /lib64:庫文件;
/media: 專用掛載位置,通常用來掛載便攜式設備;
/mnt: 專用掛載位置,掛載額外存儲設備;
/misc: 備用目錄
/opt: 備用目錄,但通常用來安裝第三方軟件;
/proc: 僞文件系統,內核參數的映射;
/sys: 僞文件系統,系統級別的用於配置外圍設備祕的參數;
/srv: 爲服務提供數據存放位置;
/tmp: 臨時文件系統;
/usr: shared, readonly
/usr/include: 頭文件
/var: 頻繁發生變化的文件
/var/log
/var/lock
/var/run
/var/cache
文件:
linux文件類型:
普通文件:-, file, 這個 就 相當於 windows裏 的 txt 文件
目錄文件:d,directory, 這個 相當於 windows 裏 的 文件夾把。
鏈接文件(符號鏈接):l,link, 這個 指的是 軟連接, 相當於 快捷方式
設備文件:
字符設備:c, char, 這個 又叫做 串行設備接口, 如 鍵盤 什麼 的。
塊設備: b, block, 這個 又叫做 並行設備接口,如 硬盤
命名管道:p, pipeline, 不太理解, 學到了 再說 把。
套接字文件:s, socket, 這個 也 不太清楚。。
------------------------------------------
Linux文件時間戳:
訪問時間, access time, atime
修改時間, modify time, mtime
改變時間, change time, ctime
-------------------------------------------
文件目錄樹:
tree 命令, 這個 命令 一般 系統 不會 自帶 的, 需要 自己 安裝。。
# yum install tree, 安裝 tree 命令
------------------------------------------
bash特性 之 命令別名:
# alias 別名='原始命令名'
當 alias 無參數 是 可以 查看 已定義 的 命令 別名
這裏 還 可以 看到 ls 命令 也 是個 別名, ls='ls --color=auto', 這裏 如果 想 執行 命令的 原有 意思 可以 在 命令 前面 加 ‘ \ ’, 如,
取消 命令 別名 後 ls 就 不顯示 顏色 了。。
# unalias 別名, 這個 是 用於 取消 命令 別名 的
----------------------------------------------
文本文件 的 查看:
cat File : 正序查看一個文件
-n 顯示行號
-E 顯示行結束符
-v 顯示非打印字符
-A 顯示所有字符
-s 多個連續的空白行顯示爲一個空白行
tac File : 與cat 相反, 逆序 查看 一個 文件。。
--------------------
more: 顯示 多行 文件, 用法 同 man, 不過 在 顯示 完文件 最後 一行 後 會 自動退出。
less: 顯示 多行 文件, 用法 同 man, 不過 貌似 man 是 用 less 來 實現 的。。。, 這個 與 more 的 區別 是 顯示 完 最後一行 後 不會 退出 了,
--------------------
head: 顯示 文件 的 前幾行, 默認 爲 顯示 前10行
tail: 顯示 文件 的 後幾行, 默認 爲 顯示 後10行
-n# : 設置 所 顯示 的 行數, # 爲 數字,
-------------------------
echo 命令:
-e : 允許使用類似 c 語言 裏面 的 轉義字符
-n : 不 默認 輸出 換行 符
-------------------------
關於 文件 的 命令
touch : 創建 文件, 其實 是 修改 時間戳。。, 當 這個 文件 不存在 是 會 自動 創建文件。
access time, atime,
modify time, mtime
change time, ctime
-c: 不創建空文件
-a: 僅修改訪問時間
-m: 僅修改修改時間
-t STAMP: [CC]YYMMDDhhmm.s
access time, atime
modify time, mtime
change time, ctime
-c: 不創建空文件
-a: 僅修改訪問時間
-m: 僅修改修改時間
-t STAMP: [CC]YYMMDDhhmm.s
在 一個 空 文件夾 裏面 創建 一個 a 文件, 可以 用 stat 來 查看 這個 文件 的 信息。
stat : 顯示 一個 文件 的 基本 信息。
現在 來 改變 一下 文件 的 Access 時間戳:
ok, 已經 改好 了
------------------------------------------------------------
cp: copy : 複製文件
SRC, DEST
cp SRC... DEST
-r:遞歸複製
-i: 人機交互
-d: 當源爲鏈接文件時,複製鏈接文件本身而非指向的源文件
-a: 相當於-dr
-p: 保持原有屬性
-f: 強制
假如SRC是一個文件:
如果目標是一個文件且存在:覆蓋
如果目標文件不存在:創建新文件
如果目標存在,且是個目錄:複製源至目標目錄,並保持原名
假如SRC有多個文件:
如果目標存在,且是一個文件:複製無法進行
如果目標存在,且是一個目錄:複製各文件至目標目錄中,並保持原名
如果目標不存在:複製無法進行
如果SRC只有一個且是目錄:-r
如果目標是一個文件且存在:失敗
如果目標文件不存在:創建新目錄
如果目標存在,且是個目錄:複製源目錄至目標目錄中,且保持原名
把 /etc/passwd 複製 到 當前 文件 加 的 aaa 文件 中, 並 查看 了 一下 aaa 文件。。
複製 大概 就 這些 把, 沒什麼 太高端 的 東西。。
---------------------------------------------------------
mv : move : 移動文件, 用法 和 cp 差不多,
可以直接移動目錄,而無須-r選項;
----------------------------------------------------------
rm : remove :刪除 文件
-r : 遞歸 刪除 文件, 加上 這個 選項 就 可以 刪除 非空 目錄 了,~
-i : 人機交互
-v : 刪除 的 詳細信息。
-f : 強制刪除,不需要 人機 交互
---------------------------------------------------------------
nano : 一個 簡單 的 文本 編輯器,
Ctrl+O 是 保存, Ctrl+X 是 退出
bash特性 之 globbing : 文件名 通配
通配符:
* : 表示 任意 長度 的 任意 字符
? : 表示 任意 單個 字符
[]: 指定 字符 範圍 內 的 任意 單個 字符
[xyz] x 或者 y 或者 z
[a-z] a 到 z 之間 的 任意 一個 字符
[0-9] 0 到 9 之間 的 任意 一個 字符
[a-z0-9] a 到 z , 0 到 9 之間 任意 一個 字符
[^]: 匹配 到 指定 字符 範圍 外 的 任意 單個 字符
[^0-9] 非 數字 字符
[[:upper:]] : 所有大寫字母
[[:lower:]] : 所有小寫字母
[[:alpha:]] : 大小寫字母
[[:digit:]] : 數字
[[:alnum:]] : 大小寫字母加數字
[[:space:]] : 空白字符
[[:punct:]] : 標點符號。