• Linux操作系统:Shell基础用法


    什么Shell脚本﹖到底能解决什么问题?Shell脚本其实就是把一批命令集合在一起,解决一些复杂的问题。有点类似于程序设计(在Shell中,变量、分支、循环、函数、数组等与程序设计完全类似的功能),但是本质上来说不是程序设计。Shell的程序复杂度是无法真正与编程语言相提并论的,但是由于与操作系统是集成在一起的,所以能够执行一些更加底层的命令组合,且效率很高。

    🌹一、Shell基础用法

    🌱1、Shell的类型

    命令作用
    Bourne Shell是贝尔实验室开发的,Unix普遍使用的Shell,在编程方面比较优秀,但在用户交互方面没有其他Shell优秀。
    Korn Shell是对Bourne Shell的发展,在大部分内容上与Bourne Shell兼容,集成了C Shell和Bourne shell优点。
    C Shell是SUN公司Shell的BSD版本,语法与c语言相似,比bourne shell更适合编程
    BASH是GNU的Bourne Again Shell,是GNU操作系统上默认的Shell,在Bourne Shell基础上增强了很多特性,如命令补全,命令历史表

    🌱2、Shell操作

    命令作用
    cat /etc/shells列出系统中所有的Shell
    ksh/csh/zsh/bash切换到其它Shell
    chsh qiang使用命令chsh更改用户qiang的默认Shell
    cat /etc/passwd查看用户使用的默认的Shell
    echo $SHELL查看当前环境变量$SHELL的值

    🌱3、Bash基本操作

    命令作用
    TAB键命令补全功能(很实用)
    history命令或上下箭头命令的历史记录
    alias gohome=“shutdown -h now”命令别名功能
    alias myfirewall=“systemctl start firewalld; firewall-cmd --add-port=80/tcp”通过设定一个别名来执行长命令
    crontab作业控制功能
    shell脚本编程非常灵活的脚本编程能力
    ls;cat /etc/passwd;mount三个命令放在一起通过;分隔

    🌱4、echo命令

    命令作用
    echo “HelloWorld”在屏幕上输出HelloWorld
    echo “Hello\nWorld”在屏幕上输出Hello\nWorld
    echo -e “HelloinWorld”在屏幕上输出Hello World
    \a蜂鸣
    \b退格,覆盖前一个字符
    \c不带换行符打印一行
    \f换页
    \n换行
    \r回车
    \t制表符
    \v纵向制表符
    \反斜杠
    \0nnnASCII码对应nnn(八进制)的字符

    🌱5、环境变量

    命令作用
    set显示当前shell的变量,包括当前用户的变量
    env显示当前用户的变量
    export显示当前导出成用户变量的shell变量
    cat /etc/profile全局的环境变量,对任何用户生效
    cat ~/.bash_profile用户主目录下的环境变量,仅对当前用户生效(本地变量定义在此)
    export NAME=Denny定义一个NAME环境变量并赋值为Denny
    echo $NAME输出一个环境变量的值
    unset NAME删除环境变量
    echo $USER当前登录的用户名
    echo $UID当前登录的用户ID号
    echo $SHELL当前所使用的SHELL
    echo $HOME当前用户的主目录
    echo $PWD当前命令行所在的目录
    echo $PATH当前可执行程序的路径(设定了PATH,执行命令就不用输入命令的绝对路径)
    echo $PS1命令的提示字符串(可以试一下export PS1="Welcome Linux#“
    echo $PS2命令一行未写完时换行提示符

    🌱6、普通变量

    命令作用
    1、read NAME 2、Bill Gates从终端将值读入并赋值给变量NAME
    echo $NAME将变量NAME的值输出
    1、read NAME SURNAME 2、Bill 3、Gates此时会将Bill赋值给NAME,而将Gates赋值给SURNAME
    cat ~/.bash_profile本地变量在此定义,将只对本用户生效
    1、NAME=Denny 2、echo $NAME在命令行定义变量NAME并取得其值,注意:在Shell中定义变量时,不能在=号两边加空格,否则会将变量名处理为一个命令,=是命令的第一个参数
    1、SOURCE=/etc/passwd 2、DEST=/opt/learn 3、cp SOURCE DEST利用变量代替对应值进行操作
    1、NAME=Denny 2、readonly NAME设置只读变量,此时变量的值将不能被修改

    🌱7、管道及重定向

    命令作用
    set | grep USER从set的输出中查找包含USER的行
    ls | wc -l根据ls输出的行数来统计该文件夹下的文件数量
    head /etc/passwd >>passwd.txt将/etc/passwd文件的输出重定向到文件passwd.txt中
    tail /etc/passwd >> passwd.txt在文件passwd.txt后面累加
    cat < /etc/passwd将/etc/passwd文件作为cat的输入
    cat < /etc/passwd > passwd2.txt将/etc/passwd文件作为cat的输入,并将输出结果重定向到passwd2.txt中
    ifconfig | tee ifconfig.tee将ifconfig的内容输出到屏幕上同时输出到文件ifconfig.tee中
    ifconfig | tee -a ifconfig.tee以追加的方式输出到文件ifconfig.tee中
    ifconfig 1> ifconfig.out标准输出重定向到文件ifconfig.out中
    ifconfige 1> ifconfig.error将标准输出重定向到文件ifconfig.error中,此处由于不存在命令ifconfige,所以ifconfig.error中将没有内容
    ifconfig 2> ifconfig.error标准错误重定向到文件ifconfig.error中,由于此处没有错误,所以ifconfig.error文件中将没有内容
    ifconfige 2> ifconfig.error标准错误重定向到文件ifconfig.error中
    ls /opt /optt 2> cat.error将标准输出输出到屏幕而将标准错误重定向到cat.error中
    ls /opt /optt 1> cat.error 2>&1标准输出和标准错误一起重定向到一个文件
    ls /opt /optt 2> ls.err 1> ls.out正确的输出和错误的输出分别重定向到不同的文件
    ls /opt /optt 2> /dev/null标准错误信息会输送到系统垃圾箱,而不会输送到屏幕,也不会输出到任何地方
    命令1 && 命令2命令1成功执行后才执行命令2
    命令1||命令2命令1执行失败后才执行命令2
    tty查看当前终端设备编号
  • 相关阅读:
    来浅谈一下:GraalVM下载、安装、特点、概括
    rabbit使用动态队列
    golang中的锁竞争问题
    740 · 零钱兑换 2
    十八、字符串(3)
    计算机竞赛 深度学习人体语义分割在弹幕防遮挡上的实现 - python
    模板、策略以及工厂模式
    22年11月-外包-第四轮面试题
    MySQL的子查询
    第十四届蓝桥杯模拟赛(第二期)
  • 原文地址:https://blog.csdn.net/m0_51456787/article/details/126245028