百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux 要想用得好,这门手艺就要耍得开

ahcoder 2025-05-30 12:10 4 浏览

Linux 还要用鼠标吗?

现在找互联网行业的技术工作,有一项技能是必备的,那就是能熟练使用 Linux 操作系统。无论你是想做开发、测试、运维,看看各大厂的要求吧,都要求会 Linux。

Linux 并不容易上手,尤其是它的命令行(Command Line Interface, CLI)操作方式会让初学者难以适应。不过有句话说的是:GUI 使简单的工作更简单,而 CLI 使完成艰难的任务成为可能。

记得我刚入行时,用 Linux 还在 GUI 界面下操作。结果有一回去跟一位技术大牛做对接就出糗了,我正到处寻摸鼠标,大牛一脸嫌弃地说:“Linux 还要用鼠标吗?”

大牛说着调出命令行界面,手指在键盘上一通飞舞,就把一个我认为很困难的任务给快速搞定了。这是我对命令行的威力,第一次有直观的感受。当然,大牛的那句话我也一直记到现在。

命令行,就是 Linux 对外提供的人机操作接口。对于技术人来说,把操作命令行这门手艺修炼好,就可以将 Linux 的强大能力发挥出来。

进入命令行世界的第一站,我们先了解一下命令行的哲学。

命令行哲学:极致的艺术

对于第一次打开 Linux 终端的初学者来说,最痛苦的有两件事:第一是瞪着屏幕上闪烁的光标,总觉得这样操作太低级;第二是看着1000多个系统命令心发慌,这怎么学得完?

平心而论,学习 Linux 命令行的门槛也就在这里,但为什么要这么设计呢?这就要从 Linux 操作系统的设计理念说起。

Linux 其实是一种类 Unix 操作系统,而 Unix 是出自贝尔实验室的 Kenneth Thompson 之手。Thompson 大神在设计 Unix 命令时化繁为简,定下了一个基调:一次只做一件事,做到极致。

这个意思就是某个命令行程序,它只完成一项任务,并且把这项任务做到功能完备。例如 echo 就是回显文本;cat 就是显示文件内容;ls 就是显示磁盘目录内容。你要做什么,第一反应就是这个程序,而不会想到别的。

当我们理解了这个设计思想后,可能又会觉得这个道理太简单了,好像天经地义的一样。但这也是经历了前人的失败之后才总结出来的经验,大神不同于常人之处,就在于他能想到用最简单的办法去解决最复杂的问题。

所以,我们在学习 Linux 命令行时,没有必要去熟悉所有命令程序。只需要掌握好最常用的几十个命令,并能根据任务要求去检索一些特殊的命令进行组合,这就能很好地完成工作了。

明白了道理,就要踏实做好实践。为了打消你放弃的念头,我们就从实例上手。

命令行初探:从入门到放心

探索 Linux,最佳起点是学会操作文件系统。因为这包括如何切换目录、查找文件、编辑文本、运行可执行程序等。在此我假设各位已经安装好了一个 Linux 发行版,并且知道如何打开一个终端 Terminal 窗口。

终端窗口是与 Linux 的 shell 程序打交道,它会将用户输入的命令文本传输给 shell,然后 shell 会传递给 Linux 内核去执行,得到结果后再返回给终端窗口。

基本文件操作

 $ mkdir test #新建一个名为 test 的空目录
 $ ls #列举当前目录下的文件并显示出来,可以看到 test 目录已经存在
 test
 $ cd test #进入 test 目录内
 $ pwd #显示当前目录的完整路径
 /home/work/test
 $ touch one.txt #touch 命令用于修改文件的访问和修改时间,文件不存在时则新建,此处用来创建一个空文件
 $ cp one.txt two.txt #将 one.txt 复制一个副本为 two.txt
 $ mv one.txt .. #将 one.txt 文件移动到上一级目录中
 $ rm ../one.txt #将上级目录中的 one.txt 文件删除

掌握了这几个命令,就可以对 Linux 的树形目录组织结构进行游历了。例如 /usr 目录下都有哪些子目录,每个子目录中又有什么内容。友情提示:不要在 root 权限下执行 rm -rf /,不要执行,不要执行,因为这个事故责任我担不起哈。

留一个思考题,如何在大量的文件中查找某个文件是否存在,例如在 /usr/bin 目录下查找python程序。提示:可使用 find 命令。

神奇的管道

不知道你注意到没有,单个命令只能完成一件事,那么复杂一点的需求怎么完成?答案是把命令行进行组合,它依赖的技术就是管道。

这是 Thompson 大神的神来之笔,其实他当年也受困于如何在程序之间传递数据的问题。后来有一天如同上帝亲吻了他的脑门,他猛然悟道,于是只用了一个小时就在系统调用中实现了管道。这就是将程序的孤岛给连接起来的竖线符:“|”。

用实例来感性体验一下,问:/usr/bin 目录下总共有多少个文件?你还在一个一个数吗,我的是 1060。下面就是我的方法:

 $ ls /usr/bin | wc -l #wc 命令通过管道接收 ls 的输出,并按要求统计数量。-l 参数设定为换行分隔 
 1060

这就是组合的威力,也是为什么高手们只要掌握不多的一些命令,就可以从容完成许多复杂的任务。当然,这也需要不断思考和练习,逐步提升水平。如果上来就是大力出奇迹的蛮干,那只能在一个低水平里重复。

玩熟一个文本编辑器

在 Linux 下编辑文本是最常用操作,程序员写代码、测试写脚本、运维改配置,都绕不开这一步。我强烈建议大家不要只在 Windows 上编辑文件然后上传,而要踏实掌握一个文本编辑器,例如 vim。

尽管 vim 有最难学会的编辑器称号,但掌握了它会有多爽真的只有自己才知道。关于学习 vim 的建议我只有一个,那就是运行 vimtutor 命令,这是一个交互式的学习环境,轻松就助你掌握 vim。

学习到这里还没放弃,我想你应该对 Linux CLI 感到放心了,下面我们就更进一步,走向专业之路。

命令行进阶:shell 编程

卓越的工程师都对效率有着偏执的追求,他们无法忍受低效重复的工作,总要想尽办法使之自动化。Linux 下的 cron 这个定时自动执行命令,就是 Thompson 大神亲手所写。据说“cron”是他为了纪念希腊语的“时间”一词。

可以说,shell 编程能力的高低,是专业和业余的分野。shell 编程的本质,就是将多步骤的复杂任务分解,然后使用流程控制语句将命令行串接起来,从而实现强大的自动化处理。

shell 编程脚本语言提供的语法特性并不多,因为它的目标本来就是助力自动化,而不是成为一门特性完备的编程语言。简单的语法有利于使用者快速掌握它,并形成生产力。

我们来思考一个稍有些难度的需求:创建 100 个文件,以 0 ~ 99 命名,文件名后缀为“txt”,并在每个文件内写入一个随机数。

你打算用 vim 挨个创建并输入?千万不要这么干,下面给出一种解法:

 #!/bin/bash 
 #使用 bash 作为脚本代码的解释器
 
 for ((i=0; i<100; i++))  #bash 支持 C 语言风格的 for 循环写法
 do
        echo $RANDOM > $i.txt 
        #RANDOM是shell内置随机数变量;> 是重定向符,将 echo 命令输出内容输入到文件中
 done

将上述代码保存至一个脚本文件,例如 genfiles.sh 中,修改文件属性为可执行,然后在终端中执行./genfiles.sh命令,就可以进行验证。

不要满足于理解这个例子,结合工作中的实际需求,多做 shell 编程练习,成为真正的 Linux 高手吧。

结语

记得在工作多年之后,给新人培训 Linux 操作时,有位小伙子很殷勤地帮我把鼠标递过来,我下意识地就说了一句“Linux 还要用鼠标吗?”

说完这话我自己也觉得有意思,于是就跟他们分享了我当初的那段经历。现在他们也成长起来了,不知道会不会把这个故事流传给更多人。

现在 Linux 已经是互联网的基础设施,对它的操作哪怕是生疏一些,都会在工作效率上被别人拉下一大截。所以技术人要在自己的技术栈中,将 Linux CLI 操作排在重要位置,多想多练。

最后,手边常备《Linux 命令行大全 第2版》,你需要知道的命令行知识里面全都有。你能不能把操控命令行这门手艺,耍得风生水起,就看你读书是不是认真啦。

#头条创作挑战赛#

相关推荐

当 Linux 根分区 (/) 已满时如何释放空间?

根分区(/)是Linux文件系统的核心,包含操作系统核心文件、配置文件、日志文件、缓存和用户数据等。当根分区满载时,系统可能出现无法写入新文件、应用程序崩溃甚至无法启动的情况。常见原因包括:「日志文件...

linux系统监控工具小神器:btop(linux网络监控工具)

top是大家常用的实时系统监控工具,今天给大家介绍一款非常酷炫的实时系统监控工具btop,用了之后你一定会爱上它!btop是一个高级的实时系统监控工具,它是传统top命令的现代替代品,提供了丰富...

又一全新恶意软件曝光!专门针对Windows、Linux 和 macOS 用户

近日,网络安全研究人员发现了一个利用“CheanaStealer”恶意软件的复杂网络钓鱼活动,该恶意软件是通过一个VPN钓鱼网站传播的。这次攻击的主要目标是各种操作系统的用户,包括Wind...

Java程序员必备的Linux命令全解析

Java程序员必备的Linux命令全解析作为一名Java开发者,除了精通Java语法和框架外,掌握一些基础的Linux命令也是十分必要的。这不仅能提高你的工作效率,还能让你更好地管理和部署Java应用...

Linux基础知识之shell实现用户管理功能

[root@k8s-mastershell]#moreusermanager.sh#!/bin/bashRED='\033[0;31m'GREEN='\033[...

惊艳!Linux 中迷人的 Shell 脚本工具

如果您是Linux操作系统爱好者或正在将自己定义为一个爱好者,那么与shell脚本交叉的路径是完全不可避免的。根据定义,shell脚本是设计用于在Unix/Linuxshell环境中执...

【shell编程】你的第一个sh脚本(shell脚本编程教程)

vimhello.sh#!/bin/bash#注释echo-e"HelloWorld!\a\n"exit0第一行#!/bin/bash,作用是宣告这个文件内的语...

linux之bash、sh和dash(linux里bash命令)

linux系统里有sh、bash、dash等多种shell的解释器命令,其中sh是shll的缩写,是linux系统默认的shell解释器,bash则是sh命令的增强版,dash则是从netbsd派生而...

14、linux命令-du(linux命令-s)

14、linux命令-du常用命令du-sh/*#显示指定目录下每个文件或目录的容量大小,并且以易读方式显示(常用)。du命令概述du命令作用是估计文件系统的磁盘已使用量,常用于查看文件或目录...

Manjaro Linux:属于我的Linux体验

从Debiantesting切换回Manjarotesting前端使用好久的Manjarotesting切换到了Debiantesting,就是因为有一些包只有deb版本,适配了Debia...

小狼毫 0.17.0 更新,解锁输入新姿势!

0.17.0版本(2025年5月17日发布)这次更新可不少东西呢!先把librime升级到1.13.1版本啦,也不知道这升级之后会带来啥新变化,用用就知道咯。之前老是出问题的托...

Kali Linux 初始配置(kali linux2019默认用户名和密码)

1.更新源&升级系统sudoaptupdate&&sudoaptupgrade-ysudoaptdist-upgrade-y作用:确保所有工具和系统补丁为最新,避免...

怎样利用锤子手机和讯飞手机输入法,让电脑动起来

在大家看来,老罗的发布会捧红了科大讯飞。小编当时就被老罗洗脑了,立刻下载了讯飞输入法体验了一番。后来小编突发奇想,我经常使用向日葵远程控制电脑,如果远程控制电脑时使用讯飞,能否在电脑上完成语音输入?或...

装好KALI之后,急需做的两个事情,更新源和添加输入法

每次当我们装完系统之后,突然发现很茫然,为什么要装这个系统?也就是说我们压根儿就不知道装这个系统是为了做什么。而且刚装好的系统体验起来,好像也并没有网上说的那么好。之前想做的种种操作现在也就不了了之了...

Linux 依赖问题“硬核”解决方案 | 技术

编者按:本文介绍了一些另类的暴力破解RPM和DEB软件包依赖关系的方法,对陷入依赖陷阱而不可自拔的人来说,有时候这也是一种绝地求生之路。至于说这样做是否合适,那就是一件见仁见智的事情了,不过这...