• Linux常用命令大全(四)


    Linux常用命令大全(四)

    shell的特点

    ☆组合新命令 ☆提供了文件名扩展字符
    ☆直接使用shell的内置命令 ☆灵活地使用数据流
    ☆结构化的程序模块 ☆在后台执行命令
    ☆可配置的环境 ☆高级的命令语言

    shell的种类

    • (1)Bourne shell(简称sh)
    • (2)C shell(简称csh)
    • (3)Korn shell(简称ksh)
    • (4)Bourne Again shell(即bash)

    执行shell脚本的方式

    执行shell脚本的方式基本上有三种:

    (1)输入定向到shell脚本
     $ bash < 脚本名
    
    (2)以脚本名作为参数
    其一般形式是:  $ bash  脚本名  [参数]
    

    如果以目前shell(以•表示)执行一个shell脚本,则可以使用如下简便形式:
    $ • 脚本名 [参数]

    (3)将shell脚本的权限设置为可执行,然后在提示符下直接执行它。
     $ chmod  a+x  ex2
     $ PATH=$PATH:.
     $ ex2
    
    注意,此时该脚本所在的目录应被包含在命令搜索路径(PATH)中
    格 式 意 义

    !! 重复上一条命令,也就是“!-1”
    !n 重新执行第n条历史命令
    !-n 重新执行倒数第n条历史命令。!-1就等于! !
    !string 重新执行以字符串string开头的最近的历史命令行。
    !?string? 重新执行最近的、包含字符串string的那条历史命令
    !# 到现在为止所输入的整个命令行

    名称补全

    • 可以输入目录名或文件名的开头部分,然后按Tab键,Linux根据输入的字母查找以这些字母开头的目录或文件,并自动补全剩余的部分。
    字母+两次Tab键:显示以该字母开头的所有命令

    定义别名:

    一般语法格式为: alias [name[=value]]…
    • 如果没有指定参数,将在标准输出(屏幕)上显示别名清单
    • name别名名称,value别名所代表的内容
    • 定义别名时,往往用单引号将它代表的内容括起来,从而防止shell对其中的内容产生歧义,如对空格和特殊字符另作解释

    取消别名;

    • 如果想取消先前定义的别名,可使用如下命令:
    unalias name…
    • 可以一次将所有的别名都从别名表中删除,使用如下命令:
    unalias -a

    通配符
    1.一般通配符

    • *(星号),它匹配任意字符的0次或多次出现
    • ?(问号),它匹配任意一个字符
    • [ ](一对方括号),其中有一个字符组。其作用是匹配该字符组所限定的任何一个字符
    • !(惊叹号),如果它紧跟在一对方括号的左方括号([)之后,则表示不在一对方括号中所列出的字符

    2.模式表达式 ——是那些包含一个或多个通配符的字

    • *(模式表)——匹配给定模式表中“模式”的0次或多次出现,各模式之间以“|”分开(下同)
    • +(模式表)——匹配给定模式表中“模式”的1次或多次出现
    • ?(模式表)——匹配模式表中任何一种“模式”的0次或1次出现
    • @(模式表)——仅匹配模式表中给定“模式”的一次出现
    • !(模式表)——除给定模式表中的一个“模式”之外,可以匹配其他任何东西

    引号;

    1.双引号
    • 由双引号括起来的字符(除$、倒引号(`)和反斜线()外)均作为普通字符对待。
    2.单引号
    • 由单引号括起来的字符都作为普通字符出现
    3.倒引号
    • 倒引号括起来的字符串被shell解释为命令行,在执行时,shell会先执行该命令行,并以它的标准输出结果取代整个倒引号部分。
    • 倒引号还可以嵌套使用。但应注意,嵌套使用时内层的倒引号必须用反斜线()将其转义。

    . 特殊字符串引用的例外
    引用双引号、单引号和转意符都不能消除对echo命令有特殊功能的控制字串的特殊含义。这些控制字串是:
    \b 退格
    \c 显示后不换行
    \f 在终端上屏幕的开始处显示
    \n 换行
    \r 回车
    \t 制表符
    \v 垂直制表符
    \ 反斜杠

    输入、输出重定向

    • 自动打开三个标准文件,即标准输入文件(stdin),标准输出文件(stdout)和标准出错输出文件(stderr)。

    1.输入重定向符

    • 一般形式是:命令 < 文件名
    如:$ score < file1

    2.输出重定向符

    • 一般形式是:命令 > 文件名
    如:$ who > abc

    3.输出附加定向符

    • 一般形式是:命令>>文件名
    如:$ ps -l >> psfile
    • 输入和输出重新定向可以连在一起使用。例如:
    $ wc -l < infile > outfile

    4.即时文件定向符

    • 即时文件的形式是:
    命令 [参数]<< 标记符
    输入行

    标记符
    注意:标记符要成对出现
    • 例如:
    mail $1 << !!
    Best wishes to you on your birthday .
    !!

    5.与文件描述字有关的重定向

    • 系统为每个进程自动打开三个标准文件(即标准输入、标准输出和错误输出),其文件描述字分别为0,1和2。
    • 标准错误输出也可重定向到一个文件中,其一般形式是:
    命令 2> 文件名
    命令 2>> 文件名
    • 标准输出和标准错误输出可以重定向到同一个文件,一般形式是:
    command $>file
    • 等价于下面形式的命令:
    command > file 2>& 1

    注释、管道线、后台命令
    1.注释 #开头

    !/bin/bash

    If no arguments, then listing the current directory.

    Otherwise, listing each subdirectory.

    2.管道线 前一个命令的输出正是下一个命令的输入

    ls -l $HOME | wc –l
    ls | grep m?.c | wc –l

    3.后台命令 在一条命令的最后输入&,在后台执行

    $ gcc m1.c&

    命令执行操作符
    1.顺序执行
    在执行时,以分号隔开的各条命令从左到右依次执行 
    

    • pwd ; who | wc -l ; cd /usr/bin

    2.逻辑与

    • 命令1 && 命令2
    • 其功能是,先执行命令1,如果执行成功,才执行命令2;否则,若命令1执行不成功,则不执行命令2。

    3.逻辑或

    • 命令1 || 命令2
    • 其功能是,先执行命令1,如果执行不成功,则执行命令2;否则,若命令1执行成功,则不执行命令2。

    成组命令

    1.{ }形式
    • 以花括号括起来的全部命令可视为语法上的一条命令,出现在管道符的一边。
    $ { echo “User Report for date . ”; who ; } | pr
    使用花括号时在格式上应注意:左括号 “{ ”后面应有一个空格;右括号“}”之前应有一个分号( ;)
    2.( )形式
    (echo "Current directory is pwd . "
    cd /home/mengqc ; ls -l ;
    cp m1 em1 && rm m1
    cat em1) | pr
    二者存在重要区别:用花括号括起来的成组命令只是在本shell内执行命令表,不产生新的进程;而用圆括号括起来的成组命令是在新的子shell内执行,要建立新的子进程。

    用户定义的变量

    1.变量名是以字母或下线符打头的字母、数字和下线符序列,并且大小写字母意义不同。
    2. 定义变量并赋值的一般形式是:
    变量名=字符串
    3.引用变量值 在变量名前面加上一个符号“$”
    • 如果在赋给变量的值中要含有空格、制表符或换行符,那么,就应该用双引号把这个字符串括起来。
    $ names="Zhangsan Lisi Wangwu"
    $ echo $names

    命令替换

    • 有两种形式的命令替换:一种是使用倒引号引用命令,其一般形式是:
    命令表
    • 另一种形式是:
    $(命令表)
    如:$ dir=$(pwd)
    $ echo $(pwd ; cd /home/mengqc ; ls -d)

    输入、输出命令

    1.read命令
    • 可以利用read命令从键盘上读取数据,然后赋给指定的变量。read命令的一般格式是:
    • read 变量1 [ 变量2 …]
    – 变量个数与给定数据个数相同,则依次对应赋值
    – 变量个数少于数据个数,则从左至右对应赋值,但最后一个变量被赋予剩余的所有数据。
    – 变量个数多于给定数据个数,则依次对应赋值,而没有数据与之对应的变量取空串
    2. echo命令显示其后的变量值或者直接显示它后面的字符串
    如果echo命令带有选项“-e”,那么在其后的参数中可以有以下转义字符:
    a  c e f v m xm

    移动位置参数

    • 每执行一次shift命令,就把命令行上的实参向左移一位,即相当于位置参数向右移动一个位置。
    • shift命令不能将$0移走,所以经shift右移位置参数后, $0的值不会发生变化。
    • shift命令可以带有一个整数作为参数

    预先定义的特殊变量

    $# 命令行上参数的个数,但不包含shell脚本名本身。因 此,$#可以给出实际参数的个数。
    $? 上一条命令执行后的返回值(也称作 “返回码”、 “退出状态”、“退出码”等)。它是一个十进制数。
    $$ 当前进程的进程号。
    $! 上一个后台命令对应的进程号,这是一个由1~5位数字构成的数字串。
    $- 由当前shell设置的执行标志名组成的字符串。
    $* 表示在命令行中实际给出的所有实参字符串,它并不仅限于9个实参。
    $ @ 它与$基本功能相同,即表示在命令行中给出的所有实参。但“$@”与“$”不同。

  • 相关阅读:
    分支(选择)语句练习——7月22日
    语句:分支语句、switch case ——7月22日
    C#语言基础——7月21日
    进制转换——7月20日
    运行Tomcat报错 解决方法
    Mybatis面试题
    java面试题02
    当你没有能力去改变别人命运的时候 就不要随意去伸出援手......
    快速学习MD5的方法
    java面试题01
  • 原文地址:https://www.cnblogs.com/8023s/p/10025610.html
Copyright © 2020-2023  润新知