Linux命令行与命令
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!
Linux的命令是很重要的工具,也往往是初学者最大的瓶颈。有朋友用了很长时间的Linux图形界面,基本不使用命令行输入命令执行,所以装的Linux最终成了摆设。这里总结一些命令行下常使用的命令,希望能有用。
什么是命令
我们通常所说的Linux命令行是运行在终端(terminal)的shell (阅读Linux架构以了解什么是shell以及它在Linux系统中的位置)
所谓的命令,是我们在命令行输入的一串字符。shell负责理解并执行这些字符串。shell命令可以分为如下几类 1)可执行文件(executable file) 2)shell内建函数(built-in function) 3) 别名(alias)。可执行文件为经过编译的程序文件,我们输入这些文件的路径来让shell运行,比如$/bin/ls。有些可执行文件被放在特殊的目录(默认路径)下面,从而使得操作系统可以通过文件名找到,而不用总是输入该文件的绝对路径(absolute path)。比如说$ls(实际上,shell自动帮我们补齐ls的路径)。随后,这些可执行文件中包含的程序运行,并成为进程。shell的内建函数与上面类似,只是其对应的程序被保存在shell的内部。别名是指我们给以上两种命令起一个简称,以便减少输入的工作量。
我们可以通过type命令来了解命令的类型:
$type ls
$type cd
命令的构成
当我们在命令行输入命令的时候,往往由一下方式构成:
$ls -l /home
整个一行命令由空格分为三个部分(注意, $是自动出现的提示符,有时还会在此之前出现计算机名)。第一个为命令的名字ls,这个命令ls的功能是列出目录中所有文件,第二个-l是关键字,它告诉ls要列出每个文件的详细信息,第三个/home为参数,表示我所要列出的目录是/home。实际上关键字是一种特殊的参数,大部分情况下用来开关程序的某些特殊功能 (用来选择做出的是拿铁咖啡还是黑咖啡)。而参数是用来传递给程序的一般的变量。ls经过处理之后,将在终端输出/home下面包含的各个文件名 (该文件系统见:http://www.cnblogs.com/vamei/archive/2012/09/09/2676792.html):
vamei another
关键字和参数可以不止有一个,比如:
$ls -l -a /home /bin
$ls -la /home /bin
(上面两个命令等价)
列出/home和/bin目录下的文件,-a表示列出全部文件(即使是隐藏文件也要列出), -l表示列出每个文件的详细信息。
(如果命令没有被放在默认路径中,你也可以输入绝对路径来执行)
回忆Linux文件管理背景知识,我们知道,每个文件能否被执行要根据用户所拥有的权限。命令实际上是可执行文件,也是如此。系统相关的命令,或者某个命令中的定义的操作,往往会要求超级用户root的身份才能使用。如果你是用户vamei,那么你就无法使用这些命令。但以root的身份登录是个糟糕的想法。为了解决这一矛盾,你可以以vamei的身份登录,但在执行命令之前加上sudo, 以便临时以root的身份执行某条命令。比如$sudo ls .
对于大多数的shell来说,都有命令补齐的功能。当你在$的后面输入命令的一部分时,比如rmdir的rmd的时候,按Tab键,Linux会帮你打剩下的字符,补充成为rmdir。不止是命令,如果你输入的是文件名,Linux也可以帮你补齐。比如说, $ls a.txt。当你输入到$ls a.t的时候,按Tab键,Linux会帮你补齐该文件名,成为$ls a.txt。当然,这样做的前提是你输入到rmd的时候,默认路径下能和它相符的命令只有一个rmdir了。如果有多个相符的命令,连按两下Tab,Linux会显示所有的相符的命令。
多使用命令的好处
实际上,许多命令的功能都可以通过图形化界面来实现,学习这些命令的意义在哪里呢?
在UNIX发育的大部分历史上,用户都是通过shell来工作的。大部分命令都已经经过了几十年的发展和改良,功能强大,性能稳定。Linux继承自UNIX,自然也是如此。此外Linux的图形化界面并不好,并不是所有的命令都有对应的图形按钮。更别说在图形化界面崩溃的情况下,你就要靠shell输入命令来恢复计算机了。
命令本身是一个函数 (function),是一个小的功能模块。当我们想要让计算机做很复杂的事情 (比如说: 在晚上12:00下载某个页面的所有链接,然后复制到移动硬盘)的时候,不断地去按各个图形化按钮并不是个很聪明的事情 (1. 要点很多下,2. 必须等到12:00)。我们通常是通过shell编程来实现这样一些复杂任务,这时,就可以把命令作为函数,嵌入到我们的shell程序中, 从而让不同命令协同工作 (比如使用date来查询时间,再根据时间来使用wget下载等等)。
如何了解一个陌生的命令?
有一些命令可以用来了解某个命令本身的情况,比如这个命令的绝对路径。
$which ls
which 在默认路径中搜索命令,返回该命令的绝对路径。
$whereis ls
whereis 在相对比较大的范围搜索命令,返回该命令的绝对路径。
$whatis ls
whatis 用很简短的一句话来介绍命令。
$man ls
man 查询简明的帮助手册。对于大部分的Linux自带的命令来说,当作者编写它的时候,都会带有一个帮助文档,告诉用户怎么使用这个命令。
(man可以说是我们了解Linux最好的百科全书,它不但可以告诉你Linux自带的命令的功能,还可以查询Linux的系统文件和系统调用。如果想要深入学习Linux,就必须要懂得如何用man来查询相关文档。)
$info ls
info 查询更详细的帮助信息
此外,在shell中,你还可以用向上箭头来查看之前输入运行的命令。
你也可以用
$history
来查询之前在命令行的操作。
当一个命令运行时,你中途想要停止它时,可以用Ctrl + c。如果你只是想暂时停止,使用Ctrl + z。具体机制与信号(signal)有关,我们将在以后介绍
总结
命令行: 使用shell解释输入的字符串,以运行程序
type
sudo
which, whereis, whatis, man, info
使用Tab自动补齐,向上箭头查询历史,history
Ctrl + c, Ctrl + z
Linux命令行与命令的更多相关文章
- 【Linux】1、命令行及命令参数
命令行及命令参数 文章目录 命令行及命令参数 1.命令行提示符 2.命令和命令参数 简单的命令 date ls 命令参数 短参数(一个字母) 长参数(多个字母) 参数的值 其它参数 3.小结 4.参考 ...
- Oozie命令行常用命令汇总[转]
Oozie命令行常用命令汇总 有时候脚本跑多了就不愿意在OozieWeb端去看脚本的运行情况了.还好Oozie提供了很多命令行命令.能通过命令行直接检索自己想看到的脚本信息.在这里简单进行一下总结.一 ...
- 命令行工具命令 - run包到手机里
命令行工具命令 你完全可以选择不输入以下这些命令,执行这些命令的结果与在 Android Studio 中单击"运行"按钮是一样的. chmod +x gradlew - 此命令只 ...
- Windows命令行(DOS命令)教程 -1 (转载) http://www.pconline.com.cn/pcedu/rookie/basic/10111/15325.html
一.命令行简介 命令行就是在Windows操作系统中打开DOS窗口,以字符串的形式执行Windows管理程序. 在这里,先解释什么是DOS? DOS--Disk Operation System 磁盘 ...
- Windows命令行(DOS命令)教程
一.命令行简介 命令行就是在Windows操作系统中打开DOS窗口,以字符串的形式执行Windows管理程序. 在这里,先解释什么是DOS? DOS——Disk Operation System 磁盘 ...
- Linux学习(一):从图形界面进入命令行及命令行进入图形界面
一.从图形界面进入命令行 最近脑洞大开,想接触一下linux.本人设备是win7,于是安了VMware(12.0.0)虚拟机,在安Linux(我用的CentOS 6.3 64)时不太会搞,跟据提示(英 ...
- linux命令行—《命令行快速入门》
pwd print working directory 打印工作目录 hostname my computer's network name 电脑在网络中的名称 mkdir make director ...
- ubuntu命令行相关命令使用心得
一.Ubuntu解压缩zip,tar,tar.gz,tar.bz2 ZIP zip可能是目前使用得最多的文档压缩格式.它最大的优点就是在不同的操作系统平台,比如Linux, Windows以及Mac ...
- CMD命令行管道命令
一.什么是管道命令 管道命令能够将一个命令的执行结果经过筛选,只保留我们需要的信息. 如 dir 命令会显示目录下所有文件夹和文件,可以使用管道命令| findstr "" 将di ...
随机推荐
- HTTP常见错误代码总结
1.HTTP 401 用户验证失败.不允许继续访问 2.HTTP 403 禁止访问,访问web应用,没有指定要访问页面的名称 3.HTTP 404 请求的文件找不到,一般情况是在浏览器输入地址时,输入 ...
- Range
欢迎转载,转载请注明出处,徽沪一郎. 概要 Scala中Range可以看成是List的特例,Range的包含的元素类型是Int, 本文介绍如何创建Range Range创建 方法一: val r1 = ...
- which go
http://www.yiibai.com/go/go_environment.html
- SQL server的存储过程
1.sp_databases 列出服务器上的所有数据库信息,包括数据库名称大小. 例:exec sp_databases 2.sp_helpdb 报告有关指定数据库或所有数据库的信息. 例: exec ...
- Visual C++ 中的重大更改
https://technet.microsoft.com/zh-cn/learning/bb531344.aspx 当你升级到 Visual C++ 编译器的新版本后,可能会在之前编译并正常运行 ...
- 【Algorithms】归并排序(merge sort)
几个比较常见的排序算法里头,这个我是比较生疏的一个,有一天突然被问了一个问题是,归并排序最大的特点是什么,我才想起这个算法来.下午又看不进书啦,就实现一下,记下来. 归并排序采取的是分治策略,就是先将 ...
- WINDOWS命令和批处理
转:http://www.cnblogs.com/itech/archive/2009/04/15/1436409.html 另外查看WIndows和Linux的所有命令:http://www.ss6 ...
- Android 自定义RecyclerView 实现真正的Gallery效果
http://blog.csdn.net/lmj623565791/article/details/38173061
- JavaScript函数的调用模式
我们说一个函数的调用模式是作为一个函数来调用,是要与其它三种调用模式做区分函数其他的三种调用: 方法调用模式,构造器调用模式,apply/call调用模式. 方法的调用模式: var obj={ fu ...
- Java之美[从菜鸟到高手演变]之Spring源码学习 - 环境搭建
准备工作 1.下载安装STS(Spring Tool Suite),在eclipse market里直接搜索.下载.安装.2.下载安装gradle, Spring源码使用gradle构建,下载后解压到 ...