Unix-Linux程序環(huán)境復習_第1頁
Unix-Linux程序環(huán)境復習_第2頁
Unix-Linux程序環(huán)境復習_第3頁
Unix-Linux程序環(huán)境復習_第4頁
Unix-Linux程序環(huán)境復習_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

復習

2023/2/311.3Linux操作環(huán)境-8Linux文件類型流式文件,即把文件的內容看做是一系列有序的無格式的字節(jié)流。普通文件普通文件指的是計算機用戶和操作系統(tǒng)用于存放數據、程序等信息的文件。文本文件,基于字符編碼的文件,ASCII,UNICODE,UTF-8,GBK,GB2312,GB18030.二進制文件,基于值編碼的文件,由具體的應用程序指定或區(qū)分某個值是什么意思目錄文件鏈接文件,又稱符號鏈接文件。設備文件,Linux系統(tǒng)把每一種I/O設備映射為一個設備文件。(命名)管道文件,又稱先進先出(FIFO)文件,主要用于在進程間傳遞數據。如何查看文件類型?ls-l-,d,l,b,c,分別代表普通、目錄、鏈接、塊設備、字符設備22023/2/3leo@leo-VirtualBox:~$ls-l/bin總用量8632-rwxr-xr-x1rootroot9207884月32012bash-rwxr-xr-x1rootroot3021612月152011bunzip2-rwxr-xr-x1rootroot16396724月142012busybox-rwxr-xr-x1rootroot3021612月152011bzcatlrwxrwxrwx1rootroot66月222014bzcmp->bzdiff…leo@leo-VirtualBox:~$ls-l/dev總用量0brw-rw1rootdisk8,09月615:33sdacrw-rw-rw-1roottty5,09月615:33ttydrwxr-xr-x2rootroot809月615:33bsgcrwT1rootroot10,2349月615:33btrfs-controldrwxr-xr-x3rootroot609月615:33bus1.3Linux操作環(huán)境-93Linux的文件訪問權限3類用戶文件所有者,組用戶,其他用戶3種權限讀,寫,執(zhí)行用戶與權限的組合3種特殊權限SUID,SGID,Stickybitleo@leo-VirtualBox:~$ls-l/etc/shadow-rw-r1rootshadow118510月232014/etc/shadowleo@leo-VirtualBox:~$ls-l/usr/bin/passwd-rwsr-xr-x1rootroot412844月92012/usr/bin/passwdleo@leo-VirtualBox:~$ls-l-d/tmpdrwxrwxrwt9rootroot40969月620:49/tmpmanLinux的系統(tǒng)手冊基本用法:man[選項][章節(jié)]手冊頁…man–i1Ls9個章節(jié)命令文檔一般都保存在/usr/share/man目錄或其子目錄下$man-wls/usr/share/man/man1/ls.1.gz2.1

獲取幫助2023/2/34man顯示一個man手冊頁有哪些章節(jié)在所有手冊頁中查找指定的關鍵字$man-fmanman(7)-macrostoformatmanpagesman(1)-aninterfacetotheon-linereferencemanuals$man-ksprintfasprintf(3)-printtoallocatedstringsprintf(3)-formattedoutputconversionvasprintf(3)-printtoallocatedstringvsprintf(3)-formattedoutputconversion在文檔中瀏覽翻閱2.1

獲取幫助5管道Linux中很重要的一種通信方式。作用是把左邊命令1的輸出直接作為右邊命令2的的輸入。使用格式: 命令1|命令2$ls-l|wc-l2.2通配符、引號、管道和輸入輸出重定向2023/2/36輸入、輸出重定向三個標準文件0

標準輸入 鍵盤1

標準輸出 終端屏幕2

標準錯誤輸出

終端屏幕輸入重定向輸入可以不來自鍵盤,而來自一個指定的文件。格式: 命令<文件名$wc-l</etc/passwd2.2通配符、引號、管道和輸入輸出重定向2023/2/372023/2/32.6編輯文本文件vi“VisualInterface”的縮寫。類Unix系統(tǒng)中最常用的編輯器。vim:VIImproved.Linux下的vi命令實際是一個vim命令別名或到vim命令文件的符號連接。和一般文本編輯器的不同之處:多模式編輯器,尤其適合編碼。命令模式輸入模式末行模式8sort對文本文件的各行進行排序。文本的順序由系統(tǒng)所使用的字符集決定。格式: sort[option]…[file]…如果不指定文件,則排序內容來自標準輸入。排序的比較操作是依據從每一行中提取的一個或多個字段來進行的。默認情況下,以空白字符分隔每個字段。2023/2/392.7文件內容操作命令2.8文件的復制、移動、鏈接和歸檔cp選項-d 保留符號鏈接(拷貝鏈接本身)-f,--force 覆蓋目標文件并且不提示-i,--interactive 覆蓋前詢問-n 不覆蓋已存在的文件-p 保留文件的屬性--parents 復制前在目標目錄創(chuàng)建源文件路徑中的所有

目錄-R,-r,--recursive遞歸復制目錄-u,--update 只在源文件比目標文件新,或目標文件不存

在時才進行復制-v,--verbose 顯示詳細的進行步驟2023/2/310$cp*.txtsubdir/$mkdirrecurse$cp-rsubdir/recurse/$lsrecurse/subdir$lsrecurse/subdir/1.txt2.txt3.txtcreate_by_cat.txttosort2.txttosort.txt$cp-asubdir/archive$lsarchive/1.txt2.txt3.txtcreate_by_cat.txttosort2.txttosort.txt$mkdirother$cp-tother/1.txt3.txt$lsother1.txt3.txtmv將源文件重命名為目標文件,或將源文件移動至指定目錄。格式 mv[OPTION]...SOURCEDEST or mv[OPTION]...SOURCE...DIRECTORY or mv[OPTION]...-tDIRECTORYSOURCE...選項-f,--force 覆蓋前不詢問-i,--interactive 覆蓋前詢問-v,--verbose 顯示詳細信息示例$mv1.txtone.txt$ls-l1.txtone.txtls:1.txt:Nosuchfileordirectory.-rw-r--r--1leoleo32182012-09-2021:34one.txt$mv-f*.txtother/$lsother/1.txt2.txt3.txtcreate_by_cat.txtone.txttosort2.txttosort.txt112.8文件的復制、移動、鏈接和歸檔mv將源文件重命名為目標文件,或將源文件移動至指定目錄。格式 mv[OPTION]...SOURCEDEST or mv[OPTION]...SOURCE...DIRECTORY or mv[OPTION]...-tDIRECTORYSOURCE...選項-f,--force 覆蓋前不詢問-i,--interactive 覆蓋前詢問-v,--verbose 顯示詳細信息示例$mv1.txtone.txt$ls-l1.txtone.txtls:1.txt:Nosuchfileordirectory.-rw-r--r--1leoleo32182012-09-2021:34one.txt$mv-f*.txtother/$lsother/1.txt2.txt3.txtcreate_by_cat.txtone.txttosort2.txttosort.txt122.8文件的復制、移動、鏈接和歸檔133.2Shell變量變量的賦值與引用命名:由字母、數字或下劃線組成,并且只能以字母或下劃線開頭,大小寫的意義是不同的。弱類型的語言,變量存儲的一切值都是字符串。但是必要的時候,只要是由數值構成的字符串,也可對其執(zhí)行數值操作。變量賦值的方式: 變量名=變量值“=”兩邊不能有任何空格;當變量值中包含空格時,應為其加上引號。引用變量: $變量名$str="Hello,world"$echo$strHello,worldShell變量不需要預先定義,而且可以引用未賦過值的變量。14變量的賦值與引用$str='world!'$echoHello,$strHello,world!在字符串中可以引用變量,使其值成為本字符串的一部分。在變量名后面緊跟一個由非空白字符開始的字符串時,應該用花括號“{}”將變量名括起來.$position=/usr/include/$cat${position}termio.h3.2Shell變量15命令替換將一個或多個命令的執(zhí)行結果賦值給變量兩種方式反引號$(…)$str=`pwd;who`$echo$str/home/leo/shleopts/162015-10-2422:27(:0)$position=$(pwd||who)$echo$position/home/leo/sh3.2Shell變量變量屬性聲明16使用內部命令declare或typeset

限定變量的屬性。常用選項-r 只讀-i 整數-a 數組-f 函數-x 導出變量$declare-rSIZE=100$SIZE=20-bash:SIZE:readonlyvariable$n=20$n=n+30$echo$nn+30$declare-in$n=20$n=n+30$echo$n503.2Shell變量17變量引用操作符在引用變量時進行額外的判斷或替換操作。字符串替換${varname:-word}如果varname存在且非空串,則返回varname的值,否則返回word。作用: 如果變量未定義,則取默認值。$unsetstr$echo${str:-"blank"}blank$str="somecontent"$echo${str:-"blank"}somecontent3.2Shell變量18變量引用操作符模式匹配替換${varname%pattern}如果pattern匹配varname的尾部,則刪除最短匹配部分,并返回剩余部分,varname本身不變。$filepath=/home/alice/major.minor.ext$echo${filepath%.*}/home/alice/major.minor${varname%%pattern}如果pattern匹配varname的尾部,則刪除最長匹配部分,并返回剩余部分,varname本身不變。$filepath=/home/alice/major.minor.ext$echo${filepath%%.*}/home/alice/major3.2Shell變量19變量引用操作符模式匹配替換${variable/pattern/string}${variable//pattern/string}將varname的最長匹配部分替換為string,并返回替換后的串,varname本身不變。第一種格式僅替換第一次匹配的子串,第二種格式會替換所有匹配的子串。如果模式以“#”開頭,則意為必須匹配varname的首部,如果模式以“%”開頭,則意為必須匹配varname的尾部。如果string為空串,匹配部分將被刪除。如果varname為“@”或“*”,操作將被依次用于每個位置參數,并且擴展為結果列表。$filepath=/home/alice/major.minor.ext$echo${filepath/alice/tom}/home/tom/major.minor.ext$echo$PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:$JAVA_HOME/bin$echo-e${PATH//:/\n}/usr/local/sbinn/usr/local/binn/usr/sbinn/usr/binn/sbinn/binn/usr/gamesn$JAVA_HOME/bin$echo-e${PATH//:/"\n"}/usr/local/sbin/usr/local/bin/usr/sbin/usr/bin/sbin/bin/usr/games$JAVA_HOME/bin3.2Shell變量20位置參數和特殊變量位置參數也稱位置變量。運行Shell腳本程序時,命令行Shell傳遞給腳本的參數,以及在Shell腳本程序中調用函數時傳遞給函數的參數。位置變量的名稱是以0,1,2,...這些整數命名的,相應地以$0,$1,$2,…等進行引用。0對應命令名(腳本名),1對應第一個實參,2對應第二個實參,...。cmd p1 p2 p3 p4… p10 p11$0 $1 $2 $3 $4… ${10} ${11}3.2Shell變量21條件測試test,文件屬性測試$[-d/tmp];echo$?0$[-w/etc/passwd];echo$?13.3控制結構22if語法program3-6:if.sh#!/bin/bashecho'typeintheusername.'readuserifgrep$user/etc/passwd>/tmp/null&&who|grep$user;thenecho"$userhasloggedinthesystem."cp/tmp/null~/me.tmprm/tmp/nullelseecho"$userhasnotloggedinthesystem."fiif語句唯一可測試的內容是命令退出狀態(tài),也就是說,測試條件是一或多條命令。if測試條件1;then命令組1[elif測試條件2];then

命令組2][else命令x]fi3.3控制結構if測試條件1then命令組1[elif測試條件2]then

命令組2][else命令x]fi$sourceif.shtypeintheusername.leoleopts/02012-09-2510:23(12)leohasloggedinthesystem.$sourceif.shtypeintheusername.alicealicehasnotloggedinthesystem.23case語法program3-7:case.sh#!/bin/bashecho"pleasechoseeither1,2or3"echo"[1]ls-l$1"echo"[2]cat$1"echo"[3]quit"readresponsecase$responsein1)ls-l$1;;2)cat$1;;3)echo"goodbye"esac每個模式字符串后面可有一條或多條命令,其中最后一條命令必須以兩個分號(即;;)結束。case的退出狀態(tài)(返回值)是整個結構中最后執(zhí)行的那個命令的退出狀態(tài),若沒有執(zhí)行任何命令,則退出狀態(tài)為零。case

字符串in模式字符串1)

命令

...

命令;;模式字符串2) 命令

命令;;…模式字符串n)

命令 …

命令;;

esac3.3控制結構24while語法while測試條件do

命令表doneprogram3-10:while.sh#!/bin/bashwhile[$1]doif[-f$1];thenecho-e"\ndisplay:$1"cat$1elseecho"$1isnotafilename."fishiftdone測試條件的使用方式和”if”語句一樣。while測試條件;do

命令表done$sourcewhile.shfirst.shposvar.shdisplay:first.sh#!/bin/bashcd/tmpecho"Hello,world!"display:posvar.sh#!/bin/bashecho'Parameternumber:'$#echo'Alldigitvariables:'$0$1$2$3$4$5$6$7$8$9${10}${11}echo'$*:'"$*"echo'$@:'"$@"3.3控制結構25until語法program3-11:until.sh#!/bin/bashuntil[-z"$2"];docp$1$2shift2doneif[-n"$1"];thenecho"badparameter!"fi同“while”,但循環(huán)在測試條件為真時結束until測試條件;do

命令表done$sourceuntil.shif.shif2.shwhile.shwhile2.sh$ls*2.shif2.shwhile2.sh3.3控制結構until測試條件do

命令表done26for兩種使用方式:值表方式&算術表達式方式值表方式語法program3-12:for.sh#!/bin/bashfordayinMondayWednesdayFridaySundaydoecho$daydone循環(huán)變量的值依次取自<值表>。for變量[in<值表>];do命令表done$sourcefor.shMondayWednesdayFridaySunday$week=(MonTueWed)$foriin"${week[@]}";doecho$i;doneMonTueWed3.3控制結構27第一個C程序編譯選項-E 僅進行預處理,不進行其他操作。助于發(fā)現宏錯誤。-S 編譯到匯編語言,不進行其他操作。-c 編譯、匯編到目標代碼,不進行鏈接-Wall 盡可能多地顯示警告信息。-Werror 將所有的警告當作錯誤處理。-g 在可執(zhí)行文件中包含標準調試信息。-I

設置頭文件的路徑,可以設置多個,默認路徑“/usr/include”。-L

設置庫文件的路徑,可以設置多個,默認路徑“/usr/lib”。-l

設定編譯所需的庫名稱,如果一個庫的文件名為“l(fā)ibxxx.so”那

么它的庫名稱為“xxx”。4.1gcc編譯器$gcc-op.c-Efirst.c$catp.c#1"first.c"#1"<built-in>"#1"<command-line>"#1"first.c"#1"/usr/include/stdio.h"134…externvoidfunlockfile(FILE*__stream)__attribute__((__nothrow__));#936"/usr/include/stdio.h"34#2"first.c"2intmain(void){printf("Helloworld!\n");}$gcc-Sfirst.c$catfirst.s.file"first.c".section.rodata.LC0:.string"Helloworld!".text.globlmain.typemain,@functionmain:…….LFE0:.sizemain,.-main.ident"GCC:(Ubuntu/Linaro4.6.1-9ubuntu3)4.6.1".section.note.GNU-stack,"",@progbits$gcc-cfirst.c$ls-lfirst.o-rw-rw-r--1leoleo102811月2009:39first.o$gcc-Wall-ofirstfirst.cfirst.c:Infunction‘main’:first.c:6:1:warning:controlreachesendofnon-voidfunction[-Wreturn-type]$rmfirst$ls1.txtfirst.cfirst.ofirst.sp.c$gcc-Werror-Wall-ofirstfirst.cfirst.c:Infunction‘main’:first.c:6:1:error:controlreachesendofnon-voidfunction[-Werror=return-type]cc1:allwarningsbeingtreatedaserrors$ls1.txtfirst.cfirst.ofirst.sp.c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論