Linux简介与常见Shell命令

1.Linux简介

  • Linux 是一套免费使用和自由传播的类 Unix 操作系统, 是一个基于 POSIX 和 UNIX 的多用户, 多任务, 支持多线程和多 CPU 的操作系统, 它能运行主要的 UNIX 工具软件, 应用程序和网络协议, 它支持 32/64 位硬件,Linux继承了 Unix 以网络为核心的设计思想, 是一个性能稳定的多用户操作系统
    • 操作系统
      • 操作系统是控制其他程序运行, 管理系统资源并为用户提供操作界面的系统软件的集合
  • Linux优点
    • 开源:Linux由庞大的开源软件支持,WEB服务器,缓存服务器,数据库服务器,这些都是免费的选择,都是稳定成熟的产品
    • 免费:Linux免费或少许收费,节省成本,Windows操作系统不是免费的
    • 稳定(安全):面对服务器,受病毒和黑客攻击非常少,安全稳定,可以连续运行多年而不发生任何重大问题,运行速度快,占用资源小,对硬件需求低
  • Linux缺点
    • 有些专业软件没有Linux版本
  • 与Windows的区别
    • 免费与收费
    • 软件与支持
      • Windows上大部分都是收费软件,由厂商提供技术支持
      • Linux上大部分软件都是开源软件,由社区提供技术支持
    • 安全性
      • Windows经常更新补丁安装系统更新
      • Linux比Windows平台更安全,使用Linux几乎不需要安装杀毒软件
    • 使用习惯
      • Windows基本上是纯图形界面操作,用户上手容易,入门简单
      • Linux兼具图形化界面与命令行界面,可以只用键盘完成一切操作,需要学习成本
    • 可定制性
      • Windows闭源,可定制性差
      • Linux开源,可定制性强
    • 应用范畴
      • 世界上大部分服务器都是运行在Linux系统之上的
  • Linux用到的地方
    • 网络运维
    • 编程开发
    • 系统运维

2.基本使用

  • Terminal终端字体放大:Ctrl+Shift+"+"
  • Terminal终端字体缩小:Ctrl+"-"
  • Terminal终端缩放窗口:双击左上角
  • 在Shell中输入 ssh 用户名@目标IP地址 可以进行远程登陆

3.Shell简介

  • Shell是Linux的一个特殊程序,是内核与用户的接口,它是命令语言,命令解释程序及程序设计语言的统称,shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用
  • 当用户登录 Linux 系统后, 即开始了与 Shell 的对话交互过程, 此时不论键入什么命令都会被 Shell 解释执行, 有一些命令是包含在 Shell 内部的, 只要处在 Shell 命令下就可以执行 (比如改变工作目录命令 cd), 还有一些命令比如复制命令 cp 或移动命令 mv, 是独立的应用程序, 必须存在于文件系统中某个目录下才能执行, 对用户而言, 无需在意一个命令是建立在 Shell 内部还是一个单独的程序

4.Linux命令行格式

通用格式

  • 命令字 [选项] [参数] 用中括号括起来的命令都是可有可无的
  • 选项及参数的含义
    • 选项:用于调节命令的具体功能
      • 以"-"引导的短格式选项, 例如-c, 一般情况下短选项跟上参数使用
      • 以"--"引导的长格式选项, 例如--color,一般跟上帮助文档使用
      • 短选项是可以组合使用的, 只需要一个"-"例如-a -b, 可以直接写成-ab
    • 参数:命令操作的对象,如文件,目录名等
  • 管道符 | : 把前面命令的输出作为后面的命令的输入去执行
    • xargs 命令和管道符连用代表将前面的命令执行的结果作为参数交给后面的命令执行
      • 命令1 |xargs 命令2
  • && : 将两条命令放到一起执行,前一条命令执行成功才会执行下一跳,而;不论是否执行成功都会执行下一条

命令行编辑的辅助操作

  • Tab:补全命令 按一下补全命令,按两下显示可以补全的命令
  • \:强制换行
  • Ctrl+U:从行尾清空到行首
  • Ctrl+K:从行首清空到行尾
  • Ctrl+L:清除屏幕显示内容
  • Ctrl+C: 取消本次编辑命令, 代表终止命令
  • Ctrl+Z: 代表停止, 只暂停操作
  • Home:跳到行首
  • End:跳到行尾
  • 内部命令help:查看Bash内部命令的帮助信息
  • 命令 --help:适用于绝大多数外部命令
  • man: 使用阅读手册
    • man -k [命令]
    • 使用"↑","↓方向键滚动文本
    • 按PGUP,PFDOWN翻页
    • 按q退出阅读环境

5. 常见基础命令

文件和目录管理

目录操作命令

  • echo:打印某个字符
  • pwd: 显示当前位置的绝对路径 (print work directory 打印工作目录)
  • cd:进入某个目录(change director改变目录)
    • cd [位置]代表进入某个位置
    • cd 代表退回最最开始的路径
    • cd .. 代表回到当前目录的上一级 (Linux两个点代表上一级目录, 一个点代表当前位置)
    • cd / 进入 Linux 系统的根路径
      • 文件层级系统
        • / linux系统的根目录
        • /bin 是用来存放普通用户的命令 /sbin 用来存放管理员用户的命令
        • /boot 存放系统启动相关的文件
        • /dev 存放系统设备相关的文件
        • /etc 存放系统配置文件
        • /home 存放普通用户的所有文件
        • /root 存放管理员用户的所有文件
        • /lib 存放32位库文件 /lib64 存放64位库文件
        • /media 以前用作挂载点,现在使用/mnt作为挂载点目录
        • /opt 以前存放第三方软件的位置 现在使用/usr存放第三方软件
        • /proc 伪文件目录,系统启动后才有内容,作为进程目录,只有进程1是运行状态,其余都是睡眠状态
        • /run 跟系统运行相关的目录
        • /srv service服务的缩写,跟服务相关的目录
        • /sys system服务的缩写,跟系统相关的目录,与proc一样是伪文件目录
        • /tmp temp的缩写,存放临时文件
        • /var variables可变的缩写,存放日志文件的目录
  • ls:列出目录下的文件(lits列出)
    • ls -a 可以列出所有文件,包括隐藏文件,隐藏文件前缀有一个点 ^4a84e3
    • ls -l 以长格式的形式列出文件 (也可以使用ll列出,这是系统自带的缩写格式)
      • drwxr-xr-x. 2 root root 6 Sep 29 03:35 Desktop
        • 第一个字母代表的是类型,-代表文件,d代表目录,l代表链接文件
        • 剩余九个字母代表权限,每三个为一组, 每组对应不同人员
          • 第一段代表文件所有者的权限, 第二段代表文件所属组的权限, 第三段代表其他人的权限
          • r代表read读取,w代表write写入,x代表execute执行
        • 2 代表是链接次数
        • 第一个root代表所有者
        • 第二个root代表所属组
        • 6代表文件大小
        • Sep 29 03:35 代表日期时间
        • Desktop代表名字
    • ls -l -h:以人类可读的方式列出文件
    • ls -d:显示目录本身属性
  • mkdir:在当前目录下创建文件夹(make director创建目录)
    • mkdir -p (父目录)\(子目录):创建子目录时,如果父目录不存在会一起创建
    • mkdir -v:显示创建目录过程

文件操作命令

  • touch (文件名): 创建文件, 如果文件名重复只会更新文件的时间戳
  • cp (文件名) (目的地址):复制文件,注意地址后面都有一个/
    • cp -r:递归复制整个目录树,复制目录时使用
  • rm (文件名):删除文件(remove删除)
    • rm -r:递归删除,删除目录时可以使用
    • rm -f:强制删除文件,不询问是否删除(force强制)
    • 注意:rm -rf /* 代表删除根,会直接删除整个Linux的文件
    • rmdir: 删除目录, 且只能删除空目录
  • mv (文件名) (目的地址):移动文件(move移动)
    • mv /tmp/123.txt .代表直接移动到当前目录
  • find [查找范围] [查找条件]:用于查找文件或目录
    • 查找条件
      • -name:按文件名查找
      • -user:按所有者查找
      • -type:按文件类型查找 find /root f
        • f 查找文件
        • d 查找目录
        • l 链接
        • p 管道
      • -size ("+/-"文件大小+单位):按大小查找文件
   find        //实时查找,精确性强,遍历指定目录中所有文件完成查找, 
                //查找速度慢,支持众多查找标准。
        语法:
	    find 查找路径 [OPTION...] [查找标准] [查找到以后的处理动作]
        查找路径,默认为当前目录
        查找标准,默认为指定路径下的所有文件
        -name 'filename'    //对文件名作精确匹配.支持glob通配符机制
        -iname 'filename'   //文件名匹配时不区分大小写
        -regex pattern      //基于正则表达式进行文件名匹配,以pattern匹配整个文件路径字符串,而不仅仅是文件名称
        -user username      //根据属主来查找
        -group groupname    //根据属组来查找
        -uid        	    //根据UID进行查找,当用户被删除以后文件的属主会变为此用户的UID
        -gid        	    //根据GID进行查找,当用户被删除以后文件的属组会变为此用户的GID
        -nouser     	    //查找没有属主的文件.用户被删除的情况下产生的文件,只有uid没有属主
        -nogroup    	    //查找没有属组的文件.组被删除的情况下产生的文件,只有gid没有属组
        -type       	    //根据文件类型来查找(f,d,c,b,l,p,s)
        -size       	    //根据文件大小进行查找。如1k、1M,+10k、+10M,-1k、-1M,+表示大于,-表示小于
        -mtime      	    //修改时间
        -ctime      	    //改变时间
        -atime      	    //访问时间
            +5      	    //5天前
            -5      	    //5天以内
        -mmin       	    //多少分钟修改过
        -cmin       	    //多少分钟改变过
        -amin       	    //多少分钟访问过
            +5      	    //5分钟前
            -5      	    //5分钟以内
        -perm mode          //根据权限精确查找
        -perm -mode         //9位权限中非0的权限必须完全匹配
        -perm /mode         //9位权限中非0的权限任何一位匹配即可

        //组合条件:
            -a
            -o
            -not
            !              // ! 和-not含义一样

        //处理动作:默认为显示到屏幕上
            -print          //显示
            -ls             //类似ls -l的形式显示每一个文件的详细信息
            -fls /path/to/somefile      //查找到的所有文件的长格式信息保存至指定文件中
            -delete                     //删除查找到的文件
            -ok COMMAND {} \;           //对查找到的每个文件执行COMMAND,每次操作都需要用户确认
			-exec COMMAND {} \;         //对查找到的每个文件执行COMMAND,操作不需要确认

注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令,而有些命令不能接受过多参数,此时命令执行可能会失败。而xargs可规避此问题。

    | xargs   //通过管道将查找到的内容给xargs处理,xargs会把内容进行拆分,拆分完毕后将内容作为参数交给后面的命令执行。
  • 压缩格式:gz,bz,xz,zip,Z
    • gz、bz2、xz 都只能压缩文件,zip可以压缩目录
    • compress: 用此命令压缩的文件其文件名为 FILENAME.Z
    • uncompress:解压缩.Z文件
    • gzip:
      • 压缩后的文件以.gz结尾
      • gzip /path/to/somefile 压缩完成后会删除原文本
      • -d 解压缩,解压完成后删除源文件
      • -c 将结果输出至标准输出
      • -l 查看压缩文件里的内容, 从左至右依次显示为:压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名称
      • -(num) 指定压缩比例,范围为1-9,默认为6
    • gunzip: 解压缩.gz 文件,zcat : 不解压的情况下查看文本文件内容
    • bizp2:
      • 压缩后的文件以.bz2结尾,bzip2比gizp有更大的压缩比,使用格式近似
      • bzip /path/to/somefile 压缩完成后会删除原文本
      • -d 解压缩,解压完成后删除源文件
      • -k 保留源文件
      • -(num) 指定压缩比例,范围为1-9,默认为6
    • bunzip2: 解压缩.bz2 文件,bzcat: 不解压的情况下查看文本文件内容
    • xz:
      • 压缩后的文件以.xz结尾
      • xz /path/to/somefile 压缩完成后会删除原文本
      • -d 解压缩,解压完成后删除源文件
      • -c 将结果输出至标准输出
      • -(num) 指定压缩比例,范围为1-9,默认为6
    • unxz:解压缩.xz文件,xzcat:不解压的情况下查看文本文件内容
    • zip: 既归档又压缩的工具,zip 可以压缩目录,gz,bz2,xz 都只能压缩文件,zip 压缩后不会删除原文件
      • zip (压缩文件名) (原文件名1) [原文件名...]
      • zip (压缩文件名) DIR/*
    • unzip:解压缩 unzip filename.zip
      • unzip fileanme.zip -d /path/to/file 指定加载路径
      • -l 显示压缩包内所有文件
      • unzip filename.zip/file 只解压指定文件
  • tar [选项] (文件名):归档命令,可以用来压缩也可以进行解压缩,但归档本身并不代表压缩
    • 创建归档文件
      • -f file.tar 操作的归档文件
      • -x 还原归档
      • -v 显示归档过程
      • -tf /path/to/file.tar //不展开归档,直接查看归档了哪些文件
      • --delete 从归档文件中删除文件
      • -p 归档时保留权限信息。只有管理员才有权限用此选项
      • --xattrs 在归档时保留文件的扩展属性信息
    • 压缩
      • -C /将展开的归档文件保存至指定目录下
      • tar -jcf (-j代表以bzip2格式压缩,-c代表创建一个新的归档,-f代表使用档案名字,f一定要写在最后)
      • tar -Jcf
      • tar -zcf
      • 举例:tar -jcf (压缩后的名字) (需要压缩的文件)
    • 解压缩:
      • tar xf 文件名 [-C 解压到的指定目录]
      • tar zxf 文件名 [-C 解压到的指定目录] 解压缩 gzip 文件
    • 不解压查看:
      • tar tvf 文件名 加v参数查看文件详细内容

管道符,xargs和exec

管道

  • command1 | command2
    • 用竖线分割两个命令,把第一个命令的输出,作为第二个命令的输入。此时需要第二个命令支持这种从管道获取输入的功能,例如 cat ls 就支持这种功能。

xargs

  • command1 | xargs command2
    • xargs 和管道类似,都是把第一个命令的输出传递到第二个命令
    • 与管道不同的是,管道给第二个命令传递是直接传到命令输入上,这种方式要求命令本身的支持,支持的命令较少。
    • 而 xargs,则是把第一个命令的输出作为参数传递到第二个命令上,这种方式只要第二个命令可以接受参数即可,支持的命令较多。
    • 支持参数
      • -n num 多行输入 代表每行显示num段内容
      • -d 分隔符 自定义一个定界符, 默认的定界符包括空格,Tab, 回车等 command1 | xargs -d ':' command2表示以:为定界符
      • -p 显示即将执行的内容,询问用户是否确认执行
      • -t 打印出xargs执行出的命令
      • -L或-l num 从标准输入一次读取num行命令
      • -e flag 当执行到含有flag的命令就终止执行
      • -a file 从文件中读入作为标准输入
      • -i或-I 将前面的结果一行一行赋值给 {},可以用 {} 代替。
        • ls | xargs -I{} echo {}
      • -0如果参数内容有空格等字符,不将其作为分隔符

exec

  • -exec 是将结果逐条传递给后面的命令,后面的命令逐条执行
  • xargs 是将结果作为一个列表全部传递给后面的命令,后面的命令一次性执行参数串,可以通过 xargs -p ls -l 来查看即将要执行的完整的命令。

文本处理命令

查看文本

  • cat (文件名):查看文件内容, 打开文件时会将所有内容加载至内存, 所以适合文件内容较少的时候使用
  • head [-num] (文件名):从文件头部打印内容,默认为前10行
  • tail [-num] (文件名):从文件尾部打印内容,默认为后10行
  • less (文件名):全屏查看文件内容
    • Enter(E)键向后移动一行,Y向前移动一行
    • 按空格往上翻一页,按B键往下翻一页
    • Q键退出查看
    • -n 显示行号
  • more (文件名): 全屏查看文件内容, 但看完后会自动退出
  • grep [选项] (查找条件) (目标文件): 在文件中查找并显示包含指定字符串的行
    • -i:查找时忽略大小写
    • -v:翻转查找,查找与条件不相符的行
    • -o:只输出与查找内容相同的字符串
    • -e : 或条件
    • -f: 与条件
    • --color //匹配到的内容高亮显示
    • -w //强制模式,完全匹配字词
    • -n //显示匹配到的内容的行号
    • -c //显示匹配到的内容一共有多少行
    • -E //使用扩展正则表达式。grep -E 相当于使用 egrep
    • -A 1 //被模式匹配到的内容以及其后面 1 行的内容都显示出来
    • -B 1 //被模式匹配到的内容以及其前面 1 行的内容都显示出来
    • -C 1 //被模式匹配到的内容以及其前后的行各显示 1 行
    • -q:静默查找,禁止输出任何结果,已退出状态表示搜索是否成功
    • 字符串在查找时用""括起来
    • "..."表示以...开头,"...$"表示以...结尾,"$"表示空行
  • egrep //基于正则表达式查找文件内容
  • fgrep //不支持正则表达式,执行速度快

文本处理

  • cut :截取文本内容

    • -d 指定字符分隔符,默认是空格
    • -f 指定要显示的字段 1,3代表1和3,1-3表示1到3
    • cut -d":" -f 1,3 /etc/passwd 代表截取/etc/passwd文件中的第一字段和第三字段
  • awk: 基于列的文本报告工具, 拥有比 cut更强大的截取功能

    • -F ' ' 选择分隔符,用单引号引起来
    • awk '/root' 匹配有'/root'的关键行
    • awk -F':' '{print $1,$3}' /etc/passwd 代表截取/etc/passwd文件中的第一字段与第三字段,分隔符为":"
    awk         //基于列的文本报告工具
        语法:awk [选项] '匹配模式 {执行动作}'
        -F ''		//指定分隔符,可以使用正则表达式[]指定多个分隔符
        -v OFS=''	//指定打印时的分隔符

    执行动作:
        '{print $#}'  		//选择打印第#列,$0代表所有列,$NF代表最后1列

    匹配模式:
        '/关键字/'				//匹配关键字的行,支持正则表达式
        '/关键字1/,/关键字2/'	//匹配从关键字1到关键字2中间所有的行
        'NR==1'					//匹配第1行
        'NR>=10'				//匹配行数大于10的所有行并显示行号
        '$1==1'					//匹配第1列的值等于1的行
        '$1>=10 && $1<=20'		//匹配第1列的值大于等于10并小于等于20的行
        '$1>=10 || $3!=20'		//匹配第1列的值大于等于10或者第3列的值不等于20的行
        '$NF~"/sbin/nologin"'	//匹配最后1列字符为/sbin/nologin的行
        '$NF~!"/sbin/nologin"'	//匹配最后1列字符不为/sbin/nologin的行

        语法示例:
            awk -F ':' '{print "第一列:"$1,"第二列:"$2,"第三列:"$3}' /etc/passwd
                //使用:为分隔符分割/etc/passwd文件中的内容,按照想要的格式打印出来
            awk -F ':' -v OFS='-' '{print $1,$2,$3}' /etc/passwd
                //使用:为分隔符分割/etc/passwd文件中的内容,按照想要的格式打印出来
            awk -F '[:/]+' '{print $1,$6}' /etc/passwd
                //使用:或/或:/或多个:或多个/或多个:/为分隔符分割/etc/passwd文件中的内容,打印出第1列和第6列
  • sed: 基于行的过滤和转换文本的流编辑器, 主要用于替换文本
    • -i 代表修改文件内容
    • sed -i 's/原字符串/新字符串/g' 1.txt 代表将1.txt里所有的原字符串的内容替换为新字符串
    • sed -i 's/原字符串/新字符串/' 1.txt 代表只将1.txt里每一行的第一个原字符串的内容替换为新字符串,每一行的中的其他原字符串不会更改
   sed         //基于行的过滤和转换文本的流编辑器
        语法:sed [选项] [过滤条件和sed命令] [输入文件]
        -n	        //取消默认sed输出,用于过滤文本内容
        -r	        //使用扩展正则表达式
        -e	        //一条语句执行多条sed命令
        -i	        //修改文件内容

        语法示例:
            sed -n '2p' file
                //打印第2行
            sed -n '2,4p' file
                //打印第2行到第4行
            sed -n '/关键字/p' file
                //搜索包含关键字的行,可使用基本正则表达式
            sed -n '/第一个关键字/,/第二个关键字/p' file
                //搜索从第一个关键字到第二个关键字中间所有的行
            sed -i '2i test' file
                //在第2行前面新增一行并写入test内容
            sed -i '/关键字/a test' file
                //在匹配的关键字所在行的后面新增一行并写入test内容
            sed -i 's#原字符串#新字符串#' file
                //新字符串替换原字符串,只替换每行第1个匹配到的字符
            sed -i 's#原字符串#新字符串#2' file
                //替换每行第2个匹配到的字符
            sed -i 's#原字符串#新字符串#g' file
                //替换每行所有匹配到的字符串
            sed -i '1s#原字符串#新字符串#g' file
                //替换第1行所有匹配到的字符串
            sed -i '2c test' file
                //字符串替换,将第2行内容替换为test
            sed -r 's#(.*),(.*),(.*)#\3,\2,\1#g' file
                //字符串排列,重新将每行逗号隔开的列进行排序,原本的第三列变成第一列
            sed -r '1s#(.*),(.*),(.*)#\3,\2,\1#g;2s#(.*),(.*),(.*)#\3,\2,\1#g' file
                //字符串排列,重新将第1行和第3行逗号隔开的内容进行排序
            sed -i '2d' file
                //删除第2行
            sed -i '2d;5d' file
                //删除第2行和第5行
            sed -i '2,5d' file
                //删除第2行到第5行
            sed -i '1~2d' file
                //删除行数为单数的行
            sed -i '2~2d' file
                //删除行数为双数的行
            sed -i '1,+2d' file
                //删除第1行以及后面的2行
            sed -i '/关键字/,+2d' file
                //删除关键字所在的行以及后面的2行
            sed -i '1!d' file
                //删除除了第1行以外的其他行
            sed -i '/第一个关键字/,/第二个关键字/d' file
                //删除第一个关键字到第二个关键字中间所有的行
  • sort: 文本排序,默认为升序,不是按数值大小排序
    • -n 根据数值大小排序
    • -r 逆序排序
    • -t 字段分隔符
    • -k 以哪个关键字段进行排序
    • -u 去重,相同行只显示一次
    • -f 排序时忽略大小写
  • uniq: 报告重复的行 (连续且完全相同为重复)
    • -c 显示重复的次数
    • -d 只显示重复的行
    • -u 只显示未重复的行
  • wc:文本统计(word count)
    • -c 显示字节数
    • -l 显示行数
    • -w 显示单词数

系统管理

  • du :报告指定文件或目录大小
    • -s 显示总的占用大小
    • -h 以人类友好的方式显示结果
  • df : 报告文件系统磁盘使用情况
    • -h 以人类友好的方式显示结果
    • -i 显示inode信息
    • -T 查看文件系统类型
  • hostname 查看或临时修改主机名, 输入 bash 重启立即生效, 临时修改重启终端后失效
  • hostnamectl hostnamectl set-hostname 名称 永久修改主机名
  • time 显示命令执行花费的时间,例如time ls /etc
  • clear 清屏
  • whoami 显示当前登录用户
  • w 显示当前在线用户并显示其在运行的命令
  • who 查看当前在线用户
  • which 显示指定命令的绝对路径 [^1]
  • ps aux 查看所有进程
  • date 显示或设置日期与时间
    • 不带参数的date用于显示当前系统的日期与时间
    • -s 以字符串方式设置时间
    • 格式化输出时间:+
    • %Y 年
    • %m 月
    • %d 日
    • %H 时
    • %M 分
    • %S 秒

重定向

  • 重定向: 将命令的执行结果输出到指定的文件中,而不是直接显示在屏幕上,例如 ls -a >1.txt >表示覆盖输出,>>表示追加输出,此外,重定向的输出文件如果没有创建的话会自动创建
类型 操作符 用途
重定向标准输出 > 将命令的执行结果输出到指定的文件中
重定向标准错误 2> 将标准错误信息输出到文件中
重定向标准输出和标准错误 &> 将标准输出或标准错误信息输出到文件中
  • 将输出重定向到/dev/null中,会将所有输出内容丢弃,可以做到禁止结果输出的效果
输入重定向中用到的符号及作用
命令符号格式作用
命令 < 文件将指定文件作为命令的输入设备
命令 << 分界符表示从标准输入设备(键盘)中读入,直到遇到分界符才停止(读入的数据不包括分界符),这里的分界符其实就是自定义的字符串
命令 < 文件 1 > 文件 2将文件 1 作为命令的输入设备,该命令的执行结果输出到文件 2 中。

Bash常用操作

Bash是Shell的默认解释器,支持以下特性:

  • 支持命令历史、命令补全
  • 支持管道、重定向
  • 支持命令别名
  • 支持命令行编辑
  • 支持命令行展开
  • 支持文件名通配
  • 支持变量
  • 支持编程

Bash支持的引号

""	    //双引号,弱引用,可以实现变量替换
''      //单引号,强引用,不完成变量替换
``	    //反引号,键盘左上角Esc下面的键,用于命令替换
$()	    //与反引号用法相同

Bash常用操作

//光标跳转
    Ctrl+a	//跳到命令行首
    Ctrl+e	//跳到命令行尾
    Ctrl+u	//剪切光标至命令行首的内容
    Ctrl+k	//剪切光标至命令行尾的内容
    Ctrl+<-	//光标定位到离自己最近的一个单词前面
    Ctrl+p	//重复上一次命令
    Ctrl+w	//剪切前面的字符至上一个空格处
    Ctrl+y	//粘贴或者恢复上次的删除。
    Ctrl+l	//清屏
    Ctrl+s	//暂时冻结当前shell的输入
    Ctrl+q	//解冻

//tab键命令和路径补全
    在命令行输入命令时,如果只记得命令的开头几个字母,可使用tab键补全命令;如果有多个命令都是以某字母开头,按两次tab,可以列出所有以该字母开头的命令,供用户选择。
    在命令行输入文件路径时,如果忘记文件路径全称,则只需要输入文件路径开头几个字母,也可以使用tab键进行补全。
    
//命令行常见特殊符号
    ~       	    //展开为用户的家目录
    ~USERNAME       //展开为指定用户的家目录
    {}      	    //列表,可用于存放数据
    \		    //转义,使得后面一个特殊字符没有任何特殊含义
    &&		    //前面的命令执行成功后才执行后面的命令
    ||		    //前面的命令执行失败后才执行后面的命令
    ;		    //不管前面的命令执行成功还是失败都执行后面的命令

//文件名通配符
    *       	    //匹配任意长度的任意字符
    ?       	    //匹配任意单个字符
    []      	    //匹配指定范围内的任意单个字符
        例如:[abc],[a-m],[0-9]
        [[:space:]]	//表示空白字符
        [[:punct:]]	//表示标点符号
        [[:lower:]]	//表示小写字母
        [[:upper:]]	//表示大写字母
        [[:alpha:]]	//表示大小写字母
        [[:digit:]]	//表示数字
        [[:alnum:]]	//表示数字和大小写字母
        [^]		//匹配指定范围之外的任意单个字符

//环境变量
    PATH            //命令搜索路径
    HISTSIZE        //命令历史缓冲区大小
    SHELL           //当前shell
//bash内置变量
    RANDOM          //保存着0-32768之间的随机数

//命令历史
    history         //查看命令历史
        -c              //清空命令历史
        -d OFFSET [n]   //删除指定位置的命令历史
        -w              //保存命令历史至历史文件~/.bash_history中

    //命令历史的使用技巧
        !n          	//执行命令历史中的第n条命令
        !-n         	//执行命令历史中倒数第n条命令
        !!          	//执行上一条命令
        !string     	//执行命令历史中最近一个以指定字符串开头的命令
        !$          	//引用前一个命令的最后一个参数
        esc,.       	//按下esc松开后按.,引用前一个命令的最后一个参数
  • history:可以查看历史命令,允许使用↑和↓键上下翻页与编辑并重复执行
    • history -c 清除所有历史命令
    • !(历史命令编号) 执行历史记录中的第n条命令
  • alias [别名]:查看命令的别名的原名
    • alias (设置的别名)="原命令" 给命令设置别名,改命令只在当前登录的界面生效
    • 要让命令别名永久生效,需要将命令保存在~/.bashrc文件中
    • unalias  别名 可以取消设置的别名
posted @ 2023-03-02 13:04  RilyLC  阅读(82)  评论(0编辑  收藏  举报