文章目录
Linux 基本指令
ls 指令
alias 指令
cd指令
pwd 指令
clear指令
touch 指令
mkdir 指令(重要)
rmdir指令 && rm 指令(重要):
man指令(重要)
cp指令(重要)
mv指令(重要)
cat 指令
echo指令
重定向
输出重定向
输入重定向
uniq指令
sort 指令
more 指令
less 指令(重要)
head 指令
tail 指令
wc指令
命令行管道(很重要!!)
时间相关的指令
cal 指令
tree 指令
find 指令 (非常重要!)
which 指令
whereis 指令
grep 指令
zip/unzip 指令
tar 指令
bc指令
uname指令
常用热键
Tab
上下键
Ctrl + c
Ctrl+d
Linux 基本指令
了解 Linux 的基本指令,是学习Linux的基础。
ls 指令
ls 即 list files ,列出目前工作目录所含之文件及子目录。
语法:ls [选项][目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有文件,则以下之文件亦皆依序列出
比如下面,第一条指令只有 ls ,默认列出当前目录下的内容,之前只建立了几个文件夹,并没有文本文件等,所以这里只看到了文件夹。
又比如第三条指令,ls -a ,没有写明哪个目录或者文件,所以默认列出当前目录下的内容,但是由于选项是 -d,所以列出的是所有内容,包含隐藏内容。其中,隐藏内容有两个特殊的 . 和 .. 前者代表当前目录,后者代表上一级目录(后面讲)。例如第四条指令 ls -a . 这条指令语法完整,列出了当前目录下的内容。
看后面两条指令 ls -l 和 ll 实际上作用是一样的,代表列出当前目录下内容的详细信息(不包括隐藏文件)。 ll 是 ls -l 的简写。(并不是所有指令都可以这样简写,可以自己尝试一下)
alias 指令
alias 指令类似于 C语言的 typedef ,将命令重命名。
语法: alias [name[=value]]
如下,原本 ls -a 指令的的作用,将其重命名为 la 之后,用 la 就可以完成相同作用。
cd指令
cd指令是指 change directory 即 更换目录 的意思。
语法:cd 目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下。
举例
cd .. 返回上级目录
cd /home/litao/linux/ 绝对路径
cd ../day02/ 相对路径
cd ~ 进入用户家目
cd - 返回最近访问目录
如下,首先用 ls 指令查看当前目录下的内容,发现有四个文件夹。其次进入 lesson 文件夹,再用 ls 指令查看 lesson 文件夹 下的内容。发现有一个 lesson3 文件夹和其他几个 .c 文件。再进入lesson3 目录,用 ls 查看该目录下的内容。
如下,上文所说的 .. 代表上一级目录,可以看出来:
pwd 指令
pwd 指令是 print work directory 的意思,即 打印当前工作目录 。
语法: pwd
功能:显示用户当前所在的目录
常用选项: 无
如下,直接 pwd ,发现当前在 lesson3 目录下。 再用绝对路径进入 code 目录,pwd ,发现确实在 code 目录下。
然后用相对路径,cd ../Music .. 代表上一级目录,即进入上一级目录下的 Music 目录。
clear指令
clear指令用于清屏。觉得屏幕内容太多,看着不舒服的时候,使用clear,就清屏。效果如下。
touch 指令
touch 指令是创建一个文件的意思。
语法:touch [选项]... 文件...
功能: touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。常用选项:
-a 或--time=atime或--time=access或--time=use只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
如下,首先用 ls 指令查看当前目录下的内容,再用 touch 指令创建一个 try.txt 文件,成功。
mkdir 指令(重要)
mkdir 即 make directory ,创建一个目录。
语法: mkdir [选项] dirname...
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
例如:mkdir –p test/test1 : 递归建立多个目录
如下,首先不使用 -p 选项,直接创建一个 名为 1 的目录,成功。接着用 -p 选项,创建一个名为 2 的目录,这个目录里包含一个名为 3 的目录,名为 3 的目录又包含着一个名为 4 的目录,这回样子成为递归建立多个目录,成功。 值得注意的是,如红色方框一样,不使用 -p 指令,无法递归创建目录。
rmdir指令 && rm 指令(重要):
rmdir是一个与mkdir相对应的命令,即 remove directory ,删除目录。
语法: rmdir [-p][dirName]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
使用如下:
rm命令可以同时删除文件或目录
语法: rm [-f-i-r-v][dirName/dir]
适用对象:所有使用者
功能:删除文件或目录常用选项:
-f 即使文件属性为只读(即写保护),亦直接删除。可以理解为强制删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
删除目录必须要用到选项,如下,直接 rm 1 不可以,会报错。必须 rm -r 1 ,并且他会提示是否删除,输入y并回车,可以查看删除成功(输入 y 就代表yes,输入 n 代表 no)。
如果每次删除目录都要询问,是否过于麻烦了呢,此时使用 -f 选项,代表强制删除,不需要询问。但是值得注意的是,不可以只使用 -f 选项,如下图,必须配合 -r 才可以实现强制删除。
删除文件则不需要使用 -r 选项,但是也会询问是否删除,所以可以配合 -f 选项,强制删除。如下,红色框是不使用 -f 选项,蓝色框是使用 -f 选项。
man指令(重要)
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是::
语法:man [选项] 命令
常用选项
-k 根据关键字搜索联机帮助
num 只在第num章节找
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。解释一下,手册分为8章
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfig
比如想要查看printf 的手册,可以输入 man printf 并回车,跳出如下界面,按住键盘的上下键可以上翻或者下翻。如果想退出这个界面,看到最下面一行黑色背景的地方,可以知道,按 q 即可退出。
此时就会又疑问,如果我不知道这个手册是怎么使用的,该怎么办呢? 这时可以输入 man man,自己查看自己,即man手册的用法,如下是输入 man man 并回车之后跳出的man手册说明。
cp指令(重要)
cp就是 copy 的意思,代表将文件或者目录复制到另一个地方。
语法: cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
如下,查看当前目录下,只有名字为 2 的目录,创建 try.c 和 code.c 两个文件。首先把try.c 移到 ../Music ( ../Music 的意思是:上一级目录下的 Music 目录。这是相对路径)。然后进入上一级目录,再进入Music目录查看,确实有 try.c 文件。
目标和源也可以使用绝对路径,没有限制。比如下方蓝色方块内,此时操作是在Music目录下,但是我们可以把 /root/code/code.c(绝对路径)文件移动到 . 目录 (. 目录是当前目录,是相对路径)。然后查看,确实又增加了一个code.c文件。
mv指令(重要)
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
语法: mv [选项] 源文件或目录 目标文件或目录
功能:
1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录), mv命令将文件重命名或将其移至一个新的目录中。
2. 当第二个参数类型是文件时, mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个, mv命令将各参数指定的源文件均移至目标目录中。
常用选项:
-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
如下,把当前目录下的 try.c 移动到上一级目录,查看上一级目录确实有这个文件,并且当前目录的 try.c 没有了。但是如果 目标 不是目录,而是文件名,比如下方红色框出的,那么就相当于给文件改名字。如下,就把 code.c 文件改名成了 co.c 文件。
对于目录而言同样如此:
cat 指令
cat 指令是查看目标文件的内容。
语法: cat [选项][文件]
功能: 查看目标文件的内容
常用选项:
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
可以看下面四种方式使用cat。不使用选项,直接cat ,文件里有什么内容就输出什么内容。至于剩下三个选项,和上面描述一摸一样。
但是,如果cat 指令后面什么都不跟,就代表默认从标准输入(键盘)读取数据 并显示到屏幕上。如下:
如下,要停止此过程,按下Ctrl + z 即可。
echo指令
echo 指令用来在标准输出(屏幕)或者文件中显示一行文本或者字符串。
语法:echo [选项] [字符串]
功能:在标准输出(屏幕)或者文件中显示一行文本或者字符串。
选项
-n 不输出末尾的换行符。
-e 启用反斜线转义。
\b 退格
\ 反斜线\n 新行
\r 回车
\t 水平制表符
\v 垂直制表符
用法如下,但是要注意的是:首先,输出的字符串要加双引号。其次,如果使用-e选项,转义要使用反斜杠,而不是斜杠。在使用斜杠发现错误之后,我调用man手册查看,发现是自己用错斜杠了。
重定向
在介绍重定向之前,我们要先了解到,我们可以把键盘和显示器也看作“文件”。如下图,类似C语言的文件操作,在这里我们通过从键盘输入数据到内存,或者是从内存里输入到显示器。根据“Linux下一切皆文件”的理念,我们也可以把键盘、显示器看作“文件”。
输出重定向
> 就是输出重定向(没错就是一个大于号),指的是重新指定设备来代替显示器作为新的输出设备。例如echo,之前都是默认输出到屏幕,使用输出重定向,可以将内容输出到文件。
如下,原本 1.txt 中有三行内容(第一个红色方框)。使用echo指令和输出重定向之后,变成了 “try” 这串字符 (第二个红色个方框)。重复使用 echo 指令和输出重定向,发现 1.txt 文件内还是只有 “try” 这一串字符,并没有增加。从这里得知,输出重定向是覆盖式写入,写入的时候,会先清空文件。 ( 如果直接输入 > [文件名] 那么就是清空文件。)
为了弥补上面的不足,可以使用 >>, >> 又被称作追加重定向(两个大于号)。顾名思义,是可以向文件内追加内容。如下图
输入重定向
< 就是输入重定向(小于符号)。
默认情况下,cat 命令会接受标准输入设备(键盘)的输入,并显示到控制台,但如果用文件代替键盘作为输入设备,那么该命令会以指定的文件作为输入设备,并将文件中的内容读取并显示到控制台。
注意,虽然执行结果相同,但第一行代表是以键盘作为输入设备,而第二行代码是以 1.txt 文件作为输入设备。
但是,如果想要输入到某个分界符截至呢?可以使用 << (两个小于号)。如下,输入直到0截至,然后其他前面内容打印出来。值得注意的是,分界符作为某一行唯一的数据才可以截止,如下。
uniq指令
uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
如下,使用 uniq 1.txt 指令,重复出现的行列已经被删除。但是注意, 1.txt 这个文件里面的内容没有被改变,这个命令格式 只不过是把重复行列去掉显示出来而已。
sort 指令
sort 指令是文本行排序。
如下, 1.txt 还是上文的,没有变。将每一行,按照第一个字符的 Ascall 码顺序排列。
more 指令
more命令也是查看文件内容,但是如果文件内容长度超过当前屏幕,只能够下翻,不可以上翻。
语法: more [选项][文件]
功能: more命令,功能类似 cat
常用选项:
-n 对输出的所有行编号
q 退出more
less 指令(重要)
less 指令和more指令相对应,也是查看文件内容,可以上下翻动。除此之外,less还有其他许多强大的功能,比如搜索(向下搜索,向上搜索等等)。
语法: less [参数] 文件
功能:
less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
选项:
-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q:quit
head 指令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块, head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。
语法: head [参数]... [文件]...
功能:
head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
选项:
-n<行数> 显示的行数
tail 指令
tail 命令从指定点开始将文件写到标准输出.使用tail命令的 -f 选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容.
语法: tail [必要参数][选择参数][文件]
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
-f 循环读取
-n<行数> 显示行数
例如,想看 code.c 文件最后十行的内容。
wc指令
wc指令可以计算文件的Byte数、字数、或是行数。
语法 wc [-clw][--help][--version][文件...]
参数:-c或--bytes或--chars 只显示Bytes数。
-l或--lines 显示行数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息。
用法如下:
命令行管道(很重要!!)
| 就是管道,(没错就是一个竖线,英文键盘下 Enter 上面的那个键) 可以将两个或者多个命令(程序或者进程)连接到一起,把一个命令的输出作为下一个命令的输入,以这种方式连接的两个或者多个命令就形成了管道(pipe) 。
语法格式如下:
command1 | command2
command1 | command2 [ | commandN... ]
比如我现在有一个一千行数据的文件,执行 cat mylog.txt | wc -l 。如下,如果只有 cat mylog.txt ,那么结果就会输出到屏幕上,但是有了 | 这个管道,结果就存入了管道里面。 然后 wc 指令后面本来要跟一个文件名,从文件里面读取,现在变成了从管道里读取数据,并输出。代码执行结果如下。
又或者对这个文件,我只想要看第 580-600行的内容,用less指令一个一个看过于麻烦,此时就可以使用管道指令。如下, head -600 mylog.txt | tail -20 | cat 指令先将文件前六百行内容放入管道,然后又取了这六百行数据的倒数二十行,放入管道,然后给cat 。(当然要输出这20行的内容,可以用其他很多办法, 这里只是介绍一下管道。)
时间相关的指令
date显示,date 指定格式显示时间: date +%Y:%m:%d
date 用法: date [OPTION]... [+FORMAT]
1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
%H : 小时(00..23)
%M : 分钟(00..59)
%S : 秒(00..61)
%X : 相当于 %H:%M:%S
%d : 日 (01..31)
%m : 月份 (01..12)
%Y : 完整年份 (0000..9999)
%F : 相当于 %Y-%m-%d
如下图,中间是用 : 或者 - 或者其他符号隔开看个人喜好。并且必须要有 + ,不然显示不出来时间。
2.在设定时间方面
date -s //设置当前时间,只有root权限才能设置,其他只能查看。
date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对日期做更改
date -s “01:01:01 2008-05-23″ //这样可以设置全部时间
date -s “01:01:01 20080523″ //这样可以设置全部时间
date -s “2008-05-23 01:01:01″ //这样可以设置全部时间
date -s “20080523 01:01:01″ //这样可以设置全部时间
如下:
3.时间戳
时间->时间戳: date +%s
时间戳->时间: date -d@1508749502
Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
如下:
cal 指令
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。 “阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。
命令格式: cal [参数][月份][年份]
功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
常用选项:
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
如下图:
tree 指令
tree指令需要下载,输入 yum install tree 并回车即可。tree命令用于 以树状图列出目录的内容。
如同下三块区域,是 tree 指令的示范。tree 指令可以使用绝对路径,也可以使用相对路径。
find 指令 (非常重要!)
find可以用来查找文件。
语法: find pathname -options
功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
-name 按照文件名查找文件(实际上常用选项特别多,这里简单介绍一下。)
如下, ~ 是当前工作目录下。
which 指令
which 指令是用来查找文件。 比如下图,查找各个指令的绝对路径。这里我们要理解,指令实际上就是文件,指令就是用各种语言写成的,在系统当中。也不难发现,指令都在 bin 目录下,是可执行文件。同时,把自己写的程序叫指令也可以。指令和普通文件没有本质区别。
whereis 指令
whereis 更多用来搜索指定名称的文件,程序,或者归档文件等等。如下,用whereis 指令搜索 ls指令,发现不仅把指令路径找出来了,还把其man手册中的位置找出来了。
find、which、whereis 就是Linux 上的搜索三剑客。
grep 指令
grep是在文件中搜索特定字符/字符串。
语法: grep [选项] 搜寻字符串 文件
功能: 在文件中搜索字符串,将找到的行打印出来
常用选项:
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
如下。
如下,用 -v 指令,把 不包含 "111" 字符串的内容打印出来。
zip/unzip 指令
zip指令不难看出,就是打包。Linux下有多种压缩包格式的后缀,比如.zip .gz 等等。
语法: zip 压缩文件.zip 目录或文件
功能: 将目录或文件压缩成zip格式
常用选项:
-r 递 归处理,将指定目录下的所有文件和子目录一并处理
但是,如下 操作,lesson3里面本来是有好几个文件,也有文件夹的,但是直接zip ,然后将压缩包放到code目录下解压,发现只压缩了lesson3 这个空目录。
如果要压缩文件内所有内容,必须使用 -r 选项递归打包目录,如下,先使用 -r 选项压缩lesson3。然后移到 code 目录下解压,使用 tree 命令发现这一次解压的 lesson3 文件夹确实有东西了。
如果想要解压到指定目录,就可以加上 -d 选项,后面加上指定目录,如下,解压到对应目录,并且用tree指令查看该目录,结果和预期一样。
tar 指令
tar指令是打包/解包,不打开它,直接看内容。
tar [-cxtzjvf] 文件与目录 .... 参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录
一般而言,打包使用固定选项 -czf , tar -czf dst src 把 src 标定的内容打包形成dst。一般而言,用tar指令打包的压缩文件用 .tgz 作为后缀。
而解包也是用固定选项 -xzf , tar -xzf dst ,即把dst压缩文件解压。如下,把lesson3文件夹删除,然后解压 lesson3.tgz ,再用 tree 指令查看解压得到的 lesson3 文件夹,东西都还在。
当然,如果想像windows里面一样,不解压的情况下,双击打开压缩文件查看里面的内容,可以使用 -ztvf 和 -ztf 选项 , tar -ztvf dst 或者 tar -ztf dst ,前者是查看压缩文件里面内容的详细信息,后者是看文件名。
此外,也可以解压到指定目录下,使用 -C 选项,C是大写的。如下,先用tree查看home目录下的内容,然后用tar指令指定解压 lesson3.tgz 到home目录下,再用 tree 指令查看home目录,发现结果符合预期。
bc指令
bc指令在Liunx下经常被当作计算器使用。可以和echo 、管道一起用。如下。
uname指令
uname用来获取电脑和操作系统的相关信息。
语法: uname [选项]
功能: uname用来获取电脑和操作系统的相关信息。
补充说明: uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:
-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
如下,-a 选项是查看所有信息, -r 选项是查看体系结构。
如果只想要看Centos的版本,可以使用 cat /etc/redhat-release 指令。
常用热键
Tab
自动补全,比如想要输入 clear 指令,只需要输入cle ,然后按Tab,就会自动补全可能要输入的内容,再按Tab 就会切换下一个可能输入的内容,直到自己想要的内容为止。
上下键
向上键表示上一条指令,这样子就避免重复输入。当然如果按向下键就会跳到下一条指令(如果有的话)。
Ctrl + c
当遇到某些问题,比如输入了 \ ,然后无法退出等等,可以使用 Ctrl + c 终止正在运行的程序。
Ctrl+d
退出登陆。可以用来取代exit。