zoukankan      html  css  js  c++  java
  • Shell基础(二)

    1. 命令行自动补全(使用Tab键可以自动补全命令)
    2. 命令历史记录(使用history命令)

    命令语法:history [选项]

    选项含义
    -c 清楚命令历史记录
    -w 将当前历史命令记录写到.bash_history文件,覆盖.bash_history文件的内容
    -a 讲目前新增的history命令写入.bash_history文件
    n 显示最近n个命令历史记录,n代表数字
    -r 读取历史文件的内容,并把它们作为当前历史
    举例描述
    !! 运行上一个命令
    !6 运行第6个命令
    !8 /test 运行第8个命令并在命令后面加上/test
    !?CF? 运行上一个包含CF字符串的命令
    !ls 运行上一个ls命令(或以ls开头的历史命令)
    !ls:s/CF/G 运行上一个ls命令,其中把CF替换成G
    fc 编辑并运行上一个历史命令
    fc 6 编辑并运行第6条历史命令
    ^ boot^ root^ 快速替换。将最后一个命令中的boot替换为root后运行
    !-5 运行倒数第5个命令
    !$ 运行前一个命令最后的参数
    快捷键或组合键描述
    (向上方向箭) 查看上一个命令
    (向下方向箭) 查看下一个命令
    Ctrl+p 查看历史列表中的上一个命令
    Ctrl+n 查看历史类别的下一个命令
    Ctrl+r 向上搜索历史列表
    Alt+p 向上搜索历史列表
    Alt+> 移动到历史列表末尾

    命令排列

    • &&

    1.使用;命令时先执行命令1,不过命令1是否出错,接下来就执行命令2

    命令语法:命令1;命令2

    例如:使用排列命令;同时执行两个命令(先在屏幕上列出/boot目录中的内容,如何列出目录/root及其子目录所占用的磁盘空间大小)

    [root@localhost ~]# ls /boot;du -hs /root
    config-3.10.0-957.el7.x86_64                             initramfs-3.10.0-957.el7.x86_64.img
    efi                                                      symvers-3.10.0-957.el7.x86_64.gz
    grub                                                     System.map-3.10.0-957.el7.x86_64
    grub2                                                    vmlinuz-0-rescue-7ad525c9157940e3847220b1bdb8be06
    initramfs-0-rescue-7ad525c9157940e3847220b1bdb8be06.img  vmlinuz-3.10.0-957.el7.x86_64
    100M	/root
    

    2.使用&&命令时,只有当命令1正确运行完毕后,才能执行命令2

    命令语法:命令1&&命令2

    例如:同时执行两个命令(运行第一个命令因为没有找到那个文件或目录,第二个命令就没有运行)

    [root@localhost ~]# ls -a /root/bogusdir&&du-sh
    ls: cannot access /root/bogusdir: No such file or directory
    

    命令替换

    • $()
    • `

    1.使用$()命令语法:

    命令1$(命令2)

    举个例子:杀死一个名为less的进程前先得用命令pidof找出相应的进程号,然后以这个进程号为参数运行kill命令,这样可以结束less进程,如下

    [root@localhost ~]# pidof less
    7552
    [root@localhost ~]# kill -9 7552
    

    使用命令替换功能杀死less进程

    [root@localhost ~]# kill -9 $(pidof less)
    

    pidof less命令的输出7552作为命令kill -9的参数,然后就可以杀死该进程了。

    2.使用(位于Tab键上面的键) 命令语法: 命令1命令2` 例如:使用命令替换功能杀死less进程

    [root@localhost ~]# kill -9 `pidof less`
    

    这样虽然可以减少输入,但可读性差,而且容易和没有替换功能的一般单引号混淆。

    命令别名

    1.使用别名,命令语法:

    alias [别名]=[需要定义别名的命令]

    例如:为ls /boot创建别名ok

    [root@localhost ~]# alias ok="ls /boot"
    [root@localhost ~]# ok
    config-3.10.0-957.el7.x86_64                             initramfs-3.10.0-957.el7.x86_64.img
    efi                                                      symvers-3.10.0-957.el7.x86_64.gz
    grub                                                     System.map-3.10.0-957.el7.x86_64
    grub2                                                    vmlinuz-0-rescue-7ad525c9157940e3847220b1bdb8be06
    initramfs-0-rescue-7ad525c9157940e3847220b1bdb8be06.img  vmlinuz-3.10.0-957.el7.x86_64
    

    注意:需定义的别名命令用双引号括起来。

    2.取消别名命令语法:

    unalias [别名] 例如:取消之前的别名ok

    [root@localhost ~]# unalias ok
    [root@localhost ~]# ok
    -bash: ok: command not found
    

    在重新启动计算机系统以及关闭终端,定义的别名会失效。若系统中有一个命令,同时又定义了一个与其同名的别名,则别名将优先于系统中原有的命令执行。 扩展:如果希望重启计算机以及关闭终端后,定义别名仍旧生效,则可以编辑/etc/bashrc(针对系统中所有用户)或$HOME/.bashrc(针对某一个指定用户,$HOME代表用户主目录,将别名定义命令写道这两个文件中。)

    文件名匹

    • 通配符*可匹配一个或多个字符。 例如:使用rm命令删除当前目录下所有以字符串“.bak”结尾的文件
    [root@localhost ~]# rm *.bak
    

    比如删除所有包含“4”.bak的文件

    [root@localhost ~]# rm *.bak
    
    • 通配符?,一个问号只能代表一个字符。 例如:列出所有在点号后面有四个字符的文件
    [root@localhost ~]# ls *.????
    

    管道

    命令语法:[命令1] [命令2] [命令3]

    例如:使用简单管道(分页显示/etc目录内容)

    [root@localhost ~]# ls /etc|more
    

    使用复杂管道(分页过滤显示安装在系统上的RPM包)

    [root@localhost ~]# rpm -qa|grep a|more
    

    重定向

    • 输出重定向
    • 输入重定向
    • 错误重定向
    • 同时实现输出和错误重定向

    输出重定向:将某一命令执行的输出保存到文件中,如果已经存在相同的文件,那么覆盖源文件中的内容

    命令语法:命令 > 文件

    例如:使用输出重定向将/boot目录的内容保存到/root/abc文件中

    [root@localhost ~]# ls /boot > /root/abc
    
    • 输出追加重定向:将某一命令执行的输出添加到已经存在的文件中。

    命令语法:[命令] >> [文件]

    例如:使用输出追加重定向将Linux数据写入文件/root/ao

    [root@localhost ~]# echo Hello > /root/ao
    [root@localhost ~]# echo Linux >> /root/ao
    [root@localhost ~]# cat /root/ao
    Hello
    Linux
    
    • 输入重定向:将某一文件的内容作为命令的输入

    命令语法:命令 < 文件

    例如:使用输入重定向将文件/root/mm的内容作为输入让cat命令执行

    [root@localhost ~]# cat < /root/mm
    Hello
    
    • 输入追加重定向

    命令语法:命令 << 分隔符

    文本内容

    分隔符

    例如:使用输入追加重定向创建/root/bc文件,输入Hello Linux,分隔符使用EOF

    [root@localhost ~]# cat > /root/bc << EOF
    > Hello Linux
    > EOF
    [root@localhost ~]# cat /root/bc
    Hello Linux
    
    • 错误重定向:将某一命令执行的出错信息输出到指定文件中

    命令语法:命令 2> 文件

    例如:查看根本不存在的/root/kk文件,出现报错信息,将其保存到文件/root/b中

    [root@localhost ~]# cat /root/kk 2> /root/b
    [root@localhost ~]# cat /root/b
    cat: /root/kk: No such file or directory
    
    • 错误追加重定向:将某一命令执行的出错信息添加到已经存在的文件中

    命令语法:命令 2>> 文件

    例如:使用错误追加重定向,将执行命令的多次出错信息保存到/root/b文件

    [root@localhost ~]# cat /root/kk 2> /root/b
    [root@localhost ~]# cat /root/kk 2>> /root/b
    [root@localhost ~]# cat /root/b
    cat: /root/kk: No such file or directory
    cat: /root/kk: No such file or directory
    
    • 同时实现输出和错误重定向

    命令语法:命令 &> 文件

    例如:同时使用输出和错误重定向列出/boot目录内容到/root/kk文件中

    [root@localhost ~]# ls /boot &> /root/kk
    

    同时使用输出和错误重定向列出/nn目录内容到/root/oo文件中

    [root@localhost ~]# cat /root/oo
    ls: cannot access /nn: No such file or directory

    摘自:《Linux实用教程》人民邮电出版社出版发行 於岳编著
  • 相关阅读:
    windows下忘记mysql超级管理员rootpassword的解决的方法
    LeetCode226 InvertBinaryTree Java题解
    PHP利用GD库绘图和生成验证码图片
    自己动手开发IOC容器
    智能提示(一) Solr (suggest)
    Linux系统字符集乱码问题
    Linux
    [Material Design] 教你做一个Material风格、动画的button(MaterialButton)
    codeforces#FF(div2) D DZY Loves Modification
    鼠标滚轮实现图片的缩放-------Day79
  • 原文地址:https://www.cnblogs.com/mylive/p/11204757.html
Copyright © 2011-2022 走看看