文章目录

  • 前言
  • 所有命令的用法规则
  • 授人以渔
  • 程序运行原理
  • 常用命令指南
    • 显示标准输入
    • 显示文件输入
    • 目录/文件外部操作
    • 文本处理套件
    • 文本编辑器
    • 系统
    • 磁盘
    • 网络

作者:余涛
email:yutao@big.ac.cn
中国科学院大学

前言

第一课shell教程(1):有没有兴趣玩耍一下shell版俄罗斯方块?简单介绍了什么是shell、它的版本、功能和特性。那么应该如何学习一门编程语言呢,其实就如同小孩们玩搭积木的游戏,想要造一个城堡,首先你要学会认识每一块积木都是用来干什么,这个是用来建造地基,这个是用来建造城墙,那个是用来建造大门…对于shell来说,这一阶段首先要认识一些常用命令,工欲善其事必先利其器,熟悉这些工具在编程的时候才能得心应手。

所有命令的用法规则

俗话说没有规矩不成方圆,所有命令的使用都有着统一的使用方式,一般是
命令 [选项 参数] <输入>
选项结合参数的设置使得命令更为强大,多数命令不需要加任何选项参数就可以运行,但是如果想使用更多的功能你就需要指定选项参数一个或者多个。
所谓的标准输入其实就是键盘输入,文件输入就是存到文本的内容作为命令的输入。
什么鸟语?能不能说人话?请看以下实例。

[Neptuneyut]$echo "Hello Shell"  #在屏幕显示/打印“Hello Shell”
Hello Shell
#“Hello Shell”即为标准输入,我们直接敲到屏幕的,很好理解吧,这里中间缺省选项参数
[Neptuneyut]$ echo -n "Hello Shell" #加参数-n,使得结尾不再换行,不加-n的默认会在结尾加换行
Hello Shell[Neptuneyut]$

经过上面的实例想必大家对命令的一般用法有了感性的认识,但是问题在于每个命令都有不同的选项,我们不可能都记住,这个时候怎么办呢?

授人以渔

command --help[-h]
的方式来查看命令选项参数,这几乎是所有命令或者软件必备的选项功能。值得一提的是,这也应该成为你写脚本必须要提供的一个功能,尽量为每一个脚本提供一个帮助选项,除非你或者别人可以不费周折的知道怎么使用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h7v7dkJC-1605446904219)(http://lc-1db1mrbq.cn-n1.lcfile.com/c12be56dabba7614d9e4/Image.png)]
从显示的帮助信息可见echo所有选项的功能都描述的比较清楚,稍微懂点英文就可以理解,如果某些描述实在令人费解,那你就加上这个参数按下Enter键大胆尝试,看看结果再理解它的涵义。
除了上面的方式,还有
man command
info command

可以查看系统内建命令(built-in)更为详细的使用方法,但是对于外部的软件就不一定了。
所谓系统内建命令,是指伴随着你操作系统的安装而附带的命令,不需要再通过第三方软件源另行下载安装
可以通过ls /bin/命令查看系统内建命令,对于2.6.32-279.el6.x86_64内核的系统来说有140个内建命令。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ovQ8MRe4-1605446904223)(http://lc-1db1mrbq.cn-n1.lcfile.com/264cd7203c9bf717fa99/Image1.png)]
好了,如何使用命令的方法已经告诉你了,本期推送完!
皮一下,当然没完,下面还有很多干货呢!

程序运行原理

想要理解为什么命令是这样调用的需要理解程序是怎么运行,linux的文件系统又是什么。我们知道程序(或者命令)无非是按照某种语法写在磁盘的文本,运行一个程序,首先就要告诉这个程序存在的物理路径,即磁盘的位置,随后将程序读入内存,并激活cpu的运算能力,由于计算机只认识0101的符号,我们写的代码需要经过一个编译过程,将其转化成计算机识别的语言。纵观这个过程,准确告诉程序的位置是第一步,那么Linux系统的文件系统是如何架构的呢?
上面的命令ls的功能是显示目录下的内容,后面的/bin/是想要的显示的具体目录,为什么系统内建命令都放在这个目录呢?对于Linux系统来说,一切皆文件(程序是文件、设备是文件,各种配置也是文件),既然是文件,就需要文件系统架构,Linux所有的文件都源于根目录,用“/”表示,上下级目录之间也用“/”分割,为了便于管理,系统在安装的时候就会默认生成一些必要的目录用来分类存放各种文件,例如/bin/下存放着各种内建命令,/dev/下存放着各种设备文件,/etc/存放着用户密码和系统配置等文件,/proc/存放着系统动态内核、参数等信息…
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-34VuB5EY-1605446904225)(http://lc-1db1mrbq.cn-n1.lcfile.com/c1222661b696d3e3760d/Image2.png)]
需要注意的是这种从根目录写文件路径的称为绝对路径(例如上面的/bin/echo),在任何时候你都可以找到该文件,进行读、写、执行的操作,但是这样带来的问题是冗长的书写,有可能一条命令光引用路径就写了好几行,那有什么办法吗?此处先卖个关子,将在下期揭晓答案。

常用命令指南

上一节有点歪楼,还是回到本期的主题,简要介绍最为常用的命令。需要说明的是,Liunx完整的系统命令数量庞大,没必要都学一遍,对于大多数人来说掌握常用的一些命令即可,另一个好消息是系统命令使用一般极其简单,因此下面内容仅作为学习指南,具体的参数使用和延申需要大家多动手实践,还是那句话,老司机请绕过。

显示标准输入

  • echo
  • printf

功能:以上命令均能显示输出标准输入,相比echo,printf功能更为强大,可以格式化输出文本内容。
shell应用:在脚本中打印某一步处理输出的结果,用来排查错误;对文本按照特定要求格式化输出,使得输出结果更为整齐、美观。
实用命令:

#彩色输出
echo -e "\e[32mHello shell\e[0m"
printf "\e[35mHello shell\n\e[0m"
#echo -e "\e[文字颜色m字符串\033[0m"
#指定-e选项后\e将有着特殊含义,即用来设置文字颜色打印字符串,然后再把文字颜色恢复默认设置,0表示使用默认设置。#格式化输出
printf "%-10s %.2f\n"   二黑  60.256 狗蛋  80.2235
#%s 格式化字符串,-10表示长度10个字符,左对齐
#%f 格式化浮点数,.2表示保留2位小数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0aY4iA0I-1605446904231)(http://lc-1db1mrbq.cn-n1.lcfile.com/dc4a3729790824c70381/Image3.png)]

显示文件输入

  • cat
  • less
  • more
    功能:查看文本内容,cat一次性将文本输到屏幕,more每次输出一部分,less很像more,分次输出,但最后输出结果不会占领屏幕,对于长文本推荐less -S,谁用谁知道。除此之外,cat > filename,可以新建文件按Ctrl+c结束输入(最后要按enter换行,否则不会保存最后一行)。

目录/文件外部操作

  • ls:#查看目录
  • mkdir:#创建目录
  • touch:#创建文件
  • cp:#拷贝文件
  • mv:#移动文件
  • rename:#重命名文件按
  • rm:#删除文件
  • tar:#打包/解包目录
  • gzip:#压缩/解压缩文件
    实例:
ls -lh #l详细显示文件的属性,h根据文件大小自动显示大小(Kb/Mb/Gb)
touch {1..10}.txt #批量创建1.txt 2.txt...10.txt

linux老鸟委员会提醒您:命令千万条,安全第一条,rm -rf / ,老板把命要!!!

文本处理套件

  • seq #生成等差数列
  • tr #从标准输入转换、压缩和删除字符串
  • rev #反转字符串
  • sort #排序
  • uniq #去重,必须先sort才能去重
  • wc #统计文本
  • sed #流编辑器
  • grep #在文件或者标准输入搜索特定的模式
  • awk #强大的文本处理功能,本身就是一门语言,将在后续讲解
echo "aaatcg" |tr atcg tagc|rev #实现序列的反向互补
grep -A n "pattern" file    #在file中搜索pattern,并输出匹配到的行及紧接着的n行
grep -f list file    #按照list中的patern在file中批量搜索
sed -n "s/pattern/string/pg" file   #将file中匹配pattern的所有字符替换为其他string
seq 1 10|awk '{sum+=$1}END{print sum}' #计算1-10的累加和

文本编辑器

  • vi #强大的文本编辑器,将在后续讲解

系统

  • top #动态查看系统进程和负载
  • ps #静态查看系统进程和负载
  • jobs #查看后台任务

磁盘

  • df #查看磁盘分区大小
  • du #统计文件占用的磁盘大小

网络

ping #测试网络是否畅通
netstat #查看网络连接状态

熟悉以上命令基本可以玩转Linux系统以及做一些简单的任务处理了,其实数一数也才20几个常用的命令,所以,骚年加油,让键盘跳跃起来吧!

本次shell教程的讲解和源码在Github Shell-10-Lessons,欢迎大家star、fork、watch!

shell教程(2):积木游戏之认识积木--重要的系统命令相关推荐

  1. shell 分割文本_shell教程(2):积木游戏之认识积木--重要的系统命令

    前言 所有命令的用法规则 授人以渔 程序运行原理常用命令指南 显示标准输入 显示文件输入 目录/文件外部操作 文本处理套件 文本编辑器 系统 磁盘 网络 前言 第一课shell教程(1):有没有兴趣玩 ...

  2. c语言幼儿园积木游戏,幼儿园《积木游戏》课件【三篇】

    [导语]课件制作本身就是作者综合素养的一种体现,它显现出制作者对教育.教学.教材改革方向的把握,对课堂教学的理解,对现代教育技术的领悟.因此教师在设计课件时一定要吃透教学内容,设计出符合教学的方案用于 ...

  3. 基于egret引擎、P2物理库的搭积木游戏

    最近更新源代码: https://github.com/lixintong1992/egret_game 最近不务正业,参加了一个HTML5游戏设计比赛.速成了一个搭积木游戏. http://dev. ...

  4. 计算机积木游戏,乐高积木模拟器

    乐高积木模拟器是一款非常好玩的休闲小游戏,超好玩的拼积木游戏玩法,玩家需要将一个个积分方块拼接在一起,看似简单的玩法实则充满着挑战性,非常考验玩家的耐心.充分发挥自己的想象力,在这个游戏世界中玩耍,加 ...

  5. vijos 1464 积木游戏 DP

    描述 积木游戏 SERCOI 最近设计了一种积木游戏.每个游戏者有N块编号依次为1 ,2,-,N的长方 体积木.对于每块积木,它的三条不同的边分别称为"a边"."b边&q ...

  6. [NOI 1997] 积木游戏(dp)

    ·题目描述 一种积木游戏,游戏者有N块编号依次为1,2,-,N的长方体积木.第I块积木通过同一顶点三条边的长度分别为ai,bi,ci(i=1,2,-,N),如图1所示: 游戏规则如下: 1 从N块积木 ...

  7. #bzoj2240#积木游戏(DP? 贪心?)

    2240: 积木游戏 时间限制: 1 Sec  内存限制: 128 MB 题目描述 小时候我们都喜欢玩积木.这里的积木都是单位边长的正方体块,多个积木可以堆成一个"高木",&quo ...

  8. 积木游戏 (Standard IO)

    题意/Description: 在一个N*N的区域玩积木游戏,每个单元格正好跟积木的底面相等,每个单元格里放有若干个积木,Alice想重新摆放积木,使得每个单元格最多只能放一个积木,并且所有积木正好形 ...

  9. 华为机试真题 Python 实现【相同数字的积木游戏】【2022.11 Q4 新题】

    目录 题目 思路 考点 Code 题目 题目描述 小华和小薇一起通过玩积木游戏学习数学. 他们有很多积木,每个积木块上都有一个数字,积木块上的数字可能相同. 小华随机拿一些积木挨着排成一排,请小薇找到 ...

最新文章

  1. 【云炬大学生创业基础笔记】第1章第4节 为什么需要创业测试
  2. P5579-[PA2015]Siano【线段树】
  3. MySQL-Cluster7.2.5安装和配置
  4. Linux 命令(一) findgrep文件查找命令
  5. GULP案例1:计算声子色散曲线和态密度
  6. 维修手册 html 打开,汽车维修手册大全.pdf
  7. linux操作系统(云服务器中的使用)
  8. 第三方登录之QQ登录(一)——QQ互联开放平台新建应用
  9. 阿里云各种API如何使用
  10. 蚂蚁区块链第9课 SSL/TLS工作原理及在蚂蚁BAAS中的应用
  11. iOS ☞ SDWebimage 内存暴增问题
  12. Occlusion culling
  13. 用java实现输入一行字符,分别统计出其中中文汉字、英文字母、空格、数字和其它字符的个数
  14. 免费python编程自学网站-可以免费自学编程的12个网站
  15. 计算机网络笔记17 分类的IP地址
  16. 线性回归(Linear Regression)和最小二乘法(ordinary least squares)
  17. 对空间中6个点两两连线,用红黄两种颜色对这些边染色,则同色的三角形至少有几个?
  18. 美团 2020暑期实习生 笔试回忆
  19. 笔记本电脑保养小知识
  20. unity3d开发鼠标打飞碟游戏(Hit UFO)

热门文章

  1. 请将插入点移动到word域以外-NoteExpress
  2. Word和Excel怎样进入安全模式?
  3. pinned memory or page locked memory)
  4. 基于pycharm的opencv (python)-----信用卡实战
  5. 翻译Guzzle摘要
  6. Java中Synchronized用法详解
  7. 机器学习之Python Sklearn——线性回归
  8. 黑寡妇(BWO)优化算法(Matlab代码实现)
  9. [原创]IBM BLM模型思维导图
  10. Maya cmds pymel 单位和轴向设置