当前位置:   article > 正文

【Linux】(14)重定向的基础知识和使用_操作系统中有关重定向类型的题目的讲解

操作系统中有关重定向类型的题目的讲解

目录

一、解释型语言和编译型语言

        1.1 python解释器

        1.2 下载软件

        1.2.1 wget

        1.2.2 curl

        1.2.3 区别

二、判断用户是否存在

        2.1 id

        2.2 cat /etc/passwd

        2.2.1 grep

        2.3 用户的家目录

        2.3.1【用户可以没有家目录】

        2.3.2【用户的家目录不在/home】

        2.3.3 删除用户

        2.3.4 切换用户的注意事项

三、【前提】重定向

        3.1 标准输入和标准输出

        3.2 设置用户密码

        3.3 脚本练习

        3.3.1 if和$?

        3.2.1 shell完成

        3.3 输入输出重定向

        3.3.1 &>

        3.3.2 Linux操作系统的理论知识

        3.3.3 交互式硬件设备

        3.3.4 终端(w)

        3.3.5 利用重定向从一个终端输出到另一个终端

        3.3.6 ulimit 查看Linux内核的限制参数

四、练习(补充:kill)

         4.1 kill:踢出其他非法登录Linux系统的用户

        4.2 ssh远程登录

五、【使用】重定向

        5.1 标准正确输出重定向 >

        5.2 标准输出追加重定向 >>

        5.2.1 复制文件内容粘贴到另一个文件

        5.2.2 合并两个文件内容

        5.3 标准错误输出重定向 2>

        5.4 同时使用1>和2>

        5.5 清空文件但不删除

        5.6 正确和错误输出重定向

        5.7 标准的输入重定向

        5.8 here document(即

        5.8.1 将键盘输入的内容重定向到一个文件里

        5.8.2 生成一个指定内容的文件

        5.9 tee

六、设备文件

        6.1 /dev/null

        6.2 /dev/zero

七、read隐藏输入的密码


一、解释型语言和编译型语言

c语言--编译型:一次性编译成二进制文件,然后执行二进制文件,跟源代码文件无关。

        如果c语言源代码文件进行了修改,必须要重新编译,生成新的二进制文件,然后去执行新的二进制文件。

python--解释型:一行一行代码的去解释执行,只要源代码有更新就会重新根据源代码一行一行解释

【c的速度要比python快】

        1.1 python解释器

pypy、Cpython(用c语言写的)、Ipython、Jpython、Ironpython

        1.2 下载软件

        1.2.1 wget

【安装wget】yum install wget -y

        wget是Linux下的下载文件,类似于Linux里的迅雷。默认下载的软件存放在当前文件夹下。

【使用】wget + 链接地址

        1.2.2 curl

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

【使用】curl -O +链接地址

        1.2.3 区别

wget:纯下载软件,需要自己安装

curl:Linux里的浏览器,默认就有,无需安装

二、判断用户是否存在

        2.1 id

查看用户的信息,可以用来判断用户是否存在

  1. [root@localhost sanchuang]# id lihua321
  2. uid=1012(lihua321) gid=1012(lihua321) 组=1012(lihua321)
  3. /
  4. [root@localhost sanchuang]# id li
  5. id: li: no such user ==》说明用户不存在

        2.2 cat /etc/passwd

一行一个用户

  1. [root@localhost sanchuang]# cat /etc/passwd | grep lihua ==》和管道符号和过滤命令配合,判断用户lihua是否存在(不准确)
  2. lihua:x:1008:1008::/home/lihua:/bin/bash
  3. lihua321:x:1012:1012::/home/lihua321:/bin/bash
  4. [root@localhost sanchuang]# echo $?
  5. 0
  6. [root@localhost sanchuang]# cat /etc/passwd | grep jinzh
  7. [root@localhost sanchuang]# echo $?
  8. 1

        2.2.1 grep

文本过滤,会根据字符串去匹配内容,如果一行里有匹配的字符串,就将整行输出到屏幕,如果没有找到就不输出。

        2.3 用户的家目录

        2.3.1【用户可以没有家目录】

useradd -r hanmeimei

-r 新建这个用户属于系统用户,不建立家目录

        2.3.2【用户的家目录不在/home】

useradd -d /beijin xiaolihua

如此,用户xiaolihua的家目录就在/beijin

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

        2.3.3 删除用户

userdel -r xiaolihua

删除用户xiaolihua,并且删除用户的家目录

        2.3.4 切换用户的注意事项

su - lihua

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

三、【前提】重定向

重新定义了他的输出方向。

改变命令的输出方向,本来标准输出往屏幕输出,重定向后命令就输出到文件。

不会影响命令的返回值

        3.1 标准输入和标准输出

标准输入(STDIN):standard input ==》接受从键盘输入

给计算机输入内容的方式:键盘输入、语言、图形图像(生物信息识别)、文件

标准输出(STDOUT):standard output ==》都是输出到屏幕

        其他输出方式:文件

        1.正确的标准输出

        2.错误的标准输出

标准输入和标准输出都是人和计算机在沟通交流方式上的确定。

常见的进程都会涉及标准输入和标准输出(系统调用和内核里的内容可能就没有标准输入和标准输出)

        3.2 设置用户密码

echo 123456 是在屏幕上输出123456

| 管道符号:是将前面一个命令的标准输出送给后面的一个命令作为标准输入

--stdin 是passwd命令的选项:作用是告诉passwd 管道符号传来的内容是可以作为标准输入使用的

【非交互式设置密码】

  1. [root@localhost sanchuang]# useradd shijunhao ==》新建用户shijunhao
  2. [root@localhost sanchuang]# echo 123456|passwd shijunhao --stdin ==》给用户shijunhao设置密码123456
  3. 更改用户 shijunhao 的密码 。
  4. passwd:所有的身份验证令牌已经成功更新。

【交互式设置密码】

  1. [root@localhost sanchuang]# passwd shijunhao
  2. 更改用户 shijunhao 的密码 。
  3. 新的 密码:
  4. 无效的密码: 密码少于 8 个字符
  5. 重新输入新的 密码:
  6. passwd:所有的身份验证令牌已经成功更新。

(在编写脚本时,常用非交互式设置密码,给用户设置密码)

        3.3 脚本练习

题目:接受用户输入的用户名和密码,帮助新建用户,并且设置密码。

(v2版本)(添加功能)如果用户名存在,就提醒用户重新输入,如果用户名不存在就新建。

可以使用shell或者python

        3.3.1 if和$?

1.【if语句的语法】

  1. if 命令
  2. then
  3. 命令1 ==>命令执行成功时执行
  4. else
  5. 命令2 ==>命令执行失败时执行
  6. fi

2.echo $?

输出上一条命令的返回值。为0时,表示执行成功;非0时,表示执行失败。

常见的非0返回值:1,2,127

                                127 表示命令不存在

                                1 表示命令执行失败,参数或者选项不对

                                2 表示命令执行失败,选项不对

  1. [root@localhost sanchuang]# echo $?
  2. 0
  3. [root@localhost sanchuang]# id jinzhi
  4. id: jinzhi: no such user
  5. [root@localhost sanchuang]# echo $?
  6. 1

        3.2.1 shell完成

【需求分析】

        接受用户输入:read

        新建用户:useradd

        设置密码:passwd

        脚本名字:create_user_pwd.sh

  1. [root@localhost sanchuang]# vim create_user_pwd.sh
  2. [root@localhost sanchuang]# cat create_user_pwd.sh
  3. #!/bin/bash
  4. #接受用户的输入
  5. read -p "请输入用户名:" u_name
  6. read -p "请输入需要给用户设置的密码:" u_pwd
  7. #新建用户和设置密码
  8. useradd $u_name
  9. echo $u_pwd | passwd $u_name --stdin
  10. [root@localhost sanchuang]# bash create_user_pwd.sh
  11. 请输入用户名:lihua321
  12. 请输入需要给用户设置的密码:123456
  13. 更改用户 lihua321 的密码 。
  14. passwd:所有的身份验证令牌已经成功更新。
  15. [root@localhost sanchuang]# id lihua321
  16. uid=1012(lihua321) gid=1012(lihua321) 组=1012(lihua321)
  17. /
  18. [root@localhost sanchuang]# id li
  19. id: li: no such user

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/211958
推荐阅读
相关标签