前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《调教命令行03》认识一下,感觉不是说来就来的

《调教命令行03》认识一下,感觉不是说来就来的

作者头像
xjjdog
发布2020-03-17 17:22:06
5320
发布2020-03-17 17:22:06
举报
文章被收录于专栏:架构专题架构专题

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。任何不保留此声明的转载都是抄袭。

《调教命令行01》选Linux发行版,就像挑女朋友 《调教命令行02》准备一个冰清玉洁的Linux系统

接上文。

据说,如果和一个人对视5秒,就能爱上对方。小王知道这个道理,渐渐的想入非非。他想象着嘴唇传来一阵微凉的触感,然后丹田里的空气被迅速抽干。

来一场无拘无束的桌咚,闪亮的屏幕是他们的见证,跳动的字符是他们的伴奏。

他的背逐渐靠在了键盘上,双手倒扣着桌子,乱七八糟的字符流源源不断的输入到终端。但是等等!这些肆意输入的字符,会不会伤害到他管理的服务器?或者,在他按下Enter键之前,都是安全的?

这个想法把他拉回到了现实,让他从恍惚中惊醒。

稍微思考了一下,他确定,是不容许猫这样的动物在他键盘上跳来跳去的。

万事开头难。面对黑漆漆的Linux窗口,要勇敢的走出第一步。不要怕输错了什么,系统健壮的很。命令行通常会拥有比图形界面更高的效率,更加重要的是它可以做自动化之类的小工具,这使得生产力产生质的飞跃。

现在,你已经安装好了centos,并远程连接上了它。我们拥有了它,但并不能了解它的脾气。接下来,让我们进入Linux命令行的世界。和我签订契约吧,少年。

本小节会使用非常详细的演进方式,来看一下一个命令,是怎样生成和执行的。

1、简单尝试

好啦,我们现在就在终端里了。什么叫做终端呢?你在很多黑客电影里,看到的黑漆漆的界面就是,它提供了一个可以输入字符串的交互式界面,至于那些闪光的、扫描机一样的东西,是不存在的。

尝试输入些什么吧。比如:jdsjf

[root@localhost ~]# jdsjf-bash: jdsjf: command not found

我们再次把这张图贴一下。怎么回事?命令的输出翻译成中文,就是“找不到命令”的意思。什么叫命令?就是我们上面随便输入的字符串jdsjf

然后,我们看下提示中其他一些有用的东西。

↓↓↓↓↓↓

bash 代表的是我们所使用的shell,shell可以认为是一个解释器,将我们的输入解释成一系列可执行的指令。现在的linux发行版,最流行的就是bash解释器,几乎每个都预装了它。

命令找不到,证明我们的字符串bash解释不了。但是,Linux上一些目录里的文件,是可以被默认找到的,这些目录的集合,就叫PATH 。PATH还是一个环境变量,我们可以通过命令查看它的尊容。

[root@localhost ~]# echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

想要知道系统中有哪些命令,就可以看下上面这些文件夹中,都有哪些文件。文件非常非常之多,但是大部分我们不会接触。所以,xjjdog才会写这么个东西—聚焦那些最常用,最有用的命令,最常用的参数,最有用的场景。

命令输出后,还有一些额外的东西,比如[root@localhost ~],这部分叫做提示符,光标会一直跳动,等待你的输入。这部分是可以定制的,甚至可以定制的十分漂亮。

2、Hello World

到现在为止,我们什么都没得到。按照程序员的想法来说,就要实现一个hello world的程序。在终端shell里,这个过程变得简单,远比写一个java程序简单。

[root@localhost ~]# echo "Hello World"Hello World

如上所示,echo的意思就是输出一些内容。后面的Hello World,就叫做参数,它们之间以空格分隔,可以接受多个参数。

[root@localhost ~]# echo "Hello World" , "Fuck 996"
Hello World , Fuck 996

以上命令能够正常运行,证明echo是我们的终端能够认识的一个命令。那到底这个命令是在什么地方呢?可以使用whereis命令进行查找。

[root@localhost ~]# whereis echoecho: /usr/bin/echo /usr/share/man/man1/echo.1.gz

命令显示。我们的echo命令全路径,是/usr/bin/echo,由于它处于PATH目录中,所以能够被识别到。

3、将命令加入PATH

接下来,我们把上面的命令,做成一个脚本。然后将这个脚本,放到PATH目录中。不过先等等,我们要先给命令起个名字。

首先需要创建一个文件。在Linux上,创建文件使用touch命令。

[root@localhost ~]# touch jdsjf

命令执行后,什么都没发生,它只是创建了一个空文件。接下来,我们向其中添加一些内容。

[root@localhost ~]# echo "echo 'Hello World'" > jdsjf

注意符号>,它的意思是,将前面的输出,重定向到后面的文件中。执行完上面的命令,jdsjf 中的内容,就变成了echo 'Hello World

接下来,我们尝试着去执行刚才生成的命令。

[root@localhost ~]# ./jdsjf-bash: ./jdsjf : Permission denied

我们通过相对路径的方式,来执行刚刚生成的命令。结果,终端显示我们并没有这个命令的执行权限。

其实,Linux在权限控制这一方面,非常的详细。一个文件,有可读、可写、可执行三种属性。如果想要一个文件能够执行,需要给它添加执行权限,这个过程是由命令chmod完成的。

[root@localhost ~]# chmod u+x jdsjf[root@localhost ~]# ./jdsjfHello World

我们将在后面的章节,来详细介绍权限方面的知识。如上所示,命令已经能正常输出,接下来,我们把命令移动到PATH中的一个目录。

[root@localhost ~]# mv jdsjf /usr/local/bin/[root@localhost ~]# jdsjfHello World

不需要加任何的相对路径,现在,只需要输入jdsjf,就可以正常输出一串数字。我们成功的让一个没有任何意义的字符串,表达了它的想法。虽然我们依然是它的主宰。

4、小结

本小节通过构建一个简单的小命令,说明了PATH环境变了的重要性。并初步接触了以下几个命令:

  • echo 输出一些信息。
  • touch 创建一个文件。
  • > 重定向符号。
  • chmod 修改文件权限。
  • mv 移动文件。

5、思考&扩展

1、我可以自定义一个目录,比如/root/mybin,把它加入到PATH么?

2、我可以省略上面的touch命令,直接使用重定向生成文件么?

3、除了放到PATH和相对路径,还有没有其他的命令执行方式?

END

“你不了解我”,妹子的声音在对视4.5秒的时候传来,紧接着她抽出了手。

希望落空,痛苦在小王的内心逐步蔓延,像是酒精注射进了体内,吸干了所有的水分,透着不太真实的醉意。但小王的表情依旧平静。

“我却了解你”,妹子的声音接着传来,又让小王从混沌中逐渐清醒。

“所以,这并不公平”。

作者简介:小姐姐味道 (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小姐姐味道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、简单尝试
  • 2、Hello World
  • 3、将命令加入PATH
  • 4、小结
  • 5、思考&扩展
  • END
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档