1 Linux的命令行操作
1.1 Shell
Linux中的命令行界面常被称为Shell。操作系统的Shell就是“外壳”的意思,区别于操作系统的内核部分,是指“为使用者提供操作界面”的软件(命令解析器)。它接收用户命令,然后执行相应的应用程序。基本上Shell分两大类:
(1)图形界面shell(Graphical User Interface Shell 即 GUI Shell)
例如:应用最为广泛的 Windows Explorer (微软的windows系列操作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manager (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE。
(2)命令行式Shell(Command Line Interface shell ,即CLI shell)
例如:Unix/linux系统下的bash / sh / ksh / csh,微软系统下的DOS、PowerShell等等。
提到Shell一般情况下特指后者,命令行式的用户界面。
1.2 Linux中的命令格式
熟悉Linux的用户,几乎都使用命令行管理系统。命令行的语法格式如下:
$ 命令 [选项] [参数]
在命令过程中可以通过“Ctrl+Z”中断命令的执行。
2 常用文件操作命令
学习Linux的使用最重要的就是学习文件操作。Linux系统把所有的输入输出设备均看作文件,因此无论是管理设备、安装软件和服务或者编程,无一不是通过操作文件来完成的。
2.1 Linux的主要目录结构
Linux的常见目录如下图标所示:
目录 | 描述 |
/bin | 二进制可执行文件 |
/sbin | 超级管理命令,这里存放的是系统管理员使用的管理程序 |
/lib | 装载系统所用的标准程序库(类似于windows的*.dll) |
/home | 用户主目录,比如用joe的主目录就是/home/joe |
/root | 超级管理员的主目录 |
/etc | 系统管理和配置文件 |
/dev | 设备文件目录,Linux下的设备(如cdrom)都被当成文件管理 |
/mnt | 改目录是让用户临时挂载其他的文件系统 |
/var | 大文件溢出区、日常操作被改变的文件:如日志、临时文件 |
/opt | 大型软件的安装目录,或服务程序的安装目录 |
/tmp | 公共的临时文件存储点 |
/usr | 用户安装的应用程序和相关文件(类似windows的ProgramFiles) |
2.2 常用 文件/目录 操作命令
(1)pwd
作用:显示当前工作目录
pwd
(2)ls
作用:浏览目录下的文件、文件夹列表(类似于DOS的dir命令)
ls [选项] 目录名称
常用选项:
选项 | 说明 |
-a | 查看所有文件或目录,包括隐藏文件 |
-l | 以列表方式显示文件,一行显示一个 |
示例:
ls #查看当前目录的子目录和文件
ls -l #以列表方式查看当前目录的子目录和文件(/root)
ls -al #以列表方式查看当前目录的所有子目录和文件(包含隐藏文件)
ls -al /usr #以列表方式查看 /usr 目录中的所有子目录和文件
值得注意的是:在Linux中,路径开头的“/”表示根目录,以“/”开头的路径称为绝对路径,是指文件或文件夹相对于根目录“/”的位置;不以“/”开头的路径称为相对路径,是文件或文件夹相对于当前目录为的位置。相对路径中“./”表示当前目录,“../”表示上一层目录。
(3)cd
作用:切换当前目录
cd [目录]
描述目录路径时,可以使用以下的特殊字符:
符号 | 说明 |
/ | 目录以“/”开头,成为绝对路径,不以“/”开头则是相对路径(相对当前位置) |
.. | 上一级目录 |
./ | 当前目录 |
~ | 代表当前用户的主目录(如joe,则“~”代表/home/joe) |
* | 代表任意数量的任意字符,如/home/j* |
- | 单独的“-”表示返回进入本目录前的目录 |
示例:
cd .. #进入上级目录
cd ~ #回到当前用户目录
cd - #返回进入当前目录之前的目录
cd / #进入根目录
cd /etc/sysconfig/ #进入etc下的sysconfig目录
(4)mkdir
作用:创建目录(文件夹)
mkdir [选项] 目录名称
常用选项:
选项 | 说明 |
-p | 帮助用户直接将所需目录递归建立起来 |
示例:
mkdir test #在当前目录创建test子目录
mkdir -p abc/123 #递归创键abc目录和123子目录
(5)rmdir
作用:删除目录(文件夹)
rmdir [选项] 目录名称
常用选项
选项 | 说明 |
-p | 递归将所有层级目录都删除 |
示例:
rmdir test #在当前目录删除test子目录
rmdir -p abc/123 #递归删除abc目录和123子目录
(6)rm
作用:删除文件或文件夹命令
rm [选项] 文档或目录
常用选项:
选项 | 说明 |
-f | 强制删除指定文件 |
-i | 互动模式,删除前会询问 |
-r | 递归删除 |
示例:
rm -rf test #强行删除test目录及其子目录中的所有内容
(7)cp
作用:复制文件或文件夹
cp [选项] [路径1] [路径2]
常用选项:
选项 | 说明 |
-r | 递归持续复制,用于目录的复制行为 |
-f | 强制复制,有重复或疑问时不会询问 |
-p | 保存源文件和目录的属性 |
-i | 覆盖既有目录之前先询问 |
示例:
cp /etc/profile Downloads/info #把etc下的profile复制到Downloads下改名为info
(8)mv
作用:移动或修改文件目录名称
mv [选项] 源文件或目录 目标文件或目录
常用选项:
选项 | 说明 |
-b | 若需覆盖文件,则覆盖前先备份 |
-f | 强制覆盖 |
-i | 询问覆盖 |
示例:
mv Downloads/info ./ #把Download下的info文件移动到当前目录下
(9)find
作用:查找符合要求的文件或文件夹
find <指定目录> <指定条件> <指定动作>
示例:在/etc目录下查找ssh开头的文件
sudo find /etc -name "ssh*" #查找etc目录下名称以ssh*开头的文件或目录
sudo find /etc -type f -name “ssh*” #查找etc目录下名称以ssh*开头的文件
(10)touch
作用:创建文件
touch 文件名称
(11)cat
作用:查看、编辑小型文本文件
cat文件名
常用选项:
选项 | 说明 |
> | 创建并打开一个文件进行编写,按Ctrl+D结束 |
示例:
sudo cat /etc/profile #查看 /etc/profile文件内容
cat > test.cnf #创建并打开test.cnf文件进行输入
(12)more
作用:查看大型文件,可以分行、分页查看
more 文件名
执行more命令时,可以使用回车键翻看下一行,使用空格键翻看下一页。
示例:
sudo more /etc/passwd
(13)head
作用:查看文件开头内容
head [选项] [文件]
常用选项:
选项 | 说明 |
-n [rows] | 后跟行数参数,显示的行数(默认查看前10行) |
示例:
sudo head -10 /etc/passwd
(14)tail
作用:查看文件结尾内容
tail [-参数选项] 文件名称
常用选项:
选项 | 说明 |
-f | 监视File文件增长,文件更新,终端也将动态更新 |
-n [rows] | 后跟行数参数,从倒数第rows行位置读取制定文件的内容 |
示例:
sudo head -10 /etc/passwd
3 编辑文件内容
3.1 vi
作用:文件查看、编辑器
vi [文件名]
3.1.1 vi的三种模式:命令模式、输入模式、末行模式
3.1.2 vi命令模式下的常用命令
(1)插入命令:a 光标后插入、A 行尾插入、i 光标签插入、I 本行开始插入、o 光标下插入新行、O 光标上插入新行
(2)结束插入,回到命令模式:Esc键
(3)取消上一步操作:u
(4)保存退出::w 保存修改、:w new_filename 另存为指定文件、:q! 不保存修改退出、:wq! 保存修改并退出(忽略文件的只读属性)
(5)删除命令:x 删除光标所在处字符、nx 删除光标所在处后n个字符、dd 删除光标所在行、dG 删除光标所在行到末尾内容、D 删除光标所在处到行尾
(6)定位命令:$ 移至行尾、0 移至行首
(7)定位命令::set nu 设置行号、:set nonu 取消行号、gg 到第一行、G 到最后一行、nG 跳到第n行、:n 跳到第n行
(8)复制剪切:yy或Y 复制当前行、nyy或nY 复制当前行以下n行、dd 剪切当前行、ndd 剪切当前行以下n行、p或P 粘贴在当前光标所在行下或行上替换
(9)替换字符:r 取代光标所在处字符、R 从光标所在处开始替换字符
(10)搜索替换:/string 向前搜索指定的字符串(需要忽略大小写则 :set ic),然后输入 n 搜索指定字符串的下一个出现位置、:%s/old/new/g全文替换指定字符串、:n1,n2s/old/new/g 在特定范围内替换指定字符串
3.2 nano
作用:简单文件编辑器,适用于初学者和非专业Linux用户。
nano [文件名]
nano常用命令(详见nano下方的提示菜单):
(1)保存:Ctrl+O
(2)退出:Ctrl+X
(3)写入:Ctrl+W
4 输入输出和管道
重定向和管道允许用户认为改变程序输入和输出的位置。程序默认输出结果的地方称为标准输出(stdout),通常是显示器;而默认输入的地方被称为标准输入(stdin),通常是键盘。
(1)输出重定向:“>”和“>>”
以下ls指令不会把目录列表显示出来,而是保存到一个名为ls_out的文件中。
ls -l > /ls_out
使用“>”重定向输出到文件会重新覆盖(或创建)文件,如果想追加,可以使用“>>”。
ls -l test > ls_out
(2)输入重定向:“<”
直接输入cat命令(不带任何选项),屏幕上会显示用户键盘输入的任意内容,直到Ctrl+D给cat一个文件结束符。而下面可以把文件ls_out的内容作为输入。
cat < ls_out
这和cat ls_out的效果一致,输入重定向并不常用。
(3)管道:“|”
管道是输出重定向的升级,可以将一条命令的输出连接到另一条命令的输入。因此管道常用来连接多条语句的执行。
下面查找的语句查询当前名录下包含“D”的文件列表,其中grep是模式匹配指令。
ls -l | grep D
5 归档、压缩和解压缩
压缩和解压缩
(1)tar
tar具有归档、解包和解压缩等功能
用常用选项:
选项 | 说明 |
-c | 指定特定目录压缩 |
-x | 从备份文件中还原文件 |
-t | 列出备份文件的内容 |
-r | 添加文件到已压缩的文件 |
-z | 解压有gzip属性(*.gz) |
-j | 解压有bz2属性(*.bz) |
-Z | 解压有compress属性的 |
-v | 显示执行过程 |
-O | 将文件解压到标准输出 |
-f | 指定文件名称 |
a)打包归档:
tar用于归档时,可以把目录及其下的目录和文件等内容打包成一个文件。
示例:打包文件夹,把当前目录下的temp目录中的内容打包成为temp.tar文件。
mkdir -p temp/test
cp /etc/profile temp/
cp /etc/sysconfig/iptables temp/test/
tar -cf temp.tar temp/
如果要显示打包的过程,可以加上-v选项。
tar -cvf temp.tar temp/
注意:-f选项后面必须紧跟归档文件名,因此-f选项必须写在最后面。
b)显示归档中的文件内容
tar -tf temp.tar
c)从归档文件中提取文件
tar用于提取文件时,可以把打包的tar文件提取回目录和文件。
以下示例,把test.tar文件解包目录及文件,如果需要显示过程,可以加v参数
tar -xf temp.tar
(2)gzip -- 压缩文件
tar只是用于打包,并不提供压缩文件功能。Gzip是Linux下使用最广泛的压缩工具。
a)压缩文件
以下示例,把 temp.tar文件压缩成temp.tar.gz
gzip temp.tar
b)解压缩
以下示例,把temp.tar.gz解压缩成temp.tar
gzip -d temp.tar.gz
(3)bzip2 -- 另一种压缩
bzip2是另一种常用的压缩工具,功能和语法同gzip非常相似,不同的是bzip2有更高的压缩比,但花费更多的压缩时间。
下面示例把temp.tar压缩成temp.tar.bz2:
bzip2 temp.tar
以下示例解压缩bzip2格式文件:
bunzip2 temp.tar.bz2
(4)使用tar简化过程打包和压缩
在tar -cf指令中添加-z参数可以实现打包并同时压缩文件。
tar -czf test.tar.gz test/
同样在tar -xf指令中添加-z参数可以实现解压并解包。
tar -zxf test.tar.gz
常用解压解包示例:
tar -zxf 文件名 #解压并解包*.tar.gz文件]
tar -jxf 文件名 #解压并解包*.tar.bz2文件
tar -xf 文件名 #解包非压缩文件