bash高級編程
⑴ linux shell有哪些 類型
2.4腳本語言的種類
2.4.1 Shell腳本語言的種類
Shell腳本語言是弱類型語言(無需定義變數的類型就可使用),在Unix/Linux中主要有兩大類Shell,一類是Bourne shell,另一類是C shell。
1. Bourne shell
Bourne shell又包括Bourne shell (sh)、Korn shell (ksh)、Bourne Again Shell(bash)三種類型。
Bourne shell (sh)由AT&T的Steve Bourne開發,是標準的UNIX Shell,很多UNIX系統都配有sh。
Korn shell (ksh)由David Korn開發,是Bourne shell(sh)的超集合,並且添加了csh引入的新功能,是目前很多UNIX系統標准配置的Shell,在這些系統上的/bin/sh往往是指向/bin/ksh的符號鏈接。
Bourne Again Shell即bash由GNU項目組開發,主要目標是與POSIX標準保持一致,同時兼顧對sh的兼容,bash從csh和ksh借鑒了很多功能,是各種Linux發行版默認配置的Shell,在Linux系統上的/bin/sh往往是指向/bin/bash的符號鏈接。雖然如此,bash和sh還是有很多的不同,一方面,bash擴展了一些命令和參數,另一方面,bash並不完全和sh兼容,它們有些行為並不一致,但大多數企業運維的情況下區別不大,特殊場景可以使用bash替代sh。
2. C shell
C shell又包括csh、tcsh兩種類型。
csh由Berkeley大學開發,隨BSD UNIX發布,它的流程式控制制語句很像C語言,支持很多Bourne Shell所不支持的功能,例如:作業控制、別名、系統算術、命令歷史、命令行編輯等。
tcsh是csh的增強版,加入了命令補全等功能,在FreeBSD、Mac OS X等系統上替代了csh。
以上介紹的這些Shell中,較為通用的是標準的Bourne shell (sh)和C shell (csh)。其中Bourne shell (sh)已經被Bourne Again shell (bash) 取代。
可通過以下命令查看CentOS7系統的Shell支持情況。
[root@oldboy ~]# cat /etc/shells
/bin/sh #<==這是Linux里常用的Shell,指向/bin/bash。
/bin/bash #<==這是Linux里常用的Shell,也是默認使用的Shell。
/usr/bin/sh
/usr/bin/bash
Linux系統中的主流Shell是bash,bash是由Bourne Shell(sh)發展而來的,但bash還包含了csh和ksh的特色,但大多數腳本都可以不加修改地在sh上運行,如果你使用sh後發現結果和預期有差異,那麼可以嘗試使用bash替代sh。
內容來源:《跟老男孩學linux運維:Shell高級編程實戰》第02章_Shell腳本初步入門
⑵ 高級 Bash 腳本編程指南--中文版(hutuworm)
Mendel Cooper 著
http://doc.linuxpk.com/doc/abs/
優點:Bash 編程的聖經,而且該書作者不斷在更新其內容,一兩個月就會翻新一個版本,
值得一讀,一讀再讀。
關於Linux的學習,還是建議參考書籍《Linux就該這么學》
⑶ bash是什麼編程語言呀
Linux中有多種shell,其中預設使用的是Bash。本章講述了shell的工作原理,shell的種類,shell的一般操作及Bash的特性。 Linux系統的shell作為操作系統的外殼,為用戶提供使用操作系統的介面。它是命令語言、命令解釋程序及程序設計語言的統稱。 shell是用戶和Linux內核之間的介面程序,如果把Linux內核想像成一個球體的中心,shell就是圍繞內核的外層。當從shell或其他程序向Linux傳遞命令時,內核會做出相應的反應。 shell是一個命令語言解釋器,它擁有自己內建的shell命令集,shell也能被系統中其他應用程序所調用。用戶在提示符下輸入的命令都由shell先解釋然後傳給Linux核心。 Shell是一種具備特殊功能的程序, 它是介於使用者和 UNIX/linux 操作系統之核心 間的中介者呢?讀過操作系統概論的讀者們都知道操作系統是一個系統資源的管理者與分 配者,當您有需求時,您得向系統提出;從操作系統的角度來看,它也必須防止使用者因 為錯誤的操作而造成系統的傷害?眾所周知,對計算機下命令得透過命令(command) 或 其實shell 也是一支程序,它由輸入設備讀取命令,再將其轉為計算機可以了解的機械碼, 然後執行它。 各種操作系統都有它自己的 shell,以 DOS 為例,它的 shell 就是 command.com文 件。如同 DOS 下有 NDOS,4DOS,DRDOS 等不同的命令解譯程序可以取代標準的 command.com ,UNIX 下除了 Bourne shell(/bin/sh) 外還有 C shell(/bin/csh)、 Korn shell(/bin/ksh)、Bourne again shell(/bin/bash)、Tenex C shell(tcsh) 等其它的 shell。UNIX/linux將 shell 獨立於核心程序之外, 使得它就如同一般的應用 程序, 可以在不影響操作系統本身的情況下進行修改、更新版本或是添加新的功能。 有一些命令,比如改變工作目錄命令cd,是包含在shell內部的。還有一些命令,例如拷貝命令cp和移動命令rm,是存在於文件系統中某個目錄下的單獨的程序。對用戶而言,不必關心一個命令是建立在shell內部還是一個單獨的程序。 shell首先檢查命令是否是內部命令,若不是再檢查是否是一個應用程序(這里的應用程序可以是Linux本身的實用程序,如ls和rm,也可以是購買的商業程序,如xv,或者是自由軟體,如emacs)。然後shell在搜索路徑里尋找這些應用程序(搜索路徑就是一個能找到可執行程序的目錄列表)。如果鍵入的命令不是一個內部命令並且在路徑里沒有找到這個可執行文件,將會顯示一條錯誤信息。如果能夠成功找到命令,該內部命令或應用程序將被分解為系統調用並傳給Linux內核。 shell的另一個重要特性是它自身就是一個解釋型的程序設計語言,shell程序設計語言支持絕大多數在高級語言中能見到的程序元素,如函數、變數、數組和程序控制結構。shell編程語言簡單易學,任何在提示符中能鍵入的命令都能放到一個可執行的shell程序中。 當普通用戶成功登錄,系統將執行一個稱為shell的程序。正是shell進程提供了命令行提示符。作為默認值(TurboLinux系統默認的shell是BASH),對普通用戶用「$」作提示符,對超級用戶(root)用「#」作提示符。 一旦出現了shell提示符,就可以鍵入命令名稱及命令所需要的參數。shell將執行這些命令。如果一條命令花費了很長的時間來運行,或者在屏幕上產生了大量的輸出,可以從鍵盤上按ctrl+c發出中斷信號來中斷它(在正常結束之前,中止它的執行)。
⑷ Linux新手求救!
1、環境變數,首先是一個變數,就是說這個值是可以變的。而對於環境來講,可以理解為以不同的用戶名進入系統,每一個用戶登錄後所在的當前的界面或格式稱為環境,所以說,用戶不同,訪問許可權就可能不同,從而所處的環境就不同。
2、環境變數又分為系統變數和用戶變數,由名稱可知,系統變數針對的是系統全局的表示,用戶變數時對不同用戶的使用命令許可權的表示。
3、bash和環境變數沒有任何關系,bash是在linux系統中的一種編程語言,也可以成為「命令解釋器」。是和VB、C++等同類的高級編程語言。在linux中還有例如ksh、bsh、csh等編程語言。
⑸ 高級bash腳本編程指南怎麼樣
我一直看這本:高級Bash腳本編程指南.3.9.1+(楊春敏+黃毅+譯) 高級Bash腳本編程指南.3....大小:2.68M 已經過網路安全檢測,放心下載 點擊下載下載量:7
⑹ 請教:如何用bash實現一個程序
關於 Linux 系統下面的 SHELL 高級編程技術,這個必須要仔細地閱讀 SHELL 編程的詳細相關文檔。因為 UNIX/Linux 下面的 SHELL 功能是非常強大的。例如:和各種命令參數表示有關的就有:$!、$#、$$、!!,等等。
根據我以前的 SHELL 編程經驗,不同版本的 SHELL,例如:bash、C-Shell 等等,對於即使完成相同的功能的 SHELL 程序,其語法格式也並不是完全通用的。哪怕是一個標點符號在語句中的位置寫得不到位,即使你的編程思路再正確,SHELL 程序也無法得出正確的執行結果。調試 SHELL 程序的難度還是相當大的。而且通常來說,SHELL 編程還需要和 awk、sed、管道操作(|)等編程技術的使用,才能夠充分發揮 SHELL 的強大編程功能。
⑺ 軟體編程中高級語言有哪些
編程語言,被我們熟知的,分為2大類
低級語言,又分為匯編語言和機器語言(二進制碼語言,只用0和1)
高級語言,一般用的字母符號數字編寫
那麼高級編程語言又分哪些呢?
請看:
C
#include<stdio.h>
intmain(void){
//yourcodegoeshere
return0;
}C++
#include<iostream>
usingnamespacestd;
intmain(){
//yourcodegoeshere
return0;
}C#
usingSystem;
publicclassTest
{
publicstaticvoidMain()
{
//yourcodegoeshere
}
}Bash
#!/bin/bash
#yourcodegoeshere/*packagewhatever;//don'tplacepackagename!*/
importjava.util.*;
importjava.lang.*;
importjava.io.*;
/*Nameoftheclasshastobe"Main"onlyiftheclassispublic.*/
classIdeone
{
publicstaticvoidmain(String[]args)throwsjava.lang.Exception
{
//yourcodegoeshere
}
}Javascript
importPackage(java.io);
importPackage(java.lang);
//yourcodegoesherePerl
#!/usr/bin/perl
#yourcodegoeshere<?php
//yourcodegoeshere#yourcodegoeshereVB
ImportsSystem
PublicClassTest
PublicSharedSubMain()
'yourcodegoeshere
EndSub
EndClassGroovy
classIdeone{
staticvoidmain(String[]args){
}
}Ruby
#yourcodegoeshereScala
objectMainextendsApp{
//yourcodegoeshere
}
個人建議:最好從C或C++開始學。可以拓展Java或者Python學習,也推薦PHP。VB學了對Microsoft宏很有幫助,其餘語言不是很推薦啊。
備註:有一種編程工具用拼圖的方式拼出程序,叫做Scratch,初學者建議試一下我也是學了這個轉C++的。但Scratch不是編程語言,切記。
⑻ shell編程--字元串提取某一位字元
${} 調用變數不能直接寫為 ${ $i}
這是變數的間接引用 我記得寫為 ${ !i}
給個例子
#/bin/bash
a=check
check=11
echo ${!a}
結果是11
因為${!a} 就是${check}
你可以查閱 bash高級編程 提到這種寫法
⑼ shell高級編程怎麼學
advanced bash scripting guide 有中文版,自己搜索一下吧,網上到處都是。