linux之bash shell

GNU bash前端

========================================================
一般計算機硬件是由運算器、控制器、存儲器、輸入/輸出設備等等這些物理設備共同組成的,而可以讓機箱內各類硬件設備各司其職的東西就叫作系統內核。Linux系統的內核負責驅動硬件、管理活動和分配/管理硬件資源等等任務,如此說來系統內核對計算機正常穩定的運行來說可真的是過重要了,所以通常不建議直接去編輯內核中的參數,而是讓用戶經過基於「系統調用接口」開發出的程序/服務來管理計算機,這樣一層層環環相扣來知足我們的平常工做須要。

Shell是系統的用戶界面,提供了用戶與內核進行交互操做的一種接口。它接收用戶輸入的命令並把它送入內核去執行。
實際上Shell是一個命令解釋器,它解釋由用戶輸入的命令而且把它們送到內核。不只如此,Shell有本身的編程語言用於對命令的編輯,它容許用戶編寫由shell命令組成的程序。Shell編程語言具備普通編程語言的不少特色,好比它也有循環結構和分支控制結構等,用這種編程語言編寫的Shell程序與其餘應用程序具備一樣的效果。

咱們可使用SHELL實現對Linux系統的大部分管理例如:
1. 文件管理
2. 用戶管理
3. 權限管理
4. 磁盤管理
5. 軟件管理
6. 網絡管理
......

內容提要:
Linux控制檯使用
系統與硬件
bash shell提示符
shell 語法
bash 特性
Linux得到幫助


node

1 Linux控制檯使用


虛擬終端和控制檯
虛擬終端
屏幕和鍵盤只是一個終端,可能不夠用,又不想增長設備投入,就產生了虛擬終端。像gnome-terminal,urxvt,mlterm,xterm等等:
是一個程序,職責是模擬終端設備,和虛擬終端的區別表面上在於它以 GUI 形式的窗口出現,內部則是程序結構和系統控制結構有所不一樣,但本質上差很少。

控制檯tty
顯示系統消息的終端就叫控制檯,Linux 默認全部虛擬終端都是控制檯,都能顯示系統消息。
但有時專指CLI下的模擬終端設備的一個程序,和gnome-terminal,urxvt,mlterm,xterm等相同,只是CLI和GUI界面的區別。通常console有6個,tty1-6,CTRL+ALT+fn切換。

控制檯切換
Linux 預設的狀況下會提供六個Terminal 來讓使用者登入, 切換的方式爲使用:[Ctrl] + [Alt] + [F1]~[F6]的組合按鈕。
圖形界面切換到字符界面終端: Ctrl+Alt+F2-6
切換到圖像界面 Alt+F1或按ctrl+alt+F1
字符界面之間切換: [Alt] + [Fn]

虛擬終端(pty、pts)
若是咱們遠程telnet到主機時,須要一個終端交互。這就是虛擬終端pty(pseudo-tty)。而 pts/ptmx(pts/ptmx結合使用,進而實現pty)

僞終端(/dev/pty/)這個是終端的發展,爲知足如今需求(好比網絡登錄、xwindow窗口的管理)。
僞終端(Pseudo Terminal)是成對的邏輯終端設備,例如/dev/ptyp3和/dev/ttyp3(或着在設備文件系統中分別是/dev/pty/m3和/dev/pty/s3)。


已經打開的終端上開啓新窗口、並列、切換、縮小、放大
放大:ctrl+shift+"+"
縮小 ctrl -
新建一個獨立窗口 ctrl+shift+n
新建一個並列窗口 ctrl+shift+t

mysql

2 系統與硬件

 

 

2.1 Linux硬件資源管理


1. 查看系統pci設備
lspci 列出全部的pci設備,好比主板、聲卡、顯卡、網卡等。
經過lspci -v 能夠查看更詳細信息。

2. 查看cpu信息
more /proc/cpuinfo

3. 查看內存信息
more /proc/meminfo
free -m
free -h

4. 查看磁盤分區信息
fdisk -l
linux

 

2.2 常見文件系統類型

 

點擊這裏 點擊這裏
文件系統格式 備註
msdos dos文件系統類型
vfat 支持長文件名的DOS分區文件系統類型
iso9660 光盤格式文件系統類型
ext2/ext3/ext4 Linux文件系統類型
xfs Linux下高性能的日誌文件系統,RHEL7 默認文件系統類型



3 bash shell提示符


===================
[root@localhost ~]# echo $PS1
[\u@\h \W]\$
[root@localhost ~]# -->root用戶提示符
[test@localhostr ~]$ -->普通用戶提示符

PS1經常使用的參數含義以下:
\d :#表明日期,格式爲weekday month date,例如:"Mon Aug 1"
\H :#完整的主機名稱
\h :#僅取主機的第一個名字
\t :#顯示時間爲24小時格式,如:HH:MM:SS
\T :#顯示時間爲12小時格式
\A :#顯示時間爲24小時格式:HH:MM
\u :#當前用戶的帳號名稱
\v :#BASH的版本信息
\w :#完整的工做目錄名稱
\W :#利用basename取得工做目錄名稱,因此只會列出最後一個目錄
\# :#下達的第幾個命令
\$ :#提示字符,若是是root時,提示符爲:# ,普通用戶則爲:$

[root@localhost ~]# date
2012年 10月 24日 星期三 09:38:54 CST

[root@localhost ~]# whoami
root

[root@localhost ~]# useradd jack
[root@localhost ~]# passwd jack
Changing password for user jack.
New UNIX password:
BAD PASSWORD: it is WAY too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.


sql

4 shell 語法


=====================
命令 選項 參數
[root@localhost ~]# ls
[root@localhost ~]# ls -a
[root@localhost ~]# ls -a /home

命令:整條shell命令的主體
選項:會影響會微調命令的行爲 //一般以 -, --
- 短格式,好比-a -l 和 -al等價
--長格式
參數:命令做用的對象,通常狀況下參數是文件或目錄。

docker

5 bash基本特性


系統的shell:cat /etc/shells
當前系統默認的shell:echo $SHELL


1. 自動補全<tab> //Tab只能補全命令和文件 RHEL6
# ls /etc/sysconfig/network-scripts/
# ls /etc/sysconfig/network-scripts/ifcfg-eth0
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# service network restart
# service sshd restart
# date -s 12:30

2. 快捷鍵
^C 終止前臺運行的程序 //ping 172.16.8.100
^D 退出 等價exit
^L 清屏
^A 光標移到命令行的最前端 //編輯命令
^E 光標移到命令行的後端 //編輯命令
^U 刪除光標前全部字符 //編輯命令
^K 刪除光標後全部字符 //編輯命令
^R 搜索歷史命令,利用關鍵詞
Alt+. 引用上一個命令的最後一個參數,等價於!$,服務器端使用
ESC, .引用上一個命令的最後一個參數,等價於!$
# ls /etc/sysconfig/network-scripts/ifcfg-eth0
# cat ESC .

3. 歷史命令
# history
a. 光標上下鍵
b. ^R //搜索歷史命令(輸入一段某條命令的關鍵字:必須是連續的)
c. !220 //執行歷史命令中第220條命令
!字符串 //搜索歷史命令中最近一個以xxxx字符開頭的命令,例如!ser
!$ //引用上一個命令的最後一個參數
示例1:
[root@instructor ~]# ls /root /home
[root@instructor ~]# cd !$
cd /home

示例2:
[root@instructor ~]# ls /root /home
[root@instructor ~]# touch !$/file1
touch /home/file1

示例3:
[root@instructor ~]# service nfs restart
[root@instructor ~]# ls
[root@instructor ~]# date
[root@instructor ~]# !se

4. 命令別名
# alias //查看系統當前的別名
ll='ls -l --color=tty'
# alias localhost='cat /etc/sysconfig/network-scripts/ifcfg-eth0' //創建別名(臨時的,僅在當前Shell生效)
# unalias localhost //取消localhost這個別名

[root@localhost ~]# type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls

[root@localhost ~]# /bin/ls
[root@localhost ~]# ls //別名優先
[root@localhost ~]# \ls //跳過別名

[root@localhost ~]# cp -rf /etc /tmp
[root@localhost ~]# cp -rf /etc /tmp
[root@localhost ~]# \cp -rf /etc /tmp

永久別名:
[root@localhost ~]# gedit /etc/bashrc //添加以下行
alias localhost='cat /etc/sysconfig/network-scripts/ifcfg-eth0'


shell

6 Linux得到幫助


如何判斷一個命令是內部命令仍是外部命令呢?
type

#help能夠列出系統全部內部命令
內部命令通常可使用 help 命令,查看幫助
1. 命令 --help
# ls --help
用法:ls [選項]... [文件]...

ls 常見選項
-a all,查看目錄下的全部文件,包括隱藏文件
-l 長列表顯示
-h human 以人性化方式顯示出來
-d 只列出目錄名,不列出其餘內容
-t 按修改時間排序
-S 按文件的Size排序
-r 逆序排列reverse
-i 顯示文件的inode號(索引號)

# date --help
Usage: date [OPTION]... [+FORMAT]
or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

# date
# date +%H
# date +%F
# date 0214080014
# date 0214080014.00

2. man 手冊名 (針對命令幫助,針對配置文件幫助,針對函數幫助)

[root@localhost ~]# man man
MANUAL SECTIONS
The standard sections of the manual include:

1 User Commands

2 System Calls

3 C Library Functions

4 Devices and Special Files

5 File Formats and Conventions

6 Games et. Al.

7 Miscellanea

8 System Administration tools and Deamons


命令幫助: 章節1,章節8
函數幫助: 章節2,章節3
文件格式: 章節5

通常狀況是不須要使用章節號,例如:
# man ls
# man useradd
# man setfacl (/EXAMPLES)

技巧1:按章節查詢
/usr/bin/passwd 修改用戶口令命令
/etc/passwd 包含用戶信息的配置文件

# man -f passwd 列出全部章節中的passwd手冊
# man 1 passwd passwd命令的幫助
# man 5 passwd 用戶配置文件的幫助

技巧2:在全部章節中查詢
# man -a passwd

3. 官方手冊
http://docs.redhat.com Enterprise Linux (5/6/7)
http://www.mysql.com docs

4. baidu, google


man搜索:
/ -a,從上往下,n向下繼續搜索,N向上繼續搜索
?-a,從下往上

[]可選項
<>必選
...能夠出現屢次
|多選一
{}分組,無特殊意義
MAN:
NAME:命令名稱及功能簡要說明
SYNOPSIS:用法說明,包括可用的選項
DESCRIPTION:命令功能的詳盡說明,可能包括每個選項的意義
OPTIONS:說明每個選項意義
FILES:此命令相關的配置文件
BUGS:
EXAMPLES:使用示例
SEE ALSO:另外參照
==========================================================編程

本節做業:

 

1. 完成課堂中學習的全部內容

 

2. 學習bash shell 命令的搜索順序 hash aliase builtin $PATH keyword function

 

3. mysql openstack docker zabbix

相關文章
相關標籤/搜索