Linux 命令行操作和文件管理

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的常见目录如下图标所示:

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的三种模式:命令模式、输入模式、末行模式

Linux 命令行操作和文件管理

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

Linux 命令行操作和文件管理

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 文件名    #解包非压缩文件

上一篇:Docker-LinuxKit搭建及使用场景分析


下一篇:Python并发复习1 - 多线程