一、系統和硬件
無論是Linux、OS X、Windows操作系統,他們都是由以下部分組成(分層結構):
最底層:硬件 底層之上:將硬件的接口抽象成為系統調用(kernel) 再之上:庫 再此之上為:應用程序
程序的運行可以有兩種方式:
1、開機自動啟動運行 2、用戶通過交互式接口登陸或者連接系統上去,來手動運行程序
二、終端:
1、物理終端:我們可以將顯示器、鍵盤鼠標直接接在主機的接口之上,這樣的終端稱之為物理終端,即本機自帶的,直接連入的,也稱之為:物理控制臺console表示/dev/console。 2、虛擬終端:除了物理終端,系統會提供給我們6個虛擬終端,這些虛擬終端是附加在物理終端之上的,用軟件方式虛擬實現的終端centos默認啟用6個虛擬終端,可以通過使用快捷鍵來切換進來。
切換方式:Ctrl-Alt-F[1-6]
表示:/dev/tty# 3、圖形終端:也是附加在物理終端之上,用軟件方式虛擬實現的終端,但額外會提供桌面環境。也是虛擬終端的一種切換方式:Ctrl-Alt-F7 4、偽終端(模擬終端):圖形界面下打開的命令行接口,還有基于ssh協議或telnet協議等遠程打開的命令行界面。
表示:/dev/pts# 查看當前的終端設備命令:tty
終端實際上一個設備,一個設備要想與系統交互,必須有交互接口,當我們開啟一個終端時,系統會自動的在終端上運行(附加)一個交互式程序。
交互式程序有兩類:
GUI和CLI GUI:圖形化界面,是基于X協議實現的窗口管理器(桌面、按鈕的作用等)
Linux桌面系統有:
GNOME(C程序開發,gtk(開發庫))
KDE(C++程序開發,qt(開發庫))
XFCE(輕量級桌面) CLI:命令行界面
對應的叫shell程序,用戶要想與系統交互,必須通過shell,不同的程序員開發的程序不一樣,但是都可以實現同樣的功能(就是交互式功能),所以說shell程序也有很多種,如Sh,csh,Ksh,Bash,zsh。
查看當前環境使用的shell:
echo $SHELL 顯示當前系統使用的所有shell cat /etc/shells
echo nihao > /dev/tty2 向tty2這個終端發送nihao
三、命令提示符
靠環境變量定義
[root@centos6 ~]# echo $PS1 [\u@\h \W]\$ 修改:PS1="\[\e[32m\][\u@\h(Eric) \W]\\$\[\e[0m\]"
提示符有兩種:
1、#表示管理員登陸
2、$表示普通用戶登陸
可以通過命令提示符來判斷時管理員還是普通用戶登陸。
在shell中可執行的命令有兩類:
1、內建命令:由shell自帶的,而且通過某命令形式提供。 2、外部命令:在當前系統的某文件系統路徑下有對應的可執行程序文件;可通過which,whereis命令來查找到可執行程序文件
whereis command
查看命令的路徑(外部命令)和 幫助文檔的路徑
model:
[root@centos6(Eric) ~]#whereis ntpd
ntpd: /usr/sbin/ntpd /usr/share/man/man8/ntpd.8.gz which command 顯出命令的路徑
model:
[root@centos6(Eric) ~]#which ntpd
/usr/sbin/ntpd
查看命令是外部還是內建命令:
type command
model:
[root@centos6(Eric) ~]#type ntpd
ntpd is /usr/sbin/ntpd
[root@centos6(Eric) ~]#type echo
echo is a shell builtin
運行命令格式:command [options...] [arguments...]
命令 選項 參數
選項:用于啟用或關閉命令的某個或些功能。
參數:命令的作用對象(就是向命令提供數據的)
命令的參數可以有多個
四:文件系統
文件有兩類數據:
元數據:metadata,文件名、大小屬性等
數據:data
Linux文件系統的特性: 1、文件名嚴格區分字符大小寫 2、文件名可使用除了/以外的任意字符,但不建議使用特殊字符 3、文件名長度最長不能超過255個字符 4、所有.開頭的文件都為隱藏文件
路徑:絕對路徑和相對路徑
絕對路徑:從根目錄起始的路徑
相對路徑:從當前位置起始的路徑 enable 管理內部命令 enable command 激活一個內部命令 enable -n command 禁用一個內部命令 enable 顯示所有已激活的內部命令
配合 | wc -l 可查看已激活的內部命令的數量 enable -a 顯示所有的內部命令(無論激活與否)
配合 | wc -l 可查看所有的內部命令數量 help 內部命令 查看指定內部命令的幫助信息 hash: hash的作用就是記錄或顯示程序的位置(可執行程序的位置) hash 外部命令的路徑緩存 hash 查看被緩存的外部命令 hash -l 詳細查看,包含別名 hash -d 別名 刪除指定別名的緩存路徑 hash -p 路徑 別名 手動添加一條緩存路徑 hash -r 刪除所有的hash hash -t 別名 指定別名,顯示被hash的路徑
PATH 用來指定外部命令的搜索路徑,以:為間隔,由左至右的順序
命令執行的優先順序 alias——> 內部命令——> hash ——> PATH alias 別名 alias 別名='原命令 [-options] [arguments]' alias 查看別名 unalias 別名 刪除別名
model: alias editnet="vim /etc/sysconfig/network-scripts/ifcfg-eth0" 注:通過命令行定義的別名只對當前shell有效;如果想永久有效,需要定義在配置文件中。
僅對當前用戶有效:~/.bashrc
對所有用戶有效:/etc/bashrc
bash進程重新讀取配置文件: source /path/to/config_file
或者./path/to/config_file
臨時使別名不生效可用以下方法
使用路徑執行
\命令 '命令' "命令"
中斷命令
ctrl+C 強制中斷
ctrl+d 正常中斷
命令連接符
當前一個命令執行結束,再執行下一條命令 command1 ; command2 ; command 3 ……
\ 命令換行符,可使一條命令加選項和參數 換行執行
關機
halt
poweroff
init 0
重啟
reboot
init 6
shutdown
shutdown -r 重啟
shutodwn -h 關機
shutdown -c 取消計劃關機
shutdown +0 馬上關機
+1 一分鐘后關機
-X X分鐘后關機 20:00 今天20:00關機
date
查詢時間 date 顯示當前時間 date +%F 以 年-月-日 顯示 date +%T 以 時-分-秒 顯示 date +%Y 年 date +%m 月 date +%d 日 date +%H 時 date +%M 分 date +%S 秒 date +%a 英文的星期縮寫 date +%A 英文的星期全拼 date +%w 數字方式顯示星期
設置時間
date 082914132017.10 月日時分年[.秒] date -s "2018-1-20 13:50:11"
hwclock 或 clock
-s 將硬時間寫入軟時間。 -w 將軟時間寫入硬時間。
cal
cal [-1]顯示當月日歷
-y 顯示當前年的全年日歷
數字 顯示某年的日歷(1-9999)
-3 顯示上個月、當月、下個月的日歷
cal 月份 年份 顯示指定年指定月的日歷
cal 9 1752 365.25 365.24219 365 365.24219 1280年3月 元朝 郭守敬 授時歷 1585 365.2425
screen
光盤掛載
在vmware確定dvd設備是“已連接”狀態
mount /dev/cdrom /media/dvd cd /media/dvd/Packages
rpm -ivh screen-4.0.3-19.el6.x86_64.rpm
screen 的用法
screen -ls 列出當前所有的screen會話
screen -S 名稱 創建一個指定名稱的screen會話
screen -x 名稱 加入指定名稱的screen會話
screen 創建一個會話,名稱為當前的終端名-主機名前綴如pts-2.centos6
echo
-n 不換行
-E 不支持解釋(默認)
-e 支持解釋功能 "\a" 發出警告聲 "\b" 退格 "\c" 不換行 "\n" 換行且光標移至行首 "\r" 移至行首但不換行 "\t" 插入tab Model:
echo -e "\a"可以用于報警
[root@centos6(Eric) ~]#echo -e hell"\b"o
helo
[root@centos6(Eric) ~]#echo -e hello"\c" hello[root@centos6(Eric) ~]#
[root@centos6(Eric) ~]#echo -e 'Hello My sy"\n"stem is MAC Os.'
Hello My sy"
"stem is MAC Os.
[root@centos6(Eric) ~]#echo -e 'Hello My sy"\r"stem is MAC Os.'
"stem is MAC Os.
[root@centos6(Eric) ~]#echo -e 'Hello My sy\t\nstem is MAC Os.'
Hello My sy stem is MAC Os.
[root@centos6(Eric) ~]#echo -e my "\t\n"name "\t\n"is "\t\n"eric
my
name
is
eric
$(command) 或 `command` 引用命令執行的結果
$[] 或 $(()) 運算
${變量名} 或 “$變量名” 引用變量
{}的用法
{a,b,c} 分別引用其中的每個字符
{1..10} 或 seq 1 10 {a..z}
TAB
唯一時則補出,不唯一時,兩次TAB顯示列表
history
~/.bash_history 當用戶退出時,會將當前終端的history寫入文件,當用戶登錄時,從文件中讀取到history history 顯示當前終端的歷史記錄 history -a 將當前終端的歷史寫入.bash_history history -n 從文件中讀取未加載的歷史 history -r 從文件中讀取歷史追加到history的最后 history -c 清空history HISTSIZE 當前history保留的數量,默認1000 修改方法:
vim /etc/profile
HISTSIZE=10000 HISTFILESIZE 文件中最多存的數量
快捷鍵
ctrl+a 光標跳到行首
ctrl+e 光標跳到行尾
alt+num a 輸入指定數量的字符
whatis 顯示命令描述信息
基于數據庫的查找方式,數據文件位置/var/cache/man/whatis 可使用makewhatis建立
優點:查詢快
缺點:沒有實時性
help用法:
help 內部命令
外部命令 --help
man
1、用戶命令章節,所有用戶都可以使用 2、系統調用命令章節 3、C庫調用 4、設備及特殊文件 5、配置文件的格式及相關參數 6、游戲 7、雜項 8、管理命令
手冊段落含義:
NAME:命令的名稱和簡要說明
DESCRIPTION:命令功能的詳細描述 OPTIONS:所支持的選項的相關說明
SYNOPSIS:使用格式
EXAMPLES:使用示例
NOTES:相關注意事項 FILES:相關的配置文件
SEE ALSO:相關參考
通過man命令獲得命令幫助信息頁中有一些用符號標記的內容,符號意義:
[]:可選內容 <>:必選內容
|:二選一
...:同類內容可以有多個
快捷鍵
d向下翻半屏 u向上翻半屏
f向下翻整屏
b向上翻整屏 G跳到尾頁 g跳到首頁
j向下跳一行
k向上跳一行
/關鍵字 n向下找N向上找
?關鍵字 n向上找N向下找
q退出man
-k 關鍵字 查詢某個關鍵字有哪些章節
man -k passwd man 5 passwd man passwd
[root@centos6(Eric) ~]#getent passwd Eric
Eric:x:500:500::/home/Eric:/bin/bash
一個備份命令:cp /etc/fstab{,.orig}
文件類型
- :普通文件 d :目錄文件 l :軟鏈接文件 b :塊設備文件 c :字符設備文件 s :socket文件 p :管道文件
pwd
顯示當前的工作目錄
-P 當前目錄為軟鏈接時,則顯示源目錄的路徑
-L 當前目錄為軟鏈接時,則顯示鏈接目錄的路徑(默認)
model:
[root@centos6(Eric) ~]#pwd /root
相對路徑與絕對路徑
.當前目錄
..上一級目錄
cp /etc/passwd .
./test.sh
basename 取基名
[root@centos6(Eric) ~]#basename /etc/sysconfig/network
network
dirname 取目錄名
[root@centos6(Eric) ~]#dirname /etc/sysconfig/network
/etc/sysconfig
cd 進入目錄
-P 如果目標目錄是個軟鏈接目錄,則直接進入其源始目錄
.. 進入上一級目錄
cd 進入家目錄
cd ~或直接 cd 進入家目錄
cd - 進入上一次的工作目錄
model:
[root@centos6(Eric) etc]#pwd /etc
[root@centos6(Eric) etc]#cd [root@centos6(Eric) ~]#pwd /root
[root@centos6(Eric) ~]#cd -
/etc
[root@centos6(Eric) etc]#pwd /etc
ls 列出目錄的內容
ls 列出目錄的內容
-a 列出所有文件(包含隱藏文件) -A 列出所有文件(包含隱藏文件但不包含.和..) -l 長列出(即顯示屬性信息)
-R 遞歸 -ld 查看指定目錄的屬性 -1 豎顯示 -S 按文件大小降序排列 -t 按mtime的時間從新到舊排列 -ut 按atime的時間從新到舊排列
-U 按目錄存放順序 -X 按文件后綴的順序排列 -Z 顯示selinux的context -i 顯示文件的inodes [root@centos6(Eric) ~]#ll
-rw-------. 1 root root 1020 Aug 29 01:00 anaconda-ks.cfg -rw-r--r--. 1 root root 9617 Aug 29 01:00 install.log -rw-r--r--. 1 root root 3161 Aug 29 01:00 install.log.syslog 最左側第一位為文件類型
后面9位:
訪問權限perm
數字:文件被硬鏈接的次數
左root:文件的owner
右root:文件的group
1020/9617/3161:文件的size
Aug 29 01:00:文件最近一次被修改的時間
后面就是文件名
文件查看:
cat、tac
-A:--show-all equivalent to -vET 顯示所有非正常的所有符號 -E:--show-ends 顯示行結束符 -T:--show-tabs 顯示制表符 -v:--show-nonprinting 顯示其他的非打印字符 -n:對顯示的行進行編號,與文件內容沒有關系 -b:打印出行號(空白行不標行號)
文件內容類型查看命令:
file
[root@centos6(Eric) ~]#file install.log install.log: ASCII text [root@centos6(Eric) ~]#file /usr/bin/less /usr/bin/less: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
whoami 顯示當前的登錄用戶名
who am i 顯示當前的登錄用戶名 終端名 登錄時間
who 顯示當前所有的登錄用戶名 終端名 登錄時間
w 顯示當前所有的登錄用戶名 終端名 登錄時間 登錄的來源 當前在做什么
[root@centos6(Eric) ~]#whoami root
[root@centos6(Eric) ~]#who am i root pts/0 2017-08-30 07:15 (172.16.99.1)
[root@centos6(Eric) ~]#who root pts/0 2017-08-30 07:15 (172.16.99.1)
[root@centos6(Eric) ~]#w 08:51:15 up 9:02, 1 user, load average: 0.01, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 172.16.99.1 07:15 0.00s 0.07s 0.00s w
原創文章,作者:泰谷子,如若轉載,請注明出處:http://www.www58058.com/85907