zoukankan      html  css  js  c++  java
  • 【Bash百宝箱】Linux shell学习

    shell特点——

    Linux有多种shell能够使用,默认的为bash,bash有以下几个主要特点。

    1、命令记忆能力

    在命令行中按上下键能够找到一个前/后输入的命令。这些命令记录在~/.bash_history中,这个文件记录的是上一次登录shell曾经所运行过的全部命令,当前登录shell所运行的命令则暂存在暂时内存中,成功注销系统后这些命令更新到文件里。历史命令可通过history命令查看,再次运行某个历史命令时可结合叹号!一起使用,叹号后面跟历史命令的序号。假设多重登录bash,即开几个bash窗体时。最后注销的那个bash会把前面bash的历史记录覆盖掉。

    2、Tab键

    在部分命令或文件未输入全然时。按Tab键一次可补全命令或文件,按Tab键两次可列出全部可用的命令或文件。

    3、命令别名设置功能

    使用alias可给一个较长的命令设置一个简单的别名。unalias取消设置,例如以下样例:

    $alias lm='ls -alt'

    上面alias命令设置别名仅仅对当前bash有效,且bash退出后别名也就失效了,怎样设置一次就能够永远在全部的bash中都有效呢?方法是把上面的别名设置命令写入~/.bashrc文件里,这个文件读入shell可使用source命令,也能够使用句点,或者重新启动电脑,这样便一劳永逸了。

    4、内置命令type

    通过type命令我们能够知道一个命令的类型。是内置命令,还是外部命令或者是一个别名。type命令本身是一个内置命令。

    type经常使用三个參数,-t显示命令类型,-p仅当命令类型为外部命令时才显示命令全路径。-a显示PATH环境变量中全部与命令相关的指令信息,也包括alias别名命令。

    5、命令运行

    命令运行须要按下Enter键,假设命令须要多行输入时,可在Enter键前紧接着一个字符进行转义,之间不能有空格。

    6、bash环境

    1)路径与命令查找有一定的顺序,它们的先后顺序为:相对或绝对路径运行命令>alias命令>builtin命令>通过$PATH环境变量顺序找到的第一个命令。

    2)我们能够自己定义Linux登录与欢迎信息。配置文件为/etc/issue/etc/motd,而/etc/issue.net是提供给telnet这个远程登录程序用的。

    shell变量——

    如其他编程语言一样。shell中也能够自己定义变量,但有一定的规则,总结例如以下。

    1、比如常见的环境变量PATH。变量的显示可通过echo命令查看,变量前要加$符号,变量可选择性地使用一对花括号括起来。

    2、变量通过等号=赋值,等号两边不能有空格。

    3、变量名称仅仅能是英文或数字,开头字符不能为数字。

    4、变量内容包括特殊字符时。可用转义字符转义。双引號内的特殊字符如$保持原本特性,单引號内的特殊字符如$就是个普通字符,引號成对出现,从左向右匹配。

    5、在一串命令中包括了其他命令时。其他的命令能够使用反单引號`命令`或者美元符号结合圆括号$(命令)的方式,这样的命令会被先运行。运行结果作为输入信息。

    6、变量累加内容时可用"$变量名称"${变量名称}操作,例如以下:

    $PATH="$PATH"xxx
    $PATH=${PATH}xxx

    7、变量须要在子进程生效时,export这个变量,使其成为环境变量。

    进入一个子进程能够使用bash命令,退出时使用exit命令。

    8、取消变量时使用unset

    9、环境变量查看可使用env命令,使用export命令也能够。set命令查看全部变量。包括环境变量和自己定义变量。

    10、declare命令用于声明变量类型,相似于typeset-a表示数组。-i表示整数,-x相似于export-r指定变量仅仅读。

    11、几个特殊变量:PS1为命令提示符,PS2为使用转义字符后第二行命令的提示符,$为本shell的PID,?

    为上个运行命令的回传码,回传码为0表示命令运行成功。

    12、read命令能够读取键盘输入到变量,-p參数能够指定提示信息,比如:

    $read -p "please input your name:" name

    13、ulimit命令能够设置用户对系统资源使用的限制。

    14、变量内容的删除可使用###%%%符号,内容替换可使用///符号。

    ${变量#关键词}——从左向右匹配,删除最短数据。
    ${变量##关键词}——从左向右匹配。删除最长数据。

    ${变量%关键词}——从右向左匹配。删除最短数据。 ${变量%%关键词}——从右向左匹配,删除最长数据。 ${变量/旧字符串/新字符串}——从左向右匹配,删除第一个匹配的数据。 ${变量//旧字符串/新字符串}——从左向右匹配,删除全部匹配的数据。

    15、变量值測试与替换可使用-+=?

    :符号等,效果例如以下:

    这里写图片描写叙述

    经常使用组合键——

    Ctrl + C:终止眼下的命令。
    Ctrl + D:输入结束EOF,可退出当前shell。
    Ctrl + M:Enter键。


    Ctrl + S:暂停屏幕的输出。
    Ctrl + Q:回复屏幕的输出。


    Ctrl + U:在提示字符下,将整行命令删除。
    Ctrl + Z:暂停眼下的命令。

    常见通配符与特殊符号——

    *:随意数目个随意字符。

    ?:随意一个字符。 [abcd]:随意一个方括号内的字符,即a、b、c、d中随意一个。 [a-z]:随意一个从a到z范围内的字符。关键在于中间的减号。表示范围。

    [^abc]:^代表反向选择,即除了abc之外。随意一个其他的字符。

    #:凝视符号。 :转义字符。

    |:管线。 ;:分号,连续几个命令间的分隔符。 ~:用户主文件夹。 $:用于读取变量。

    &:工作控制。当前命令后台作业。

    !:逻辑非。 /:路径分隔符。 >、>>:数据流重定向,输出,各自是替换和追加。 2>、2>>:数据流重定向,错误输出,数字2与尖括号之间没有空格。 <、<<:数据流重定向。输入。

    ' ':单引號。上面提到了。不具有变量替换功能。

    " ":双引號,具有变量替换功能 ` `:符号之间为可运行命令,等同于$()。 ( ):相当于子shell。 { }:命令区块的组合。

    数据流重定向使用方法举例——

    stdinstdoutstderr事实上是三个特殊的文件,文件标识符分别为0、1、2,以下的样例用到了 这几个数字。
    把纯文本文件from中的内容拷贝到文件to,使用数据流重定向有以下两种方法:

    $cat from > to
    $cat > to < from

    有时候运行某个命令时,有标准输出,也有标准错误输出,把标准输出重定向到文件file

    $command > file

    把标准错误输出重定向到文件file

    $command 2> file

    把标准输出、标注错误输出同一时候重定向到文件file有以下三种方法:

    $command > file 2>&1
    $command 2> file >&2
    $command &> file

    注意上面数字的使用方法。
    /dev/null是一个特殊文件,能够理解为一个无限大的垃圾站点,能够把随意不想要的数据重定向到这个文件里。

    命令行连续运行几个命令——

    方法一:使用分号

    $command1; command2

    方法二:使用&&||符号

    $command1 && command2
    $command1 || command2

    &&||也就是通常所说的短路符号。

    管线命令——

    1、管线

    管线即一个竖线|,左边的命令要有标准输出,且仅会处理标准输出。标准错误则忽略,右边的命令要能接受标准输入,以下介绍几个经常使用的管线命令。

    2、cut

    以行为单位。截取部分数据。

    $echo $PATH | cut -d ':' -f 1

    PATH环境变量中,-d指定分隔符为冒号,冒号把PATH环境变量中的内容切割开。-f指定截取切割后的第几个字段,这里为第1个字段。还能够选择多个字段。以逗号隔开。-d指定的分隔符能够是空格,例如以下命令:

    $last | cut -d ' ' -f 1
    $export | cut -c 10-20

    -c截取了每行第10个到第20个的字符。

    3、grep

    以行为单位,匹配目标字符串。匹配成功则输出整行内容,如:

    $top | grep init

    以下介绍几个经常使用的參数:

    -c:计算字符串匹配的次数。
    -i:忽略大写和小写。

    -n:输出行号。 -v:反向选择,即输出没有匹配到字符串的行。

    grep也能够单独使用,格式例如以下:

    $grep [options] <string> <filename>

    4、sort

    sort即排序,如:

    $ls | sort -r

    -r表示反向排序。

    5、uniq

    uniq用于处理反复数据,仅仅筛选一次,如:

    $last | cut -d ' ' -f 1 | uniq -c

    显示每个帐号登入总次数。

    6、wc

    wc统计文本中有多少行、字符串、字符,如:

    $wc filename

    当中,-l能够统计行数,-w统计字符串。-c统计字符。

    7、tee

    从前面的几个命令能够看出,数据流重定向到文件后。屏幕就没有输出了。而这个tee就能够双向定向。一边到文件,一边到屏幕,如:

    $ls | tee filename

    ls的结果重定向到filename的同一时候也输出到了屏幕。

    8、tr

    tr用来删除或替换字符串。

    $ls | tr [a-z] [A-Z]

    如上样例,trls的结果中的小写字母全部替换为了大写。

    $ls | tr -d 'string'

    -d參数指定要删除的字符串。

    9、col

    col过滤一些数据,选项与參数:

    -x:将tab键转换成对等的空格键。
    -b:在文件内有反斜杠/时。仅保留反斜杠最后接的那个字符。

    10、join

    把两行数据合并为一行,格式例如以下:

    $join [options] file1 file2

    选项与參数例如以下:

    -t <string>:join默认以空格符分隔数据。-t指定详细的切割符。而且在file1和file2中查找string,查找成功时,把file1和file2的两行数据连成一行,且string仅仅显示一次。在行首显示。

    -i:忽略大写和小写。

    -1 <num>:数字1,指定第一个文档file1要用哪个字段来分析。

    -2 <num>:数字2。指定第二个文档file2要用哪个字段来分析。

    11、paste

    把多个文本行合并为一行,默认以Tab键作为分隔符号,语法格式例如以下:

    $paste [options] [files]

    经常使用參数为-d,指定分隔符。

    12、expand

    expandTab键转换为空格。

    13、split

    将大文件分隔为多个小文件。语法格式例如以下:

    $split [options] [file] PREFIX

    经常使用选项为-b。指定小文件大小。-l參数指定小文件行数。PREFIX为小文件前缀。能够选择性地指定为自己定义的字符串。

    14、xargs

    xargs读入标准输入,以空格符或换行符作为分隔,把标准输入分隔成多个參数,然后运行指定的命令,格式例如以下:

    $xargs [options] command

    比如,以下的命令,在/tmp文件夹下查找名字为core的文件,

    $find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f 

    ……….

  • 相关阅读:
    内存池(MemPool)技术详解
    关于项目时间管理的六点须知
    如何与你的老大沟通?
    一个简单的面试题
    Windows下的Memcache安装与测试教程
    反向代理服务器的工作原理
    Linux下的Memcache安装方法
    TCP/IP协议详解
    浅谈负载均衡技术与分类
    MySQL数据备份和恢复的方法大全
  • 原文地址:https://www.cnblogs.com/llguanli/p/7380898.html
Copyright © 2011-2022 走看看