Ⅰ NULL什麼意思
"NUL"是計算機領域中使用的一個縮略詞,它是「NULL」(空值)的簡寫,也稱為空位元組或空字元。在計算機編程中,"NUL"一般用來表示一個空的、不含任何信息的字元或位元組。
在ASCII碼表中,"NUL"對應著十進制數值0(二進制編碼為00000000),它是一種非常基本的字元編碼,通常被用來作為字元串的結束符,標記字元串的末尾,並表示該字元串不再包含任何有效的字元。
除了作為字元串的結束符外,在一些特殊的計算機系統中,"NUL"還可以用作一些控制字元的代號,它可以用來控制列印機的換行、清空緩存、重復輸出等相關操作。
總的來說,"NUL"是一個在計算機編程和操作系統中廣泛使用的概念,它通常用來表示一個空的或無效的字元或位元組,並承擔著字元串結束符、控制字元等多種角色,是計算機世界中一個非常基礎和重要的概念。
Ⅱ linux shell:這里的%% * 是什麼意思
${LINE%% *}的意思就是從LINE這個變數的值中,從後面開始以最長匹配刪去%%後面的表達式內容。
從用戶的shell看,wc -l的結果是行數+空格+文件名,用戶的匹配項是'空格*',那麼從後面開始的最長匹配就是行數後面的所有內容,也就是說,這個表達式最終的結果是產生命令行參數所帶文件的行數。
看一下man bash可以找到詳細說明,查找Parameter Expansion這段會看到:
${parameter%word}
${parameter%%word}
都是從parameter的最後開始刪除word所匹配的內容,%是最短匹配,%%是最長匹配。
(2)linux空值擴展閱讀:
實際上Shell是一個命令解釋器,它解釋由用戶輸入的命令並且把它們送到內核。不僅如此,Shell有自己的編程語言用於對命令的編輯,它允許用戶編寫由shell命令組成的程序。Shell編程語言具有普通編程語言的很多特點,比如它也有循環結構和分支控制結構等,用這種編程語言編寫的Shell程序與其他應用程序具有同樣的效果。
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 $name
Ⅲ linux awk取值為空
如果ifcfg-eth0文件中沒有GATEWAY這一項,echo $a 顯示為空。
不滿足/^GATEWAY/ 條件就不會列印任何東西。
加個判斷即可。
a="`awk-F='/^GATEWAY/{print$2}'/etc/sysconfig/network-scripts/ifcfg-eth0`"
if[-n"$a"];then#變數a不為空(文件中存在GATEWAY這項)
#Dosth.
else#變數a為空(文件中不存在GATEWAY這項)
#Dosth.else
fi
Ⅳ Linux編程基礎知識進階篇(指令)
linux常用的語言就是shell和python,首先我們得先了解語言的概念
<<-EOF
EOF
編寫一個簡單的bash檔如下:
我們可以看到用./執行bash檔時,沒有進入到/home目錄下,這種我們稱為 在子shell中執行 ,其不影響當前shell的狀況(有時候執行成功沒有效果的原因)。但是無論是. 執行還是source執行我們都成功進入了home路徑下,這我們稱之為 在當前shell執行
su nologinshell 不載入用戶的shell
su - loginshell 載入用戶的shell
可以很明顯的看出來,當用不載入用戶的shell載入用戶時,是不會具有當前載入用戶的許可權的,很像windows中的遊客模式
history歷史記錄緩存
~/.bash_history退出後寫入緩存
~/.bash_logout退出後執行
在這一層,順帶按圖索驥,理解一下linux系統開機的歷程。紅字:系統層開機/切換用戶歷程;藍字:用戶層開機/切換用戶歷程;黃字:用戶層關機歷程。
曾經玩過一個游戲:在用戶指令關機時,會有一輛小火車開過,所以我們可以把調用小火車開過的程式調用寫在?
1、命令和文件的自動補齊 shift
2、命令的歷史記憶功能:上下鍵、!number 執行第多少條命令、
!string 找到最近以string開頭的命令、!& 上一個命令最後的參數、
!! 執行上一個命令、^R 搜索歷史命令
3、別名功能:alias 查看別名、unalias 取消別名、(命名前加斜線跳過別名)
alias xx=』xx』 定義臨時別名、vim ~/.bashrc 定義永久別名
4.快捷鍵:^D 退出、^A 游標移動到命令最前、^E 游標移動到命令最後、
^L 清屏、^U 往前的刪掉、^K 往後的刪掉、^Y 撤銷、^M 回車
^S 鎖屏、^Q 解除鎖屏
5.前後台作業控制:& 後台不保留、nohup 後台保留、screen
; && || (命令返回值echo &?)
*任意多個字元
?任意一個字元
[]匹配括弧內任意一個字元
()在子shell中執行
{}集合
轉義字元
注意點:echo -e 「a b」
$? 前一條命令的執行成功與否
$1 傳入的第一個參數 $2 $3 位置變數
沒有使用環境變數的必要性
練習內容:讀取用戶指定文檔的ip連通性
bc計算器
假設我們定義了一個變數為:
記憶的方法為:
利用${ } 還可針對不同的變數狀態賦值(沒設定、空值、非空值):
Ⅳ linux的makefile中":="與"="有什麼區別
:= 就是簡單的賦值, 比如
foo := $(bar)
將bar的值賦給foo
?= 是條件賦值, 比如
foo ?= $(bar)
只有當foo變數還沒有被定義的時候,才會將bar的值賦給foo。 注意,如果foo已經被定義過,但是是空值了話,?=不會給他賦值。比方說你的makefile是
foo = hello
foo ?= new
則最終foo的值是hello
如果你的makefile是
foo =
foo ?= new
foo的值是空