Linux基礎與命令
Linux起源
? 1984 年:Richard Stallman 發起GNU 項目和自由軟件基金會
創建開源的UNIX 實用工具版本
創建通用公共許可證(GPL) )
開源軟件許可實施原則
? 1991 年:Linus Torvalds 發布Linux
創建開放源碼,類Unix 的內核,在GPL 下發布
下載:www.kernel.org
? Linux 操作系統:
Linux 內核+ GNU 工具= 完整的類UNIX 操作系統
如:CentOS,Ubuntu,Android;
Linux發行版
slackware:SUSE Linux Enterprise Server (SLES)
opensuse 桌面
debian: ubuntu ,mint
redhat: : rhel: redhat enterprise linux
每18 個月發行一個新版本
CentOS :兼容rhel 的格式
中標 麒麟:中標 軟件
fedora :每6 個月發行一個新版本
ArchLinux :輕量簡潔
Gentoo :極致性能, 不提供傳統意義的安裝程序
LFS: Linux From scratch 自制Linux
Android: kernel+busybox (工具集)+java 虛擬機、
? Linux 分支參考網站:http://futurist.se/gldt/
? 世界上的開源許可證,大概有上百種
? GPLv2, GPLv3, LGPL(lesser) :copyleft,WordPress
? Apache: apache
? BSD: bsd
? Mozilla
? Apache
? MIT
Linux 哲學思想
? 一切都是一個文件(包括硬件)
? 小型,單一用途的程序
? 鏈接程序,共同完成復雜的任務
? 避免令人困惑的用戶界面
? 配置數據存儲在文本中
? CentOS
https://wiki.centos.org/Download
http://mirrors.aliyun.com
http://mirrors.sohu.com
用戶登錄
? root 用戶:
一個特殊的管理帳戶
也被稱為超級用戶
root 已接近完整的系統控制
對系統損害幾乎有無限的能力
除非必要,為 不要登錄為 root
? ( 普通( 權 非特權 )用戶
權限有限
造成損害的能力比較有限
終端terminal
? 設備終端
鍵盤 鼠標顯示器
? ( 物理終端( /dev/console ) )
控制臺console
? 虛擬終端(tty :teletypewriters, , /dev/tty# # 為[1-6])
tty 可有n 個,Ctrl+Alt+F[1-6]
? ( 圖形終端( /dev/tty7 ) ) startx, xwindows
CentOS 6: Ctrl + Alt + F7
CentOS 7: 在哪個終端啟動,即位于哪個虛擬終端
? ( 串行終端( /dev/ttyS# ) )
ttyS
? ( 偽終端( pty :pseudo-tty , , /dev/pts/# ) )
pty, SSH 遠程 連接
? 查看 當前的 終端設備:#tty
交互式接口:啟動終端后,在終端設備附加一個交互式應用程序
GUI :Graphic User Interface
X protocol, window manager, desktop
Desktop:
GNOME (C, 圖形庫gtk), ,
KDE (C++, 圖形庫qt)
XFCE ( 輕量級桌面)
CLI :Command Line Interface
shell 程序:sh (bourn) csh tcsh ksh (korn)
bash (bourn again shell)GPL zsh
? Shell 是Linux 系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令并把它送入內核去執行。
? shell 也被稱為LINUX 的命令解釋器(command interpreter) )
? shell 是一種高級程序設計語言
bash shell
? GNU Bourne-Again Shell(bash) 是GNU 計劃中重要的工是 具軟件之一,目前也是 Linux 標準的shell ,與sh 兼容
? CentOS 默認使用
? 顯示當前使用的shell
#echo ${SHELL}
? 顯示當前系統使用的所有shell
#cat /etc/shells
?命令提示符: :prompt
? 顯示提示符格式
[root@localhost ~] :echo $PS1
? 修改提示符格式
PS1="\[\e[31m\][\u@\h \W]\\$\[\e[0m\]"
\e \033
\u 當前用戶
\h 主機名簡稱
\H 主機名
\w 當前工作 目錄
\W 當前工作目錄基名
\t 24 小時時間格式
\T 12 小時時間格式
\! 命令歷史數
\# 開機后命令歷史數
? 在shell 中可執行的命令有兩類:
內部命令:由shell 自帶的,而且通過某命令形式提供
help 內部命令列表
enable cmd 可以啟用
enable –n cmd 禁用 內部 命令
enable –n 查看所有禁用的內部命令
外部命令:在文件系統路徑下有對應的可執行程序文件
查看路徑:which -a |–skip-alias ; whereis
區別指定的命令是內部或外部命令:
# type COMMAND
Hash 緩存表:
系統初始hash 表為空 ,當外部命令執行時,默認會 從ATH 路徑下尋找該 命令,找到后會將這 條命令的 路徑記錄到
hash 表中,當再次 使用該命令時,shell 解釋器首先會查看hash表 ,存在將執行之,如果不存在,將會去 去PATH 路徑下
尋找 。利用hash 緩存表可大大提高命令的調用速率
Hash 常見用法:
hash 顯示hash 緩存
hash –l 顯示hash 緩存,可作為輸入使用
hash –p path name 將命令全路徑path起 起 別名為name
hash –t name 打印緩存中name 的路徑
hash –d name 清除name 緩存
hash –r 清除緩存
命令別名
? 顯示當前shell 進程所有可用的命令別名
#alias
? 定義別名NAME ,其相當于執行命令VALUE
#alias NAME='VALUE'
? 在命令行中定義的別名,僅對當前shell 進程有效
? 如果想永久有效,要定義在配置文件中
僅對當前用戶:~/.bashrc
對所有用戶有效:/etc/bashrc
? 撤消別名:unalias
unalias [-a] name [name …]
-a取消所有別名
date 顯示日期和時間
? Linux的 的 兩種 時鐘
系統 時鐘:由Linux 內核通過CPU 的工作頻率進行 的
硬件 時鐘:主板
hwclock ,clock: 顯示硬件時鐘
-s, –hctosys 以硬件時鐘 為 準,校正系統時鐘
-w, –systohc 以系統時鐘為準 , 校正硬件時鐘
時區: :/etc/localtime
時間方面 :
% : 印出 %
%n : 下一行
%t : 跳格
%H :小時(0..23)
%I : 小時(01..12)
%k : 小時(0..23)
%M : 分鐘(0..59)
%p : 顯示本地時段“上午”或 “下午”
%r : 直接顯示時間 (12 小時制,格式為 hh:mm:ss [AP]M)
%s : 從 1970 年 1 月 1 日 00:00:00 UTC 到目前為止的秒數
%S : 秒(00..61)
%T : 直接顯示時間 (24 小時制)
%X : 相當于 %H:%M:%S
%Z : 顯示時區
日期方面 :
%a : 星期幾 (Mon..Sun)
%A : 星期幾 (Monday..Sunday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接顯示日期與時間
%d : 日 (01..31)
%D : 直接顯示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第幾天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第幾周 (00..53) (以 Sunday 為一周的第一天的情形)
%w : 一周中的第幾天 (0..6)
%W : 一年中的第幾周 (00..53) (以 Monday 為一周的第一天的情形)
%x : 直接顯示日期 (mm/dd/yy)
%y : 年份的最后兩位數字 (00.99)
%Y : 完整年份 (0000..9999)
若是不以加號作為開頭,則表示要設定時間,而時間格式為 MMDDhhmm[[CC]YY][.ss],其中 MM 為月份,DD 為日,hh 為小時,mm 為分鐘,CC 為年份前兩位數字,YY 為年份后兩位數字,ss 為秒數
把計 :
-d datestr : 顯示 datestr 中所設定的時間 (非系統時間)
–help : 顯示輔助訊息
-s datestr : 將系統時間設為 datestr 中所設定的時間
-u : 顯示目前的格林威治時間
–version : 顯示版本編號
例子 :
顯示時間后跳行,再顯示目前日期 :
date +%T%n%D
顯示月份與日數 :
date +%B %d
顯示日期與設定時間(12:34:56) :
date –date 12:34:56
? cal 顯示日歷
cal –y
? nano 文本編輯
? 關機:halt, poweroff
? 重啟:reboot
-f: 強制,不調用shutdown
-p: 切斷電源
? 關機或重啟:shutdown
shutdown [OPTION]… TIME [MESSAGE]
-r: reboot
-h: halt
-c :cancel
TIME:now: 立刻
+m: 如 相對時間表示法,多久之后;例如 +3
hh:mm: 絕對時間表示,指明具體時間
用戶登錄信息查看命令:
whoami: 顯示當前登錄有效用戶
who: 系統當前所有的登錄會話
w: 系統當前所有的登錄會話及所做的操作
screen 命令:
創建新screen 會話:
screen –S [SESSION]
加入screen 會話:
screen –x [SESSION]
退出并 關閉screen 會話:
exit
剝離 當前screen 會話:
Ctrl+a,d
顯示所有已經打開的 的screen 會話:
screen -ls
恢復某 某screen 會話
screen -r [SESSION]
echo 命令
• 功能:顯示字符
-E 持 (默認)不支持 \ 解釋功能
-n 不自動換行
-e 用 啟用 \ 字符的解釋功能
啟用命令 選項-e,若字符串中出現以下字符,則特別加以處理,而不會將它當成一般文字輸出
\a 發出警告聲
\b 退格鍵
\c 最后不加上換行符號
\n 換行且光標移至行首
\r 回車,即光標移至行首,但不換行
\t 插入tab
\\ 插入\ 字符
\0nnn 插入nnn (八進制)所代表的ASCII 字符
echo -e '\033[43;31;5mmagedu\033[0m'
\xHH 插入HH (十六進制)所代表的ASCII字
重復前一個命令,有4 種方法:
• 重復前一個命令 使用上方向鍵,并回車執行
• 按 按 !! 并回車執行
• 入 輸入 !-1 并回車執行
• 按 按 Ctrl+p 并回車執行
? Ctrl + n :歷史中的下一條命令
? !num: 按照history 命令輸出中的序號重復對應命令
? !-n : 重復n
? !string 重復前一個以“string ”開頭的命令
? !?string 重復前一個包含string 的命令
? !string:p 僅打印命令歷史,而不執行
? !$:p 出 打印輸出 !$ 的內容
? !*:p 出 打印輸出 !*) (所有參數) 的內容
? ^string 刪除上一條命令中的string
? ^string1^string2 將上一條命令中的string1 替換為string2
? !!:gs/string1/string2 將上一條命令中所有的string1 都替換為 string2
? 使用up (向上)和down (向下)鍵來上下瀏覽從前輸入的
命令
? 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 條命令的所有
-c: 清空命令歷史
-d: 刪除歷史中指定 的命令
#: 顯示最近的# 條歷史
-a: 追加本次會話新執行的命令歷史列表至歷史文件
-n: 讀歷史文件中未讀過的行到歷史列表
-r: 讀歷史文件附加到歷史列表
-w: 保存歷史列表到指定的歷史文件
-p: 展開 歷史參數成多行 ,但不存在歷史列表中
bash 的快捷鍵
? Ctrl + l 清屏,相當于clear 命令
? Ctrl + o 執行當前命令,并重新顯示本命令
? Ctrl + s 阻止屏幕輸出,鎖定
? Ctrl + q 允許屏幕輸出
? Ctrl + c 終止命令
? Ctrl + z 掛起命令
? Ctrl + a 移到命令行首
? Ctrl + e 移到命令行尾
? Ctrl + f 按字符前移(右向)
? Ctrl + b 按字符后移(左向)
? Alt + f 按單詞前移(右向)
? Alt + b 按單詞后移(左向)
? Ctrl + xx 在命令行首和光標之間移動
? Ctrl + u 從光標處刪除至命令行首
? Ctrl + k 從光標處刪除至命令行尾
? Ctrl + w 從光標處向左刪除至單詞首
? Alt + d 從光標處向右刪除至字尾
? Ctrl + d 刪除光標處的字符
? Ctrl + h 刪除光標前的字符
? Ctrl + y 將刪除的字符粘貼至光標后
? Alt + c 從光標處更改為首字母大寫的單詞
? Alt + u 從光標處更改為全部大寫的單詞
? Alt + l 從光標處更改為全部小寫的單詞
? Ctrl + t 交換光標處和之前的字符
? Alt + t 交換光標處和之前的單詞
? Alt + N 提示輸入指定字符后,重復顯示該字符N次 次
? 注意:Alt快捷鍵較少使用,因為常常和編輯器沖突
原創文章,作者:SDS,如若轉載,請注明出處:http://www.www58058.com/68888