高階shell程式設計筆記 第二十四章 別名

2021-10-25 06:59:50 字數 1889 閱讀 2496

bash別名本質上是乙個簡稱、縮寫,這可避免鍵入過長的命令序列。例如:如果我們新增 alias lm=「ls -l | more」 這一行到檔案~./bashrc 檔案裡,然後每次在命令列鍵入lm將會自動被替換成ls -l | more。這使使用者在命令列不必鍵冗長的命令序列,也避免了記憶複雜的命令及眾多選項。設定alias rm=「rm -i」(互動式刪除)能避免你不小心刪除重要檔案。

在指令碼裡,別名機制不是非常的有用。如果把別名機制相像成c預處理器的某些功能將會非常好,比如巨集擴充套件;但是,不幸的是bash不能在別名中擴充套件引數。而且,別名不能在"混合型的結構"中使用,比如if/then語句、迴圈和函式。還有乙個限制是別名不能遞迴的擴充套件。

example 24-1 指令碼中的別名

#!/bin/bash

#shopt -s expand_aliases

#必須設定這個選項,否則指令碼不會擴充套件別名的功能

alias jesse_james='echo "\"alias jesse james\" was a 1959 comedy starring bob hope."'

jesse_james

echo

;echo

;echo

alias ll="ls -l"

#可以使用單引號(')或雙引號(")來定義乙個別名.

echo

"trying aliased \"ll\":"

ll /opt/shell

echo

directory=/opt/shell/

prefix=*

.sh #看萬用字元會不會引起麻煩

echo

"variables \"directory\"+\"prefix\"=$directory

$prefix"

echo

alias lll="ls -l $directory

$prefix"

echo

"trying aliased \"lll\":"

llltrue=1

echo

if[ true ]

;then

alias rr="ls -l"

echo

"trying aliased \"rr\" within if/then statement:"

rr /opt/shell/*

.sh #* 引起錯誤資訊!

#別名不能在混合結構中使用.

echo

"但是,以前擴充套件的alias仍然可以識別:"

ll /opt/shell/*

.shfi

echo

count=0

while

[$count

-lt 3 ]

do alias rrr="ls -l"

echo

"trying aliased \"rrr\" withn \"

while\" loop:"

rrr /opt/shell/*

.sh #* 在這兒,別名也不會擴充套件.

let "count += 1"

done

echo

;echo

alias xyz='cat $0'

# 指令碼列印自身內容.

xyzexit 0

unalias 命令刪除先前設定的別名

example 24-2 unalias:設定和刪除別名

#!/bin/bash

#shopt -s expand_aliases # 開啟別名功能擴充套件.

alias llm="ls -al | more"

llmecho

unalias llm

llmexit 0

第二十四周學習筆記

自監督關鍵點檢測和特徵描述子生成 自監督訓練方法 使用全卷積神經網路架構,乙個共享的encoder對進行編碼,兩個decoder分別檢測關鍵點和生成描述子 outperform lift in almost all metrics quantitatively scores strongly in ...

習題日常第二十四練

這個題有點繞。我們可以通過從終點出發,將已知邊反向,用bfs搜,找到可以直接到達終點的點。再通過對每個點遍歷,若這個點不能到終點,則反向後的所有與它相連點都不能到。但是注意,此時刪點有後效性,需要用兩個陣列完成。最後在所有合法點上再跑一遍迪傑斯特拉演算法求最短路即可。include include ...

冥想第二十四天

還有乙個需要提高的地方就是 慢一點,以往自己對成功和只是追求的太急切。一急切就亂了節奏,適當的急切是必要的 放輕鬆全身都是最舒服的狀態。平靜的內心讓自己能面對生活的困難。感謝自己,感謝家人,感謝朋友,感謝一切。不責怪自己,一天比一天進步就好。慢慢來。下午和客戶積極的溝通,全身心的投入,發現一點也不困...