shell學習筆記1 基礎篇

2021-06-23 00:56:38 字數 4441 閱讀 2515

使用者正常退出shell時,系統會將敲過的命令存入.bash_history中。「!」與history有莫大的關聯。

1)!!表示執行上一條命令

2)!n,n表示數字,表示執行history中第n條命令

3)!可以進行模糊匹配,如:!pass可以執行之前輸過的passwd命令

將複雜的命令賦值給乙個簡單的別名

1)alias顯示當前系統已經存在的別名

2)設定別名,alias yx='fdisk -l',輸入yx則可以執行fdisk -l命令。注意:如果將系統已存在的命令設定為其他命令的別名,會覆蓋系統命令的含義,unalias取消別名

ctrl+z暫停現在正在進行的工作,通過jobs來檢視,fg前台執行和bg後台執行來恢復。jobs前面有顯示作業的編號,fg或者bg加作業編號繼續執行。

path代表了所有常用命令的絕對路徑,使得一些常用命令不用輸入絕對路徑就可以直接執行。

1)echo $path會顯示當前設定的路徑,以:分隔

2)如果要新增路徑,則可以在家目錄下的.bash_profile檔案中的path末尾追加需要新增的路徑,並且source .bash_profile使之生效。如:path=$path:$home/bin:/tmp

3)環境變數的顯示和生效問題

a)env命令顯示所有系統預設的環境變數,set命令顯示系統預設變數和使用者定義的變數

b)自定義變數只在當前shell中生效,bash新開乙個shell之後自定義變數無效

c)可以用pstree | grep bash來檢視當前的shell

d)如果想讓變數在所有shell中生效,又不修改配置檔案,可以在配置變數的shell中再用export在子shell中宣告此變數

[root@localhost ~]# yx=xy

[root@localhost ~]# export yx

4)/etc/profile中加入export yx=xy,並且source /etc/profile 使得定義的變數在所有使用者的所有shell中生效;而在使用者家目錄的.bashrc中寫入export yx=xy並且讀取之後,對當前使用者的所有shell生效。

a)若變數內容帶空格,則需要單引號括起來

[root@localhost ~]# yx='x y'

[root@localhost ~]# echo $yx

x y

b)若變數內容帶單引號,則需要雙引號括起來

[root@localhost ~]# yx="x'y"

[root@localhost ~]# echo $yx

x'y

c)若變數內容帶系統命令,並且希望echo 變數之後命令執行。則需要用反引號括起來

[root@localhost ~]# yx=`pwd`

[root@localhost ~]# echo $yx

/root

d)若變數內容需要引用其他變數,則其他變數要用雙引號括起來

[root@localhost ~]# yx="$home"xy

[root@localhost ~]# echo $yx

/rootxy

在這裡要提一下,單引號會取消其中特殊字元的含義,而雙引號不會

5)unset可以取消變數的賦值

1)*代表零個或者多個任意字元

2)?代表乙個任意字元

3)\脫意字元,去除像*、?等這樣字元的特殊含義,讓他們變成單純顯示符

ls -d yx*  表示列出所有以yx開頭的資料夾

ls -d yx\* 表示列出資料夾名為yx*的資料夾

注意:這裡的脫意字元要和轉義字元區分。轉義字元利用\加常見的字母或數字來顯示那些不能顯示的ascii字元。如:\t 表示tab鍵,\n 表示enter鍵

4)!$代表上乙個命令最後的那個變數

5)|| 前面的命令執行成功則不執行第二條命令

將前面命令執行所得到的結果丟給管道後面的命令,通常配合其他常用的命令一起使用

1)wc命令。統計檔案的行數、單詞數、檔案大小等資訊。

a)

[root@localhost ~]# echo 'hello world' > test.txt

[root@localhost ~]# cat test.txt | wc

1       2      12

1代表檔案的行數,2代表檔案內容的單詞總數(以空格分隔),12代表檔案的大小位元組數

b)-l 統計檔案行數

c)-c 統計檔案位元組數

d)-m 統計檔案的字元數(包括字母、數字、特殊字元)

注意:每行的行末都會有乙個隱藏的結束符$所以統計的時候會加上這個字元

e)-w 統計檔案的單詞數(以空格為分隔符)

f)-l 統計檔案最長行的字元數(以字元計算長度)

2)cut命令。用來擷取某個字段。

最常用的語法為:cut -d'分隔符' -f第幾字段

其實不加單引號-d後面直接跟分隔符也是可以的,但是個人習慣加單引號,若分隔符為單引號',則用雙引號將其括起來,如:

[root@localhost tmp]# cat test

a'b'c'd'e

[root@localhost tmp]# cat test | cut -d"'" -f3

c

a)-c 顯示每一行的第n個到第m個字元,如:

[root@localhost tmp]# cat test

hello world

i am bob

[root@localhost tmp]# cat test | cut -b1-7

hello w

i am bo

b)-s 不顯示不包含分隔符的行,如:

[root@localhost tmp]# cat test

hello world

i am bob

#$%^

[root@localhost tmp]# cat test | cut -d' ' -f1 -s

hello

i

3)sort命令。內容排序。

-t 分隔符 :作用跟cut的-d乙個意思

-n :使用純數字排序

-r :反向排序

-u :去重複

a)例:head -n5 /etc/passwd | sort -t: -k3 -n -r -u

[root@aca-ct-1-250 ~]# head -n5 /etc/passwd |sort -t: -k3 -n -r -u

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

bin:x:1:1:bin:/bin:/sbin/nologin

root:x:0:0:root:/root:/bin/bash

4)uniq命令。去除重複行。

-c :統計重複的行數,並把行數寫在前面

a)例:

[root@aca-ct-1-250 ~]# cat test

aaabbb

cccaaa

[root@aca-ct-1-250 ~]# sort test | uniq -c

2 aaa

1 bbb

1 ccc

5)tee命令。相當於》,不同的是在重定向的同時在螢幕上輸出,常用在|之後。

a)例:

[root@aca-ct-1-250 ~]# echo "hello" | tee test.txt

hello

6)tr命令。替換命令,用來替換文件中的內容。

-d:刪除某個字元

-s:刪除重複的字元

[root@aca-ct-1-250 ~]# cat test.txt

hello

[root@aca-ct-1-250 ~]# cat test.txt |tr [a-z] [a-z]

hello

[root@aca-ct-1-250 ~]# cat test.txt |tr -d h

ello

[root@aca-ct-1-250 ~]# cat test.txt |tr -s l

helo





ubuntu學習筆記 shell基礎應用(1)

一.標準輸入輸出 1 命令cat是乙個把鍵盤作為標準輸入,把螢幕作為標準輸出。輸入cat命令,再按下回車鍵,然後在鍵盤輸入this is test1,按回車鍵後螢幕會顯示this is test2。按下ctrl c,結束cat命令的執行。如下 cat this is test1 this is te...

SHELL學習筆記(1)

第二章入門 1.wc 字數計算次序 可以列印出行數,字元數,字數等,分別為wc l or wc c or wc w 2.shell可以識別三種命令 內建命令,shell函式和外部命令 3.the usage of echo r 回車 t 水平製表符 v 垂直製表符 a 警示 b 退格 c 這個引數之...

Shell學習筆記1

運算子 語法 表示式1,表示式2 特點 1 在雙括號結構中,所有表示式可以像c語言一樣,如 a b 等。2 在雙括號結構中,所有變數可以不加入 符號字首。3 雙括號可以進行邏輯運算,四則運算 4 雙括號結構 擴充套件了for,while,if條件測試運算 5 支援多個表示式運算,各個表示式之間用 分...