linux里面标准输入输出是什么?

最近在看《Linux Shell编程从入门到精通》这书,把之前朦胧的知识再巩固一下,作些记录。

  • | 表示管道,上一条命令的输出,作为下一条命令参数,如 echo 'hello' | wc -l

STDIN就是标准输入,默认从键盘读取信息;STDOUT是标准输出,默认将输出结果输出至终端,也就是显示器之类的东西;STDERR是标准的错误信息,默认也会显示在终端上。由于STDOUT与STDERR都会默认显示在终端上,为了区分二者的信息,就有了编号的0,1,2的定义,用1表示STDOUT,2表示STDERR。

  • 版本:ios 1.2.1 亮点: 1.app角标可以实时更新天气温度或选择空气质量,建议处女座就不要选了,不然老想...

  • 我是一名过去式的高三狗,很可悲,在这三年里我没有恋爱,看着同龄的小伙伴们一对儿一对儿的,我的心不好受。怎么说呢,高...

  • 这些日子就像是一天一天在倒计时 一想到他走了 心里就是说不出的滋味 从几个月前认识他开始 就意识到终究会发生的 只...


  • c语言编译型 --》一次性编译成二进制文件,然后去执行二进制文件,跟源代码文件没有关系了,c语言里面源代码文件进行了修改,必须要重新编译,然后去执行新的二进制文件。

    python解释型语言 --》一边编译一边执行,只要源代码有更新会根据源代码一行一行解释

    c的速度比python快,因为c语言是把文件全部编译为二进制文件然后再执行,所以速度快,python是一边编译一边执行,所以速度慢一点

    cpython是使用c语言写的解释器

    必须使用最新版本来测试,测试后的速度确实比python3快4倍左右

    c语言,shell,cpython三种解释器的速度比较

    先分别创建用c语言,shell,和python写的三个脚本

    内容都是:输出:“hello,world”

    C语言的脚本需要先编译再执行

    可以看出,c确实比python快

    # shell的底层很多也是用c来写的,所以速度也比较快

    epel是一个丰富的第三方软件库

    centos里面可以使用的源:

    源:软件的来源,软件仓库,大量的软件可以去下载使用

    第三方的源:epel源

    python文件执行 有一个中间过程

    python文件执行是会生成一个字节码文件,相当于一个已经编译好的二进制文件

    以.pyc结尾的文件就是字节码文件,起到加速的作用

    如何看到以.pyc结尾的字节码文件?

    然后就可以看到字节码文件了

    wget是linux里面的下载软件,类似于windows里面的迅雷

    默认下载的软件放在当前文件夹下面

    curl是linux下面字符界面的浏览器,也可以下载软件

    给计算机里输入内容地方式:键盘输入,语音,图像,图形等

    规定从键盘输入是最标准的

    程序执行完成后,需要反馈

    反馈到屏幕是最容易让人知道的

    规定输出到屏幕是最标准的

    正确的标准输出 --》都是输出到屏幕

    标准输入和标准输出都是人

    passwd:所有的身份验证令牌已经成功更新。

    \passwd:所有的身份验证令牌已经成功更新。

    作用是告诉passwd命令 管道符号送来的内容可以作为标准输入使用

    如果不接--stdin的话会报错

    新的 密码:无效的密码: 密码少于 8 个字符

    重新输入新的 密码:密码更改取消。

    新的 密码:密码更改取消。

    新的 密码:密码更改取消。

    passwd: 已经超出服务重试的最多次数

    接受用户输入的用户名,帮助新建用户,并且设置密码

    接受用户输入:read

    如何判断用户是否创建成功?

    如果用户新建成功会显示:

    如果用户不存在会显示:

    shell脚本在执行的时候是从上而下,一条一条的执行,

    中间哪条命令执行失败,后面的命令也会执行

    如何想知道整个linux系统里面有哪些用户呢?

     为什么不在/home下面查看有哪些用户?

    因为有些用户新建可能没有建家目录

    例如:在新建用户的时候 加一个选项 -r

    可以看到家目录下面并没有kimi2这个用户

    还有可能在新建用户的时候将家目录放到别的目录下面了

    -d 选项,指定家目录的位置,默认放在/home下,可以是其他地方

    - 会加载新用户的环境变量,不使用上一个用户的环境变量

    那么我们在家目录里面也找不到该用户

    这时我们的脚本有一个bug,就是当我们在输入一个已经存在的用户时候,会出错,提示用户已经存在,但是密码还是会继续修改,因为shell脚本从上往下执行,执行失败也会继续执行,所以我们要加一个if判断,判断用户是否存在

    # 判断用户是否已经存在

    # 无论是正确的还是错误的都输出到黑洞文件

    /dev/null是一个特殊的文件,任何的内容重定向到这个文件,都不会保存

    改变命令的输出方向,本来标准输出往屏幕上输出,重定向后命令不再往屏 幕输出,而是输出到文件里,重定向不会影响命令的返回值的

    无论正确的还是错误的重定向到黑洞文件 /dev/null

    三个重要的链接文件文件:

    linux操作系统的理论知识:

    /proc : 存放linux内核信息的,外面的用户可以通过访问/proc文件夹·去了解内核里面的信息

    1.对cpu进行调度管理

    linux内核给每个进程创建了一个文件描述符表,这个表里记载了这个进程所打开的所有文件,为了方便进程知道自己打开了哪些文件,就给每个文件进行了编号,这个编号就是文件描述符,而且进程对文件进行读写操作的时候,就直接使用编号了,不再使用文件名。

    内核kernel利用文件描述符来访问文件,文件描述符是非负整数

    linux里面一起切皆文件

    任何硬件都会有一个文件和它对应

    linux 操作系统默认允许一个进行只能打开1024个进程

    所有默认的文件描述的范围:0~1024

    使用w查看linux用户登录情况

    终端:面向最终用户的端口

    tty1:直接登录操纵的第1个终端 --》真正的终端

    linux里面允许最多6个可以直接登录的终端

    6个终端,一个终端卡住了可以换一个终端登录

    pts文件夹下是远程登录过来的终端类型 --》仿终端,,模拟的终端

    what : 用户登录进入linux系统里面正在使用的命令

    FROM: 用户从哪里登录过来的

    Linux基础命令(上)

    1、了解VMware备份的两种方式

    2、能说出快照与克隆的区别

    3、了解Linux系统文件

    4、掌握Linux常用命令

    在VMware中备份的方式有2 种:快照或克隆。

    快照:又称还原点,就是保存在拍快照时候的系统的状态(包含了所有的内容),在后期的时候随时可以恢复。

    注意:侧重在于短期备份,需要频繁备份的时候都可以使用快照,做快照的时候虚拟机中操作系统一般处于开启状态

    快照:使用VMware实现快照,具体操作步骤,参考如下

    第一步:选择虚拟机菜单,点选快照中的拍摄快照

    在对话框中填写基本的信息,之后点击拍摄快照即可。

    第二步:对于快照进行管理(恢复、删除)

    对快照的管理需要在"虚拟机" -> "快照" -> "快照管理器"中进行管理

    克隆:就是复制的意思。

    注意:克隆侧重长期备份,做克隆的时候是必须得关闭(了解)

    克隆:使用VMware实现克隆,具体操作步骤,参考如下

    先关机 –> 右键需要克隆的虚拟机 –> 管理 –> 克隆

    克隆好的服务器相关密码帐号等信息与被克隆的系统一致。但是,克隆出来的机器网卡不能直接启动使用,需要配置。

    克隆与快照的最大的区别:克隆之后是2 台机器,而快照之后依旧是1 台机器(影子系统)。后期的危险操作前建议使用快照。

    二、Linux系统文件

    1、文件与文件夹(目录)

    文件可以分为一般文件(黑色)和可执行文件(绿色)。

    一般文件特点其打开(编辑器打开)后会看到里面有内容,或者可以往其中写内容。(黑色的)

    可执行文件在Windows 下一般为exe、msi、bat 等后缀,其特点就是双击之后可以直接运行。(绿色的)

    用于存储文件(当然也可以存储文件夹)的夹子称之为文件夹。(天蓝色的)

    ① 日常运维工作中,有近一半以上的工作内容、精力其实都是对文件的操作。

    ② Linux 本身也是一个基于文件形式表示的操作系统。

    小常识:在Linux系统中,一切皆文件
    在windows 是文件的,在Linux 下同样也是文件;
    在windows 不是文件的,在Linux 下也是以文件的形式存储的(进程等);

    日常学习中和日常工作中,对于文件的操作的都有哪些种类?

    创建文件、删除文件、修改文件、打开文件、复制文件、移动文件、重命名文件等。

    2、Linux 系统的文件目录结构

    bin:全称binary,含义是二进制(逢二进一)。该目录中存储的都是一些二进制文件(可执行文件,命令),文件都是可以被运行的。普通二进制目录,里面的二进制文件(命令),普通用户可以执行且超级管理员也可以执行。
    dev:device,该目录中主要存放的是外接设备,例如盘、其他的光盘等。在其中的外接设备是不能直接被使用的,需要挂载(类似windows 下的分配盘符)。
    etc:该目录主要存储一些配置文件,非常重要!!!
    home:表示“家”,表示除了root用户以外其他用户的家目录,类似于windows下的User/用户目录。
    proc:process,表示进程,该目录中存储的是Linux 运行时候的进程, 此目录下不能建立和删除文件;(某些文件可以修改)。
    root:该目录是root 用户自己的家目录。
    sbin:全称super binary(shell binary),该目录也是存储一些可以被执行的二进制文件,但是必须得有super 权限的用户才能执行。(superman超人)
    tmp:temp缩写形式,表示“临时”的,当系统运行时候产生的临时文件会在这个目录存着。
    var:variable(可变的,变量),存放的程序/系统的日志文件的目录。
    mnt:当外接设备需要挂载的时候,临时挂载用的设备挂载点;(如磁盘分区,网络共享)

    后续需要了解的几个目录:

    boot:系统在启动时需要加载的文件存储目录;
    lib:library,函数库目录,专门存储计算机系统在启动时以及其他软件在运行时需要加载的函数库文件;
    lost+found:Linux 也很难避免不出现断电、宕机等等情况,如果断电有些文件可能还并没有完全保存好,那么此时对应文件就会存储在该目录中,下次启动时候可以再去使用;

    三、Linux命令入门

    问题:后期Linux 服务器都是以纯命令行的形式运行的,那在桌面模式下是否有命令输入的地方?

    答:有,可以使用终端输入命令,在顶部单击应用程序菜单,选择系统工具,选择终端即可。

    什么是Linux 的命令?

    答:就是指在Linux 终端(命令行)中输入的内容就称之为命令。

    一个完整的命令的标准格式:Linux 通用的格式

    # 命令(空格) [选项](空格)[参数]

    注意:后期被"[]"包裹的表示该项为可选项,可写可不写,具体得看需要一个命令可以包含多个选项。操作对象也可以是多个。

    以下相关命令操作,建议使用超级管理员root进行实现。

    含义:列出当前工作路径下的文件名称

    用法二:# ls 路径,查看某个路径下的文件信息

    关于路径:路径分为 绝对路径和相对路径。
    绝对路径:不管当前工作路径是在哪,目标路径都会从“/”磁盘根下开始。
    相对路径:除绝对路径之外的路径称之为相对路径,相对路径得有一个相对物(当前工作)。
    只要看到路径以“/”开头则表示该路径是绝对路径,除了以“/”开头的路径称之为相对路径。
    ../:表示上级目录(上一级)
    ./ :表示当前目录(同级),普通文件./可以省略,可执行文件(绿色)必须加./
    文件夹名称/:表示下级目录(下一级),注意这个斜杠/

    用法三:# ls 选项 路径

    含义:在列出指定路径下的文件/文件夹的名称,并以指定的格式进行显示。

    #ls -la 路径 【在Linux 命令语法中,多个选项可以合并写成-abcdef 这种形式】

    -l :表示list,表示以详细列表的形式进行展示

    -a:all,表示显示所有的文件/文件夹(包含了隐藏文件/文件夹)

    在Linux 中隐藏文档一般都是以"."开头,"."表示当前路径,".."表示上级路径(相对当前路径)
    注意第一列的第一个字符,上述图中只有一个不是以“d”开头,其他均为“d”打头,该位表示文档类型,“d”表示文件夹,“-”表示是文件
    文件&文件夹在ls结果中所表示的颜色是不一样的,文件夹的颜色一般都是蓝色的,文件一般都是黑色的(所说的颜色均是指在终端中的默认颜色)

    含义:列出指定路径下的文档结构,以指定的方式进行显示。

    -l:表示以列表的形式进行显示

    -h:表示以较高可读性(文档大小)的形式进行展示

    需要注意:单位不一定是k,系统会在获取其大小之后为文档找到一个合适的单位,因此单位可是“K”、“M”、“G”、“T”其中之一。

    含义:告诉用户当前所在的路径

    作用:用于切换当前的工作目录的

    说明:路径是可以写也可以不写的,但是含义必定是不一样的,写路径的话则表示切换到指定路径,如果不写表示切换到当前登录用户的家目录中。

    特别用法说明:在Linux 中有一个特殊的符号“~”,表示当前用户的家目录,等价于直接cd。

    切换的方式:# cd ~ 【表示切换到当前用户家目录中】

    作用:用于清除终端信息(清屏)

    作用:用户获取当前用户的用户名

    扩展命令:halt命令

    在实际应用中,我们也可以直接使用halt命令进行关机操作。

    当我们执行shutdown -h 10这个命令时,系统就处于关机等待状态。如果后悔了想取消关机,我们可以使用快捷键Ctrl + C按键进行取消关机。

    解析:Ctrl + C在Windows中代表复制,但是在Linux操作系统中,代表中止当前进程。

    四、Linux基本命令

    在实际应用中,与目录相关的操作主要有两个:创建目录与删除目录

    语法:# mkdir 路径(需要包含文件夹名称)

    特别注意:mkdir命令默认不能隔级创建目录,必须要求要创建的目录所在的目录一定要存在,如果想创建多层不存在的路径,可以使用mkdir -p进行实现。

    作用:用于创建多层不存在的路径,主要是补充用法一【-p:表示parents,父母的意思】

    语法:# mkdir -p 路径(需要包含目录名称)

    用法三:同时创建多个目录

    语法:# rmdir 路径(需要包含目录名称)

    用法二:同时删除多个空目录

    用法三:递归删除空目录

    作用:首先删除子目录,删除成功后,删除上级目录,直至结束。

    在实际应用中,与文件相关的操作主要有两个:创建文件与删除文件

    语法:# touch 文件路径 [文件路径2 文件路径3 …]

    用法二:同时创建多个文件

    作用:删除文件或文件夹

    语法:rm [-rf] 文件或文件夹路径

    选项:-r :递归删除

      -f :强制删除,不提示任何信息。操作前一定要慎重!!!

    用法三:强制删除文件或目录

    命令:cp (copy缩写,复制操作)

    作用:复制文件/文件夹到指定的位置

    语法:#cp [-r] 被复制的文件路径 文件被复制到的路径

    选项:-r:recursion,递归,表示将文件夹中所有的下属文件/文件夹都复制。如果是使用cp命令来复制文件夹,则-r 就不是选项,而是必须项

    注意:复制过程中文档的名称是不变的。

    命令:mv (move,移动,剪切)

    作用:移动文档到新的位置

    语法:#mv 需要移动的文档路径 需要保存的位置路径

    ☆ mv 与 cp 命令不一样,不管是针对文件还是针对文件夹都不需要加类似 -r 的选项。
    ☆ 在移动的过程中文档名称名称是不变的,变的是路径

    在Linux 中重命名的命令也是mv,语法和移动语法一样。区别在于重命名的话一般是路径不变,名称改变。【而移动是名字不变,路径变】

    语法一:gzip 需要压缩的文件

    压缩速度快,压缩率低,cpu开销比较低

    压缩:bzip2 需要压缩的文件

    解压:bzip2 -d 需要解压的文件

    压缩速度慢,压缩率高,cpu开销大

    压缩率高,解压速度快,压缩时间较长,cpu消耗相对较大

    压缩:xz 需要压缩的文件

    gzip 、bzip2或xz命令带有多个文件作为参数时,执行的操作是将各个文件独立压缩,而不是将其放在一起进行压缩。这样就无法产生类似于Windows环境下的文件夹打包压缩的效果,为了实现打包压缩的效果,可以使用命令 tar 进行文件的打包操作(archive),再进行压缩。

    tar命令可以将文件打包成文件档案(archive)存储在磁盘/磁带中,打包操作一般伴随压缩操作,也可以使用 tar 命令对打包压缩后的文件解压。

      -v,可视化的意思,即可以查看创建的过程,可以省略

    -f,必选参数,不能省略

      -u,update缩写,更新原打包文件中的文件(了解)

      -r,append含义,向压缩归档文件末尾追加文件(了解)

      -t,查看打包的文件内容(了解)

    示例代码:这条命令是更新原来tar包hw.tar中hello.txt文件,-u是表示更新文件的意思

    示例代码:这条命令是将readme.txt的文件增加到hw.tar的包里面去。-r是表示增加文件的意思

    2)打包并压缩(重点)

    tar 在打包的时候,是支持压缩的,之前讲过的 gzip 、bzip2 、xz 压缩工具都可以在 tar 打包文件中使用。

    选项:-z,压缩为.gz格式

    -J,压缩为.xz格式

      -v,可视化的意思,即可以查看创建的过程,可以省略

       -f,使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。必选参数,不能省略

    解压的时候,把压缩命令中的 c 换成 x 即可

    使用选项 -tf ,可以查看压缩文件内容,并且都适用以下三种压缩文件

    ③ zip压缩与解压缩(了解)

    作用:兼容类unix与windows,可以压缩多个文件或目录

    语法:# zip [-r] 压缩后的文件 需要压缩的文件(多个文件)

    注意:zip压缩默认压缩后的格式就是.zip,当然也可以加后缀.zip,一般都加上

    语法:unzip 要解压的压缩文件 [-d] 解压目录

    选项:-d,directory缩写,代表解压文件到指定目录下

    用法一:解压到当前目录

    用法二:解压到指定目录

    场景:一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。

    >:标准输出重定向 => 覆盖输出,会覆盖掉原先的文件内容

    >>:追加重定向 => 追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加

    语法:# 需要执行的有输出的命令 输出重定向符号>或>> 输出到的文件路径

    说明:文件路径中的文件可以是不存在的文件(文件路径要符合touch 创建的要求)

    用法二:echo命令,作用:字符串输出

    用法三:使用echo命令向文件中写入自定义内容

    2> :标准错误重定向

    &> :标准输出和标准错误重定向

    作用:正序查看文件内容

    语法:# cat 文件名称

    其实cat方法还有一个非常实用的功能,可以进行文件内容合并

    语法:#cat 待合并的文件路径1 待合并的文件路径2 …. 文件路径n > 合并之后的文件路径

    作用:倒序查看文件内容

    语法:# tac 文件名称

    man manul缩写,代表手册。详细帮助,任何命令,任何配置文件都可以在man文档中找到相关信息
    8 管理员相关工具命令和后台的程序(sbin)
    man 5 配置文件的名字(不用加路径)

    主要功能:查看一个命令是属于内部命令还是外部命令。

    history:中文翻译,代表历史

    主要功能:查看以前输入的Shell命令信息

    驱动与实用工具的集合。

    第一步:找到VMware Tools菜单,如下图所示:

    第二步:查看VMware Tools光驱图标是否显示:

    第三步:打开CentOS系统的终端(类似DOS窗口)

    如果使用普通用户登录操作系统,必须切换到超级管理员root。

    第四步:找到VMware Tools所在路径,一般是在/media目录下:

    在Linux系统中,如果我们不记得某个命令或者不记得某个路径或名称,不要担心,只需要输入前几个字母 + Tab键,系统会自动帮助我们补全。

    第五步:输入ls命令,查看当前目录下有哪些文件

    第六步:使用cp命令,把文件复制到/root目录下(自己的家里)

    第七步:回到自己的家目录(/root),使用cd命令

    第八步:使用tar命令解压.tar.gz文件

    第十一步:执行重启命令

    我要回帖

    更多关于 linux有哪些文件类型 的文章

     

    随机推荐