初識shell

初識shell

1shell是什麼

我們經常使用的操作系統(WindowsMac OSAndroidiOS 等)都是帶圖形界面的,簡單直觀。

然而在計算機的早期並沒有圖形界面,我們只能通過一個一個地命令來控制計算機,這些命令有成百上千之多,且不說記住這些命令非常困難,每天面對沒有任何色彩的“黑屏”本身就是一件枯燥的事情;這個時候的計算機還遠遠談不上炫酷和普及,只有專業人員才能使用。

對於圖形界面,用戶點擊某個圖標就能啓動某個程序;對於命令行,用戶輸入某個程序的名字(可以看做一個命令)就能啓動某個程序。這兩者的基本過程都是類似的,都需要查找程序在硬盤上的安裝位置,然後將它們加載到內存運行。也就是說,圖形界面和命令行要達到的目的是一樣的,都是讓用戶控制計算機。

然而,真正能夠控制計算機硬件(CPU、內存、顯示器等)的只有操作系統內核(Kernel),圖形界面和命令行只是架設在用戶和內核之間的一座橋樑。

由於安全、複雜、繁瑣等原因,用戶不能直接接觸內核(也沒有必要),需要另外再開發一個程序,讓用戶直接使用這個程序;該程序的作用就是接收用戶的操作(點擊圖標、輸入命令),並進行簡單的處理,然後再傳遞給內核。如此一來,用戶和內核之間就多了一層“代理”,這層“代理”既簡化了用戶的操作,也保護了內核。

用戶界面和命令行就是這個另外開發的程序,就是這層“代理”。在Linux下,這個命令行程序叫做 Shell

2shell的作用

Shell 除了能解釋用戶輸入的命令,將它傳遞給內核,還可以調用其他程序,給其他程序傳遞數據或參數,並獲取程序的處理結果;也可以在多個程序之間傳遞數據,把一個程序的輸出作爲另一個程序的輸入;Shell 本身也可以被其他程序調用。由此可見,Shell 是將內核、程序和用戶連接了起來。

Shell 本身支持的命令並不多,但是它可以調用其他的程序,每個程序就是一個命令,這使得 Shell 命令的數量可以無限擴展,其結果就是 Shell 的功能非常強大,完全能夠勝任Linux 的日常管理工作,如文本或字符串檢索、文件的查找或創建、大規模軟件的自動部署、更改系統設置、監控服務器性能、發送報警郵件、抓取網頁內容、壓縮文件等。

3shell的簡單介紹

Shell 並不是簡單的堆砌命令,我們還可以在 Shell 中編程,這和使用 C/C++JavaPython 等常見的編程語言並沒有什麼兩樣。

Shell 雖然沒有 C/C++JavaPython 等強大,但也支持了基本的編程元素,例如:if...else 選擇結構,switch...case 開關語句,forwhileuntil 循環;可使用變量、數組、字符串、註釋、加減乘除、邏輯運算等概念;也可以使用函數,包括用戶自定義的函數和內置函數(例如 printfexporteval 等)。

Shell 也是一種編程語言,它的編譯器(解釋器)是 Shell 這個程序。我們平時所說的 Shell,有時候是指連接用戶和內核的這個程序,有時候又是指 Shell 編程。

Shell 主要用來開發一些實用的、自動化的小工具,而不是用來開發具有複雜業務邏輯的中大型軟件,例如檢測計算機的硬件參數、一鍵搭建Web開發環境、日誌分析等,Shell 都非常合適。使用 Shell 的熟練程度反映了用戶對 Linux 的掌握程度,運維工程師、網絡管理員、程序員都應該學習 Shell。它使得我們能夠自動化地管理服務器集羣,否則你就得一個一個地登錄所有的服務器,對每一臺服務器都進行相同的設置,而這些服務器可能有成百上千之多,會浪費大量的時間在重複性的工作上。

Shell 是一種腳本語言,我們編寫完源碼後不用編譯,直接運行源碼即可。

3、常用的shell有哪些

Shell 既是一種腳本編程語言,也是一個連接內核和用戶的軟件。常見的 Shell shbashcshtcshash 等。

Shell 是一個程序,一般都是放在/bin或者/user/bin目錄下,當前 Linux 系統可用的 Shell 都記錄在/etc/shells文件中。/etc/shells是一個純文本文件,你可以在圖形界面下打開它,也可以使用 cat 命令查看它。

在現代的 Linux 上,sh 已經被 bash 代替,/bin/sh往往是指向/bin/bash的符號鏈接。

3.1sh

sh 的全稱是 Bourne shell,由 AT&T 公司的 Steve Bourne開發,爲了紀念他,就用他的名字命名了。

sh UNIX 上的標準 shell,很多 UNIX 版本都配有shsh也是第一個流行的 Shell

3.2csh

sh之後另一個廣爲流傳的 shell 是由柏克萊大學的 Bill Joy 設計的,這個 shell 的語法有點類似C語言,所以才得名爲C shell ,簡稱爲csh

Bill Joy 是一個風雲人物,他創立了 BSD 操作系統,開發了vi編輯器,還是 Sun 公司的創始人之一。BSD UNIX 的一個重要分支,後人在此基礎上發展出了很多現代的操作系統,最著名的有 FreeBSDOpenBSD NetBSD,就連 Mac OS X 在很大程度上也基於BSD

3.3tcsh

tcsh csh 的增強版,加入了命令補全功能,提供了更加強大的語法支持。

3.4ash

一個簡單的輕量級的 Shell,佔用資源少,適合運行於低內存環境,但是與下面講到的 bash shell 完全兼容。

3.5bash

bash shell Linux 的默認 shell,後面的文章也基於bash編寫。bash GNU 組織開發,保持了對sh shell 的兼容性,是各種 Linux 發行版默認配置的 shell

bash 兼容 sh 意味着,針對 sh 編寫的 Shell 代碼可以不加修改地在bash 中運行。儘管如此,bash sh 還是有一些不同之處:一方面,bash 擴展了一些命令和參數;另一方面,bash 並不完全和 sh 兼容,它們有些行爲並不一致,但在大多數企業運維的情況下區別不大,特殊場景可以使用 bash 代替 sh


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章