掌握一些常用的Linux命令,会让你在工作中如鱼得水,应付自如。这篇文章将讲述一些在日常工作中高频度出现的Linux命令,其适用于普通的广大程序员朋友,而对于专业从事Linux运维的工作人员,除了下面的命令之外,还要掌握更多的Linux操作指令,这里笔者就不班门弄斧了。
测试环境
操作系统:Ubuntu 16.04
Ok,Let's do it !
常用的文件操作指令
ls
这个命令的主要作用是列出当前目录下的所有文件和文件夹列表,如下图:
每一个Linux命令都可以包含一定的参数,要查看当前命令下的所有参数用法,在命令行后面加--help,即可
ls --help
关于这个命令,还有一个很重要的参数-l
-l会将文件或目录列表竖排,同时会显示当前文件的详细信息,例如:所属用户组,可读可写权限等等。
** ls -l 命令还可以简写为 ll **, 这里ll其实就是命令ls -l的一个别名,命令行的别名可以按照自己的习惯自己指定,关于命令行别名指定这里就不详述了。
cd
这个命令也是Linux命令行中频度最高的命令之一,其作用是定位到指定目录下,相当于打开一级一级文件夹
这个命令的用法比较简单,你需要掌握几个常用的附加参数即可
cd .. 回到上一级目录
cd ~ 回到用户主目录
cd ./ 在当前目录下逐级打开下级目录
mkdir
这个命令的主要作用创建文件夹(目录)
rm
与上面的命令相对应,该命令的主要作用是删除指定文件或目录
cp
复制命令,既可以复制文件,也可以复制文件夹
需要注意的是,如果需要复制目录,需要在参数后面接-R
即:
复制文件: cp 文件名 目标路径
复制文件夹: cp -R 目录名 目标路径
命令较简单,就不截图演示了。
mv
相应地,该命令的主要作用是实现文件或文件夹的移动
该命令还有一个作用,就是实现文件的重命名,方法很简单,在同一个目录下,使用该命令即可:
mv 原文件名 目标文件名
关于该命令的更多高级用法,请使用mv --help查看
touch
该命令可以更新文件的访问时间戳或者创建一个空文件,笔者常常用它来创建空文件。使用方法很简单,直接在该命令后面接文件名即可。
例如,创建文件夹ReadMe.txt
touch ReadMe.txt
cat
在日常工作中,查看某个文件的内容也是必不可少的工作。使用该命令可以将目标文件的所有内容都显示在终端
more
该命令和上面命令的功能是一样的,只不过它会使用分页的方式查看文件的内容
chmod
在shell编程中,该命令的使用频率也很高,例如,要给一个shell脚本赋予可执行权限,可以这样做:sudo chmod +x run.sh
上述执行完成后,就可以使用命令./run.sh运行该脚本了。
该命令还可以在你需要修改一些受保护文件的时候,帮助你临时修改该文件的权限,使修改成功,再恢复文件的访问权限。不过,一定要在清楚自己在干什么的情况下,才可以这样使用哦。
find
在Linux系统中,查找文件也是一项必不可少的工作。如果你有这方面的需求,该命令恰好满足了你的需求
该命令的使用方法也并不复杂,最常用的方式就是:
find 目录名 -name 文件名 ,文件名也可以使用通配符查找
vi
在日常使用中,少不了编辑文件。这个时候vi命令就可以帮到你。
关于vi,使用方法稍微有点复杂,但日常操作中,我们只要掌握普通的编辑,保存,强制退出即可。
这里要记住几个快捷,字母i进入编辑模式,esc退出编辑模式,wq是保存修改,q!是强制退出。
关于vi命令的更多用法,请使用--help查看
du
du命令主要用于查看指定文件或者目录的大小,这里介绍几个比较常用的参数
-s 表示计算当前目录下文件总和的大小
-h 表示以更可读的方式显示文件大小
这个命令的使用频率相应的较少一些,关于它的更多高级用法,请使用--help查看
网络命令
在日常工作中,难免会遇到一些网络问题,例如,网络突然断开,与某台主机的通信突然发生异常,亦或者某个网络断开被占用等等。这个时候,一些常用的网络调试命令就可以帮到你。
ifconfig
这个命令可以查看网络接口的状态,ip地址,物理地址等等,还可以释放当前获取的ip地址,重新获取。
释放ip重新获取的方法就是:先关闭接口,再重新打开:
这里假设接口名为en0,则输入以下命令重新获取ip地址:
ifconfig en0 down
ifconfig en0 up
关于该命令的更多用法,请使用--help查看
ping
这个命令是网络调试中使用比较频繁,它的作用是通过发送icmp报文进行网络试探,网络正常将会收到回显报文,这样就可以确定和指定主机通信是否正常
举例如下:
netstat
该命令可以显示当前应用的网络使用情况,直接使用参数-a就可以看到所有的信息。
如果要获取某个网络端口是否被占用,还需要了解一个非常重要的命令grep,该命令是使用正则匹配,过滤掉无用信息,是一个非常常用的搜索文本内容的工具。
例如:要获取21端口是否已经被占用,则直接使用如下命令,查看是否有输出即可:
netstat -an | grep -w 21
上面介绍的所有命令,都可以使用竖线隔开,加grep进行文本过滤
关于netstat还有很多更高级的用法,请自行查看帮助文档
lsof
这个命令不太常用,但它也可以用来查看某个端口是否被占用。同样地,假设查看端口21是否被占用,则使用如下命令即可:
lsof -i:21
咋一看,比上面的命令更简单,但笔者并不常用这个命令
系统操作命令
除了上面的这些命令,还有一些系统操作的命令也很重要,这里介绍几个常用的系统操作指令。
shutdown
该命令主要用于关机,重启等操作,命令使用比较简单,就不赘述了。
uname
获取当前系统信息
kill
该命令主要用于杀死进程,一些假死进程常常会导致系统暂时无法操作。使用该命令杀死这些假死进程,就常常非常奏效。这个命令需要掌握一个很常用的参数-9,参数是数字的命令不常见,这是目前唯一的一个。使用方法也很简单。
kill -9 进程
使用技巧
说了这么多,关于常用的命令操作,基本介绍完了。这里介绍一些常用的命令使用技巧。
技巧1:如何减少命令输入的频率
命令的使用过程中,难免重复地使用同一个命令。这个时候,可以利用上下键查找曾经输入的命令。而如果输入的命令较多,则可以使用history命令查看曾经输入的命令,然后是感叹号加编号呼出命令,按回车执行。看下图操作:
技巧2:如何快速记住这些命令
很多人看到一大堆的命令行操作,就头疼,老是怕自己记不住这些命令。其实,记住这些命令也是有一定的技巧的。最重要的技巧,就是不断地重复同一个命令。要频繁使用--help查看命令参数的用法。还要多使用man命令查看指定命令的详细介绍。关于man命令的具体使用方法,请自行Google。
技巧3:如何更优雅地使用命令行
在命令行操作中,cd都是最大频度被使用的命令。在大量使用的过程中,你是否想过,能否直接跳转到指定目录,而不用多次cd。还有,你在遇到较长命令的时候,是否想过给它起一个别名,下次使用直接使用别名进行跳转。另外,命令行的单调黑框,你是否曾经像我一样厌烦...所有的这些,有两个很好的工具可以满足你。autojump和zsh。
autojump主要是为了减少频繁使用cd命令而存在的。而zsh则极大地丰富了常用的bash终端,常常被人称作终极终端。关于他们的使用,我提供他们的github地址,想要使用的同学,请自行集成。
后记
到这里,所有关于命令行的介绍都讲完了。上面的命令并不要求全部掌握,但至少要熟悉其中的绝大部分。如果你对上面的命令一条都不熟悉的话,笔者认为至少你不是一个合格的IT从业者,或者说,你并不爱好IT工作。然而,从现在开始,并不晚,你可以从最简单的命令入手,不要害怕,相信自己,慢慢来。
补充知识
Linux VS Unix
文章中介绍的全是Linux命令,很多人可能会觉得对于Unix要学会一套新的命令。其实,并不需要。因为Linux系统又被称作类Unix操作系统,在Linux发明之前,Unix操作系统是收费的,为了创建一个免费的类Unix操作系统,Linux系统发明了。所以,Linux的大部分命令行都参照Unix系统开发的。也就是说,二者的命令几乎都是通用的。如果你像笔者一样在使用OS X操作系统。不用害怕,命令行几乎一模一样。