1。BasicOperationsa。export 显示所有的环境变量,如果你想获取某个变量的详细信息,使用echoVARIABLENAME。export Example:exportSHELLbinzshAWSHOMEUsersadnanadnan。awsLANGenUS。UTF8LCCTYPEenUS。UTF8LESSRechoSHELLusrbinzshb。whereis whereis使用系统自动构建的数据库来搜索可执行文件,源文件和手册页面。whereisname Example:whereisphpusrbinphpc。which 它在环境变量PATH指定的目录中搜索可执行文件。此命令将打印可执行文件的完整路径。whichprogramname Example:whichphpcxamppphpphpd。clear 清除窗口上的内容。1。1。FileOperations ls touch cat more head tail mv cp rm diff chmod gzip gunzip gzcat lpr lpq lprm a。ls 列出您的文件。ls有很多选项:l列出长格式的文件,其中包含文件的确切大小,拥有该文件的人员,有权查看该文件,以及何时进行上次修改。a列出所有文件,包括隐藏文件。有关此命令的更多信息,请检查此链接。lsoption Example:lsalrwxrxrx33adnanstaff1122Mar2718:44。drwxrwxrwx60adnanstaff2040Mar2115:06。。rwrr1adnanstaff14340Mar2315:05。DSStorerwrr1adnanstaff157Mar2518:08。bumpversion。cfgrwrr1adnanstaff6515Mar2518:08。config。inirwrr1adnanstaff5805Mar2718:44。config。override。inidrwxrxrx17adnanstaff578Mar2723:36。gitrwxrxrx1adnanstaff2702Mar2518:08。gitignoreb。touch 创建或更新您的文件。touchfilename Example:touchtrick。mdc。cat 它可以在UNIX或Linux下用于以下目的。在屏幕上显示文本文件复制文本文件合并文本文件创建新的文本文件catfilenamecatfile1file2catfile1file2newcombinedfiled。more 显示文件的第一部分(用空格移动并键入q以退出)。morefilenamee。head 输出文件的前10行。headfilenamef。tail 输出最后10行文件。用于f在文件增长时输出附加数据。tailfilenameg。mv 将文件从一个位置移动到另一个位置。mvfilename1filename2 filename1文件的源路径,filename2是目标路径。h。cp 将文件从一个位置复制到另一个位置。cpfilename1filename2 filename1文件的源路径,filename2是目标路径。i。rm 删除文件。在目录上使用此命令会给您显示一个错误:rm:directory:isadirectory。为了删除目录,你必须传递rf去递归删除目录中的所有内容。rmfilenamej。diff 比较文件,并列出他们的差异。difffilename1filename2k。chmod 让您更改文件的读取,写入和执行权限。chmodoptionsfilenamel。gzip 压缩文件。gzipfilenamem。gunzip 解压缩gzip压缩的文件。gunzipfilenamen。gzcat 让你查看gzip压缩文件,而不需要gunzip它。gzcatfilenameo。lpr 打印文件。lprfilenamep。lpq 查看打印机队列。lpq Example:lpqRankOwnerJobFile(s)TotalSizeactiveadnanad59demo399360bytes1stadnanad60(stdin)0bytesq。lprm 从打印队列移除某些内容。lprmjobnumber1。2。TextOperations awk grep wc sed sort uniq cut echo fmt tr nl egrep fgrep a。awk awk是处理文本文件最有用的命令。它一行一行地在整个文件上运行。默认情况下,它使用空格分隔字段。awk命令最常用的语法是awksearchpattern{}filetoparse 让我们采取以下文件etcpasswd。以下是此文件包含的示例数据:root:x:0:0:root:root:usrbinzshdaemon:x:1:1:daemon:usrsbin:usrsbinnologinbin:x:2:2:bin:bin:usrsbinnologinsys:x:3:3:sys:dev:usrsbinnologinsync:x:4:65534:sync:bin:binsync 所以现在让我们从这个文件只获取用户名。F指定在我们要基于哪个分隔字段。在我们的例子中:。{print1}意味着打印出第一个匹配字段。awkF:{print1}etcpasswd 运行上述命令后,您将获得以下输出。rootdaemonbinsyssync 有关如何使用awk的更多细节,请查看以下链接。b。grep 查找文件内的文本。您可以使用grep搜索与一个或多个正则表达式匹配的文本行,并仅输出匹配的行。greppatternfilename Example:grepadminetcpasswdkadminadmin::218:2:KerberosAdminService:varempty:usrbinfalsekadminchangepw::219:2:KerberosChangePasswordService:varempty:usrbinfalsekrbkadmin::231:2:OpenDirectoryKerberosAdminService:varempty:usrbinfalse 您还可以通过使用i选项强制grep忽略单词大小写。r可用于搜索指定目录下的所有文件,例如:grepradminetc w只搜索单词。有关grep详细信息,请查看以下链接。c。wc 告诉你一个文件中有多少行,多少单词和多少字符。wcfilename Example:wcdemo。txt745915915398400demo。txt 7459是行数,15915是单词数,398400是字符数。d。sed 用于过滤和转换文本的流编辑器。 example。txtHelloThisisaTest1234 用连字符替换所有空格sedsgexample。txtHelloThisisaTest1234 使用d替换所有的数字seds〔09〕dgexample。txtHelloThisisaTestdddde。sort 排序文本文件的行 example。txtfbcgaed sortexample。txtsortexample。txtabcdefg 随机化一个排序的example。txtsortexample。txtsortRbfacdgef。uniq 报告或省略重复的行 example。txtaababcdc 只显示example。txt的唯一行(首先你需要排序,否则看不到重叠)sortexample。txtuniqabcd 显示每行的唯一项,并告诉我找到了多少个实例sortexample。txtuniqc3a2b2c1dg。cut 从每行文件中删除部分。 example。txtredridinghoodwenttotheparktoplay 显示第2,7和9栏的空格作为分隔符cutdf2,7,9example。txtridingparkplayh。echo 显示一行文字 显示HelloWorldechoHelloWorldHelloWorld 用字母之间的换行显示HelloWorldechoneHelloWorldHelloWorldi。fmt 简单的最佳文本格式化程序 example:example。txt(1line)Loremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamerat,seddiamvoluptua。Atveroeosetaccusametjustoduodoloresetearebum。Stetclitakasdgubergren,noseatakimatasanctusestLoremipsumdolorsitamet。 将example。txt的行输出为20个字符的宽度catexample。txtfmtw20Loremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamerat,seddiamvoluptua。Atveroeosetaccusametjustoduodoloresetearebum。Stetclitakasdgubergren,noseatakimatasanctusestLoremipsumdolorsitamet。j。tr 翻译或删除字符 example。txtHelloWorldFooBarBaz! 把所有小写字母变成为大写catexample。txttrazAZHELLOWORLDFOOBARBAZ! 把所有的空格变成换行符catexample。txttrHelloWorldFooBarBaz!k。nl 显示文件的行数 example。txtLoremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamerat,seddiamvoluptua。Atveroeosetaccusametjustoduodoloresetearebum。Stetclitakasdgubergren,noseatakimatasanctusestLoremipsumdolorsitamet。 带行号显示example。txtnls。example。txt1。Loremipsum2。dolorsitamet,3。consetetur4。sadipscingelitr,5。seddiamnonumy6。eirmodtempor7。inviduntutlabore8。etdoloremagna9。aliquyamerat,sed10。diamvoluptua。At11。veroeoset12。accusametjusto13。duodoloresetea14。rebum。Stetclita15。kasdgubergren,16。noseatakimata17。sanctusestLorem18。ipsumdolorsit19。amet。l。egrep 打印匹配模式的行扩展表达式(别名为:grepE) example。txtLoremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamerat,seddiamvoluptua。Atveroeosetaccusametjustoduodoloresetearebum。Stetclitakasdgubergren,noseatakimatasanctusestLoremipsumdolorsitamet。 在其中显示Lorem或dolor的行egrep(Loremdolor)example。txtorgrepE(Loremdolor)example。txtLoremipsumdolorsitamet,etdoloremagnaduodoloreseteasanctusestLoremipsumdolorsitm。fgrep 打印匹配模式到的行FIXED模式匹配(别名为:grepF) example。txtLoremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporfoo(Loremdolor)inviduntutlaboreetdoloremagnaaliquyamerat,seddiamvoluptua。Atveroeosetaccusametjustoduodoloresetearebum。Stetclitakasdgubergren,noseatakimatasanctusestLoremipsumdolorsitamet。 在example。txt中找到具体的字符串(Loremdoloar)fgrep(Loremdolor)example。txtorgrepF(Loremdolor)example。txtfoo(Loremdolor)1。3。DirectoryOperations mkdir cd pwda。mkdir 生成一个新的目录。mkdirdirnameb。cd 执行这个,从一个目录转移到另外一个目录。cd 将你移动到主目录。此命令接受可选的dirname,将你移动到该目录。cddirnamec。pwd 告诉你你目前所在的目录。pwd1。4。SSH,SystemInfoNetworkOperations ssh whoami passwd quota date cal uptime w finger uname man df du last ps kill killall top bg fg ping whois dig wget scp a。ssh ssh(SSHclient)是一个用来在登录到远程机器并执行的命令的程序。sshuserhost 此命令还接受p可用于连接到特定端口的选项。sshpportuserhostb。whoami 返回当前登录用户名。c。passwd 允许当前登录的用户更改其密码。d。quota 显示您的磁盘配额。quotave。date 显示当前日期和时间。f。cal 显示月份的日历。g。uptime 显示当前的正常运行时间。h。w 显示谁在线i。finger Displaysinformationaboutuser。fingerusernamej。uname 显示内核信息。unameak。man 显示指定命令的手册。mancommandl。df 显示磁盘使用情况。m。du 显示文件名中文件和目录的磁盘使用情况(dus只给出一个总数)。dufilenamen。last 列出您最后登录的指定用户。lastyourUsernameo。ps 列出您的进程。psuyourusernamep。kill 使用您所提供的ID杀死(结束)进程。killPIDq。killall 用名称杀死所有进程。killallprocessnamer。top 显示当前活动的进程。s。bg 列出停止的或后台工作的J恢复在后台停止的Job。t。fg 前台化最近的Job。 Bringsthemostrecentjobintheforeground。u。ping Pings主机并输出结果。pinghostv。whois 获取域的whois信息。whoisdomainw。dig 获取域的DNS信息。digdomainx。wget 下载文件。wgetfiley。scp 在本地主机和远程主机之间或两台远程主机之间传输文件。 从本地主机复制到远程主机scpsourcefileuserhost:directorytargetfile 从远程主机复制到本地主机scpuserhost:directorysourcefiletargetfilescpruserhost:directorysourcefolderfargetfolder 此命令还接受P选项可用于连接到特定的端口。scpPportuserhost:directorysourcefiletargetfile2。BasicShellProgramming 在bash中你将编写第一行脚本文件,被叫做shebang。任何脚本中的这一行来确定脚本的执行能力,如独立的可执行文件,而不是在终端中预先键入sh,bash,python,php等。!binbash2。1。Variables 在bash中创建变量与其他语言类似。没有数据类型。bash中的变量可以包含数字,字符,字符串等。您无需声明变量,只需为其引用分配一个值即可创建它。 Example:strhelloworld 上面的一行创建一个变量str并给它赋值helloworld。通过放在变量名的开头来检索变量的值。 Example:echostrhelloworld 像其他语言一样,bash也有数组。数组是包含多个值的变量。数组的大小没有最大限制。bash中的数组为零。第一个元素被索引为元素0。在bash中创建数组有几种方法。以下给出了哪些。 Examples:array〔0〕valarray〔1〕valarray〔2〕valarray(〔2〕val〔0〕val〔1〕val)array(valvalval) 要在特定索引处显示值,请使用以下语法:{array〔i〕}whereiistheindex 如果没有提供索引,则假定为数组元素0。要了解数组中有多少值,请使用以下语法:{array〔〕} Bash也支持三元条件。下面是一些例子。{varname:word}如果varname存在且不为null,则返回其值;否则返回word{varname:word}如果varname存在且不为null,则返回其值;否则设置它,然后返回其值{varname:word}如果varname存在并且不为null,返回否则返回null{varname:offset:length}执行子字符串扩展。它返回varname的子字符串,从offset开始,最多为length的字符2。2StringSubstitution 检查一些关于如何操作字符串的语法{variablepattern}ifthepatternmatchesthebeginningofthevariablesvalue,deletetheshortestpartthatmatchesandreturntherest{variablepattern}ifthepatternmatchesthebeginningofthevariablesvalue,deletethelongestpartthatmatchesandreturntherest{variablepattern}ifthepatternmatchestheendofthevariablesvalue,deletetheshortestpartthatmatchesandreturntherest{variablepattern}ifthepatternmatchestheendofthevariablesvalue,deletethelongestpartthatmatchesandreturntherest{variablepatternstring}thelongestmatchtopatterninvariableisreplacedbystring。Onlythefirstmatchisreplaced{variablepatternstring}thelongestmatchtopatterninvariableisreplacedbystring。Allmatchesarereplaced{varname}returnsthelengthofthevalueofthevariableasacharacterstring2。3。Functions 几乎与任何编程语言一样,您可以使用函数以更逻辑的方式对代码段进行分组,或者实践递归的神圣艺术。声明函数只是编写函数myfunc{mycode}的问题。调用一个函数就像调用另一个程序一样,你只需要写上它的名字。functname(){shellcommands} Example:!binbashfunctionhello{echoworld!}hellofunctionsay{echo1}sayhelloworld! 当您运行上述示例时,该hello函数将输出world!。上述两个功能hello和say是相同的。主要区别是功能say。此功能打印其接收到的第一个参数。函数内的参数以与给脚本的参数相同的方式进行处理。2。4。Conditionals bash中的条件语句与其他编程语言相似。条件有许多形式,如最基本的形式是if表达式then语句,其中语句只有在表达式为真时执行。if〔expression〕;thenwillexecuteonlyifexpressionistrueelsewillexecuteifexpressionisfalsefi 有时,如果条件变得混乱,所以你可以使用相同的条件casestatements。caseexpressioninpattern1);pattern2);。。。esac ExpressionExamples:statement1statement2两边的条件都为truestatement1statement2其中一边为truestr1str2str1匹配str2str1!str2str1不匹配str2str1str2str1是否小于str2str1str2str1是否大于str2nstr1str1不为空(长度大于0)zstr1str1为空(长度为0)afile文件存在dfile文件存在,是一个目录efile文件存在;相同的affile文件存在,是一个常规文件(即不是目录或其他特殊类型的文件)rfile你有读权限rfile文件存在,不为空wfile你有写权限xfile你有文件的执行权限file1ntfile2file1isnewerthanfile2file1otfile2file1isolderthanfile2lt小于le小于或等于eq等于ge大于或等于gt大于ne不等于2。5。Loops bash中有三种不同类型的循环。for,while和until。 for语法:forx:1to10dobeginstatementsendforname〔inlist〕dostatementsthatcanusenamedonefor((update))dostatements。。。done while语法:dostatementsdone until语法:dostatementsdone3。Tricks设置一个别名 bashprofile可以通过运行后面的命令打开。nano。bashprofile aliasdockerloginsshwwwdataadnan。localp2222addyouraliasin。bashprofile快速去特定的目录 nano。bashrc exporthotellogsworkspacehotelapistoragelogs source。bashrc cdhotellogs4。Debugging 您可以通过传递不同的选项来轻松地调试bash脚本bash。例如n,不会运行命令并仅检查语法错误。vecho命令在运行它们之前。x命令行处理后的echo命令。bashnscriptnamebashvscriptnamebashxscriptname