专栏文章 21 天,搞定软件测试从业者必备的 Linux 命令 (完整篇)

IDO老徐 · 2019年01月17日 · 最后由 IDO老徐 回复于 2019年09月23日 · 7804 次阅读

版权申明:

此文首发于公众号「简尚」,作者:IDO 老徐
无需授权,即可转载;转载请保留此文完整信息 。

观点:

关于 Linux,测试从业者,看这篇文章就够了 。

具体,往下看 :

网上关于 Linux 资料太多、太杂,学习没有重点,特别是对于没有基础的从业者,期望通过那些文档,去自学掌握 Linux,可能性太小(资料太多、时间有限、精力不够)。

这次,老徐花了 21 天,重新梳理了,测试从业者,需要掌握的高频 Linux 命令,且通过实际工作场景的方式,布置任务,每天一个任务,第二天公布答案 。

通过这种方式,带领各位从业者,高效、有针对性的掌握一门技术 。

开始之前,先同步一个结论:

对于软件测试从业者,如果你至今为止,还不懂 Linux,或者完全没有接触 Linux ,这是一件很危险和恐怖的事 。

此刻、现在、果断,学习 Linux 命令 。

如果你工作中,完全接触不到 Linux ,或者公司服务的环境,还是 Windows,赶紧自学 Linux,并果断干脆的跳槽 。
这件事,太危险 ,几年后,也许会出现,找不到工作的尴尬境遇 。

开始进入主题 。

如下的这些命令,都是老徐根据自己的从业十年经验,精心筛选,每个命令,点到为止,挑选了一些高频的工作场景 。

对于,满足初中级的的工作任务,足够 。

/

命令 cd

  1. 如何进入上级目录
    cd ..

  2. 如何进入当前用户主目录
    cd ~

  3. 如何进入上两级目录
    cd ../..

  4. 进入当前目录命令
    cd .

  5. 如何进入目录 /usr/isTester
    cd /usr/isTester

/

命令 mv

  1. 移动一个文件夹(isTester 文件夹,移动到/APP/www 目录)
    mv ~/isTester/ /APP/www

  2. 移动一个文件(isTester.ini 移动到/APP/www 目录)
    mv isTester.ini /APP/www

  3. 当前目录 istester.tar.gz 移动到 /usr/ido 目录,并重命名为 istester1228.tar.gz
    mv isTester.tar.gz /usr/ido/istester1228.tar.gz

  4. 移动文件到上级目录
    mv isTester.tar.gz ../

  5. 一条命令,移动两个文件 isTester.tar idoxu.tar 到目录 /APP/www
    mv isTester.tar idoxu.tar -t /APP/www

/

命令 cp

  1. 复制当前目录部署包 isTester.tar.gz 到备份目录/APP/www/bak 目录
    cp isTester.tar.gz /APP/www/bak

  2. 复制文件夹 isTester 到部署目录 /APP/www
    cp -r isTester/ /APP/www

/

命令 mkdir

在目录/APP/www 下,
cd /APP/www

  1. 新建一个文件夹 isTester
    mkdir isTester

  2. 新建三个文件夹 isTester1 isTester2 isTester3
    mkdir isTester1 isTester2 isTester3

  3. 新建一个多层级文件夹 idoxu/20181230/01
    mkdir -p idoxu/20181230/01

/

命令 history

  1. 查看历史命令执行记录
    history

  2. 查看命令 mkdir 的历史执行记录
    history | grep mkdir

  3. 执行历史记录中,序号为 178 的命令
    ! 178

/

命令 tail

  1. 实时刷新 log
    tail -f isTester.log

  2. 实时刷新最新 500 条 log
    tail -500f isTester.log

/

命令 tar

  1. 压缩一个文件 isTester.ini
    tar -cvf isTester.tar isTester.ini

  2. 压缩多个文件 isTester.ini readme.ini
    tar -cvf all.tar isTester.ini readme.ini

  3. 压缩文件夹 isTester/
    tar -cvf isTester.tar isTester/

  4. 将当前目录,所有 jpg 文件打包成 isTesterjpg.tar
    tar -cvf isTesterjpg.tar *.jpg

  5. 将当前目录,所有 jpg 文件打包成 isTesterjpg.tar.gz
    tar -zcvf isTesterjpg.tar.gz *.jpg

  6. 解压 isTesterjpg.tar
    tar -xvf isTesterjpg.tar

  7. 解压 isTesterjpg.tar.gz
    tar -zxvf isTesterjpg.tar.gz

/

命令 ls

  1. 列出当前目录中所有的子目录和文件。
    ls

  2. 列出目录下的所有文件(包含隐 ** 件)
    ls -a

  3. 列出文件的详细信息(包括权限、所有者、文件大小等)
    ls -l

  4. 列出当前目录中所有以 “isTester” 开头的详细内容
    ls -l isTester*

/

命令 ps

  1. 查看所有进程
    ps -A

  2. 查看 java 进程
    ps -ef|grep java

  3. 显示所有进程信息,连同命令行
    ps -ef

/

命令 top

  1. 显示进程信息
    top

  2. 监控每个逻辑 CPU 的状况
    top ,按 1

  3. 高亮显示当前运行进程
    top ,按 b

  4. 显示 完整命令
    top ,按 c

  5. 退出 top 程序
    按 q

/

命令 wget

Linux 系统中的 wget 是一个下载文件的工具,对于 Linux 用户是必不可少的工具

文件地址
http://51.istester.com/isTester.png

  1. 下载 isTester.jpg 文件
    wget http://51.istester.com/isTester.png

  2. 下载 isTester.jpg 文件,并存储名为 isTester_Logo.jpg
    wget -o isTester_Logo.jpg
    http://51.istester.com/isTester.png

  3. 下载 isTester.jpg 文件,后台形式下载
    wget -b http://51.istester.com/isTester.png

/

命令 find

find 命令,非常强大,也非常实用,分两次完成,今日第一次 。
给大家布置的作业,是比较实用的几个场景 。

  1. 在/root/isTester 目录及其子目录下面查找名字为 isTester.ini 的文件
    find /root/isTester/ -name isTester.ini

  2. 在当前目录及其子目录中查找任何扩展名为 “ini” 的文件
    find . -name "*.ini"

  3. 在/root/isTester 目录下查找更改时间在 5 日以内的文件
    find /root/isTester/ -mtime -5

  4. 在/root/isTester 目录下查找更改时间在 3 日以前的文件
    find /root/isTester/ -mtime +3

  5. 在/root/isTester 目录下查找所有的目录
    find . -type d

  6. 在/root/isTester 目录下查找所有的文件
    find /root/isTester/ -type f

/

命令 继续 find(进阶)

find 命令,非常强大,也非常实用,分两次完成,今日第一次 。
给大家布置的作业,是比较实用的几个场景 。

  1. 在当前目录,所有的普通文件中搜索 istester 这个词
    find ./ -type f |xargs grep "istester"

  2. 在当前目录,删除 1 天以内的所有东西
    find ./ -mtime -1 -print | xargs rm -rf

  3. 在当前目录,删除 10 天以前的所有东西(实操的时候,需谨慎,确保在自己建的目录内,别把系统目录删了…)
    find ./ -mtime +10 -print | xargs rm -rf

  4. 删除文件大小为零的文件
    find ./ -size 0 | xargs rm -rf

/

命令 rm

rm 是常用的命令,该命令的功能为删除目录/文件(可同时删除,多个文件 / 多个目录)
当然,这也是一个非常危险的命令,建议少用(比如经常出现的误操作 rm * -rf 此命令慎用)

  1. 删除/root/isTester/目录下的文件 isTester.ini(系统会询问是否删除)
    rm /root/isTester/isTester.ini

  2. 强行删除/root/isTester/目录下的文件 isTester.ini(直接删除,系统不会提示)
    rm -f /root/isTester/isTester.ini

  3. 删除/root/isTester/目录下的所有.log 文件
    rm -f /root/isTester/*.log

  4. 删除/root/isTester/目录下的 ido/文件夹
    rm -r /root/isTester/ido/

  5. 强行删除/root/isTester/目录下的 ido/文件夹
    rm -rf /root/isTester/ido/

  6. 删除/root/isTester/目录下的所有内容
    rm -rf /root/isTester/*

/

文件操作系列 命令

  1. 创建文件,你知道有哪几个命令 ?(写出至少两种方式)

    1) touch isTester.ini

    2) vi isTester.md
    3) echo ‘only test’ > isTester.com
    4) cp isTester.ini isTester666.ini
    5) ls > fileList.txt

  2. 同时创建文件 isTester6.ini idoxu.ini
    touch isTester6.ini idoxu.ini

  3. 同时创建 2000 个文件 isTester0001.ini - isTester2000.ini
    touch istester{0001..2000}.ini

  4. 更改文件 isTester.ini 时间为当前时间
    touch isTester.ini

/

查看文件系列 命令

/**

命令提示
#cat 由第一行开始显示档案内容
#tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
#more 一页一页的显示档案内容
#less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
#head 只看头几行
#tail 只看尾巴几行
#nl 显示的时候,顺道输出 行号!
**/

  1. 查看文件 isTester.ini 的内容
    cat isTester.ini

  2. 看文件 isTester.ini 前 20 行内容
    head -n 20 isTester.ini

  3. 看文件 isTester.ini 最后 30 行内容
    tail -n 30 isTester.ini

  4. 显示文件 isTester.ini 的第 10 至 20 行的内容
    head -n 20 isTester.ini | tail -n 10

  5. 倒序显示文件 isTester.ini 前 10 行的内容
    tac isTester.ini | head -n 10

  6. 显示文件 isTester.ini 前 10 行的内容,并显示行号
    nl isTester.ini | head -n 10

/

命令 yum & scp

假设 当前服务器 ip 192.168.1.23

  1. 从 Linux 服务器 192.168.1.22 拷贝文件 isTester.ini 到服务器 192.168.1.23
    scp root@192.168.1.22:/root/idoxu/isTester.ini /root/idoxu

  2. 从 Linux 服务器 192.168.1.22 拷贝目录 isTester/ 到服务器 192.168.1.23
    scp -r root@192.168.1.22:/root/idoxu/isTester/ /root/idoxu

  3. Linux 下安装 scp 命令(假设是 centos 服务器,命令用 yum)
    yum install openssh-clients

/

命令

clear
df
du
ifconfig

  1. 查看当前服务器 ip
    ifconfig

  2. 查看当前服务器硬盘空间
    df -h

  3. 查看目录 isTester/ 所占有的空间
    du -sh isTester

  4. 清空当前终端屏幕
    clear

/

命令 vi + chmod

/**
vi 创建文件 + 编辑文件 。
chmod 命令用于改变 linux 系统文件或目录的访问权限 。
**/

  1. 创建文件 isTester.ini
    vi isTester.ini

  2. 更新文件内容为 “21 day Linux Learn ,I'm Idolaoxu,in shenzhen .

    输入 i ,进入编辑模式,输入内容,esc 进入命令模式 :wq 保存 。

  3. 将文件 isTester.ini 设为所有人皆可读取
    chmod +r isTester.ini

  4. 将 isTester.ini 设定为只有该文件拥有者可以执行
    chmod u+x isTester.ini

  5. 给文件 isTester.ini 设置所有权限
    chmod 777 isTester.ini (或者 chmod a=rwx isTester.ini)

注:chmod 还有很多命令用法,如上几种,满足日常需求 。

/

End ,命令,这些差不多够用了 。

如果遇到一些非高频的命令,自行百度/Google 搞定即可 。

入了门,对 Linux 有感觉了,甚至是有兴趣了,其他命令,都没啥问题 ,看下帮助文档即可 。

比如,想了解 top 命令咋用 ?
终端输入 top --help 即可

/

最后,关于 Linux 学习的几个建议 。

  1. 每个命令,多敲几次,每天掌握此文的一个命令即可,勿贪多 。
  2. 掌握了前面的一个命令,再继续下一个命令。否则,欠的技术债会越来越多,最后放弃学习 。
  3. 学 Linux,没诀窍,多敲命令 。
  4. 此文的命令,一个循环,预计你需要 21 天完成 。总共三个循环 ,2 个月,大功告成 。

所谓的三循环理论:

第一遍,花 21 天时间,把每个命令,敲一遍 。
第二遍,花 21 天时间,把每个命令,再熟悉一遍 。
第三遍,花 21 天时间,巩固,延伸更多命令组合玩法,熟记于心 。

如果你能看到这段文字,且是第三遍以上看到,恭喜你,Linux 这块的知识点,差不多了 。

你,可以开始下一个环节 Jenkins / 接口自动化 / 数据库 / 性能测试 / 测试管理 等等 的 专项学习 。

事情很多,别急,慢慢来 。

2019,关键词「聚焦」,送给你 。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 40 条回复 时间 点赞

喷子徐就是稳

hellcat 回复

感谢,消灭 0 回复 。

补充:
建议 自行收藏此文 。 还是很实用的 。

mark 一下,感谢分享

补充一个:

① grep -E "word1|word2|word3" file.txt
满足任意条件(word1、word2 和 word3 之一)将匹配。
② grep word1 file.txt | grep word2 |grep word3
必须同时满足三个条件(word1、word2 和 word3)才匹配。

感谢分享!

还是太少了 你说的我都会

点赞!跟着老徐学习!

find 那里如果不是目录而是单个文件要再加个管道吗

小幼稚园 回复

find ./ error.log f | xargs grep '异常'

我一般只记住命令名字,用法直接 tldr 。不过写得还是挺全的。

PS:好像漏了 sudo 、su 这两个很常用的命令?

陈恒捷 回复

嗯,主要是一些高频命令的梳理,耗时,没技术难度 。

sudo su ,我直接忽略了,大家应该都知道 。

JonnySen 回复

感谢补充 。这个命令,大家也可以关注下 。

wtalance 回复

说明,Linux 这块的知识,你已经掌握了 。

这是一篇,知识普及,不聊太高深的命令,很多同学看不懂,没有阅读的价值 。

天邪泪 回复

握手

我老是用 rm -rf ./*
非常害怕有一天少打个点......😂

ssh、chmod、chown、chattr、sed、awk、sar、iptables、make、make install、ln、chkconfig、sysctl 这些个反倒比较常用,因为搞环境搞得比较多

槽神 回复

我用的最多是 ls

SineIO 回复

哈哈哈,还是少用,比较危险 。

槽神 回复

👍 从日常高频用的命令,能看出,当前所处的阶段 ,以及负责的大体事项 。

恒温 回复

推荐你用 zsh + ohmyzsh
你最常用的会变成 l
哈哈

我用的最多的是 less tar grep sz rz tail

Michael_Wang 回复

我一直用 oh my zsh。没有改成 l

恒温 回复

啊?默认就是 l 啊,咱们用的不是一个版本么

感觉有点过于基础了。老实的讲,按照这个学习进度,是跟不上时代的发展速度的。

netstat 用的也挺多的吧。

awk 也需要

感觉越敲越来劲。哈哈

赞一个,感谢分享~

Nisir 回复

这属于基础必备部分 ,满足多数同学的日常工作需求 。
延伸部分,对多数同学,价值不大,懒得写 。

Red_herring 回复

也很多

zhqqqy 回复

也需要,但相对,频率没那么高,非必备 。

萌萌曾 回复

666

IDO老徐 回复

讲真的,我不是想跟你较真,也不是说你写的这些东西没有价值。但是如果以当前的互联网发展节奏,按照这样的学习进度,迟早是要被淘汰的。 现在测试的职业定位早已不是点点点的时代了,从点点点 -> 自动化 -> devops -> 智能化测试 -> 未来? ,如果这几个命令要画上 21 天 *3 遍去学习,那什么时候才能搞通 jdk8、spring、es6、docker、算法等等等不计其数的新技术。

另外,IT 行业不像传统行业(工作时间越久就一定越吃香),相反,企业招人看的不仅仅是你的知识和技术储备,更看重你的成长速度是否超过你当前的工作年限应有的平均水平。

希望所有人,多一点紧迫感!

Nisir 回复

要学的很多,慢慢学 。

建议加一个签到功能,我每天都来打卡😂

我去催饭 回复

这个需求,得手动艾特社区同学 😄

收到反馈,find 命令的 mtime 参数笔误 ,已更正(避免误导初学者)。

cat 和 tac 有点意思。

瞧瞧 回复

嗯,日常工作,还是很实用的,可以自己玩玩 。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册