本节来源
本节是对之前总结的一系列文章中的 Linux命令学习手册-0前言
的摘抄。这里的每个命令都经过我亲身的实践,linux多数命令使用起来并不难,关键是读懂命令的输出信息,以及如何使用命令帮助。
我的愿望是大家能够花费尽可能短的时间,熟悉Linux操作系统。如果仅仅是为了临时做一些事情,那么本节中的 基本命令
部分是一个比较合适的选择。
本节内容
本文档最开始介绍Linux命令相关的基本知识,然后给出一些基本的Linux命令。
“Linux命令学习手册-0前言”这个系列文章中的后面每个章节对每个重要的Linux命令进行详细的讲解,并给出详细的举例。具体可以在网上搜索得到。
侧重应用,重在举例,所以想要了解每个命令的具体细节还需要察看man或者info手册。
本节约定
对于每一个命令,大致分为如下三个部分
-
功能
简单介绍该命令功能。
-
举例
给出该命令最常使用的例子。
-
描述
详细描述该命令。
-
其他
该命令其他杂乱或者补充性的内容。
对于每个命令的使用例子,如下说明
以orgmode格式做为文档格式, orgmode格式一方面可读性强,另一方面便于将来导出为各种格式.
-
对于单个命令操作
+
开始的列表项第一行给出要操作的目的,然后是具体的命令,最后给出该命令的详细解释。例如:
+ 列出当前目录的内容 =$ls= 这里,将会列出当前目录所文件。
如果命令过长,则使用
#+BEGIN_SRC/#+END_SRC
对。 -
对于某个系列的命令
具体的命令使用列表给出,而命令所述的系列使用子标题(orgmode中,列表的排版比较容易出错,所以使用子标题,尽量避免嵌套列表)。
例如:
** 使用vi编辑: + 编辑之前首先打开文件<filename>: =$vi filename= 打开文件之后,操作如下: + 插入 输入 =a= + 退出 输入 =:q=
基本知识
这里简单介绍linux命令行的一般语法格式。这对初学者很重要,尤其是查找某个命令的帮助手册( man
手册)的时候,不会什么也看不懂。
命令组成
一般linux的命令语法格式如下:
命令名称 项 项参数(值) 命令参数(值)
例如:
od [OPTION]... [FILE]...
这里,命令名称是 =od= ,项是OPTION。这里项用'[]'括起来表示这个部分在 =od= 命令里面可可无。命令的参数是FILE也是可可无;'...'表示其前面的东西(这里是OPTION和FILE可以不只一个.一般来说(不是绝对的),在 =man= 手册里面,命令中像OPTION和FILE这样的变量形式的参数(即其值取决于用户的键入部分会用特殊颜色显示出来;而 =od= 这样本身是固定的部分(即不是用户能改变的用另外一种颜色显示(例如加粗)。也有的描述中把可变的部分用'<>'括起来。
再如:
cp [OPTION]... SOURCE... DIRECTORY
从这里可以看出,=cp= 命令参数SOURCE和DIRECTORY,其中SOURCE参数可以是多个,DIRECTORY只能一个。OPTION部分可可无,但是SOURCE和DIRECTORY部分必须要。
具体的例子:
=$cp -r file1 file2 dir=
关于项
项简单书写形式也复杂书写形式。简单形式的项一般用 -
引出,复杂形式一般用 --
引出等等。
-
例如:
$cp -v file1 file2
等价于$cp --verbose file1 file2
这里,=-v= 和
--verbose
是一样的,-v
是简写形式,--verbose
是复杂形式。 -
又例如:
cp -r src des
其中,
-r
就是其中的[OPTION]部分,也可以是--recursive
。 -
另外,有些命令的项不用
-
来引出,例如:$unrar e test.rar
使用
e
项指定unrar
命令解压test.rar
文件。 -
有些命令项用
-
做为前缀,然后可以接多个选项,例如:$tar -czvf dir.tgz dir
这个命令使用
tar
命令的-c -z -v -f
四个项,给dir
目录打包并且压缩,生成结果文件为dir.tgz
. -
在项用'[]'包含起来表示可的同时,如果几个值其中只能出现一个的话那么用'|'来分开。例如:
command [-a|-b]
这里,
command
是假设的一个命令,这表示这个命令command
中,-a
和-b
项,两者要么都没,要么只一个。
关于项的参数
不光是命令,命令的项也可以参数。
-
这里举一个复杂点的命令
gdb [-help] [-nx] [-q] [-batch] [-cd=dir] [-f] [-b bps] [-tty=dev] [-s symfile] [-e prog] [-se prog] [-c core] [-x cmds] [-d dir] [prog[core|procID]]
这是
gdb
命令的语法格式,关键的几个部分如下:
[-d dir]
就是指,运行gdb命令,可以添加一个可的项-d
,这个项的参数是dir
.在本文的描述中,不太容易一下子看出[-d dir]
里面哪部分是固定的字符串,哪部分是随用户输入而变的字符串,但是man
手册里面都把它们标记为不同的颜色了,实际通过分析也很容易知道哪个部分是可变的。有些命令项和项的参数之间可以没空格,的项和项参数之间用 = 连接,例如这里的 ~[-cd=dir]'
-
再举一个例子
minicom [-somMlwz8] [-c on|off] [-S script] [-d entry] [-a on|off] [-t term] [-p pty] [-C capturefile] [configuration]
这是minicom的命令语法,其中[-c on|off]表示-c项是可的(即在命令中可可无,它一个选项参数,参数值可以是on或者off.
基本命令
这里是经常使用的linux命令,用于平时查阅之用.
一般而言,超级用户(root)的命令提示符号是 #
,一般用户的命令提示符号是 $
.
文件管理相关
-
创建名字为1的目录
$mkdir 1
-
创建名字为1的文件
$touch 1
-
删除名字为1的文件
$rm 1
-
查看文件1的内容
$cat 1
-
强制删除一个目录
$rm -rf dirname
这里,
rm -r dirname
是递归删除的意思,如果加上-i
项,表示删除之前提示是否删除。 -
重命名/移动文件
$mv ./origin ./newname
这里,Linux中没专门的重命名命令,这里实际是使用了移动命令来进行的。原来的文件名
origin
,新文件名newname
. -
把文件file1拷贝一份到file2
$cp file1 file2
这里,操作都是在当前目录下面进行的,如果拷贝到别的目录,可以指定路径,例如
cp file1 /anotherdir/file2
. -
把目录dir1考到另一个地方为dir2
$cp -r dir1 dir2
这里,
-r
表示递归拷贝所子目录。 -
进入到一个目录中
$cd dirname
-
查看目录dirname中所包含的文件
$ls dirname
-
查看目录dirname中所包含的文件的详细信息
$ls -l
这样,会显示相应文件的详细信息,包括属主,大小,权限等信息。
-
查看当前的目录
$pwd
这样,会输出当前所在目录的路径。
-
创建文件file的硬链接
$ln file lnfile
这里,使用链接的目录格式类似
cp
。建立硬链接之后,如果删除源,还可以通过这个硬链接访问到这个文件的内容,除非所的硬链接都被删除了,否则文件内容就一直存在的。硬链接不能够跨越文件系统,不能够建立目录的硬链接。 -
创建文件
file
的软链接$ln -s file lnfile
这里,创建软链接,文件名里面
$
就用了转义\$
表示$
,尽量用绝对路径防止出错。软链接可以跨越文件系统,可以为目录创建软链接,但是软链接的文件,如果删除源,链接会失效,类似windows中的快捷方式。
权限管理相关
-
修改文件的权限为所人可读可写可执行
$chmod 777 filename
这里,文件属主必须是当前用户,否则就只能进入超级用户才能执行这个命令了。
-
修改文件filename的权限,为other用户添加写权限:
$chmod o+w filename
-
修改目录以及所子目录的权限为777
$chmod 777 -R dir
-
查看在线登陆用户
$who
-
将一个用户添加到用户组中
#usermod -a -G groupA user
这里,不要忘记
-a
项。如果用:usermod -G groupA
,这做会使user
用户离开其他用户组,仅仅做为这个用户组groupA
的成员。 -
更改用户user的组为groupA
#usermod -G groupA user
-
查看所的用户
$cat /etc/passwd
这里,用户都保存在了
passwd
文件中,所以查看这个文件的内容就可以看到所的用户了。成功创建一个新用户以后,在
/etc/passwd
文件中就会增加一行该用户的信息,其格式如下:〔用户名〕:〔密码〕:〔UID〕:〔GID〕:〔身份描述〕:〔主目录〕:〔登陆Shell〕
其中每个字段被冒号
:
分成7各部分。由于小于500的
UID
和GID
一般都是系统自己保留,不用做普通用户和组的标志,所以新增加的用户和组一般都是UID
和GID
大于500的。 -
查看所的组
$cat etc/group
-
查看所的组
$cat etc/group
这里,用户都保存在了
group
文件中,所以查看这个文件的内容就可以看到所的用户了。 -
添加一个用户testusr
#useradd testusr
这里,注意在超级用户模式才能用,刚建立没密码,没自己的home,其他项可以参见man
-
添加一个用户testusr,并自动建立其用户主目录
#useradd -m testusr
运行完毕,自动生成用户的家目录,目录里面
.bashrc
等文件。 -
删除一个用户
testusr
#userdel testusr
这里,命令不会把主目录删除.
-
删除一个用户testusr,连同主目录和邮箱缓存等
#userdel -r testusr
-
切换到用户testusr
$su testusr
如果用户需要密码,那么需要输入密码才能登录这个用户。
-
切换到超级用户
$su
这样,会提示输入超级用户的密码,输入之后,就会切换成超级用户了。
-
以超级用户身份运行一个程序
$sudo app
这样,会以超级用户身份运行app程序,如果当前权限不够的时候,这条命令是很用的。当然,运行之前需要输入自己的密码。还有如
sudo su
也是类似的。 -
设置更改一个用户testusr的密码
#passwd testusr
这里,需要在超级用户下,输入之后,按照提示输入旧密码和新密码就行了。如果运行的
passwd
没参数,那么会修改当前用户的密码。更改自己的密码只需输入passwd
不用切换到超级用户下。 -
修改用户testusr的主目录和登录的shell
#usermod -d/home/quietheart -s/bin/bash testusr
这里,用户名
testusr
的主目录路径设置在/home/testusr
,登陆的Shell设置为/usr/bin/gcc
(-d
更新使用者新的登陆目录,-s
指定新用户Shell),空格无均可. -
修改用户testusr名称为test
#usermod -l test testusr
把用户名
testusr
改成test
(-l
变更用户登陆时的名称,手册说同时使用者目录名也会跟着更动成新的名称(实践了没变目录呀))usermod
不允许改变正在线上的使用者帐号名称. -
查看当前用户属于的组
$groups
-
查看testusr用户属于的组
$groups testusr
磁盘管理相关
-
查看当前目录大小
$du -sh
-
查看文件的大小
$du -sh filename
这里,
filename
是将要查看的文件名称。 -
查看分区信息
fdisk -l
这里,会显示你的电脑上面的所磁盘的信息,例如分区,文件系统等。当前必须是
root
用户,否则没权限。
挂载磁盘相关
你的linux系统必须将其他硬盘的其他分区(例如windows分区)挂载到根目录树中,才能访问相应的分区。
-
挂载分区
/dev/sda7
到/mnt/win
#mount -t vfat /dev/sda7 /mnt/win
这样的挂载可能会出现显示中文的时候乱码,因为可能没指定解码的字符集。必须是超级用户才能执行。
-
指定gb2312字符集的挂载
#mount -t vfat -o iocharset=gb2312 /dev/sda7 /mnt/win
这样的挂载的时候,指定使用gb2312字符集,这样就可能没乱码了。其他常用的字符包括cp936,utf8等等(ntfs的一般用utf8挂载)。必须是超级用户才能执行。
-
查看已经挂载的分区
#mount
-
卸载已经挂载的分区
#umount /mnt/win
或
#umount /dev/sda7
这里,是把
/dev/sda7
分区挂载到了/mnt/win
上面。 -
重新挂载
#mount -o rw,remount /mnt/data
这里,时候文件系统变为只读了,试试这个命令.
-
设置系统启动自动挂载某个分区
方法之一是在
/etc/fstab
中加入如下内容:/dev/sda8 /mnt/winG vfat defaults,rw,exec,iocharset=utf8,umask=0000 0 0
必须
umask=0000
, 否则只root
可以写,并且root
也不能更改chmod 777 -R ...
这是自己尝试出来的。
其他操作
-
清屏
$clear
这样,当前用户的屏幕会被“清理”,并被重新刷新,原来输入的命令和命令的输出都被清理掉了,也可以使用
[Ctrl]l
来达到相同的效果。 -
查看系统的编码
$locale
输入之后,例如我的机器输出如下:
LANG=zh_CN.UTF-8 LC_CTYPE="zh_CN.UTF-8" LC_NUMERIC="zh_CN.UTF-8" LC_TIME="zh_CN.UTF-8" LC_COLLATE="zh_CN.UTF-8" LC_MONETARY="zh_CN.UTF-8" LC_MESSAGES="zh_CN.UTF-8" LC_PAPER="zh_CN.UTF-8" LC_NAME="zh_CN.UTF-8" LC_ADDRESS="zh_CN.UTF-8" LC_TELEPHONE="zh_CN.UTF-8" LC_MEASUREMENT="zh_CN.UTF-8" LC_IDENTIFICATION="zh_CN.UTF-8" LC_ALL=
-
启动xwindow图形界面
$startx
这个命令是在纯粹的命令行下面运行的命令。
-
切换到第一个纯命令行终端
输入:
[Ctrl][Alt][F1]
这样,如果在图形界面中运行这个命令,会切换到第一个命令终端上面。可以是
[F1]~[F7]
等。 -
切换到图形界面
输入:
[Ctrl][Alt][F7]
这样,如果在命令行终端,那么会切换到图形终端上面的是
[F7]
、[F8]
等等,都不一定,一般是[F7]
。 -
退出图形界面
两种方法,
方法1, 注销(不会
umount
)-
方法2, 输入:
[Ctrl][Alt][Backspace]
退出图形界面之后,不会
umount
之前mount
过的分区。
-
查看内核版本号
$uname -r
这里,如果输入
uname -a
会显示所的内核信息。 -
查看发行的Linux版本号
$cat /etc/issue
-
搜索最近匹配的历史命令
使用如下步骤进行:
输入
[Ctrl]r
输入以前输入的命令的子字符串
-
根据 2 的输入会自动匹配最近的命令。
如果匹配了一个,但是我们需要的命令是更早的,那么再输入一下
[Ctrl]r
。 输入回车,运行匹配的命令。
-
在当前目录中寻找指定的文件
$find -name filename
这样,会在当前目录下递归地寻找名称为
filename
的文件,并且返回它的位置,这里支持通配符号。 -
在指定的目录中寻找指定的文件
$find dirname -name filename
这样,会在
dirname
中递归地寻找名称为filename
的文件。 -
在文件中查找字符串
$grep 'string' filename
这样会在文件
filename
中查找指定的字符串'string'并且返回那个字符串的位置。 -
在当前目录中所文件中查找指定的字符串
$grep -r 'string' *
这里,使用了通配符号。
-
查看当前时间
$date
GNome桌面下面的操作
-
切换桌面工作区域
输入
[Ctrl][Alt]<左右方向键>
-
锁屏幕
输入
[Ctrl][Alt]l
-
切换不同任务窗口的快捷键
输入
[Alt][Tab]
-
在桌面和上次的程序之间进行切换
输入
[Ctrl][Alt]d
任务的前台和后台控制
假设我们运行了多个vi编辑器,以及其他程序(无论前台还是后台,实际上只一个前台的程序)。
-
将当前的程序放到后台停止
输入
[Ctrl]z
-
查看所在后台运行的程序
$jobs
输入之后,输出如下:
[1]- Stopped vi [2]+ Stopped vi lex
这里,使用前面的数字来标记每一个后台运行的程序。
-
将后台停止的指定程序变成后台运行
$bg %1
这样会把第一个后台的作业调到后台运行,实际上,用
bg 1
就行了。这样做之后,效果相当于运行了
app &
,其中app是运行的程序,&表示放在后台。 -
将指定的后台运行的作业号放到前台运行
$fg %1
这样会把第一个后台的作业调到前台运行,实际上,用
fg 1
就行了。 -
将最近的被停止的程序放到前台运行
$fg
-
杀掉指定的后台运行的程序
$kill %1
这样,会在后台运行的作业
%1
给杀掉。注意:这里的作业号用%来进行标记,而不像进程直接用数字了。
最基本的文件编辑操作
这里提供了使用 vi
编辑文件的最基本的操作,能够实现大多数的编辑目的。
-
用
vi
打开一个文件输入
vi filename
这里,
filename
就是你要打开的文件的名字,默认打开文件后vi
处于指令模式。 -
进入编辑模式编辑打开的文件
输入
i
.或输入
a
.进入编辑模式后,你可以直接敲入想要输入的字符到文件,两者的区别是
i
在当前字符前面开始插入,a
在当前字符后面开始插入。 -
退出编辑模式
输入
[Esc]
这样,将返回指令模式,准备接收你要传达给
vi
的指令并执行,如果之前已经在指令模式下,那么系统将响铃提醒一下。
以下命令都是vi在命令模式下进行
-
撤销修改
输入
u
这里,相比以前的vi来说,vim支持多步撤销。
-
恢复修改
输入
[Ctrl]r
这里,和撤销命令相反,是撤销的撤销,也可多步。
-
复制行到剪切板
输入
yy
-
复制定内容到剪切板
输入
v
。方向键将高亮择的内容。
-
输入
y
。这里,开始输入
v
使vi临时进入了一个"选择模式",输入方向键可以择,输入y
将择的内容复制剪切板。
-
删除行
输入
dd
注意,vi的删除等价于剪切,删除的内容会保存到剪切板中。
-
删除定内容
输入
v
。方向键将高亮择的内容。
-
输入
d
。这里,开始输入
v
使vi临时进入了一个“选择模式”,输入方向键可以择,输入d
将择的内容删除。
-
粘贴
输入
p
这样会将剪切板的内容粘贴到光标位置或者光标下一行。
-
查找字符并定位到第一个匹配处
输入
/character
这里
character
是待查找的字符,只要先输入/
,再输入待查字符,最后回车即可定位到第一个匹配的字符处。 -
定位到匹配查找的下一个字符处
输入
n
-
定位到匹配查找的上一个字符处
输入
N
-
保存文件
输入
:w
注意
w
前面的:
,输入:
之后,vim会将:
之后的输入解释为待执行的指令。 -
退出
输入
:q
这里,如果文件没保存,将提示无法退出,除非你强制退出,不保存文件,或者保存退出。
-
强制退出
输入
:q!
-
保存退出
输入
:wq
或输入
ZZ
. -
察看帮助
输入
:help