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的概念与体系系列文章

转载于:https://www.cnblogs.com/ching2009/p/5097789.html

Linux命令行与命令相关推荐

  1. linux命令行下命令参数前的一横(-)和两横(--)的区别

    linux命令行下命令参数前的一横(-)和两横(--)的区别 原文转自:http://blog.csdn.net/songjinshi/article/details/6816776 在解释这些区别之 ...

  2. widnows命令行常用命令使用 和 windows创建文件,写内容到文件

    widnows命令行常用命令使用 和 windows创建文件,写内容到文件 1 查看windows命令行常用命令的使用文档 1.1 查看windows中命令行命令 1.2 windows查看某个指定命 ...

  3. 命令行处理器命令_使用命令行处理器

    命令行处理器命令 在你开始前 DB2 JSON可用于Linux,UNIX和Windows 10.5的DB2以及用于z / OS V3.1的IBM DB2 Accessories Suite来与DB2 ...

  4. 基础一 【 系统搭建 访问命令行 简单命令】

    目录 : [部署 linux 环境] [ 远程连接配置 ] [访问命令行] [常用命令 一 ] [ 部署linux环境 ]  (一)部署流程 注释 : 首先要提前下载好 VMware Workstat ...

  5. Windows命令行(DOS命令)教程

    一.命令行简介 命令行就是在Windows操作系统中打开DOS窗口,以字符串的形式执行Windows管理程序. 在这里,先解释什么是DOS? DOS--Disk Operation System 磁盘 ...

  6. mysql的命令行常用命令_MySQL Command Line[mysql命令行常用命令]

    MySQL Command Line[mysql命令行常用命令] (2012-04-25 16:51:59) 标签: it 第一招.mysql服务的启动和停止 net stop mysql net s ...

  7. heartbeat如何监控程序_一文看懂MyCAT 命令行监控命令,监控调优必备

    概述 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Myca ...

  8. dos命令行choice命令使用详解

    这篇文章主要介绍了dos命令行choice命令使用介绍,需要的朋友可以参考下 Choice 命令 使用此命令可以让用户输入一个字符,从而运行不同的命令.使用时应该加/c:参数,c:后应写提示可输入的字 ...

  9. linux zsh命令行vim命令补齐,Linux使用zsh提高效率的5条建议

    平时比较喜欢命令行,不喜欢从图形化界面一个个的点过去:感觉还是命令搜索,查找方便些,快速些.但是,Bash本身提供的功能又不够方便,自己也懒得折腾.幸得github上有前辈大神们开源的 zsh工具集, ...

最新文章

  1. 场景法设计测试用例atm_软件测试零基础入门:常用八大测试用例设计方法,含案例...
  2. python语言入门自学-自学编程的6种方法,自学Python
  3. mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
  4. Android中利用productFlavors配置多渠道
  5. [转]用C++实现插件体系结构
  6. FR决策表单JS实现自动滚屏/滚动效果
  7. [C/C++] C/C++延伸学习系列之STL及Boost库概述
  8. sqlite的系统表sqlite_master
  9. 温度转换问题——从C到Python
  10. STM32F4 之STM32CubeMx编程学习
  11. 锐捷网关交换机开启dhcp服务
  12. 建站之星检测不到mysql_建站之星安装,建站之星安装教程 | 帮助信息-动天数据...
  13. 基于深度学习的图像识别技术研究综述
  14. 从汽车尾气过滤陶瓷孔检测看远心镜头的应用前景-工业相机
  15. python电影网络爬虫代码_Python爬虫——爬取豆瓣电影Top250代码实例
  16. linux下查看巨杉数据库,SequoiaDB巨杉数据库入门:快速搭建流媒体服务器
  17. vue登录模板1-科技透明登录框与登录页
  18. MVC框架实现用户的登录注册功能
  19. Android快速SDK(12)文本pdf阅读器PdfViewer【傻瓜模式】
  20. 【工具】pip安装不在当前虚拟环境中

热门文章

  1. kotlin Bean加载失败lateinit property has not been initialized
  2. 2022-2028年中国碘矿行业竞争格局分析及市场需求前景报告
  3. 2022-2028年中国微滤膜行业市场发展调研及投资前景分析报告
  4. AndroidSDK结合SpringBoot实现支付宝支付功能
  5. LeetCode简单题之重新分配字符使所有字符串都相等
  6. TVM 各个模块总体架构
  7. NVIDIA GPU上的直接线性求解器
  8. 2021年大数据HBase(二):HBase集群安装操作
  9. HarmonyOS 修改App 的name
  10. struct.error: ushort format requires 0 <= number <= 0xffff