㈠ linux怎麼進入shell環境
兩種方法:一是開機就進入shell,需要修改/etc/inittab文件的默認運行級為3。二是從桌面環境下運行konsole之類的終端模擬器。
㈡ linux shell 中&>是什麼意思
& 後台執行
> 輸出到
不過聯合使用也有其他意思,比如nohup輸出重定向上的應用
例子:nohup abc.sh > nohup.log 2>&1 &
其中2>&1 指將STDERR重定向到前面標准輸出定向到的同名文件中,即&1就是nohup.log
㈢ linux中的shell是什麼意思
ll程序呢? 簡單的說shell程序就是一個包含若干行
shell或者linux命令的文件.
象編寫高級語言的程序一樣,編寫一個shell程序需要一個文本編輯器.如VI等.
在文本編輯環境下,依據shell的語法規則,輸入一些shell/linux命令行,形成一個完整
的程序文件.
執行shell程序文件有三種方法
(1)#chmod +x file(在/etc/profile中,加入export PATH=$:~/yourpath,就可以在命令行下直接運行,像執行普通命令一樣)
(2)#sh file
(3)# . file
(4)#source file
在編寫shell時,第一行一定要指明系統需要那種shell解釋你的shell程序,如:#! /bin/bash,
#! /bin/csh,/bin/tcsh,還是#! /bin/pdksh .
2.shell中的變數
(1)常用系統變數
$ # :保存程序命令行參數的數目
$ ? :保存前一個命令的返回碼
$ 0 :保存程序名
$ * :以("$1 $2...")的形式保存所有輸入的命令行參數
$ @ :以("$1""$2"...)的形式保存所有輸入的命令行參數
(2)定義變數
shell語言是非類型的解釋型語言,不象用C++/java語言編程時需要事先聲明變數.給一
個變數賦值,實際上就是定義了變數.
在linux支持的所有shell中,都可以用賦值符號(=)為變數賦值.
如:
abc=9 (bash/pdksh不能在等號兩側留下空格 )
set abc = 9 (tcsh/csh)
由於shell程序的變數是無類型的,所以用戶可以使用同一個變數時而存放字元時而存放
整數.
如:
name=abc (bash/pdksh)
set name = abc (tcsh)
在變數賦值之後,只需在變數前面加一個$去引用.
如:
echo $abc
(3)位置變數
當運行一個支持多個命令行參數的shell程序時,這些變數的值將分別存放在位置變數里.
其中第一個參數存放在位置變數1,第二個參數存放在位置變數2,依次類推...,shell保留
這些變數,不允許用戶以令外的方式定義他們.同別的變數,用$符號引用他們.
3.shell中引號的使用方法
shell使用引號(單引號/雙引號)和反斜線("\")用於向shell解釋器屏蔽一些特殊字元.
反引號(")對shell則有特殊意義.
如:
abc="how are you" (bash/pdksh)
set abc = "how are you" (tcsh)
這個命令行把三個單片語成的字元串how are you作為一個整體賦值給變數abc.
abc1='@LOGNAME,how are you!' (bash/pdksh)
set abc1='$LOGNAME,how are you!' (tcsh)
abc2="$LOGNAME,how are you!" (bash/pdksh)
set abc2="$LOGNAME,how are you!" (tcsh)
LOGNAME變數是保存當前用戶名的shell變數,假設他的當前值是:wang.執行完兩條命令後,
abc1的內容是:$LOGNAME, how are you!.而abc2的內容是;wang, how are you!.
象單引號一樣,反斜線也能屏蔽所有特殊字元.但是他一次只能屏蔽一個字元.而不能屏蔽
一組字元.
反引號的功能不同於以上的三種符號.他不具有屏蔽特殊字元的功能.但是可以通過他將
一個命令的運行結果傳遞給另外一個命令.
如:
contents=`ls` (bash/pdksh)
set contents = `ls` (tcsh)
4.shell程序中的test命令
在bash/pdksh中,命令test用於計算一個條件表達式的值.他們經常在條件語句和循環
語句中被用來判斷某些條件是否滿足.
test命令的語法格式:
test expression
或者
[expression]
在test命令中,可以使用很多shell的內部操作符.這些操作符介紹如下:
(1)字元串操作符 用於計算字元串表達式
test命令 | 含義
-----------------------------------------
Str1 = str2 | 當str1與str2相同時,返回True
Str1! = str2| 當str1與str2不同時,返回True
Str | 當str不是空字元時,返回True
-n str | 當str的長度大於0時,返回True
-z str | 當str的長度是0時,返回True
-----------------------------------------
(2)整數操作符具有和字元操作符類似的功能.只是他們的操作是針對整數
test表達式 | 含義
---------------------------------------------
Int1 -eq int2|當int1等於int2時,返回True
Int1 -ge int2|當int1大於/等於int2時,返回True
Int1 -le int2|當int1小於/等於int2時,返回True
Int1 -gt int2|當int1大於int2時,返回True
Int1 -ne int2|當int1不等於int2時,返回True
-----------------------------------------
(3)用於文件操作的操作符,他們能檢查:文件是否存在,文件類型等
test表達式 | 含義
------------------------------------------------
-d file |當file是一個目錄時,返回 True
-f file |當file是一個普通文件時,返回 True
-r file |當file是一個刻讀文件時,返回 True
-s file |當file文件長度大於0時,返回 True
-w file |當file是一個可寫文件時,返回 True
-x file |當file是一個可執行文件時,返回 True
------------------------------------------------
(4)shell的邏輯操作符用於修飾/連接包含整數,字元串,文件操作符的表達式
test表達式 | 含義
----------------------------------------------------------
! expr |當expr的值是False時,返回True
Expr1 -a expr2|當expr1,expr2值同為True時,返回True
Expr1 -o expr2|當expr1,expr2的值至少有一個為True時,返回True
-----------------------------------------------------------
注意:
tcsh shell 不使用test命令,但是tcsh中的表達式同樣能承擔相同的功能.tcsh
支持的表達式於C中的表達式相同.通常使用在if和while命令中.
tcsh表達式 | 含義
-------------------------------------------------------
Int1 <= int2 |當int1小於/等於int2時,返回True
Int1 >= int2 |當int1大於/等於int2時,返回True
Int1 < int2 |當int1小於int2時,返回True
Int1 > int2 |當int1大於int2時,返回True
Str1 == str2 |當str1與str2相同時,返回True
Str1 != str2 |當str1與str2不同時,返回True
-r file |當file是一個可讀文件時,返回True
-w file |當file是一個可寫文件時,返回True
-x file |當file是一個可執行文件時,返回True
-e file |當file存在時,返回True
-o file |當file文件的所有者是當前用戶時,返回True
-z file |當file長度為0時,返回True
-f file |當file是一個普通文件時,返回True
-d file |當file是一個目錄時,返回True
Exp1 || exp2 |當exp1和exp2的值至少一個為True時,返回True
Exp1 && exp2 |當exp1和exp2的值同為True時,返回True
! exp |當exp的值為False時,返回True
㈣ linux中的shell是什麼有什麼作用
Shell是人機交互用的一個程序。
用戶有shell了就可以登陸系統並且可以用命令和系統交互,肯定不安全。
沒有shell就無法用命令去和系統對話,自然安全多了。
最「土」的辦法就是用用戶名和密碼登陸一下,能進去就是有用戶shell,進不去就是沒有用戶shell。
㈤ Linux shell 腳本中, $@ 和$# 分別是什麼意思
直接看示例:
[root@localhost xly]# cat t.sh
#!/bin/bash
echo $#
echo $@
[root@localhost xly]# sh t.sh
0
[root@localhost xly]# sh t.sh a b c
3
a b c
說明:
$@表示所有參數
$#表示所有參數的個數
㈥ linux下的shell是什麼
什麼是shell
shell是用戶和Linux
操作系統
之間的
介面
。Linux中有多種shell,其中預設使用的是Bash。本章講述了shell的工作原理,shell的種類,shell的一般操作及Bash的
特性
。
什麼是shell
Linux系統的shell作為操作系統的
外殼
,為用戶提供使用操作系統的介面。它是
命令語言
、命令
解釋程序
及
程序設計語言
的統稱。
shell是用戶和
Linux內核
之間的介面
程序
,如果把Linux內核想像成一個
球體
的中心,shell就是圍繞
內核
的外層。當從shell或其他程序向Linux傳遞命令時,內核會做出相應的反應。
shell是一個命令語言
解釋器
,它擁有自己內建的shell命令集,shell也能被系統中其他
應用程序
所調用。用戶在提示符下輸入的命令都由shell先解釋然後傳給Linux核心。
Shell是一種具備
特殊功能
的程序,
它是介於使用者和
UNIX/linux
操作系統之核心
程序(kernel)間的一個介面。為什麼我們說
shell
是一種介於系統核心程序與使用者
間的中介者呢?讀過操作系統概論的讀者們都知道操作系統是一個
系統資源
的管理者與分
配者,當您有需求時,您得向系統提出;從操作系統的角度來看,它也必須防止使用者因
為錯誤的操作而造成系統的傷害?眾所周知,對
計算機
下命令得透過命令(command)
或
是程序(program);程序有編譯器(compiler)將程序轉為
二進制代碼
,可是命令呢?
其實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發出中斷
信號
來中斷它(在正常結束之前,中止它的執行)。
當用戶准備結束登錄對話進程時,可以鍵入logout命令、exit命令或文件結束符(EOF)(按ctrl+d實現),結束登錄。
㈦ linux下的 shell到底是什麼啊
在計算機科學中,是指「提供用戶使用界面」的軟體,通常指的是命令行界面的解析器。一般來說,shell是指操作系統中,提供訪問內核所提供之服務的程序。
㈧ linux中shell分多少種,都有什麼區別
Shell是一種腳本語言,那麼,就必須有解釋器來執行這些腳本,常見的腳本解釋器有:
bash:是Linux標准默認的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的縮寫,內部命令一共有40個。
sh: 由Steve Bourne開發,是Bourne Shell的縮寫,sh 是Unix 標准默認的shell。
另外還有:ash、 csh、 ksh等。
(8)shelllinux擴展閱讀:
常見的編程語言分為兩類:一個是編譯型語言,如:c/c++/java等,它們遠行前全部一起要經過編譯器的編譯。另一個解釋型語言,執行時,需要使用解釋器一行一行地轉換為代碼,如:awk, perl, python與shell等。
Shell 經過了POSIX的標准化,所以它是可以在不同的linux系統上進行移植。
關於注釋的問題: 在shell中使用#進行注釋,注意,sh裡面沒有多行注釋,只能每一行加一個#號;
㈨ linux中的shell究竟是什麼
【一】
shell的含義:
首先shell的英文含義是「殼」;
它是相對於內核來說的,因為它是建議在核的基礎上,面向於用戶的一種表現形式,比如我們看到一個球,見到的是它的殼,而非核。
Linux中的shell,是指一個面向用戶的命令介面,表現形式就是一個可以由用戶錄入的界面,這個界面也可以反饋運行信息;
【二】shell在Linux中的存在形式:
由於Linux不同於Windows,Linux是內核與界面分離的,它可以脫離圖形界面而單獨運行,同樣也可以在內核的基礎上運行圖形化的桌面。
這樣,在Linux系統中,就出現了兩種shell表現形式,一種是在無圖形界面下的終端運行環境下的shell,另一種是桌面上運行的類型Windows
的MS-DOS運行窗口,前者我們一般習慣性地簡稱為終端,後者一般直接稱為shell
【三】shell如何執行用戶的指令
shell有兩種執行指令的方式,一種方法是用戶事先編寫一個sh腳本文件,內含shell腳本,而後使用shell程序執行該腳本,這種方式,我們習慣稱為shell編程。
第二種形式,則是用戶直接在shell界面上執行shell命令,由於shell界面的關系,大家都習慣一行行的書寫,很少寫出成套的程序來一起執行,所以也稱命令行。
總結:shell可以說只是為用戶與機器之間搭建成的一個橋梁,讓我們能夠通過shell來對計算機進行操作和交互,從而達到讓計算機為我們服務的目的。
以上。
參考資料:
【shell的定義】http://ke..com/view/849.htm
【shell學習】http://wiki.ubuntu.org.cn/Shell%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80