linux初步學習
(1)設備終端:鍵盤,鼠標,顯示器。
(2)物理終端(/dev/console):控制臺console
(3)虛擬終端:共有6個,其中有一個是圖形化終端(Ctrl+Alt+F1),其余終端分別對應Ctrl+Alt+F2~F6。
(4)串行終端(/dev/ttyS#):通過串行端口登錄,終端名為、dev/ttys
(5)偽終端(pty):字符或圖形化界面打開的終端。
(6)通過tty命令可以查看當前終端的終端名。
2:SSH為Secure Shell的縮寫,由IETF的網絡工作小組(Network Working Group)所制定;SSH為建立在應用層和傳輸層基礎上的安全協議。
SSH是目前較可靠,專為
SSH之另一項優點為其傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以為FTP、POP、甚至為PPP提供一個安全的“通道”。
想要遠程控制服務器就要安裝SSH的客戶端:x-shell或SecureCRT。
3:shell是一種人機交互語言,是用戶和Linux操作系統之間的接口。它接收用戶輸入的命令並把它送入內核。Shell也被稱為Linux的命令解釋器,是一種高級程序語言。
windows shell
powershell
dos
linux unix like
sh
bash (default) rhel/suse/ubuntu/fedora/debian/macOS
ksh
csh
zsh
nologin
mobile
ios
android
echo $SHELL 查看當前的shell類型
cat /etc/shells 查看當前系統所安裝的Shell
命令提示符
whoami 顯示當前用戶名
who am/are/is 任意字符 顯示當前的終端信息
who 顯示所有終端的信息
w 顯示所有終端的詳細信息及所做的操作
id 顯示當前用戶信息(包含用戶名、uid、組名、
pwd顯示當前所在目錄的絕對路徑。
[root@centos6 ~]#
[用戶名@主機名前綴 目錄路徑後綴]#|$ (root是為#,普通用戶時為$)
echo $PS1顯示當前的提示符格式
PS1="\[\e[32m\][\u@\h \W]\\$\[\e[0m\] ":將命令提示符顏色改為紅色。(如果想要命令提示符一直變色則要講此命令存在/etc/bashrc文件下)
4:內部與外部命令(重點)
內部命令:集成在內存中的命令,這類命令使用頻率非常高。
外部命令:存儲在硬盤中的命令,這類命令使用頻率不高。
那麽如何知道一條命令是外部還是內部命令呢?我們可以通過type command 命令來查詢該命令是內部還是外部命令。
我們還可以用enable命令來激活,禁用,顯示內部命令:
enable 顯示所有已激活的內部命令
enable command 激活被禁用的內部命令
enable |wc -l 顯示激活中的內部命令的數量
enable -a 顯示所有的內部命令
enable -a |wc -l 顯示所有的內部命令的數量
enable -n 顯示所有被禁用的內部命令
enable -n command 禁用某個內部命令
命令的執行順序問題:
例子:
(1)執行echo 123
(2)禁用echo
(3)執行echo 456
結果發現echo雖然被禁用了,但依舊打印出456在上了,接著用type命令查詢echo,發現echo被hash在了/bin/echo目錄。Echo被禁用後變為外部命令,系統會根據PATH變量從左到右尋找echo,最終在/bin/下找到了echo,並存儲在hash中。
(4)將 /sbin/ifconfig 移到/usr/bin下取名為echo
(5)創建一個/root/bin目錄,並將/bin/echo移入/root/bin下,再執行echo命令結果出錯,這是什麽原因呢?首先當執行命令時,系統先到內存中查找被激活的內部命令,如果找不到就到外部中查找,但由於之前已經查找過一遍,並將查找結果(路徑)存到hash中,由於我們已經移走了,系統就找不到了。
(6)hash -r 清空所用的hash表,再執行echo命令
結果我們發現系統給我們的是IP地址。這是因為我們清空了hash表系統重新從PATH變量中尋找echo,並在/usr/bin下找到了echo,不過這是我們改的用來查IP的。並重新存在hash表中。
(7)enable echo 激活echo後運行echo命令。發現輸出空行,這是因為內部命令激活,系統重新從內存中找,不在找hash表。
總結來看系統以已下順序查找命令:
內部命令
外部命令
hash
PATH
hash
hash 顯示所有被hash的命令路徑
hash -l 顯示所有被hash的命令路徑,包含別名
hash -d 別名 刪除指定別名的hash條目
hash -r 清空所有的hash
hash -t 別名 顯示別名的hash路徑
hash -p 路徑 別名 手工增加一條hash
help 內部命令 查看內部命令的幫助信息
5別名:
alias 顯示所有的別名信息
alias 別名='command -選項 參數'
unalias 別名
unalias -a 取消所有別名
別名的保存 nano /etc/bashrc
使命令不受別名影響的方式
\command
'command'
"command"
/path/command
6簡單命令及其執行語法
Command 【選項】 【參數】
;命令連接符,用來連接兩個命令,前一個執行完,再執行後一個
\ 命令換行
date
+%Y 年
+%m 月
+%d 日
+%H 時
+%M 分
+%S 秒
+%w 星期
+%F 年-月-日
+%T 時:分:秒
設置時間
date 102013112020.45 月日時分年[.秒]
date -s '年-月-日 時:分:秒'
poweroff關機
reboot重啟
init 0 關機
init 6 重啟
shutdown -r 重啟
shutdown -h 關機
shutdown +1
shutdown 20:00
shutdown -c 取消計劃關機
screen
screen 生成默認命令方式的screen即終端名.主機名前綴
screen -S 會話名 創建指定名的screen
screen -x 會話名 加入已創建的screen
screen -ls 查看所有已打開的Screen
echo
-E 不開始解釋功能,默認
-n 不自動換行
-e 開啟解釋功能 ""
\a 警告聲
\b 退格
\c 不換行
\n 回車換行
\r 回車,即光標移至行首,但不換行
\t 插入tab
\\ 插入\
7:history
history 查詢歷史記錄
!n 重復執行某條歷史
!! 重復執行上一條命令
ctrl+p 等於上箭頭
ctrl+n 等於下箭頭
ctrl+j 等於回車
!string 重復前一個以“string”開頭的命令
!?string
ctrl+r 命令歷史中搜索命令
history -c 清空當前的所有歷史記錄
history -d 刪除某條歷史
history -a 將當前終端新執行的命令寫入歷史記錄文件 (文件由變量HISTFILE決定,默認為用戶家目錄下的.bash_history
history -w /path/filename.txt 將歷史記錄寫入指定文件
history -n 將未讀過的歷史從文件中讀取
history -r 將所有的歷史從文件中讀取\
history顯示當前終端的歷史記錄
!! 重復執行上一條命令
!-n 重復執行倒數第n條命令
!n 重復執行第n條命令
ctrl+p 等於向上方向鍵,翻出上一條命令。
ctrl+n 等於向下方向鍵,翻出下一條命令。
ctrl+j 等於enter 執行當前命令
!:0 執行前一條命令(去除參數)
!string 重復前一個以“string”開頭的命令
!?string 重復前一個包含string的命令
!string:p 僅打印以string開頭的命令歷史,而不執行
!$:p 打印輸出 !$ (上一條命令的最後一個參數)的內容
!*:p 打印輸出 !*(上一條命令的所有參數)的內容
^string 刪除上一條命令中的第一個string
^string1^string2 將上一條命令中的第一個string1替換為string2
!:gs/string1/string2 將上一條命令中所有的string1都替換為string2
ctrl-r來在命令歷史中搜索命令
(reverse-i-search)`’:
Ctrl+g:從歷史搜索模式退出
要重新調用前一個命令中最後一個參數:
!$ 表示
Esc, .(點擊Esc鍵後松開,然後點擊 . 鍵)
Alt+ .(按住Alt鍵的同時點擊 . 鍵)
command !^ : 利用上一個命令的第一個參數做cmd的參數
command !$ : 利用上一個命令的最後一個參數做cmd的參數
command !* : 利用上一個命令的全部參數做cmd的參數
command !:n : 利用上一個命令的第n個參數做cmd的參數
command !n:^ 調用第n條命令的第一個參數
command !n:$ 調用第n條命令的最後一個參數
command !n:m 調用第n條命令的第m個參數
command !n:* 調用第n條命令的所有參數
command !string:^ 從命令歷史中搜索以 string 開頭的命令,並獲取它的第一個參數
command !string:$ 從命令歷史中搜索以 string 開頭的命令,並獲取它的最後一個參數
command !string:n 從命令歷史中搜索以 string 開頭的命令,並獲取它的第n個參數
command !string:* 從命令歷史中搜索以 string 開頭的命令,並獲取它的所有參數
8:$的3個作用:
$() 或 ``引用命令執行的結果
$(()) 或$[]進行運算
使用${}或"$變量名" 劃定變量名的起止範圍。
9;bash快捷鍵
Ctrl+L 清屏
Ctrl+O 執行當前命令,並重新顯示本命令
Ctrl+s 鎖定,但仍可以運行命令。
Ctrl+q 解鎖
Ctrl+C 強制結束
Ctrl+D 正常終止
Ctrl+Z 掛起(暫停)命令
Ctrl + a 光標移到命令行首,相當於Home
Ctrl + e 光標移到命令行尾,相當於End
Ctrl + f 光標向右移動一個字符
Ctrl + b 光標向左移動一個字符
Alt + f 向右移動一個單詞
Alt + b 向左移動一個單詞
Ctrl + xx 光標在命令行首和光標之間移動
Ctrl + u 刪除光標之前的內容
Ctrl + k 刪除光標這後的內容
Alt + r 清除全部內容
Ctrl + w 從光標處向左刪除至單詞首
Alt + d 從光標處向右刪除至單詞尾
Ctrl + d 刪除光標後的一個字符
Ctrl + h 刪除光標前的一個字符
Ctrl + y 將刪除的字符粘貼至光標後
Alt + c 從光標處開始向右更改為首字母大寫的單詞
Alt + u 從光標處開始,將右邊一個單詞更改為大寫
Alt + l 從光標處開始,將右邊一個單詞更改為小寫
Ctrl + t 交換光標處和之前的字符位置
Alt + t 交換光標處和之前的單詞位置
Alt + N 提示輸入指定字符後,重復顯示該字符N次(N表示具體的數字)
Ctrl-Shift-n 創建新窗口
Ctrl-Shift-q 關閉當前窗口
Ctrl-Shift-t 創建一個標簽頁
Ctrl-Shift-w 關閉一個標簽頁
Ctrl-PaUp/PgUn 切換到下一個/前一個標簽頁
Ctrl-Shift-c 復制選中的文本
Ctrl-Shift-v 把文本粘帖到當前光標處
10:查找幫助:
當我們遇到忘記一些指令時,我們可以通過linux系統來查找命令的用法
對於內部命令我們可以用help command 來查找該命令的用法。
對於外部命令我們可以用command --help來查找
但這種方式有一些問題,查找不全面,觸發方式不一,所以我們可以用man來查找
Man:共分為9個章節,分別是用戶命令,系統調用,C庫調用,設備文件及特殊文件,配置文件格式,遊戲,雜項,管理類命令還有Linux內核API。
查找命令格式為man【0-9】 command 。用該命令還可以提取關鍵字,翻頁也方便。
11:目錄結構
(1)文件有兩類數據:數據和元數據,元數據是指文件的權限,文件類型,UID,gid,數據區位置,大小,時間,文件鏈接數等等。
(2)Linux文件的後綴名並不重要。
(3)linux中的各個目錄及作用
/boot:引導文件存放目錄,內核文件,引導加載器存放在這裏
/bin:二進制文件存放的地方,也就是執行文件存放的地方
/sbin:管理員才能進入並sbin下執行命令
/lib:庫文件,方便調用
/home:家目錄,除管理員外別的用戶不能訪問。軟件的個性化配置。
/root: 管理員的家目錄
/etc:配置文件
/dev:設備文件存儲位置
/media:移動設備掛載點
12.時間戳
atime 訪問時間
mtime 文件數據修改時間
ctime 文件元數據修改時間
stat filename
touch filename 當文件不存在時,則創建一個空文件,名為filename
當文件已存在時,則更新期時間戳
-a 僅更新atime,ctime
-m 僅更新mtime, ctime
touch filename 更新全部時間戳。
linux初步學習