当前位置: 首页 > news >正文

Shell的一些基本概念

  

交互式shell和非交互式shell

交互式模式就是shell等待你的输入, 并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签 退后,shell也终止了。

shell也可以运行在另外一种模式:非交互式模式,以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。

登录shell和非登录shell

当init3时,mingetty spawn出登录提示符的时候,你输入帐号和密码进入了,出现了shell提示符,这个过程就是登录shell

在Gnome图形界面中打开“终端”出来的那种窗口程序,和登录shell 相比,它是“非登录”的,你并不需要输入用户名和密码。

在登录shell里,只读取/etc/profile和~ /.bash_profile, ~/.bash_login 和 ~/.profile按顺序最先的一个,并执行其中的命令。除非被 --noprofile选项禁止了;
在非登录shell里,只读取 /etc/bash.bashrc和~/.bashrc

输入输出重定向

命令从标准输入读入数据,从标准输出、标准错误输出数据,shell支持对命令的输入、输出进行重定向。

重定向到管道

使用 | 将两个命令连接起来,就实现了将前一个命令的标准输出内容作为后一个命令的标准输入

ls –l | wc –l
以行方式列出当前目录文件,并计算行数,即计算文件数量

重定向到文件

< 将标准输入定向到文件(从文件读入数据)

> 将标准输出定向到文件(如果文件存在,则覆盖原文件)

>> 将标准输出定向到文件,如果文件存在,则将输出内容添加到文件末尾

cat abc.txt >> def.txt

将文件abc.txt的内容合并到def.txt文件

重定向任意文件描述符

对于 Linux 而言,所有对设备和文件的操作都使用文件描述符来进行的。文件描述符是一个非负的整数,它是一个索引值,并指向内核中每个进程打开文件的记录表。当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,

也需要把文件描述符作为参数传递给相应的函数。

n< 从文件中接受文件描述符n

n> n>> 将文件描述符n定向到文件

主要应用在重定向标准错误

cat dddcat: ddd: 没有那个文件或目录
cat ddd 2> /dev/null
更多重定向方法
command > file1 2> file2分别重定向标准输出和标准错误
command 2>&1将标准错误发送到标准输出同样的位置
command 2>&1 > file将标准错误发送到标准输出同样的位置,然后再重定向到file
command 2>&1 | tee file将命令的标准输出、标准错误都发送到文件file,同时输出到终端

tee命令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。我们可利用tee把管道导入的数据存成文件,甚至一次保存数份文件。

子shell

调用另外一个脚本程序,自动产生一个新的shell环境,如果希望定义并使用一些变量,但不影响当前环境中,可以使用子shell。

格式:( 命令 )   (将要执行的命令用圆括号括起来)

( export LANG=en_US; command )
临时将变量LANG设置成en_US,然后执行命令
 

source命令

如果希望在本shell的环境中执行一些在脚本文件中定义的文本,可以使用source命令,作为一种简写,也可以写成:.  脚本(注意圆点和脚本名之间的空格)

source config.sh
. config.shconfig.sh中的内容将在本shell环境中执行
如果不用source命令,则会在一个新的shell中执行config.sh脚本

转载于:https://www.cnblogs.com/kadinzhu/archive/2011/05/20/2051766.html

相关文章:

  • 剑指Offer——二叉搜索树的第K个节点
  • python 排序 桶排序
  • ubuntu之路——day7.2 regularization
  • 查看mysql数据库大小
  • Java程序员编程性能优化必备的34个小技巧
  • HTTP/1.1-HTTP/2.0-HTTP/3.0-HTTPS
  • DP总结
  • 全网最详细python3包管理工具教程-pip
  • nginx 配置简单的静态页面
  • Finer Resolution Observation and Monitoring -Global Land Cover更精细的分辨率观测和监测-全球土地覆盖...
  • boost.python编辑,以及c++api的python封装
  • 使用Docker搭建多人使用GPU服务器
  • Oracle优化
  • 成长中的十封独白(转载)
  • [白领栏目] 创造“我生命中的鼎盛之年”五大原则
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • “大数据应用场景”之隔壁老王(连载四)
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • 78. Subsets
  • avalon2.2的VM生成过程
  • CSS居中完全指南——构建CSS居中决策树
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • PermissionScope Swift4 兼容问题
  • TCP拥塞控制
  • 关于Flux,Vuex,Redux的思考
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 使用 QuickBI 搭建酷炫可视化分析
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​比特币大跌的 2 个原因
  • #define,static,const,三种常量的区别
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #include到底该写在哪
  • #pragma 指令
  • $ git push -u origin master 推送到远程库出错
  • $.proxy和$.extend
  • (2)(2.10) LTM telemetry
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (C语言)共用体union的用法举例
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (过滤器)Filter和(监听器)listener
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (五)IO流之ByteArrayInput/OutputStream
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (一)基于IDEA的JAVA基础12
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)linux下的时间函数使用
  • .md即markdown文件的基本常用编写语法
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务