您的位置:首页 > 运维架构 > Shell

最流行的shell,bash详细介绍及入门

2020-08-30 11:07 996 查看

最流行的shell,bash介绍及入门

  • 配置文件
  • Bash

    目前主流的Linux发行版都预装了bash,而且在Redhat系上sh是bash的软链接

    命令窗口

    登录后,首先看到的是命令提示符,一般是

    登录名@主机名:当前路径$
    ,例如
    root@pc2020-virtual-machine:~#
    ,如果最后是
    $
    表示普通用户,
    #
    表示root用户,环境变量
    PS1
    控制命令提示符的样式。

    一个命令窗口就是一个会话, 运行一个命令类似浏览器打开一个标签, 通过

    jobs
    可以查看所有任务,
    fg
    切换到前台,
    bg
    切换到后台, 利用
    nohup
    &
    可以运行与终端无关的后台任务, 利用
    screen
    可以保持断线后任务继续运行, 用户退出后一般的任务都是与终端关联的, 终端没了, 任务也就自动结束了

    快捷键

    作为最常用的命令行环境,快捷键可以极大的提高效率。

    TAB键
    :最常用的就是,可以自动补全文件和目录的路径,也可以补全命令

    鼠标中键
    :复制粘贴是非常高频的动作,鼠标左键选中,中键粘贴,特别常用

    Ctrl + L
    :屏幕上内容非常多时,清屏

    Ctrl + U
    :清除光标到命令提示符的内容

    Ctrl + K
    :清除光标到末尾的内容

    Ctrl + A
    :不是全选,而是移动光标到行首

    Ctrl + E
    :移动光标到行尾

    Ctrl + C
    :取消命令的执行,实际是发送中断信号
    SIGINT
    给进程,例如
    ping
    是不会自动停止的,这个快捷键可以立即停止

    Ctrl + R
    :搜索历史命令

    !!
    :两个感叹号,重复执行上次的命令,
    history
    记录着历史命令,
    !2
    ,倒数第二次运行的命令

    !CMD
    :重复执行上次以CMD开头的命令,例如,
    !git
    ,执行以git开头的上一个命令

    通配符

    Linux的通配符特别简单, 只有三个,

    *
    表示所有,
    [0-9]
    表示范围中的一个,
    ?
    表示任意一个

    表示范围的常用集合:

    alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit

    [^[:digit:]]
    ,表示匹配非数字

    命令历史

    history
    ,显示命令历史,命令是历史记录,一般保存在
    ~/.bash_history
    ,可通过
    HISTFILE
    指定

    HISTFILESIZE=2000
    ,指定历史记录的条数为2000,默认为500条

    HISTCONTROL=ignorespace:ignoredups
    ,可配置忽略重复的和空格开头的命令,Ubuntu默认如此

    HISTTIMEFORMAT="%F %T "
    ,记录命令的执行时间

    help history
    ,显示帮助信息

    history -c
    ,清除所有历史记录

    history -d 1
    ,清除第一条

    history -s xxx
    ,向history中添加xxx

    history -w
    ,保存当前记录到历史记录文件

    命令别名

    help alias
    ,查看帮助

    alias
    ,显示所有命令别名

    alias gt ='git status'
    ,设置
    git status
    的别名为gt,如果想要永久有效,需要配置到配置文件
    ~/.bashrc

    unalias gt
    ,取消gt别名

    \ls
    ,使用ls命令本身执行

    命令缓存

    help hash
    ,显示帮助

    hash
    ,显示所有命令缓存

    hash -p /usr/local/ls ls
    ,设定
    ls
    的缓存路径为
    /usr/local/ls

    hash -r
    ,清除所有缓存

    hash -d ls
    ,删除
    ls
    的缓存

    命令帮助

    一般使用

    xxx --help
    查看命令的简短帮助信息

    type xxx
    , 显示xxx是内建命令, 还是外部命令

    help xxx
    , 显示内建命令的帮助信息

    man xxx
    , 显示xxx的man手册,
    man man
    查看man命令的man手册

    man crontab
    , 显示
    crontab
    命令的man手册

    man 5 crontab
    , 显示crontab文件的man手册

    对于比较复杂的命令, 一般使用网络上的常用参数和参考示例, 见末尾

    常用命令

    which
    命令可检查命令是否存在,如果有则返回命令的路径

    whereis
    , 不仅可以搜索命令,还可以搜索man文档和其他文件

    文件目录命令

    pwd
    , 打印当前工作目录

    cd xxx
    , 切换到xxx目录,
    ~
    表示家目录,
    -
    表示上一次的目录,
    .
    表示当前目录,
    ..
    表示上级目录

    ls
    , 列出目录中的文件,
    ls -l
    , 长格式,
    ls -a
    所有文件, 其他参数还有
    tArRidh

    stat xxx
    , 查看文件的元数据

    chmod 644 xxx
    , 修改文件的权限, 文件默认权限为644, 表示本人可读写, 其他可读, 目录为755, R表示递归修改权限

    chown xxx:xxx yyy
    , 修改文件的属主为xxx, 属组为xxx, 同样R可递归修改

    rmdir xxx
    , 删除空目录

    mkdir -p xxx/yyy/zzz
    , 递归创建目录

    rm xxx
    , 删除文件, f参数可强制删除, r递归删除

    cp -a xxx yyy
    , 归档复制文件, 即保留文件的时间属主权限等信息

    mv xxx yyy
    , 移动文件, i参数可交互式移动, f可强制覆盖

    文本命令

    最常用的是less查看文本, vim修改文件

    vi
    , 默认进入的是命令模式, ,
    a
    可以追加并切换到插入模式,
    o
    增加一行, 并进入插入模式,
    i
    直接进入插入模式,
    ESC
    键可退出插入模式,
    :
    进入单行命令模式,
    :wq
    保存退出,
    :q!
    强制退出, 其他的编辑器还有gedit, 图形界面类似记事本, nano命令行的文本编辑器

    Ubuntu中默认情况下, 使用兼容模式, 方向键不会移动光标, backspace没有删除的功能,

    hjkl
    分别是左下上右键,
    x
    键可以删除一个字符

    加上下面两行配置可正常使用方向键和退格键, 可配置到

    .vimrc

    set nocompatible
    set backspace=2

    一般写代码需要缩进, 一般使用4个空格代表一个制表符, 常用phpMyAdmin的配置:

    set expandtab
    set ts=4
    set sts=4
    set sw=4

    但Linux kernel中却是

    tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab

    less -N xxx
    查看文本, 可以使用方向键和空格翻页, N可显示行号, q退出, 对于大文件的优化特别好, 帮助信息简单明了, 支持正则搜索, 支持标记和导出

    其他命令还有:

    cat tac more tail head tailf

    tail -f xxx
    , 跟踪文件的内容

    tail -c 200MB xxx > yyy
    , 导出文件的最后200MB到另一个文件,
    +200MB
    ,表示文件的前200MB

    find . -name "*.mp4" -exec ls -l {} \;
    , 查找并列出文件

    find . -name "*.mp4" | xargs ls -l
    , 利用xargs可以自定义参数的传递方式

    fgrep xxx /var/log/secure
    , 文本中搜索指定的字符, 速度非常快, 没有使用正则

    grep -E
    , 扩展的正则, 因为基本正则许多字符都需要转义, 常用扩展的,
    grep -P
    , 使用perl的正则

    grep -E '^(r[a-p]{2}t).*?\1.*?\1' /etc/passwd
    , 匹配root, 并随后出现两次

    压缩命令

    最常用的是tar,其次是gzip和zip

    tar cvf xxx.tar.gz yyy
    , 创建压缩文件, 需要cd到上一层目录, gz表示使用gzip格式, xz表示使用bzip2格式

    tar xf xxx.tar.gz
    , 解压缩文件

    ls -l | gzip > xxx.gz
    , 表示将命令的输出结果压缩为文件

    进程命令

    ps aux
    ps -ef
    , 显示所有进程

    pgrep
    , 搜索进程

    kill -s SIGHUP xx
    , 给进程发送一个指定的信号

    pkill xxx
    , 根据进程名结束进程

    yum -y install lrzsz
    , 安装程序包

    rpm -iv xxx.rpm
    , 安装rpm包

    系统管理命令

    shutdown -h now
    , 立即关机,
    shutdown -h +5
    , 5分钟后关机,
    shutdown -h 16:48
    , 指定时间关机,
    shutdown -c
    , 取消关机

    reboot
    , 立即重启

    passwd
    , 设定当前用户密码,
    passwd www
    , 设定www用户的密码, 此命令还有锁定用户等功能

    su - www
    , 切换到www用户, 环境变量一并切换,
    su - www -s /bin/bash -c ls
    使用www用户身份, 以bash执行ls命令

    sudo -u www ls
    , 以www身份执行ls, 如果不指定用户, 则以root用户执行, 使用
    visudo
    可以添加sudo权限

    磁盘命令

    free -mh
    , 查看内存容量

    df -h
    , 查看磁盘容量

    du -sh
    , 查看目录所占的磁盘大小

    mount
    , 用于挂载磁盘

    上传下载命令

    最常用的就是sftp, 通过

    get
    ,
    put
    上传下载, 但是多层转发比较麻烦, 还有通过ftp协议的lftp

    其次就是

    rz
    上传,
    sz
    下载, 可以穿透多层主机, 比如通过Nginx主机ssh登录MySQL, 可以直接上传下载

    rz -y
    , 覆盖上传

    最后就是通过HTTP协议的curl和wget

    wget默认自动302转发, 而curl默认不会

    配置文件

    配置文件分为两类,环境变量及登陆后的程序类profile,函数及别名类bashrc。

    配置文件路径:

    /etc/bashrc
    /etc/profile
    /etc/profile.d/
    ~/.bashrc
    ~/.bash_profile

    交互式登陆,就是要输入用户名密码的登陆和

    su - USERNAME

    依次加载:

    /etc/profile.d/*.sh
    /etc/profile
    /etc/bashrc
    ~/.bashrc
    ~/.bash_profile

    Ubuntu系依次加载:

    /etc/bash.bashrc
    /etc/profile.d/test.sh
    /etc/profile
    /root/.bashrc
    /root/.profile

    非交互式登陆,桌面中打开终端和

    su USERNAME

    依次加载:

    /etc/profile.d/*.sh
    /etc/bashrc
    ~/.bashrc

    Ubuntu系依次加载:

    /etc/bash.bashrc
    /root/.bashrc
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: