鸟哥的 Linux 私房菜 Linux 的 26 个命令 Shell 脚本教程 Linux 命令大全
|
|
光标
- up(方向键上) 可以调出输入历史执行记录,快速执行命令
- down(方向键下) 配合 up 选择历史执行记录
- Home 移动光标到本行开头
- End 移动光标到本行结尾
- PgUp 向上翻页
- PaDN 向下翻页
- ctrl + c 终止当前程序
- Tab 补全
Tab
补全是非常有用的一个功能,可以用来自动补全命令或文件名,省时准确。- 未输入状态下连按两次
Tab
列出所有可用命令 - 已输入部分命令名或文件名,按
Tab
进行自动补全,多用你就肯定会喜欢的了。
- 未输入状态下连按两次
- echo:显示变量内容;用于在shell中打印shell变量的值,或者直接输出指定的字符串。linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下echo的用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
语法:echo [选项]... [参数...]
参考:echo命令 - printf:格式化并输出结果到标准输出。
语法:printf format-string [arguments...]
参考:printf命令 参考:shell printf命令:格式化输出语句 参考:bash之printf (分享) - env:显示目前系统中主要的默认变量内容;
用于显示系统中已存在的环境变量,以及在定义的环境中执行指令。该命令只使用"-"作为参数选项时,隐藏了选项"-i"的功能。若没有设置任何选项和参数时,则直接显示当前的环境变量。
如果使用env命令在新环境中执行指令时,会因为没有定义环境变量"PATH"而提示错误信息"such file or directory"。此时,用户可以重新定义一个新的"PATH"或者使用绝对路径。
语法:env [选项]... [-] [名称=值]... [命令 [参数]...]
参考: - 变量设定规则:单引号与双引号的最大不同在于双引号仍然可以保有变量的内容,但单引号内仅能是一般字符,而不会有特殊符号;
- export:export 可以将一般自定义的变量变成环境变量;
一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执 行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。
说明:自己理解,通过 export 的变量,在其子文件中可以使用,例如在 a.sh 中 export user=Alex,同时在文件中写入 bash b.sh,然后在 b.sh 中直接写入 echo $user,则运行 a.sh 的时候就会调用 b.sh 然后打出 Alex,但是直接运行 b.sh 就不能打出来!
语法:export [-fnp][变量名称]=[变量设置值]
参考:export命令 - declare:用于声明和显示已存在的shell变量。当不提供变量名参数时显示所有shell变量。declare命令若不带任何参数选项,则会显示所有shell变量及其值。declare的功能与typeset命令的功能是相同的。
语法:declare(选项)(参数)declare(选项)(参数)export(选项)(参数)
参考:declare命令 - 变量的有效范围:
- 其他注意事项:
- read:变量内容是由用户由键盘输入的;
语法:read(选项)(参数)read(选项)(参数)
参考:read命令 - $RANDOM:随机取随机数;
echo $(($RANDOM%)) #-25随机整数
echo `expr $RANDOM % ` #-25随机整数 - eval:主要是用来做为变量的『迭代』用的;
- 历史指令记录数据:
- source:在当前bash环境下读取并执行FileName中的命令。该filename文件可以无"执行权限"
语法:source FileName
参考:source、sh、bash、./执行脚本的区别 - cut:用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令。
语法:cut [选项]... [文件]...
参考:cut命令 - wc:用来计算数字。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。
语法:wc [选项]... [文件]...
参考:wc命令 - uniq:这个指令用来将『重复的行删除掉只显示一个』;用于报告或忽略文件中的重复行,一般与sort命令结合使用。
语法:uniq [选项]... [文件]...
参考:uniq命令 - tee:用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin。简单的说就是把数据重定向到给定文件和屏幕上。
语法:tee [选项]... [文件]...
参考:tee命令 - tr:可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。
语法:tr [选项]... SET1 [SET2]...
参考:tr命令 - split:可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等。
语法:split [选项]... [输入 [前缀]]...
参考:split命令 - wget:用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。
语法:wget [选项]... [URL]...
说明:下载:
-t,--tries=NUMBER 设置重试次数为 NUMBER(0 代表无限制)。
--retry=NUMBER 即使拒绝连接也是重试。-c,--continue 继续下载部分下载的文件
-T,--timeout=SECONDS 将所有超过设为 SECONDS 秒。
--retry=NUMBER 即使拒绝连接也是重试。HTTP 选项:
--http-user=USER 设置 http 用户名为 USER。
--http-password=PASS 设置 http 密码为 PASS。FTP 选项:
--ftp-user=USER 设置 ftp 用户名为 USER。
--ftp-password=PASS 设置 ftp 密码为 PASS。wget http://112.124.15.130/res/linuxde_man/images/s-ad.jpg
wget http://oceandata.sci.gsfc.nasa.gov/cgi/getfile/T20152742015304.L3m_MO_SST4_sst4_4km.nc参考:wget命令
- bzip2:用于创建和管理(包括解压缩)“.bz2”格式的压缩包。
语法:bzip2(选项)(参数)
说明:-d,--decompress (强制)执行解压缩。
-z,--compress 强制执行压缩
参考:bzip2命令 - let:是bash中用于计算的工具,提供常用运算符还提供了方幂**运算符。在变量的房屋计算中不需要加上$来表示变量,如果表达式的值是非0,那么返回的状态值是0;否则,返回的状态值是1。
语法:let arg [arg ...] #arg代表运算式let arg [arg ...] #arg代表运算式参考:let命令
- su:用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。
语法:su(选项)(参数)
参考:su命令 - seq:http://man.linuxde.net/seq
用法:seq [选项]... 尾数
或:seq [选项]... 首数 尾数
或:seq [选项]... 首数 增量 尾数
以指定增量从首数开始打印数字到尾数。-f, --format=格式 使用printf 样式的浮点格式
-s, --separator=字符串 使用指定字符串分隔数字(默认使用:\n)
-w, --equal-width 在列前添加0 使得宽度相同
--help 显示此帮助信息并退出
--version 显示版本信息并退出如果省略了首数或者增量,则默认其值为1,即使这样尾数仍小于首数。
首数、增量和尾数均以浮点数形式解释。当首数小于尾数时增量一般为正值,
相反在首数大于尾数时增量一般为负数。
指定的格式必须适用于显示"double"类型的参数;当首数、增量和尾数均为指定
精确度的定点十进制数时默认为"%.精确度f",否则默认为"%g"。
用于产生从某个数到另外一个数之间的所有整数。用于产生从某个数到另外一个数之间的所有整数。用于产生从某个数到另外一个数之间的所有整数。来自: http://man.linuxde.net/seq
用于产生从某个数到另外一个数之间的所有整数。用于产生从某个数到另外一个数之间的所有整数。用于产生从某个数到另外一个数之间的所有整数。用于产生从某个数到另外一个数之间的所有整数。用于产生从某个数到另外一个数之间的所有整数。用于产生从某个数到另外一个数之间的所有整数。用于产生从某个数到另外一个数之间的所有整数。 - :
- :用于产生从某个数到另外一个数之间的所有整数。
- Shell 提示符:输入代码时候,前面默认显示的部分。
PS1:控制默认命令行提示符的格式。
PS2:控制后续命令行提示符的格式。(连续输入的时候,显示的格式)
- man 命令:用来访问存储在 Linux 系统上的手册页面。点击“Q”退出手册页面。即 Mannual。
语法:man 命令名称
- info:与
man
不同的是,可以像浏览网页一样在各个节点中跳转。 - help:命令选项的简单介绍。
语法:命令名称 --help
- date:以给定的格式显示当前时间,或是设置系统日期。
语法:date [选项]... [+格式]
or
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
参考:Linux命令学习总结:date命令 参考:Linux date命令 - 显示和设置系统日期与时间
- cd:该命令用来切换当前目录。cd 是change directory 的缩写。(类似工作空间)
语法:cd [-L|-P] [dir]
说明:单点符(.),表示当前目录;
双点附(..),切换到表示当前目录的父目录;(../..,上上层目录)
波浪线(~),切换到用户的宿主目录;
斜杠线(/),切换到用户的根目录;
连字符(-),返回进入当前目录所在目录,相当于撤回上面的操作。
参考:Linux命令学习总结:cd命令 - ls:列出 File 的信息(默认为当前目录)。ls 是 list 的缩写。
语法:ls [选项]... [文件]...
说明:ls -1,单行只显示一个文件
ls -l | grep ^-,只显示文件
ls -l | grep ^d,只显示文件夹
参考:ls命令的20个实用范例 参考:linux中ls命令全部参数
参考:ls命令只显示目录或文件(linux)
参考:linux ls 只显示文件或者文件夹 - pwd:列出当前路径或者工作空间。pwd 是 print working directory 的缩写。
语法:pwd [-LP]
参考:Linux命令学习总结:pwd命令 - mkdir:若指定目录不存在则创建目录。即 make directory。
语法:mkdir [选项]... 目录... - rm:删除文件。即 remove。
语法:rm [选项]... 文件...
参考:Linux命令学习总结:rm命令 - mkdir:删除指定的空目录。即 remove directory。
语法:rmdir [选项]... 目录...
参考:Linux命令学习总结:rmdir - cp:将源文件复制至目标文件,或将多个源文件复制至目标目录。即 copy。
语法:cp [选项]... [-T] 源文件 目标文件
or
cp [选项]... 源文件... 目标文件
or
cp [选项]... -t 目录 源文件...cp source dest ### 将 source 复制到 dest
cp folder/* dest ### 将 folder 下所有文件(不含子文件夹中的文件)复制到 dest
cp -r folder dest ### 将 folder 下所有文件(包含子文件夹中的所有文件)复制到 dest - mv:将源文件重命名为目标文件,或将源文件移动到指定目录。即 move。
语法:mv [选项]... [-T] 源文件 目标文件
or
mv [选项]... 源文件... 目标文件
or
mv [选项]... -t 目录 源文件...mv source folder ### 将 source 移动到 folder 下,完成后则为 folder/source
mv -i source folder ### 在移动时,若文件已存在则提示 **是否覆盖**
mv source dest ### 在 dest 不为目录的前提下,重命名 source 为 dest - cat:将[文件]或标准输入组合输出到标准输出(用于输出文件内容到 Terminal)。即 concatenate。
语法:cat [选项]... [文件]...#cat主要有三大功能:
#.一次显示整个文件:cat filename
#.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
#.将几个文件合并为一个文件:cat file1 file2 > file cat /etc/locale.gen ### 输出 locale.gen 的内容
cat -n /etc/locale.gen ### 输出 locale.gen 的内容并显示行号 - more:
more
与cat
相似,都可以查看文件内容,所不同的是,当一个文档太长时,cat
只能展示最后布满屏幕的内容,前面的内容是不可见的。这时候可用more
逐行显示内容。
语法:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [file ...]more /etc/locale.gen
more + /etc/locale.gen ### 从 行开始显示 - less:
less
与more
相似,不过less
支持上下滚动查看内容,而more
只支持逐行显示。
语法:less [参数] 文件
参考:每天一个linux命令(13):less 命令 - nano:
nano
是一个简单实用的文本编辑器,使用简单。
语法:nano [选项] [[+行,列] 文件名称]...nano filename ### 编辑 filename 文件,若文件不存在,则新打开一个文件,若退出时保存,则创建该文件 #编辑完后,ctrl+X 提示是否保存,按 y 确定保存即可(最后加一个回车)。
#注意:在使用过程中可用 ctrl+G 获取帮助。 - reboot:为重启命令。
- poweroff: 为关机命令。
- ping:主要用于测试网络连通,通过对目标机器发送数据包来测试两台主机是否连通,及延时情况。
语法:ping [参数] [主机名或IP地址]
参考:每天一个linux命令(54):ping命令 - grep:主要用于返回匹配的项目,支持正则表达式。
语法:grep [选项]... pattern [file]...grep PATTERN filename ### 返回所有含有 PATTERN 的行
grep zh_CN /etc/locale.gen ### 返回所有含 zh_CN 的行 grep 'linux' test.txt test2.txt #从多个文件中查找 grep ^u test.txt
cat test.txt |grep ^u #找出已u开头的行内容 grep ^[^u] test.txt
cat test.txt |grep ^[^u] #输出非u开头的行内容 #其他用法参考下面链接!!! - tar:主要用于创建归档文件,和解压归档文件,其本身是没有压缩功能的,但可以调用
gzip
、bzip2
进行压缩处理。
语法:tar [选项...] [file]...
说明:解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)tar -cvf filename.tar . ### 将当前目录所有文件归档,但不压缩,注意后面有个 ’.‘ ,不可省略,代表当前目录的意思
tar -xvf filename.tar ### 解压 filename.tar 到当前文件夹
tar -cvjf filename.tar.bz2 . ### 使用 bzip2 压缩
tar -xvjf filename.tar.bz2 ### 解压 filename.tar.bz2 到当前文件夹
tar -cvzf filename.tar.gz ### 使用 gzip 压缩
tar -xvzf filename.tar.gz ### 解压 filename.tar.gz 到当前文件夹
tar -tf filename ### 只查看 filename 归档中的文件,不解压 - ln:主要用于在两个文件中创建链接,链接又分为
Hard Links
(硬链接)和Symbolic Links
(符号链接或软链接),其中默认为创建硬链接,使用-s
参数指定创建软链接。
语法:ln [选项]... [-T] 目标 连接名(创建指定名称且指向指定目标链接)
or
ln [选项]... 目标(在当前目录创建指向目标位置的链接)
or
ln [选项]... 目标... 目录(在指定目录中创建指向指定目标的链接,下同)
or
ln [选项]... -t 目录 目标...
参考:每天一个linux命令(35):ln 命令 - passwd:用于改变用户登录密码。
语法:passwd [选项...] <账号名称>passwd ### 不带参数更改当前用户密码
passwd newuser ### 更改上述新建的 newuser 的用户密码
- whereis:用于查找文件、手册等。
语法:whereis [-bmsu] [BMS 目录名 -f ] 文件名$ whereis bash
bash: /usr/bin/bash /etc/bash.bashrc /etc/bash.bash_logout /usr/share/man/man1/bash..gz /usr/share/info/bash.info.gz
$ whereis -b bash ### 仅查找 binary
bash: /usr/bin/bash /etc/bash.bashrc /etc/bash.bash_logout
$ whereis -m bash ### 仅查找 manual
bash: /usr/share/man/man1/bash..gz /usr/share/info/bash.info.gz - find:也用于查找文件,但更为强大,支持正则,并且可将查找结果传递到其他命令。
语法:
参考:每天一个linux命令(22):find 命令的参数详解 - stat:提供文件系统上某个文件的所有状态信息。
语法:stat [选项]... 文件... - file:该命令用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的。
语法:file [选项]... 文件...
参考:Linux命令学习总结: file命令 - tail:依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容。(显示每个指定文件的最后 10 行到标准输出)
语法:tail [选项]... 文件...
参考:每天一个linux命令(15):tail 命令 - head:用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。(将每个指定文件的头 10 行显示到标准输出)
语法:head [选项]... 文件...
参考:每天一个linux命令(14):head 命令 - touch:将每个文件的访问时间和修改时间改为当前时间。
语法:touch [选项]... 文件...
参考:每天一个linux命令(9):touch 命令 - ps:ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
语法:ps [选项]
参考:每天一个linux命令(41):ps命令 - top:top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
语法:top [选项]
参考:每天一个linux命令(44):top命令 - kill:Linux 中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令。通常,终止一个前台进程可以 使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用 ps/pidof/pstree/top 等工具获取进程 PID, 然后使用kill命令来杀掉该进程。
语法:kill [选项] [进程号]
参考:每天一个linux命令(42):kill命令 - killall:用 于杀死指定名字的进程(kill processes by name)。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的 进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。
语法:killall [选项] [进程号]
参考:每天一个linux命令(43):killall命令 - sort:将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
语法:sort [选项]... [文件]...
or
sort [选项]... --files0-from=F
参考:linux sort 命令详解 参考:sort-鸟哥 - printenv:显示指定的环境变量的值。
语法:printenv [选项]... [变量]... - exit:用于退出shell,并返回给定值。在shell脚本中可以终止当前脚本执行。执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。
语法:exit [选项]
参考:exit命令 参考:exit(0)和exit(1)区别 - set:用主要是显示系统中已经存在的shell变量,以及设置shell变量的新变量值。使用set更改shell特性时,符号"+"和"-"的作用分别是打开和关闭指定的模式。set命令不能够定义新的shell变量。如果要定义新的变量,可以使用declare命令以变量名=值的格式进行定义即可。
语法:set [选项] [参数...]
参考:set命令 参考:set-鸟哥YGS-BNLI-T3@YGS-BNLI-T3-PC ~
$ set name YGS-BNLI-T3@YGS-BNLI-T3-PC ~
$ name="Alex" name=`cat 'file1.txt'` 表示将file1.txt的内容赋值给name YGS-BNLI-T3@YGS-BNLI-T3-PC ~
$ echo $name
Alex
- unset:用于删除已定义的shell变量(包括环境变量)和shell函数。unset命令不能够删除具有只读属性的shell变量和环境变量。
语法:unset [选项] [参数...]
参考:unset命令 参考:unset-鸟哥 - alias:用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时,用户必须使用单引号''将原来的命令引起来,防止特殊字符导致错误。
语法:alias [选项] [参数...]alias cls='clear'
cls #clear screen - test:是shell环境中测试条件表达式的实用工具。
语法:test [选项]
参考:test 命令 - expr:是一款表达式计算工具,使用它完成表达式的求值操作。
语法:expr 表达式
or
expr 选项
参考:expr命令 参考:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等 注意: result=`expr 2 + 3`
#注意里面的空格,都是必须的
result=$(expr $no1 + 5)
说明:expr的常用运算符:
加法运算:+
减法运算:-
乘法运算:\*
除法运算:/
求摸(取余)运算:%是一款表达式计算工具,使用它完成表达式的求值操作。是一款表达式计算工具,使用它完成表达式的求值操作。 - Shell变量
- Shell特殊变量
- Shell替换
- Shell运算符
- Shell注释
- 字符串:字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。
单引号字符串的限制:- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
参考:Shell字符串
- 数组:bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。
语法:在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的一般形式为。
array_name=(value ... value)
参考:Shell数组:shell数组的定义、数组长度 参考:array-鸟哥 - if else 语句:通过关系运算符判断表达式的真假来决定执行哪个分支。
语法:if·[·expression·]
then
Statement(s) to be executed if expression is true
fi
- or -
if·[·expression·]
then
Statement(s) to be executed if expression is true
else
Statement(s) to be executed if expression is not true
fi
- or -
if·[·expression 1·]
then
Statement(s) to be executed if expression 1 is true
elif·[·expression 2·]
then
Statement(s) to be executed if expression 2 is true
elif·[·expression 3·]
then
Statement(s) to be executed if expression 3 is true
else
Statement(s) to be executed if no expression is true
fi
注意:if、expression 和方括号([ ])之间必须有空格,否则会有语法错误。#!/bin/sh
a=
b=
if [ $a == $b ]
then
echo "a is equal to b"
fi
if [ $a != $b ]
then
echo "a is not equal to b"
fi参考:Shell if else语句 参考:shell中if条件字符串、数字比对,[[ ]]和[ ]区别 参考:6 Bash Conditional Expression Examples ( -e, -eq, -z, !=, [, [[ ..)
注意:if [ -e $file ] 用来判断文件是否存在
- case esac 语句:是一种多分枝选择结构。case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令。
语法:case 值 in
模式1)
command1
command2
command3
;;
模式2)
command1
command2
command3
;;
*)
command1
command2
command3
;;
esac
参考:Shell case esac语句 - for 循环:for 循环。
语法:for 变量 in 列表
do
command1
command2
...
commandN
done
循环文件夹中的所有文件名称for i in `ls`
do
echo $i
done参考:Shell for循环 参考:shell中for循环总结 参考:产生n位数序列如果不够n位的数字前边用0补齐,通过 bash而且不用循环,直接产生n个相同的字符组成的字符串
- while 循环:用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。
语法:while command
do
Statement(s) to be executed if command is true
done
参考:Shell while循环 - until 循环:until 循环执行一系列命令直至条件为 true 时停止。until 循环与 while 循环在处理方式上刚好相反。一般while循环优于until循环,但在某些时候,也只是极少数情况下,until 循环更加有用。
语法:until command
do
Statement(s) to be executed until command is true
done
说明:command 一般为条件表达式,如果返回值为 false,则继续执行循环体内的语句,否则跳出循环。
参考:Shell until循环 - break 和 continue 命令:在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,像大多数编程语言一样,Shell也使用 break 和 continue 来跳出循环。
说明:break命令允许跳出所有循环(终止执行后面的所有循环)。
continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。
参考:Shell break和continue命令 - 函数:函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。像其他编程语言一样,Shell 也支持函数。Shell 函数必须先定义后使用。
语法:function_name () {
list of commands
[ return value ]
}
- or -
function function_name () {
list of commands
[ return value ]
}
说明:函数返回值,可以显式增加return语句;如果不加,会将最后一条命令运行结果作为返回值。
Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值表示失败。如果 return 其他数据,比如一个字符串,往往会得到错误提示:“numeric argument required”。
参考:Shell函数:Shell函数返回值、删除函数、在终端调用函数 - 函数参数:在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...
说明:$# —— 传递给函数的参数个数。
$* —— 显示所有传递给函数的参数。
$@ —— 与$*相同,但是略有区别,请查看Shell特殊变量。
$? —— 函数的返回值。
参考:Shell函数参数 - 输入输出重定向:命令的输出不仅可以是显示器,还可以很容易的转移向到文件,这被称为输出重定向。
语法:command > file (输出重定向会覆盖文件内容)
command >> file (如果不希望文件内容被覆盖,可以使用 >> 追加到文件末尾)
command > /dev/null (如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null)
command > /dev/null 2>&1 (屏蔽 stdout 和 stderr)
说明:/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到”禁止输出“的效果。
参考:Shell输入输出重定向:Shell Here Document,/dev/null文件 参考:2> /dev/null的解释
参考:Linux下使用Shell脚本向FTP服务器上传或下载一个文件 - 文件包含:像其他语言一样,Shell 也可以包含外部脚本,将外部脚本的内容合并到当前脚本。
语法:.·filename
source filename
说明:两种方式的效果相同,简单起见,一般使用点号(.),但是注意点号(.)和文件名中间有一空格。###创建两个脚本,一个是被调用脚本 subscript.sh,内容如下: url="http://see.xidian.edu.cn/cpp/view/2738.html" ###一个是主文件 main.sh,内容如下: #!/bin/bash
. ./subscript.sh
echo $url参考:Shell文件包含
- vim 编辑器:Linux下的文本编辑器有很多种,vi 是最常用的,也是各版本Linux的标配。注意,vi 仅仅是一个文本编辑器,可以给字符着色,可以自动补全,但是不像 Windows 下的 word 有排版功能。
语法:vim [参数] [文件 ..]
or
vim [参数] -
or
vim [参数] -t tag
or
vim [参数] -q [errorfile]
参考:vim 编辑器 参考:linux系统中如何进入退出vim编辑器,方法及区别 - vi:是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能。
vi编辑器支持编辑模式和命令模式,编辑模式下可以完成文本的编辑功能,命令模式下可以完成对文件的操作命令,要正确使用vi编辑器就必须熟练掌握着两种模式的切换。默认情况下,打开vi编辑器后自动进入命令模式。
从编辑模式切换到命令模式使用“esc”键;
:wq:在命令模式下,执行存盘退出操作;
:w:在命令模式下,执行存盘操作;
:w!:在命令模式下,执行强制存盘操作;
:q:在命令模式下,执行退出vi操作;
:q!:在命令模式下,执行强制退出vi操作;
:e文件名:在命令模式下,打开并编辑指定名称的文件;
:n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件;
:f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例;
:set number:在命令模式下,用于在最左端显示行号;
:set nonumber:在命令模式下,用于在最左端不显示行号;
从命令模式切换到编辑模式使用“A”、“a”、“O”、“o”、“I”、“i”键。
语法:vi(选项)(参数)
参考:vi命令 参考:Linux中vi编辑器的使用详解 参考:怎么保存退出vi编辑 - :
- :
- :
- :
- :
- :
- :
- :
- :
- :
- :
- :