Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 431|回复: 0

linux之bash详解

[复制链接]
  • TA的每日心情
    开心
    2023-3-18 00:22
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2013-3-11 23:12:02 | 显示全部楼层 |阅读模式

    bash

    shell

    shell:命令行解释器,是用户与系统沟通时的媒介。在unix系统中有各种shell,linux用bash为默认shell。系统可以使用的shell记录在 /etc/shells中。

    如:

    [root@redhat root]# cat /etc/shells

    /bin/sh

    /bin/bash

    /sbin/nologin

    /bin/bash2

    /bin/ash

    /bin/bsh

    /bin/tcsh

    /bin/csh

    [root@redhat root]# a=luowei    //设置变量a的值为luowei

    [root@redhat root]# echo $a    //显示a变量的值

    luowei

    [root@redhat root]# echo ${a}    //显示a变量的值

    luowei

    [root@redhat root]# a=$a123    //这样不能把a赋成luowei123

    [root@redhat root]# echo $a


    [root@redhat root]# a=luowei

    [root@redhat root]# a=${a}123    //这样可以把a赋成luowei123

    [root@redhat root]# echo $a

    luowei123

    [root@redhat root]# unset a    //删除a变量


    环境变量

    使用set可以查看本地变量和环境变量,如:

    [root@redhat root]# set    //查看本地变量与环境变量

    [root@redhat root]# env    //查看环境变量

    预定义环境变量

    系统通过预定义的环境变量来定义shell环境,用户可以用set或env查询当前的环境变量。

    常用的预定义环境变量:

    HOME:当前用户的主目录

    PATH:当前用户的可执行文件搜索路径

    LANG:程序应该使用的默认语言

    PS1:行提示符

    如:

    [root@redhat /]# cd $home        //进入到家目录

    [root@redhat root]# LANG=en    //更改在英文语系

    [root@redhat root]# echo $PS1    //显示PS1中的值

    [\u@\h \W]\$

    \u:显示当前用户的名称

    \h:仅列出主机名的第一个名字

    \W:显示当前工作目录的最后个目录名称

    [root@redhat root]# basename /etc/X11        //截取目录的最后一个目录名

    [root@redhat root]# PS1='[\u@\H \w \A \#]\$'        //设置PS1

    [root@redhat ~ 16:44 32]#

    \H:显示完整的主机名

    \w:显示当前完整工作路径,家目录用~表示

    \A:显示当前时间

    \#:显示当前是第几条命令

    \$:显示提示符

    [root@redhat root]# export a        //将a变量转换成环境变量


    History

    History:可以查询用户以前的过往操作

    如:

    [root@redhat root]# history    //列出用过的命令

    [root@redhat root]# history 10        //列出最后使用过的10条指令

    内存中记录的过往指令数由环境变量HISTSIZE而定。History表存储在内存中,在用户logout时会记录用户主目录下的.bash_history文件中。在下次login时载入。 .bash_history中的指令由环境变量中的HISTFILESIZE而定。

    如:

    [root@redhat root]# echo $HISTSIZE

    1000

    [root@redhat root]# echo $HISTFILESIZE

    1000

    [root@redhat root]# history –w        //将历史指令强制写入.bash_history文件中


    调用过往指令

    使用 ! 来调用过往指令:如

    !!:重复执行上一条指令

    !a:重复执行上一条以a为首的的指令

    !number:重复执行上一条在history表中记录号码为number的指令

    !-number:重复执行前第number条指令

    可以用<ctrl+r>来在history表中查询过往指令

    例:

    [root@redhat root]# !e        //执行最近的以 e 开头的指令

    [root@redhat root]# !$        //截取上一条指令的最后一个参数

    127.0.0.1

    -bash: 127.0.0.1: command not found

    [root@redhat root]# ping !$    //直接ping 127.0.0.1,因为 !$ 截取到的是127.0.0.1

    ping 127.0.0.1

    PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.


    Alias(别名)

    例:

    [root@redhat root]# alias        //列出系统中目前存在的别名

    alias cp='cp -i'

    alias l.='ls -d .* --color=tty'

    alias ll='ls -l --color=tty'

    alias ls='ls --color=tty'

    alias mc='. /usr/share/mc/bin/mc-wrapper.sh'

    alias mv='mv -i'

    alias rm='rm -i'

    alias vi='vim'

    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

    [root@redhat root]# alias a='ls -al'        //设置 a 为 ls –al 的别名

    [root@redhat root]# unalias a        //删除a 这条别名


    命令行表达式

    命令行输出——" "

    将一串字符当成一个字符串对待,如果字符串中包含特殊含义的字符(/,`,$,!),则转义。

    命令行输出——' '

    将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,不转义。

    执行引用符——` `

    引用命令的执行结果

    例:

    [root@redhat root]# echo "$PWD"

    /root

    [root@redhat root]# echo '$PWD'

    $PWD

    [root@redhat root]# ls -l `PWD`    //列出当前目录下的详细信息

    数学运算——$[]

    在中括号内的表达式会被数学计算

    逸脱符——\

    用于取消命令行中字符的特殊含义

    用于表示一行未结束

    例:

    [root@redhat root]# echo $[1+4]

    5

    [root@redhat root]# echo \$[1+4]

    $[1+4]

    [root@redhat root]# mkdir a\ b        //建立一个名为"a b"的目录,\取消了空格的间隔作用

    [root@redhat root]# ls \        // \表示一行未结束

    > /home

    luowei test1

    [root@redhat root]#


    命令行结束符——;

    用于在一行内分隔几个独立命令,表示一行已结束,作用相当于回车键。

    了shell激活——()

    在小括号内的命令行表示激活一个子shell后在子shell中运行。

    [root@redhat root]# ls;pwd;ls –a        //依次分别执行这三条指令

    [root@redhat root]# echo $HOME

    /root

    [root@redhat root]# HOME=/usr

    [root@redhat root]# echo $HOME

    /usr

    [root@redhat root]# HOME=/root

    [root@redhat root]# (HOME=/usr)        //表示这个HOME=/usr 在子shell中运行

    [root@redhat root]# echo $HOME

    /root

    [root@redhat root]#


    逻辑运算符

    &&:当前一条指令执行成功时再执行后一条指令

    ||:当前一条指令执行失败时再执行后一条指令

    例:

    [root@redhat root]# ls /home && touch /home/test1    //如果存在/home则建立/home/test1

    [root@redhat root]# ls /root/test1 || mkdir /root/test1        //如果不存在/root/test1,则建立 /root/test1目录

    [root@redhat root]# ls /root/test && echo "exist" || echo "no exist"

    ls: /root/test: 没有那个文件或目录

    no exist

    [root@redhat root]#


    定制登录shell

    Bash在用户登录时从四个文件中读取环境,设定:

    全局设置文件:/etc/profile ,    /etc/bashrc

    用户设置文件:~/.bashrc    ,    ~/.bash_profile

    其他shell设定文件

    ~/.bash_logout:在用户logout的时候自动执行。

    ~/.bash_history:用户login时自动读取其内容并加载到内存history记录中,logout时将内存history记录写入。

    /etc/profile.d/*.sh:在/etc/profile中被执行,其中的环境设定,也会被全局引用。


    常用快捷键

    Ctrl+d:输入已结束。在shell下相当于一个exit。

    Ctrl+c:键盘中断请求。

    Ctrl+s & ctrl+q:暂停/恢复屏幕输出。

    Ctrl+l:清屏,相当于clear。

    Tab:自动补完命令行与文件名。

    Tab键双击可以列出所有可能匹配的选择。

    例:

    [root@redhat ~ 20:22 35]#cat > test2.txt

    cat > test2.txt

    hello ,i'm luowei.

    welcome to linux's world!        //ctrl+d结束输入

    [root@redhat ~ 20:23 36]#cat test2.txt

    cat > test2.txt

    hello ,i'm luowei.

    welcome to linux's world!

    [root@redhat ~ 20:24 37]#


    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-23 05:52 , Processed in 0.340108 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表