過濾器加管道就是UNIX的世界!
運行linux程序有三種方法:
(1)chmod +x 使程序具有可執行權限,直接執行
(2)直接使用命令解釋器執行程序(linux shell是解釋型語言)
(3)使用source執行文件
linuxshell 包含三種命令:
(1)內建命令,即shell本身包含的命令。多用來改變shell本身的屬性設置
(2)shell函數
(3)外部命令,獨立於shell的可執行程序,通過創建但前shell的複製進程來執行。如:find, grep, echo.sh等,亦叫“工具”。
Bash shell配置文件的執行時機:
(1)login
首先執行/etc/profile,然後執行主目錄中的一個文件。優先級爲:.bash_profile->.bash_login->.profile
(2)logout
檢查用戶主目錄中是否有.bash_logout,如果有則執行。
(3)執行新shell
交互式:產生一個子shell,執行/etc/bash.bashrc和主目錄中的.bashrc
shell script:檢查變量BASH_ENV,並執行該變量定義的啓動文件,但是如果腳本爲#!/bin/sh,則不會檢查任何環境變量
shell script必要要有執行權限。
chmod u+x scriptName
2.#!
用來指定由哪個shell來執行,如:
#! /bin/bash
ps: ps -f 可以用來顯示正在執行該腳本的shell的名稱。
3.#
有#的一行代表註釋。類似//。
4.執行shell腳本
如果不具備shell 腳本的執行文件,那麼可以使用創建一個新(子)bash 來執行這個腳本。如:
$ bash scriptName
這樣做的唯一缺點是執行起來相對慢點。
5.一些分隔符
;:分號間隔命令的時候,各命令相繼執行,不是同時執行。如:$ x;y;z
&:將真個作業作爲一個後臺任務運行。
|:改變標準輸入或者是標準輸出的目的地。
6.作業控制
jobs:列出作業
fg:將作業移到前臺運行。如:fg 2 或者 %2
ctrl+z:掛起前臺正在運行的作業
bg:使用ctrl+z掛起作業,然後bg命令將掛起的作業放到後臺繼續執行
ctrl+d:表示OEF(文件結束,輸入完畢)。
7.操作目錄棧
dirs:顯示目錄棧的內容
pushd:將目錄壓入棧中。如:pushd ../demo。使用pushd的好處是可以方便地在兩個目錄之間來回移動。
popd:將目錄從棧中彈出。不帶參數就從彈出棧頂。
pwd:顯示當前所在目錄。
8.變量
變量可以通過等號賦值。如:temp="hello"。儘管雙引號不是必須地,但是這是一個良好的習慣。同時在使用變量的時候加上雙引號可以防止特殊符號對變量名的擴展,如echo "$temp"。
unset:刪除變量,如:unset temp。
readonly:將變量設置爲只讀。如:person = zach ; readonly person。不帶參數執行readonly時會顯示shell中所有隻讀變量的列表。
9.前臺工作、後臺工作
在命令或者執行shell腳本的時候,在後面加個&符號代表轉入後臺執行。
如:grep Aaron & 或者 ./start.sh &
10.bash排錯
bash提供了一些參數來進行類似debug的功能。
bash -v:檢查語法
bash -n:僅查看
bash -x:追蹤執行
感覺-x比較有用點。此外邏輯方面的錯誤等等沒有辦法檢查,只能人工看。
11.子shell
echo $SHLVL:可以查看目前所處的shell層次。login shell的層次是1,然後一次+1.
12.單引號跟雙引號的區別
區別是雙引號中會替換變量,單引號中則是“所見即所得”,不進行任何替換。
13.sed
sed的工作模式就是對於文本的每一行,如果符合樣式,就執行指定的操作。但是不會更改原文件中的內容。