亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux系統編程常用命令有哪些

發布時間:2022-01-25 10:22:20 來源:億速云 閱讀:120 作者:iii 欄目:開發技術

這篇“Linux系統編程常用命令有哪些”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Linux系統編程常用命令有哪些”文章吧。

Linux系統編程方法:

如果沒有安裝gcc和g++編譯器的話,可以在終端用命令直接安裝,很方便:

sudo apt-get install gcc

sudo apt-get install g++

C語言與C++的編譯執行

C語言編譯   gcc test.c -o test

C語言執行   ./test

C++編譯    g++ test.cpp -o test

C++執行    ./test

以下以C語言為例:

代碼用geidt編輯,用gcc編譯

1.在主文件夾下新建一個文件夾,取名code

2.在code文件夾下創建一個新文檔,取名test.c(如果是C++語言,取名為test.cpp)

3.直接在該文檔中寫好代碼并保存

4.Ctr**l+Alt+T打開終端,進入test.c**所在目錄

5.用gcc對test.c進行編譯,生成可執行文件test:gcc test.c -o test(如果是C++語言: g++ test.cpp -o test)

6.同樣在code目錄下,用./test執行代碼****

Linux系統編程常用命令有哪些

****

對上圖進行解釋:

Ctrl+Alt+T打開終端,默認進入主文件夾,通過ls命令,查看主文件夾目錄下的內容;

通過cd code進入code文件夾目錄;

通過ls命令查看code文件夾目錄下的內容;

通過gcc test.c -o test進行編譯,并生成可執行文件test

再執行ls命令,可以看到,該目錄下多了test這個文件;

通過./test執行test文件;

This is Linux!為執行結果。

Linux下如何實現多文件編程?

假設有三個文件:兩個源文件(file1.cpp、file2.cpp)和一個頭文件(head.h)

頭文件不需要編譯,只需要在源文件中包含了這個頭文件即可:#include “head.h”

編譯多個源文件:g++ -o output file1.cpp file2.cpp

output為可執行文件

Linux系統編程常用命令 :

1)編譯應用程序

make -f makefile_5_2 clean
make -f makefile_5_2

2)關于共享目錄
在linux虛擬機的/mnt/hgfs下可看到該文件夾

3)cd命令,進入文件夾

cd /mnt/hgfs/

4)復制cp命令

cp  -ri  A/B/*  A1/B1/  提示是否覆蓋

\cp  -rf  A/B/*  A1/B1/  不提示直接覆蓋

5)linux關機

shutdown   -h   now

6)創建目錄mkdir

mkdir HPP

7)查看文件時間

stat hpp

8)在linux下啟動程序 ./ccs

程序的退出,首先用ps -ef|grep XXX 查看其pid,然后用kill pid退回   ———-強制退出kill -9 PID

9)ll看看文件讀寫權限,chmod 777 XXX 賦予文件最高權限

10)dos2unix命令用來將DOS格式的文本文件轉換成UNIX格式的,將window的文件上傳到linux下有時候需要作個轉換

格式:dos2unix file

#chapter 2 shell basic

1. 訪問腳本從命令行接收到的參數:$n
在腳本中使用 $1 訪問第一個參數,$2訪問第二個,當超過9時,用大括號引起來,如 ${10}。

2. 在shell腳本執行時,使用-x打開腳本執行跟蹤功能。如: $ sh -x nusers.sh

3. 列出系統所支持的所有語言: locale -a

#chapter 3 search and substitution

4. shell BRE(Basic RE) and ERE(Extended RE)正則表達式簡記:
\  關閉或者打開后續字符的特殊意義
.  匹配任何單個字符,初NUL外
*  匹配在它之前的任何數目的單個字符
+  1個或多個(ERE only)
?  0個或多個(ERE only)
^  表示一行的開始,在[^…]里面表示取反
$  表示一行的結尾
[…]  匹配方括號內的任一單個字符
{n}  匹配前面單個字符出現n次(ERE,在BRE中需要使用轉義\{n\})
{n,m}  出現至少n次,最多m次
()  表示一個實例(ERE only)
|  匹配之前或之后的正則表達式(ERE only)

注意:在BRE下,^$只在起始和結束處具有特殊意義,在其他位置如39.8$killo就表示$本身。

5. 向后引用: backreferences
如,\(ab\)\(cd\)[def]*\2\1 可以匹配abcdcdab, abcdeeecdab, abcdffcdab, …向后引用最多可以有9個

6. POSIX字符集: [:alpha:] [:alnum:]  數字字符,如123
[:alpha:]  字母字符,如abcDEF
[:lower:]  小寫字母字符,如abc
[:upper:]  大寫字母字符,如DEF
[:blank:]  空格space于定位tab字符
……更多
$ grep -E ^[[:alpha:]]\{3\} data.txt
hello, world.
abcDEFdefABC

7. ERE(Extended RE)
沒有向后引用。
區間表達不需要\{\},直接使用abc{3,5},表示c出現3到5次
?  表示0個或一個前置RE
+  1個或多個
*  與BRE相同,0個或多個
|  交替,匹配這個序列或那個序列或… read|write|listen
() 分組,(abc){3,5}表示abc出現3到5次,但不包括括號()本身,

8. 額外的GNU正則表達式運算符: \w
\w  匹配任何單詞組成的字符
\W  匹配任何非單詞組成的字符,^\w

9. 進行文本查找替換: sed(steam editor)
sed s/regexp/replacement/
$ sed ‘s/:.*/:******/’ data.txt
hello, world.
abcDEFdefABC
password:******
another password:******
上面命令把冒號(:)后面的所有內容替換成6個星號(*),sed s/regexp/replacement/中的/作為一個定界符,任何可以顯示的字符都可以,如
sed s;regexp;replacement;
sed s:regexp:replacement:
sed s,regexp,replacement,
……等
$ find /home/owen/test/todelete/ -type d -print |
sed ‘s;/home/owen/test/todelete;/home/owen/test/todel;’ |
sed ‘s/^/mkdir /’ |
sh -x
+ mkdir /home/owen/test/todel/
+ mkdir /home/owen/test/todel/xyz
該命令首先找出/home/owen/test/todelete/這個目錄下的所有目錄,包括這個目錄自身,然后把todelete替換成todel,得到如下結果:
/home/owen/test/todel/
/home/owen/test/todel/xyz
然后在每行前面加上”mkdir “命令創建新的目錄。所實現的功能類似cp。

10. 查看系統的密碼信息: /etc/passwd
$ more /etc/passwd
owen:x:1000:1000:owen,,,:/home/owen:/bin/bash
每行都是以:分隔的7個字段,分別表示
owen 用戶名稱
x  加密后的密碼
1000  用戶ID編號
1000  用戶組ID編號
owen,,,  用戶姓名,附加其他信息,如聯系方式等
/home/owen  用戶的根目錄
/bin/bash  登錄的shell類型

11. 從文本中剪貼部分內容: cut
$ cut -d : -f 1,5 /etc/passwd | grep -E ^m
man:man
mail:mail
messagebus:
mysql:MySQL Server,,,
-d 表示分割符,-f 表示field

12. 連接2個文件,基于字段:join
join quotas.sorted sales.sorted
使用兩個文件中第一個字段進行連接,如
quotas.sorted
a b
sales.sorted
a c
連接之后,為a b c
當然可以指定連接的key, -1 2 -2 5, 參考manual

13. 重新編排字段: awk
$ ls -l | awk ‘{ print $8, $5, $1}’ | sort
data.txt 67 -rw-r–r–
finduser 88 -rwxr-xr-x
merge-sales.sh 363 -rwxr-xr-x
note.sh 36 -rwxr-xr-x
nusers 60 -rwxr-xr-x
quotas 58 -rw-r–r–
sales 71 -rw-r–r–
total
這里先列出當前目錄下的文件,然后使用awk顯示文件名,大小,權限,最后進行排序顯示。
awk默認使用空格作為分隔字符。
$ ls -l | awk ‘{ printf “%s %s\t %s\n”, $1, $5, $8}’ | sort
其基本模式如下:

#chapter 4 text process tools

14. 文本排序: sort
$ sort -t : -k 3,3 /etc/passwd
-t指定分隔符,-k指定從哪個字段到哪個字段作為key進行排序

15. 去除重復: uniq
$ sort uniq-data | uniq -c
2 duo
3 tres
1 unus
消除重復,可以控制顯示重復的或是未重復的記錄

16. 簡單的文本格式化命令: fmt
$ more data.txt | fmt -w 50
hello, world.  abcDEFdefABC password:123456
another password:666888

string sort\nbased on lines delimilated by new
line sign
格式化成每行最多50個字符

17. 計算行數、字數和字符數: wc
/usr/share/dict$ more words | grep ^herb | wc -lwc
17      17     165

18. 查看標準輸入的前n條記錄,或是文件列表中的前n條,或后n條: head, tail
head -n 5 /etc/passwd
sed -e 5q /etc/passwd
顯示倒數n條,一般用來查看最近的日志記錄
tail -n 5 /etc/passwd

#chapter 5 the magic power of pipe

19. 文字解謎好幫手puzzle-help.sh文件: example
FILES=”
/usr/dict/words
/usr/share/dict/words

pattern=”$1″
egrep -h -i “$pattern” $FILES 2> /dev/null | sort -u -f
使用這個腳本來進行查找具有10個字母的單詞,以b開頭,第7位不是x就是y:
$ sh puzzle-help.sh ‘^b.{5}[xy].{3}$’ | fmt
beatifying Birdseye’s blarneying Brooklyn’s Bulawayo’s
等價于使用命令:
/usr/share/dict$ more words | egrep -i  ‘^b.{5}[xy].{3}$’| sort
beatifying
Birdseye’s
blarneying
Brooklyn’s
Bulawayo’s

20. 轉換或者刪除字符:tr
tr [ options ] source-char-list replace-char-list
-c 取source-char-list的反義,即對沒有出現在source-char-list中的字符進行轉換或刪除
-d 刪除source-char-list里出現的字符,如刪除所有元音字母:
echo hello world | tr -d [aeiou] hll wrld
-s 濃縮重復的字符,如:
echo hello world | tr -s l
helo world
一般會組合來使用,如全部轉換成小寫字符,所有非字母字符轉換成換行符號
echo heLLo WorLd  123 End | tr A-Z a-z | tr -cs A-Za-z ‘\n’
hello
world
end
這里沒有包括數字,如果需要包括,則添加A-Za-z0-9就可以了

21. 統計一篇文章中單詞出現頻率: wf
tr -cs A-Za-z0-9 ‘\n’ |     將非字母字符轉換成換行符號,-cs參考第20條筆記
tr A-Z a-z |              全部轉換成小寫字母
sort |                  排序
uniq -c |             統計頻率,結果: 13 the等
sort -k1,1nr -k2 |  首先只取第一個field即數字,按照數字順序-n逆序-r排序,再對單詞以字典順序排序
sed ${1:-25}q     ${1}獲取命令行的第一個參數,如果沒有默認為25,后面q表示退出程序

${1:-25}是shell里面的一個參數展開形式,具體如下:
${var:-default-var}
展開方式是:首先查找${var},如果找到,值就為${var},如果沒有找到,值就等于default-var

使用(需要chmod +x wf,然后把wf放到$PATH路徑下),使用頻率最高的:
man awk | wf | pr -c4 -t -w80
292 the             69 are             50 0             40 mawk
169 and             69 string       49 s             40 n
168 is             65 1               48 expr       39 be
155 a               64 if             45 as         38 awk
124 of             52 for             45 or         38 file
118 to             52 with         40 an         38 i
80 in
pr命令,打印格式化,page column for printing
-c4 表示column4,相當于word的分欄操作,這里設置為4欄
-t  表示不顯示頁頭和頁尾,如果沒有這個,就是一張打印紙那么大
-w80  設置頁面寬度,這里是80個字符

最低的呢:
$ man awk | wf 99999 | tail -n 25 | pr -c4 -t -w80
1 typically         1 under          1 values              1 wc
1 u                    1 underscores 1 variations        1 we
1 unaltered         1 unlike        1 variety              1 whidbey
1 unambiguous       1 unnecessary 1 vdiesp              1 writing
1 unbuffered        1 unsafe        1 vertical          1 xaxbxcx
1 unchanged         1 usually        1 via                  1 xhh
1 undefined
我的path
echo $PATH
/home/owen/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

這個程序比較有意思,我們可以算出awk手冊里使用了多少個不重復的單詞,才1014個,99999這個數沒有實際意義,只是很大而已
$ man awk | wf 99999 | wc -l
1014

高頻詞匯(頻率在5次以上,包括5次)個數,盡然是這么得少!
$ man awk | wf 99999 | awk ‘$1 >= 5’ | wc -l
220

22. 學以致用: 標記和自動目錄生成
$ more shell筆記.txt | grep -E ‘#’

#chapter 2 shell basic
#chapter 3 search and substitution
#chapter 4 text process tools
#chapter 5 the magic power of pipe

more shell筆記.txt | grep -E ‘^[0-9]+\.’ | sed ‘s/^/@-/’
@-1. 訪問腳本從命令行接收到的參數:$n
@-2. 在shell腳本執行時,使用-x打開腳本執行跟蹤功能。如: $ sh -x nusers.sh
@-3. 列出系統所支持的所有語言: locale -a
@-4. shell BRE(Basic RE) and ERE(Extended RE)正則表達式簡記:
@-5. 向后引用: backreferences
@-6. POSIX字符集: [:alpha:] @-7. ERE(Extended RE)
@-8. 額外的GNU正則表達式運算符: \w
@-9. 進行文本查找替換: sed(steam editor)
@-10. 查看系統的密碼信息: /etc/passwd
@-11. 從文本中剪貼部分內容: cut
@-12. 連接2個文件,基于字段:join
@-13. 重新編排字段: awk
@-14. 文本排序: sort
@-15. 去除重復: uniq
@-16. 簡單的文本格式化命令: fmt
@-17. 計算行數、字數和字符數: wc
@-18. 查看標準輸入的前n條記錄,或是文件列表中的前n條,或后n條: head, tail
@-19. 文字解謎好幫手puzzle-help.sh文件: example
@-20. 轉換或者刪除字符:tr
@-21. 統計一篇文章中單詞出現頻率: wf
@-22. 學以致用: 標記和自動目錄生成

使用sed命令給每條數據添加一個@-前綴,以便與真正的目錄混淆。

#chapter 6 variables, repetitions

23. 設置或修改環境變量: export
PATH=$PATH:/home/owen/bin
export PATH
打印環境變量export -p

24. 從shell中刪除變量于函數: unset
$ foo=123
$ echo $foo
123
$ unset foo
$ echo $foo
使用unset -f function_name刪除函數,默認為-v即刪除變量

25. 參數展開: ${varname:-word}
替換運算:
${varname:-word}  如果varname存在且非Null,則返回其值;否則返回word。用途: 如果變量未定義,則使用默認值

${varname:=word}  如果varname存在且非Null,則返回其值;否則設置它的值為word,并返回其值。用途: 如果變量未定義,則設置變量為默認值

${varname:+word}  如果varname存在且非Null,則返回word;否則返回null。用途: 為測試變量的存在。

${varname:?message}  如果varname存在且非Null,則返回其值;否則顯示varname:message,并退出當前命令或腳本。用途: 捕捉由于變量未定義所導致的錯誤
$ echo ${vars:?”undefined, pls check it”}
bash: vars: undefined, pls check it

注意上面的${varname:-word}每個冒號(:)都是可選的,如果沒有冒號,條件變為“如果varname存在”,也就是可以為空

更多模式匹配
$ p=/home/jwu/cases/long.file.name
$ echo $p
/home/jwu/cases/long.file.name

${variable#pattern}  如果模式匹配于變量的開頭處,則刪除匹配的最短部分,返回剩下的部分
$ echo ${p#/*/}
jwu/cases/long.file.name

${variable##pattern}  如果模式匹配于變量的開頭處,則刪除匹配的最長部分,返回剩下的部分
$ echo ${p##/*/}
long.file.name

${variable%pattern}  如果模式匹配于變量的結尾處,則刪除匹配的最短部分,返回剩下的部分
$ echo ${p%.*}
/home/jwu/cases/long.file

${variable%%pattern}  如果模式匹配于變量的結尾處,則刪除匹配的最長部分,返回剩下的部分
$ echo ${p%%.*}
/home/jwu/cases/long

注意,這里使用的pattern,以及shell里其他的地方,如case語句等,不同于前面正則表達式的模式匹配。如上,這里*代表任何一個符號,而.只代表點號本身。

26. POSIX標準化字符從長度運算符: ${#variable}返回$variable值的長度
$ d=diversification
$ echo $d
diversification
$ echo ${#d}
15

27. shell特殊變量,訪問參數: $#, $@, $*
設置參數: $ set — hello “hi there” greeting
$#  傳遞到shell腳本或函數的參數總數
$@  傳遞進來的命令行參數,置于雙引號(“”)內,會展開為個別的參數
$ for i in $@
> do echo i is $i
> done
i is hello
i is hi
i is there
i is greeting
注意上面的hi there之間的空格丟失了
$ for i in “$@”
> do echo i is $i
> done
i is hello
i is hi there
i is greeting
加上””會得到每個參數
$*  傳遞進來的命令行參數,置于雙引號(“”)內,會展開為一個單獨的參數

28. shell運算符與C語言類似: + – * /
運算置于$((…))之內,注意是圓括號
具體參考運算表
例:
$((3 && 2))
1
$ echo $((3 > 2))
1
$ echo $((3 > 4))
0
$ echo $(( (3 > 2) || (3 > 4) ))
1
與C及其衍生語言C++, Java, and awk等相同,非0值表示true。

29. 退出狀態: $?
$ echo hello
hello
$ echo $?
0
$ e s
e: command not found
$ echo $?
127
POSIX的結束狀態
0    命令成功退出
其他狀態都是失敗退出,如
127  命令找不到

可以在shell腳本中傳遞一個退出值給它的調用者,如exit 42

30. 判斷語句: if-elif-else-fi
if pipeline
then …
elif pipeline
then …
else …
fi

31. 邏輯判斷: NOT, AND, OR
NOT  if ! (…)
AND  (…) && (…)
OR   (…) || (…)

32. test命令: if…
if [ $# -ne 1 ] then
echo Usage: finduser username >&2
exit 1
fi
主要的數字比較有
-eq  equal
-ne  not equal
-lt  less than
-gt  great than
-le  less or equal
-ge  great or equal

#chapter 7 input/output, file, and commands execute

to be continue…

以上就是關于“Linux系統編程常用命令有哪些”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永登县| 林周县| 吉木乃县| 泾源县| 三台县| 乌恰县| 万全县| 黔南| 武隆县| 潮安县| 建平县| 达尔| 明水县| 大洼县| 桃源县| 城口县| 特克斯县| 永吉县| 铜山县| 丽江市| 伊宁市| 合作市| 灵寿县| 辽宁省| 泽州县| 乌苏市| 登封市| 平潭县| 汽车| 宜良县| 枣阳市| 平泉县| 江安县| 临江市| 龙里县| 平定县| 化州市| 内丘县| 大埔县| 灵武市| 乌拉特中旗|