AI智能
改变未来

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

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

  • 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 nocompatibleset backspace=2

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

    set expandtabset ts=4set sts=4set 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
    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » 最流行的shell,bash详细介绍及入门