Linux常用命令
命令的使用方式
Linux系统是以全双工的方式工作,即从键盘把字符输入系统,系统再将字符回送到终端并显示出来。通常回送到终端的字符与输入的字符相同,因此操作员看到的正是自己的输入的字符。但也有个别的时候,系统不会送回符号。
最常见的特殊字符是回车键RETURN,它表示输入行的结束;系统收到回车信息便认为输入的当前行结束,系统的响应是让屏幕光标回到下一行行首。
回车符只是控制符的一个例子。控制符是指控制终端的工作方式的非显示字符。输入一般控制符必须先按下控制键,或称做CTRL键,然后再按所对应的字符键。例如,输入回车符可以直接按回车键,也可以先按控制键,再按m键。
CTRL+m表示回车键
CTRL+d表示终端的输入结束
CTRL+g表示控制终端响铃
CTRL+h表示退格键
DELETE、BREAK、CTRL+c表示立即终止程序
终端显示提示符后,用户就可以输入命令请示系统执行。这里所谓的命令就是请示调用某个程序。例如当用户输入date
命令时,系统就去调用date
程序显示当前的日期和时间,终端屏幕会出现类似的下面信息:
又如询问当前有哪些用户挂在系统里。命令及相应如下表示:
还有另外的方法可以查看目前登录用户的注册信息。命令及响应如下所示:
特殊字符
在Linux系统的终端中有几个最有用的bash变量,这些变量变量名及简单描述如下:
HISTFILE用于贮存历史命令文件
HISTSIZE历史命令列表的大小
HOME当前用户的用户目录
OLDPWD前一个工作目录
PATHbash寻找可执行文件的搜索路径
PS1命令行的一级提示符
PS2命令行的二级提示符
PWD当前工作目录
SECONDS当前shell开始后所流逝的秒数
这意味着bash保留了一定数目的先前已经在shell里输入过的命令,这个数目取决于一个叫做HISTSZIZE
的变量。使用历史记录列表最简单的方法是用上方向键。
另一个使用命令历史文件的方法是用bash的内部命令history
和fc
(fix命令)命令来显示和编辑历史命令。history
命令能以两种不同的方法来调用。第一种是:history [n]
当history
命令没有参数时,整个历史命令列表的内容将被显示出来。使用n参数的作用是仅有最后n个历史命令会被列出。
例如,history 5
显示最后5个命令。
调用history命令的第二种方法用于修改命令历史列表文件的内容。命令的语法如下:
history [-r|w|a|n] [filename]
-r
选项选项告诉history
命令读命令历史列表文件的内容并且把它们当作当前的命令历史列表
-w
选项将把当前的命令历史记录写入文件中并覆盖文件原来的内容
-a
选项把当前的命令历史记录追加到文件中
-n选项将读取文件中的内容并加入到当前历史命令列表中
如果filename
选项没有被指定,history命令将用变量HISTFILE
的值来代替。
命名别名通常是其他命令的缩写,用来减少键盘输入。
还有一个使工作变得轻松的方法是使用命令别名命令格式为:
alias [alias-name='original-command']
alias-name
是用户给命令取的别名
original-command
是原来的命令和参数。
需要注意的是,由于Bash是以空格或者回车识别原来的命令的,所以如果不使用引号就可能导致Bash只截取第一个字符,从而出现错误。
注意:在定义别名时,等号两边不能有空格,否则不能shell
不能决定要做什么。仅在命令中包含空格或特殊字符时才需要引号。如果不键入不带任何参数的alias
命令,将显示所有已定义的别名。
Bash有两级提示符。第一级提示符是经常见到的Bash在等待命令输入时的情况。第一级提示符的默认值是$
符号。如果用户不喜欢这个符号,或者愿意自己定义提示符,只需修改PS1
的变量的值。例如将其改为:
PS1="输入一个命令:"
第二级提示符是当Bash为执行某条命令需要用户输入更多的信息时显示的。第二级提示符默认为“>
”。如果需要自己定义该提示符,只需改变PS2
变量的值。例如将其改为:
PS2="更多信息:"
用户也可以使用一些事先已经定义好的特殊字符。这些特殊字符将使提示符中包含当前时间之类的信息。
特殊字符 | 说明 |
---|---|
! | 显示该命令的历史编号 |
# | 显示shell激活后,当前命令的历史编号 |
$ | 显示一个$符号,如果当前用户时root则显示#符号 |
\ | 显示一个反斜杠 |
\d | 显示当前日期 |
\h | 显示运行该shell的计算机主机名 |
\n | 打印一个换行符,这将导致提示符跨行 |
\s | 显示正在运行的Shell名称 |
\t | 显示当前时间 |
\u | 显示当前用户的用户名 |
\W | 显示当前工作目录基准名 |
\w | 显示当前工作目录 |
下面来看几个实际例子: |
PS1="\d"
将提示符变成显示日期,如下所示:
一 2月 02
而PS1="d"
,将使提示符变成如下所示:
d
若PS1="[\W@\h \w]"
将使提示符变成如下所示
[nic@lbliubing ~/liunuxbook/nic]
该例就是使用三个特殊字符的组合得到的。
联机帮助
1.显示帮助手册
通常使用者只要在命令man
后,输入想要获取的命令的名称(例如ls
),man
就会列出一份完整的说明,其内容包括命令语法、各选项的意义以及相关命令等。该命令的一般形式为:
man [选项] 命令名称
man命令的常用选项
常用选项 | 说明 |
---|---|
-S | 根据章节显示,由于一个命令名称可能会有很多类别 |
-f | 只显示出命令的功能而不显示其中详细的说明文件 |
-w | 不显示手册页,只显示将被格式化和显示的文件所在位置 |
-a | 显示所有的手册页,而不是只显示第一个 |
-E | 在每行的末尾显示$符号 |
2.系统帮助文档
help
命令用于查看所有的Shell命令。用户可以通过该命令寻求Shell命令的用法,只需在所查找的命令后输入help
命令,就可以看到所查命令的内容了。
例如:查看cd
命令的使用方法。
$ cd --help
3.whereis命令
这个程序的主要功能是寻找一个命令所在的位置。例如,最常用的ls
命令,它是在/bin这个目录下的。如果希望知道某个命令在哪一个目录下,可以用whereis
命令来查询。该命令的一般形式为:
whereis [选项] 命令名
whereis命令的常用选项
章节 | 说明
- | -
-b|只查找二进制文件
-m | 查找主要文件
-s | 查找来源
-u | 查找不常用的记录文件
例如:查找cd
命令二进制文件在什么目录下。可使用如下命令:
$ whereis -b cd
通配符基础
通配符又称多义符。在描述文件时。有时在文件名部分用到一些通配符,以加强命令的功能。在Linux系统中有以下基本的通配符:
通配符 | 说明
- | -
? | 表示该位置可以是一个任意的单个字符 - | -
- | 表示该位置可以时若干个任意字符
方括号[charset] | 可代替charset集中的任何单个字符
下面对方括号 通配符进行一些说明,例如:
[cChH]
:表示在文件的该位置中可出现任意单个的c或h字符的大小写形式。
通配符集还能描述介于字符对之间的所有字符。如“[a-z]
”就可以代替任意小写字母,而[a-zA-Z]
则可替代任意字母。注意可替代的字符包括a到z和A到Z字符对之间的所有字符。
命令的输入和输出
在Linux系统中,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件也都对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
Linux系统为输入、输出的传送引入了另外两种机制,即输入/输出重定向和管道。
1.输入重定向
输入重定向是指把命令(或可执行程序)的标准输入重定向到指定的文件中。输入重定向主要用于改变一个命令的输入源,特别是改变那些需要大量输入的输入源。
另一种输入重定向称为here文档,它告诉shell当前命令的标准输入来自命令行。here文档的重定向操作符使用“<<
”。它将一对分隔符(!..!)之间的正文重定向输入给命令,用来将输入重定向到一个交互式Shell脚本或程序。基本形式如下:
command << delimiter
document
delimiter
它的作用是将两个delimiter之间的内容(document)作为输入传递给command。
注意:
- 结尾的delimiter一定要顶格写,前面不能有任何字符。
- 开始的delimiter前后的控制会被忽略。
由于大多数命令都以参数的形式在命令行上指定输入文件的文件名,所以输入重定向并不经常使用。尽管如此,当要使用一个不接受文件名作为输入参数的命令,而需要的输入的内容又存在一个文件里时,就能用输入重定向解决问题。
2.输出重定向
输出重定向是指把命令(或可执行程序)的标准输出或标准错误输出重新定向到指定文件中。这样,该命令的输出就不显示在屏幕上,而是写入到指定文件中。
重定向一般通过在命令间插入特定的符号来实现。特别的,这些符号的语法如下所示:
command1 > file1
上面的这个命令执行command1
然后将输出的内容存入file1
。
注意任何file1
内已经存在的内容将被新内容替代。如果要将新内容添加在文件末尾,请使用>>
操作符。
3.管道
将一个程序或命令的输出作为另一个程序或命令的输入,有两中方法,一种是通过一个临时文件将两个命令或程序结合在一起;另一种是Linux所提供的管道功能。这种方法比前一种方法更好。
管道可以把一系列命令连接起来,这意味着第一个命令的输出会作为第二个命令的输入通过管道传给第二个命令,第二个命令的输出又会作为第三个命令的输入,以此类推。显示在屏幕上的是管道行中最后一个命令的输出(如果命令行中未使用输出重定向)。
4.命令替换
命令替换和重定向有些相似,但区别在于命令替换是将一个命令的输出作为另外一个命令的参数。常用命令格式为:
command1 'command2'
其中,command2
的输出将作为command1
的参数。需要注意的是这里的'
符号,被它括起来的内容将作为命令执行,执行后的结果作为command
1的参数。命令替换符号还可以是$()
。
例如:
$ cd 'pwd'
该命令将pwd命令列出的目录作为cd命令的参数,结果仍然是停留在当前目录下。
文件概念及操作命令
1.文件显示命令
显示指定工作目录中所包含的内容的指令是ls
,要说明的是ls
命令列出文件的名字,而不是文件的内容。该命令的使用方式如下:
ls [选项] [文件目录列表]
ls命令常用选项 | 说明
- | -
- a | 显示所有文件及目录(ls规定将文件名或目录名中开头为“.”的视为隐藏,不会列出)
- c | 按列输出,纵向排序
- x | 按列输出,横向排序
- l | 除文件名外,也将文件状态、权限、拥有者、文件大小等信息详细列出
- t | 根据文件建立时间的先后次序列出
- A | 同-a,但不列出“.”(目前目录)及“…”(父目录)
- X | 按扩展名排序显示
- R | 递归显示下层子目录
- help | 显示帮助信息
- version | 显示版本信息
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性。Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在Linux中我们可以使用ll
或者ls -l
命令来显示一个文件的属性以及文件所属的用户和组,如:
[root@www /]# ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
……
实例中,bin文件的第一个属性用“d
”表示。“d
”在Linux中代表该文件是一个目录文件。
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为[
d
]则是目录 - 当为[
-
]则死文件; - 若是[
l
]则表示链接文档(link file); - 若是[
b
]则表示为装置文件里面的可供存储的接口设备(可随机存取装置); - 若是[
c
]则表示装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
接下来的字符中,以三个为一组,且均为『`rwx`』的三个参数的组合。其中,[`r`]代表可读(read),[`w`]代表可写(write)、[`x`]代表可执行(execute)。需要注意的是,这三个权限位置不会改变,如果没有权限,就会出现[`-`]号。
每一个文件的属性由昨年第一部分的10个字符来确定(如下图)。
从左至右用0-9这个数字来表示。
第0位确定文件类型,第1-3位确定属主(该文件所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第1、4、7位表示读权限,如果用“r”字符表示,则有读权限,如果用“-”字符表示,则没有读权限;
第2、5、8位表示写权限,如果用“w”字符表示,则有写权限,如果用“-”字符表示没有写权限;第3、6、9位表示可执行权限,如果用“x”表示,则有执行权限,如果用“-”字符表示,则没有执行权限。
2.查找、排序及显示指定文件内容的命令
查找文件
在Linux系统中查找文件的命令通常为find
命令。
find
命令可在使用、管理Linux系统中方便地查找所需要的指定文件。
find命令的语法格式如下:
#find [目录列表] [匹配标准]
在命令格式中有两个参数,说明如下:
目录列表:希望查询文件或文件集的目录列表,目录间用空格分隔。
匹配标准:希望查询的文件的匹配标准或说明。