1. 程式人生 > >linux初步學習

linux初步學習

arc 首字母 cti 方便 是什麽 adl 用戶命令 shells size

1linux終端可以分為以下幾類:

(1)設備終端:鍵盤,鼠標,顯示器。

(2)物理終端(/dev/console):控制臺console

(3)虛擬終端:共有6個,其中有一個是圖形化終端(Ctrl+Alt+F1),其余終端分別對應Ctrl+Alt+F2~F6

(4)串行終端/dev/ttyS#):通過串行端口登錄,終端名為、dev/ttys

(5)偽終端(pty):字符或圖形化界面打開的終端。

(6)通過tty命令可以查看當前終端的終端名。

2SSHSecure Shell的縮寫,由IETF的網絡工作小組(Network Working Group)所制定;SSH為建立在應用層和傳輸層基礎上的安全協議

SSH是目前較可靠,專為

遠程登錄會話和其他網絡服務提供安全性的協議。利用SSH協議可以有效防止遠程管理過程中的信息泄露問題。透過SSH可以對所有傳輸的數據進行加密,也能夠防止DNS欺騙IP欺騙。

SSH之另一項優點為其傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以為FTPPOP、甚至為PPP提供一個安全的“通道”。

想要遠程控制服務器就要安裝SSH的客戶端:x-shellSecureCRT

3shell是一種人機交互語言,是用戶和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、組名、

gid)

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,發現echohash在了/bin/echo目錄。Echo被禁用後變為外部命令,系統會根據PATH變量從左到右尋找echo,最終在/bin/下找到了echo,並存儲在hash中。

4)將 /sbin/ifconfig 移到/usr/bin下取名為echo

5)創建一個/root/bin目錄,並將/bin/echo移入/root/bin下,再執行echo命令結果出錯,這是什麽原因呢?首先當執行命令時,系統先到內存中查找被激活的內部命令,如果找不到就到外部中查找,但由於之前已經查找過一遍,並將查找結果(路徑)存到hash中,由於我們已經移走了,系統就找不到了。

6hash -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

\\ 插入\

7history

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

查找命令格式為man0-9command 。用該命令還可以提取關鍵字,翻頁也方便。

11:目錄結構

1)文件有兩類數據:數據和元數據,元數據是指文件的權限,文件類型,UIDgid,數據區位置,大小,時間,文件鏈接數等等。

2Linux文件的後綴名並不重要。

3linux中的各個目錄及作用

/boot:引導文件存放目錄,內核文件,引導加載器存放在這裏

/bin:二進制文件存放的地方,也就是執行文件存放的地方

/sbin:管理員才能進入並sbin下執行命令

/lib:庫文件,方便調用

/home:家目錄,除管理員外別的用戶不能訪問。軟件的個性化配置。

/root: 管理員的家目錄

/etc:配置文件

/dev:設備文件存儲位置

/media:移動設備掛載點

12.時間戳

atime 訪問時間

mtime 文件數據修改時間

ctime 文件元數據修改時間

stat filename

touch filename 當文件不存在時,則創建一個空文件,名為filename

當文件已存在時,則更新期時間戳

-a 僅更新atimectime

-m 僅更新mtime, ctime

touch filename 更新全部時間戳。


linux初步學習