Shell解釋器

shell解釋器,用戶和操作系統內核之間的橋梁

一、Shell常見種類

就像不同地區有不同方言一樣,不同的Linux/Unix系統使用著不同類型的shell

  • Bsh:由貝爾實驗室編寫。Bsh是產生較早的UNIX Shell程序,實現了最基本的命令解釋器的功能,同時也可以作為腳本編程語言
  • Csh:是因使用C語言的語法風格而得名,在用戶的命令行交互界面上進行了很多改進,并增加了歷史,別名,文件名替換,作業掏等功能,相比Bsh,Csh在更加適用為  用戶提供命令交互操作
  • Ksh:在Bsh和Csh之后出現的,結合了兩都的功能優勢,兼具Bsh的語法和Csh的交互特性.
  • Bash:從名稱可以看出是Bsh的升級版本,是著名的開源軟件項目,目前大多數的Linux版本(包括Red Hat公司的Linux系統)都使用Bash 作為默認的Shell程序當運行,Shell程序時,實際運行的是Bash程序
  • Zsh:更多地基于交互式操作考慮進行設計的Shell程序,集成了Bash,Ksh等多種Shell程序的優點

二、Bash

2.1、Linux默認使用的Shell程序

命令文件位置:/bin/bash文件中

[root@Carlota /]# ls /bin/bash 
/bin/bash
[root@Carlota /]# 
[root@Carlota /]# ll /bin/bash 
-rwxr-xr-x. 1 root root 964600 8月   8 2019 /bin/bash
[root@Carlota /]# 

3.2、主要功能

  • 命令歷史: 是BaSh中用于提高命令輸入效率的一項功能,能夠讓用戶快速地重復執行已經輸入過的命令,減少重復輸入工作,向上的方向鍵等,history可以查看已經輸入過哪些命令

  • **命令別名:**可以將頻繁使用的復雜命令定義為簡短的別名,當用記需要執行該復雜命令時,只需要使用別名即可完成對應的操作,降低和操作復雜性,提高了輸入效率

  • **標準輸入輸出和重定向:**Linux使用文件來描述系統的硬件,設備等資源。

  • **管道操作:**在Bash環境中,為不同命令之間的協同工作提供了一種機制,為于管道符號左側的命令輸出結果,將作為右側命令的輸入,同一行命令中可以有多個管道

三、相關Shell命令

  • 查看當前Shell解釋器
$ echo $SHELL
/bin/bash
  • 查看系統支持Shell解釋器
$ cat /etc/shells 
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
  • 切換系統當前默認的Shell解釋器
$ chsh

四、關于首行#!的理解

腳本文件首行#!(sha-bang)一方面標志著腳本文件的magic number為腳本文件類型,另一方面告知系統此腳本文件需要使用何種命令解釋器來執行

#!/bin/sh            --使用sh來解釋執行
#!/bin/bash          --使用bash來解釋執行
#!/bin/python        --使用python來解釋執行
#!/bin/perl          --使用perl來解釋執行
#!/bin/env bash      --使用env來適配某些操作系統中bash并不安裝在/bin目錄下的情況

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535582.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535582.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535582.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql安裝、導入數據腳本

mysql安裝: #!/bin/bash if [ $(id -u) ! "0" ]; thenecho "Error: You must be root to run this script, please use root to install mysql"exit 1 fi unzip Mysql.zip cd /home/install_LFS/Mysql cur_dir$(pwd) mkdir -p /usr/local/mysq…

linux tips 技巧筆記二

如何查找大小為500K到1000K之間的文件find / -type f -size 500k -and -size -1000k 僅列出當前目錄下的文件名.find ./ -type f -maxdepth 1 -exec basename {} /; 讓主機不響應pingecho 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all若想恢復就用echo 0 > /proc/sys/…

Shell腳本——入門

shell腳本編程需要注意以下幾個事項: shell腳本名稱命名一般為英文的大寫、小寫;不能使用特殊符號、空格來命名;shell腳本后綴以.sh結尾;不建議shell命名為純數字,一般以腳本功能命名;shell腳本內容首行需以…

Linux下C開發環境的構成和安裝

本文介紹了Linux的C開發環境的構成和安裝,使讀者對Linux的C開發環境能有初步的了解。 你了解Linux嗎?相信現在越來越多的人會說“是”的。那么你了解到何種程度呢?不可否認,目前決大多 數的Linux用戶對Linux的了解還處于比較低級的…

Shell腳本——變量

變量是任何一種編程語言都必不可少的組成部分,變量用來存放各種數據。腳本語言在定義變量時通常不需要指明類型,直接賦值就可以,Shell 變量也遵循這個規則 在 Bash shell 中,每一個變量的值都是字符串,無論你給變量賦值…

基礎環境安裝腳本

#/bin/bash # Check if user is root if [ $(id -u) ! "0" ]; thenecho "Error: You must be root to run this script, please use root"exit 1 fiecho "安裝環境包"if [ -f /etc/yum.repos.d/rhel-source.repo ];thenrm -r /etc/yum.repos.d…

Apache 虛擬主機的配置[Ubuntu]

基本配置 我們都知道,如果我們想在單臺機器上設置多個域名或主機名時,我們就要用到基于名稱的虛擬主機了。那么要如何進行設置呢?這就是本 HowTo 想解決的問題了。在 Ubuntu 的 /etc/apache2/ 目錄下有個 Apache2 的主配置文件 apache2.conf…

Shell腳本——數字計算

Shell 和其它編程語言不同,Shell 不能直接進行算數運算,必須使用數學計算命令 要想讓數學計算發揮作用,必須使用數學計算命令,Shell 中常用的數學計算命令如下表所示。 運算操作符/運算命令說明(( ))用于整數運算,效率…

windows下最好的C++ IDE

1. 你是不是用慣了VC6.0?假如是,我現在推薦的IDE仍然是VC6.0的IDE。 2. 你是不是覺得VC6.0過時了,很多C語法它都不支持?我現在推薦的編譯器她在一直發展著,支持最新的C語法。 3. VC.net的界面弱智,而且包含…

Shell腳本——內置命令

一、內置命令 所謂 Shell 內置命令,就是由 Bash 自身提供的命令,而不是文件系統中的某個可執行文件。 例如,用于進入或者切換目錄的 cd 命令,雖然我們一直在使用它,但如果不加以注意很難意識到它與普通命令的性質是不…

Shell腳本——基礎語法

一、條件判斷 1.1、基本語法 [ condition ](注意condition前后要有空格) 注意:條件非空即為true,[ abcdef ]返回true,[] 返回false。 1.2、常用判斷條件 兩個整數之間比較 字符串比較 -lt 小于(less …

#2002 - 服務器沒有響應 (or the local MySQL server's socket is not ...

經常見有兄弟遇到這樣的問題: mysql -u root -p一切正常,但是用phpmyadmin卻死活不對,提示如下錯誤: #2002 - 服務器沒有響應 (or the local MySQL servers socket is not correctly configured) 我 google 了一下,發現…

第一個Scala程序——Hello World!

一、交互式編程 交互式編程不需要創建腳本文件,可以通過以下命令調用: $ scala Welcome to Scala 2.13.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_231). Type in expressions for evaluation. Or try :help.scala> println("Hello Wo…

CENTOS5下VSFTPD的設置

需求:(虛擬用戶分下載用戶/下載、上傳但不能刪除用戶/管理用戶) 一、安裝 yum -y install vsftpd* yum -y install pam* yum -y install db4* 二、系統帳戶 1、vsftpd服務的宿主用戶 useradd vsftpd -s /sbin/nologin 2、…

Scala基礎語法

如果你之前是一名 Java 程序員,并了解 Java 語言的基礎知識,那么你能很快學會 Scala 的基礎語法。 一、基本語法 Scala 基本語法需要注意以下幾點: 區分大小寫 - Scala是大小寫敏感的,這意味著標識Hello 和 hello在Scala中會有不…

DNS詳解

一、DNS 概念 人和人要互相識別和記憶,需要名字作為輔助,而對于網絡世界,在因特網內也需要一種命名系統來做類似的事情,該系統使用了域來劃分,任何一個網絡里的主機(或者路由器)都有獨一無二的域名(類似國家代碼),域又能繼續劃分為子域(類似每個國家有不同的省份代…

Shell腳本——函數

Shell 函數的本質是一段可以重復使用的腳本代碼,這段代碼被提前編寫好了,放在了指定的位置,使用時直接調取即可。 一、語法 Shell 函數定義的語法格式如下: function name() {statements[return value] }對各個部分的說明&#…

scala通過JDBC進行數據庫操作

scala通過JDBC方式操作mysql (需要加載 mysql-connector-java 驅動) maven依賴&#xff1a; <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.45</version></dependency>一…

Linux下Java的安裝與配置

0、下載好JDK安裝包后上傳到Linux服務器的/usr/local/java/下 1、解壓tar -zxvf jdk-8u251-linux-x64.tar.gz 2、改名mv jdk1.8.0_251 jdk1.8 3、配置環境變量vi /etc/profile 添加以下內容 #JAVA export JAVA_HOME/usr/local/java/jdk1.8 export JRE_HOME$JAVA_HOME/jre e…

運維同步rsync

Rsync(remote rynchronization)是一款開源的、快速的、多功能的、可實現全量以及增量的本地或者遠程數據同步的備份的優秀工具&#xff0c;可使本地主機不同分區或目錄之間及本地和遠程兩臺主機之間的數據快速同步鏡像&#xff0c;遠程備份等功能同時它在同步文件的同時可以保…