开发者

一篇通俗的Linux Shell体验教程

开发者 https://www.devze.com 2023-05-05 09:57 出处:网络 作者: 清风莫追
目录linux】1 Shell 1. 语录2. Shell2.1 程序2.2 目录2.3 文件2.3.1 简单文件操作2.3.2 重定向2.4 管道3 汇总与小结Linux】1 Shell
目录
  • linux】1 Shell
    • 1. 语录
    • 2. Shell
      • 2.1 程序
    • 2.2 目录
      • 2.3 文件
        • 2.3.1 简单文件操作
        • 2.3.2 重定向
      • 2.4 管道
      • 3 汇总与小结

        Linux】1 Shell

        1. 语录

        计算机不仅仅用来开发个网站或软件,更是我们手中的利器,我们的tools。

        shell是我们与计算机交互的主要方式,可视化的图形界面其实很受限,你只能通过预设的按钮去做一些事情。

        2. Shell

        2.1 程序

        操作系统中通常都有一个”shell“,例如Windows中的PowerShell。它们之间可能有些区别,但总的来说差不多。在windows系统中,也可以通过安装Git,使用linux风格的git bash 。(windows 下的git bash有时也不太一样,更建议真正的linux系统)

        shell中可以通过输入程序名来执行程序,比如有个程序叫date,就之间输入($是命令提示符,就像windows中的>)

        $ date
        Sat Mar 18 20:52:33     2023
        

        可以给程序传递参数,例如程序echo的运行效果就是把传递给它的参数打印出来,

        $ echo hello
        hello
        

        此外,如果有多个参数,参数之间是使用空格分开的,如果传多单词组成的参数,可以使用\(转义字符),例如下面其实只给echo传了一个参数,

        $ echo hello\ world
        hello world
        

        系统可以找到你输入的程序,是通过 Path(路径),可以查看环境变量中的所有路径

        $ echo $PATH
        /c/Users/ThinkPad/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin:/c/Users/ThinkPad/bin:/c/Program Files/Common 
        ...(我省略了)
        

        在你输入一个程序名,比如echo时,shell就会在系统的所有路径的目录中搜索该程序,你可以这样查看一个程序所在的路径

        $ which echo
        /usr/bin/echo
        

        补充:关于程序(命令)的参数,我们使用-后面接单个字母,使用--后面接单词。例如-a--all

        2.2 目录

        程序默认会在当前目录下运行。下面是一些常用的目录操作

        命令介绍
        pwd(print work directory)打印android当前目录路径
        ls列出当前目录下的文件,使用-l参数将显示更多详细信息
        cd切换目录到指定目录,使用cd -可回到刚才所在的目录,方便在两个目录间切换。.表示当前目录,..表示父目录,~表示用户目录,/开头表示根目录。

        通过--help参数,可以查看某个命令的用法,例如

        $ ls --help
        

        想一想:ls -l列出的目录列表及其信息,如何解读?

        而操作文件需要权限,你需要拥有整条路径的权限才能对文件进行相应的操作。下面是一些和文件操作有关的命令介绍。

        2.3 文件

        2.3.1 简单文件操作

        你可以使用mv命令给文件重命名,即使它是move(移动)的意思。假设你在当前的目录下已经有个文件hello.txt,那么你可以使用命令

        $ mv hello.txt hello2.txt
        

        将它重命名为hehttp://www.devze.comllo2.txtcp命令可以复制文件,它的意思是copy (很显然),你可以接着刚才的命令使用

        $ cp hello2.txt hello.txt
        

        那么你的hello.txt文件又回来了!现在你有了两个相同内容的文件,却有着不一样的名字。但估计你会觉得这有些多余,但好在你可以使用命令rm删掉其中一个,就像下面这样

        $ rm hello2.txt
        

        好了,现在我们又回到了刚刚开始的样子,但我们刚刚的操作已经在终端留下了杂乱的信息,使用clear命令清除它们!

        $ clear
        

        如果你想新建文件,可以使用touch命令,比如新建一个空hello2.txt文件

        $ touch hello2.txt
        

        有时你会感觉命令的名字有些奇怪,为什么创建文件要是touch?其实它就像前面的mv命令,重命名仅仅对它的一种使用方式,而它能做的不止于此,它其实可以将文件移动到你计算机的任何一个地方!

        touch是一个时间戳命令,当操作的文件不存在时就会自动新建一个文件——而不是它本身只有新建文件的功能。当你感到疑惑时可以使用touch --help看看帮助文档。而我使用echo命令同样达到新建文件的目的

        $ echo '' > hello3.txt
        

        它将新建一个空文件hello3.txt 。你可能看着这些linux命令就像回到了高中背单词的时候,同一个单词有着相互略微联系的多种用法——也确实如此,单词是语言的基础。

        至于刚刚命令中的>>符号,相信大家一看就懂,我们后面开发者_云计算也将会进一步介绍。

        2.3.2 重定向

        程序的输出除了直接显示到屏幕上,你也可以将它保存到文件里,而重定向可以帮你达成这个目标。这里有个流的概念,每个程序都有自己的输入流与输出流,程序从自己的输入流中读取数据,并将运行结果写入到输出流中。而程序默认从键盘输入获取数据,并将运行结果写到屏幕上,我们将键盘输入称为标准输入流,将屏幕称为标准输出流。而重定向将助你获得修改程序输入、输出方向的能力——而不总是键盘和屏幕。

        echo命令将输入流中的数据传递到输出流,但我现在不想输出到屏幕,我要将输入的内容保存到文件里,那么可以使用>——重定向输出流。

        $ echo hello > hello.txt
        

        想一想:为什么echo < hello.txt输出为空?

        类似地可以使用<重定向输入流。cat命令可以将文件输入显示到屏幕,如

        $ cat hello.txt
        hello
        

        现在我们通过重定向,可以将hello.txt文件的内容复制到另一个文件hello2.txt

        $ cat < hello.txt > hello2.txt
        $ cat hello2.txt
        hello
        

        cat程序从hello.txt中获得输入,并将输出写入了hello2.txt中——而不是屏幕上。

        >重定向的输出流是覆盖模式,对应到文件操作中,就是先清空文件中原有的内容,然后写入新内容。python如果你是想在原来的基础上添加一些内容,那么>>很适合你,它将以追加模式写入新内容。

        $ echo worwww.devze.comld >> hello.txt
        $ cat hello.txt
        hello
        world
        
        命令介绍
        <重定向输入流
        >重定向输出流,以覆盖模式写入
        >>重定向输出流,以追加模式写入

        2.4 管道

        一个程序的输出可以保存到文件里,也可以直接传递给另一个程序。将左侧程序的输出直接作为右侧程序的输入,这便是管道的作用,管道符为|。

        tail命令通过-n参数,可以输出它输入中的最后n行。命令ls -l /会显示出很多信息,那么通过下面的命令我可以只显示其中最后两行:

        $ ls -l / | tail -n 2
        -rw-r--r--  1 ThinkPad 197121   24183 Nov 28 12:20 unins000.msg
        drwxr-xr-x  1 ThinkPad 197121       0 Nohttp://www.devze.comv 28 12:20 usr/
        

        tee命令可以将输入同时输出到屏幕和指定的文件中,那么加上管道你可以像下面这样

        $ echo linux1234 | tee hello.txt
        linux1234
        

        3 汇总与小结

        本节介绍的一些命令、变量、参数如下表所示。

        命令介绍
        date显示当前时间
        echo将输入显示到屏幕
        $PATH环境变量
        which查找程序的位置
        pwd打印当前路径
        ls列出当前目录下的目录和文件
        cd切换当前目录
        --help查看程序的帮助文档
        mv重命名文件
        cp复制文件
        rm删除文件
        clear清除终端输出
        touch新建文件
        <重定向输入流
        >重定向输出流,覆盖模式写入
        >>重定向输出流,追加模式写入
        |管道符,左侧程序的输出作为右侧程序的输入
        tail-n参数将输入中的最后n行输出
        teeprint to both your file and screen

        本文仅仅大致介绍了linux shell的概况与使用,后面还有着更加精彩的世界等着大家自由探索。

        以上就是一篇通俗的Shell体验教程的详细内容,更多关于Linux Shell教程的资料请关注我们其它相关文章!

        0

        精彩评论

        暂无评论...
        验证码 换一张
        取 消