1.Linux常见目录介绍
-
**/:**根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入"/home",你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
-
/bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
-
/boot:**放置linux系统启动时用到的一些文件**,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。
-
/dev: 存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。
-
/etc :系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
-
/home: 系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~edu 表示用户 edu 的家目录。
-
/lib: /usr/lib: /usr/local/lib 系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
-
**/lost+fount:**系统异常产生错误时,会将一些遗失的片段放置于此目录下。
-
/mnt:/media: 光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。
-
/opt: 给主机额外安装软件所摆放的目录。
-
/proc : 此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
-
**/root:**系统管理员root的家目录。
-
**/sbin:/usr/sbin:/usr/local/sbin:**放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。
-
**/tmp**:**一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
-
**/srv:**服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。
-
/usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录。
-
/var: 放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。
2.Linux命令解释器
2.1shell命令解释器
Shell是一种命令行解释器,是用户和操作系统之间的接口,接收用户输入的命令并将其传递给操作系统进行执行,Shell可以运行在不同的操作系统上,并提供了一种交互式的方式来和计算机进行通信。
2.2Bash命令解释器
Bash是一种Shell的变种,它是基于一种早期的Unix Shell的重新实现,添加了一些新特性和改进,是大多数Linux和Unix系统上默认的Shell
3.Bash解释器常用快捷键
3.1 Tab键
-
补齐命令
-
补齐路径
-
显示当前目录的所有目录
3.2 清屏
clear作用为清除终端上的显示(类似于DOS的cls清屏功能),也可使用快捷键:Ctrl + L ( "L" 为字母 )。
~$ clear
3.3 中断
ctrl+c的作用就是中断中断的操作
3.4遍历输入的历史命令
推荐直接方向键上下即可
3.5 光标操作
-
光标左移: ctrl + b (←)
-
坐标右移: ctrl + f (→)
-
移动到头部: ctrl + a(Home)
-
移动到尾部: ctlr + e(End)
3.6 字符删除
-
删除光标前边的字符:ctrl + h(Backspace)
-
删除光标后边的字符:ctrl + d
光标后边的字符即光标覆盖的字符
-
删除光标前所有内容:ctrl + u
-
删除光标后所有内容:ctrl + k
4.内建命令和外部命令
4.1内建命令
内建命令是指bash工具中集成的命令,一般会有一个与之同名的系统命令,比如bash中的echo命令和/bin/echo是两个不同的命令。
当在bash中键入一个命令时系统会先看他是否是一个内建命令,如果不是才会查看是否是系统命令或第三方工具。
4.2 外部命令
通常是由操作系统或者第三方开发者提供的
4.3 两者对比
内建命令要比系统论命令有比较高的执行效率。外部命令执行时往往需要fork出(产生出)一个子进程,而内建命令一般不用。同时内建命令的优先级也比外部命令高,所以在bash中键入echo命令实际上执行bash工具集中的bash命令也就是内建命令,而不是/bin/echo这个系统命令。
4.4 命令类型查看方式
可以使用type命令查看
格式:
type [-afptP] 名称 [名称 ...] 显示命令类型的信息。
可选参数说明:
-a:显示所有匹配命令,而不仅是第一个匹配的命令,如果有多个 -a选项会显示所有匹配项
-f:仅显示匹配的命令的路径,还将显示外部命令的完整路径
-p:仅显示匹配命令的路径,而不显示别名、函数或者内建命令
-t:显示匹配命令的类型,这将显示命令是外部命令、别名函数还是内建命令
-P:仅显示匹配的命令的类型,而不显示其他信息
5.帮助文档
man是Linux提供的一个手册,包含了绝大部分的命令、函数使用说明
使用格式:
man [选项] 命令名
man设置了如下的功能键:
功能键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
Enter键 | 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出man命令 |
h | 列出所有功能键 |
/word | 搜索word字符串 |
使用man手册时,最后指定章节号
man 1 ls 即代表查看第一章节
6.help
内部命令和外部命令的help不一样:
help + 内建命令
外部命令 --help
7.目录相关命令
7.1 pwd
使用pwd命令可以显示当前的工作目录,该命令很简单,直接输入pwd即可,后面不带参数。
7.2 cd
命令 | 含义 |
---|---|
cd | 切换到当前用户的主目录(/home/用户目录),用户登陆的时候,默认的目录就是用户的主目录。 |
cd ~ | 切换到当前用户的主目录(/home/用户目录) |
cd . | 切换到当前目录 |
cd .. | 切换到上级目录 |
cd - | 可进入上一个进入的目录 |
7.3 mkdir
mkdir [-mpv] 目录 [目录]
可以创建多个目录:mkdir dir1 dir2 dir3
-m:指定新创建目录的权限模式
例如:mkdir -m 755 dirname
-p:递归创建目录
例如:mkdir -p /path/to/new
-v:显示创建每个目录时的详细输出
7.4 rmdir
rmdir [选项]... 目录... 删除指定的空目录
可使用rmdir命令删除一个目录。必须离开目录,并且目录必须为空目录,不然提示删除失败。
8.文件类型
Unix/Linux对数据文件(.mp3、 .bmp),程序文件(.c、 .h、*.o),设备文件(LCD、触摸屏、鼠标),网络文件( socket ) 等的管理都抽象为文件,使用统一的方式方法管理。 Linux下一切皆文件。
文件类型分类
1)普通文件
普通文件是计算机操作系统用于存放数据、程序等信息的文件,一般都长期存放于外存储器(磁盘、磁带等)中。普通文件一般包括文本文件、数据文件、可执行的二进制程序文件等。
在Unix/Linux中可以通过file命令来查看文件的类型。如果file文件后面携带文件名,则查看指定文件的类型,如果携带通配符"*",则可以查看当前目录下的所有文件的类型。
2)目录文件
Unix/Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。
目录文件只允许系统管理员对其进行修改,用户进程可以读取目录文件,但不能对它们进行修改。
每个目录文件至少包括两个条目,".."表示上一级目录,"."表示该目录本身。
3)设备文件
Unix/Linux系统把每个设备都映射成一个文件,这就是设备文件。它是用于向I/O设备提供连接的一种文件,分为字符设备和块设备文件。
字符设备的存取以一个字符为单位,块设备的存取以字符块为单位。每一种I/O设备对应一个设备文件,存放在/dev目录中,如行式打印机对应/dev/lp,第一个软盘驱动器对应/dev/fd0。
deng@itcast:~/share$ echo "hello world" > /dev/pts/22 hello world
4)管道文件
管道文件也是Unix/Linux中较特殊的文件类型,这类文件多用于进程间的通信。
5)链接文件
似于 windows 下的快捷方式,链接又可以分为软链接(符号链接)和硬链接。
9.文件相关命令
9.1 ls
ls常用参数:
参数 | 含义 |
---|---|
-a | 显示指定目录下所有子目录与文件,包括隐藏文件 |
-l | 以列表方式显示文件的详细信息 |
-h | 配合 -l 以人性化的方式显示文件大小 |
与DOS下的文件操作类似,在Unix/Linux系统中,也同样允许使用特殊字符来同时引用多个文件名,这些特殊字符被称为通配符。
通配符 | 含义 |
---|---|
* | 文件代表文件名中所有字符 |
ls te* | 查找以te开头的文件 |
ls *html | 查找结尾为html的文件 |
? | 代表文件名中任意一个字符 |
ls ?.c | 只找第一个字符任意,后缀为.c的文件 |
ls a.? | 只找只有3个字符,前2字符为a.,最后一个字符任意的文件 |
[] | ["和"]"将字符组括起来,表示可以匹配字符组中的任意一个。"-"用于表示字符范围。 |
[abc] | 匹配a、b、c中的任意一个 |
[a-f] | 匹配从a到f范围内的的任意一个字符 |
ls [a-f]* | 找到从a到f范围内的的任意一个字符开头的文件 |
ls a-f | 查找文件名为a-f的文件,当"-"处于方括号之外失去通配符的作用 |
\ | 如果要使通配符作为普通字符使用,可以在其前面加上转义字符。"?"和"*"处于方括号内时不用使用转义字符就失去通配符的作用。 |
ls *a | 查找文件名为*a的文件 |
9.2 touch
touch [选项]... 文件...
-
如果文件存在,更新文件时间
-
如果文件不存在,则创建新文件
一般使用也就是用touch 文件名
9.3 cp
cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令 。
选项 | 含义 |
---|---|
-a | 该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。 |
-f | 强制复制而不提示 |
-i | 交互式复制,在覆盖目标文件之前将给出提示要求用户确认 |
-r | 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。 |
-v | 显示拷贝进度 |
示例:
cp file dirs/ 把file文件复制到dirs目录下
cp file1 file2 dirs/ 把file1 file2文件拷贝到dirs目录下
cp -r dir1/ dir2/ 把dir1目录复制到dir2目录下
cp -a file dirs/ 把file文件复制到dirs目录下,保留文件的原来属性
9.4 rm
可通过rm删除文件或目录。使用rm命令要小心,因为文件删除后不能恢复。为了防止文件误删,可以在rm后使用-i参数以逐个确认要删除的文件。
常用参数及含义如下表所示:
参数 | 含义 |
---|---|
-i | 以进行交互式方式执行 |
-f | 强制删除,忽略不存在的文件,无需提示 |
-r | 递归地删除目录下的内容,删除文件夹时必须加此参数 |
例如:
rm file* 删除所有file打头的文件
rm -f [ab].txt 等价于rm -f a.txt b.txt
rm -f [^ab].txt 删除除a.txt b.txt以外的所有?.txt
9.5 mv
用户可以使用mv命令来移动文件或目录,也可以给文件或目录重命名。
常用选项说明:
选项 | 含义 |
---|---|
-f | 禁止交互式操作,如有覆盖也不会给出提示 |
-i | 确认交互方式操作,如果mv操作将导致对已存在的目标文件的覆盖,系统会询问是否重写,要求用户回答以避免误覆盖文件 |
-v | 显示移动进度 |
例如:
mv -u dir1/* dir2/ 把dir1目录下所有文件移动到dir2目录下,并且根据文件时间来决定要不要移动
-u表示update,只会移动源目录中存在且目标目录中不存在的文件
10.文件内容查看命令
10.1 cat
cat 将文件内容一次性输出到终端。
缺点:终端显示的内容有限,如果文件太长无法全部显示。
cat /etc/passwd 查看/etc/passwd内容
cat -n /etc/passwd 查看/etc/passwd内容,对输出的所有行编号
cat -b /etc/passwd 查看/etc/passwd内容并且给非空行编号
10.2 less
less命令将文件内容分页显示到终端,可以自由上下浏览
命令 | 作用 |
---|---|
回车(ctrl + n) | 显示下一行 |
ctrl + p | 显示上一行 |
空格(PageDown) | 显示下一页 |
PageUp | 显示上一页 |
q | 退出 |
h | 获取帮助 |
10.3 head
-
head命令从文件头部开始查看前 n 行的内容。
-
如果没有指定行数,默认显示前10行内容。
命令格式:
head --n [行数] 文件名 //显示前n行
head -c [字符数] 文件名 //显示前n个字符
10.4 tail
-
从文件尾部向上查看最后 n 行的内容
-
使用方式:tail --n[行数] 文件名
-
如果没有指定行数,默认显示最后10行内容
11.文件查找命令
11.1 find
find命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。
按文件名查询:使用参数 -name
命令:find + 路径 + -name +"文件名"
示例:find /home -name "a.txt"
按文件大小查询:使用参数 -size
命令:find + 路径 + -size + 范围
范围
-
大于:+表示 -- +100k
-
小于:-表示 -- -100k
-
等于: 不需要添加符号 -- 100k
大小
-
M 必须大写(10M)
-
k必须小写(20k)
例子: 查询目录为家目录
等于100k的文件: find ~/ -size 100k
大于100M的文件: `find ~/ -size +100M
大于50k, 小于100k的文件: find ~/ -size +50k -size -100k
按文件类型查询:使用参数 -type
命令:find + 路径 + -type + 类型
类型
-
普通文件类型用 f 表示而不是-
-
d -> 目录
-
l -> 符号链接
-
b -> 块设备文件
-
c -> 字符设备文件
-
s -> socket文件,网络套接字
-
p -> 管道
例如:查找指定目录下的普通文件: find /home -type f
查找根目录所有的字符设备 ~$ find / -type c
查找根目录下所有的套接字 ~$ find / -type s
......
11.2 grep
Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。
grep一般格式为:
grep [-选项] '搜索内容串' 文件名
在grep命令中输入字符串参数时,最好引号或双引号括起来。例如:grep 'a ' 1.txt。
还有一种比较常见的用法例如:
cat logfile.txt | grep "error"
cat file.txt | grep keyword
常用选项说明:
选项 | 含义 |
---|---|
-v | 显示不包含匹配文本的所有行(相当于求反) |
-n | 显示匹配行及行号 |
-i | 忽略大小写 |
12.管道
管道(|):一个命令的输出可以通过管道做为另一个命令的输入。
管道我们可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里" | "的左右分为两端,左端塞东西(写),右端取东西(读)。
cat /etc/passwd | less
13.压缩包管理
13.1 tar
计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。
tar使用格式
tar [选项] 打包文件名 文件
tar命令很特殊,其选项前面可以使用"-",也可以不使用。
常用参数:
参数 | 含义 |
---|---|
-c | 生成档案文件,创建打包文件 |
-v | 列出归档解档的详细过程,显示进度 |
-f | 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后 |
-t | 列出档案中包含的文件 |
-x | 解开档案文件 |
注意:除了f需要放在参数的最后,其它参数的顺序任意。
tar -cvf 创建归档文件
tar -xvf 解除归档文件(还原)
tar -tvf 查看归档文件内容
13.2 gzip
tar与gzip命令结合使用实现文件打包、压缩。
tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。
gzip使用格式如下:
gzip [选项] 被压缩文件
常用选项:
选项 | 含义 |
---|---|
-d | 解压 |
-r | 压缩所有子目录 |
一次性压缩多个文件: gzip后面不能跟目录
tar这个命令并没有压缩的功能,它只是一个打包的命令,但是在tar命令中增加一个选项(-z)可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程。
**压缩用法:**tar cvzf 压缩包包名 文件1 文件2 ...
-z | 指定压缩包的格式为:file.tar.gz |
---|---|
解压用法: tar zxvf 压缩包包名
参数 | 含义 |
---|---|
-z | 指定压缩包的格式为:file.tar.gz |
解压到指定目录:-C (大写字母"C")
例子:tar -xvf new.tar.gz -C ./test/ 将 new.tar.gz 解压到当前目录下的 test 目录下
13.3 bzip2
-
tar与bzip2命令结合使用实现文件打包、压缩(用法和gzip一样)。
-
tar只负责打包文件,但不压缩,用bzip2压缩tar打包后的文件,其扩展名一般用xxxx.tar.bz2。
-
在tar命令中增加一个选项(-j)可以调用bzip2实现了一个压缩的功能,实行一个先打包后压缩的过程。
-
压缩用法:tar jcvf 压缩包包名 文件...(tar jcvf bk.tar.bz2 *.c)
-
解压用法:tar jxvf 压缩包包名 (tar jxvf bk.tar.bz2)
tar -xvf 万能解压 (gzip bzip2)
生成一个bz2压缩包
tar -cjvf test.tar.bz2 test
解压bz2压缩包
tar -xjvf share.tar.bz2
13.4 zip和unzip
通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。
压缩文件:zip -r 目标文件(没有扩展名) 源文件
解压文件:unzip -d 解压后目录文件 压缩文件
14.文件权限管理
文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。
Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。
在 Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
14.1访问权限说明
用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限:
- 读权限(r)
对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
- 写权限(w)
对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
- 可执行权限(x)
对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
注意:通常,Unix/Linux系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。
14.2 chmod
chmod 修改文件权限有两种使用格式:字母法与数字法。
**字母法:**chmod u/g/o/a +/-/= rwx 文件
[ u/g/o/a ] | 含义 |
---|---|
u | user 表示该文件的所有者 |
g | group 表示与该文件的所有者属于同一组( group )者,即用户组 |
o | other 表示其他以外的人 |
a | all 表示这三者皆是 |
[ +-= ] | 含义 |
---|---|
+ | 增加权限 |
- | 撤销权限 |
= | 设定权限 |
rwx | 含义 |
---|---|
r | read 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录内部的内容。 |
w | write 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。 |
x | excute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。 |
例如:
chmod o+w file 给文件file的其它用户增加写权限;
chmod u+x file 给文件file的所有者增加可执行权限
数字法:"rwx" 这些权限也可以用数字来代替
r | 读取权限,数字代号为 "4" |
---|---|
w | 写入权限,数字代号为 "2" |
x | 执行权限,数字代号为 "1" |
- | 不具任何权限,数字t代号为 "0" |
如执行:chmod u=rwx,g=rx,o=r filename
就等同于:chmod 754 filename(不可以执行)
15.进程管理
15.1 ps
进程是一个具有一定独立功能的程序,它是操作系统动态执行的基本单元。
ps命令可以查看进程的详细状况,常用选项(选项可以不加"-")如下:
选项 | 含义 |
---|---|
-a | 显示终端上的所有进程,包括其他用户的进程 |
-u | 显示进程的详细状态 |
-x | 显示没有控制终端的进程 |
-w | 显示加宽,以便显示更多的信息 |
-r | 只显示正在运行的进程 |
-e | 显示系统上所有正在运行的进程,不仅是用户,还包括系统 |
15.2 kill
kill命令指定进程号的进程,需要配合 ps 使用。
使用格式:
kill [-signal] pid
信号值从0到15,其中9为绝对终止,可以处理一般信号无法终止的进程。
kill 9133 :9133 为应用程序所对应的进程号
有些进程不能直接杀死,这时候我们需要加一个参数" -9 "," -9 " 代表强制结束:
16.软件安装和卸载
如果是在ubuntu平台,软件的安装可以通过互联网在线安装,更加方便快捷:
命令 | 含义 |
---|---|
sudo apt-get update | 获得最新的软件包的列表 |
sudo apt-get install xxx | 从源中安装xxx软件 |
sudo apt-get remove xxx | 删除xxx软件 |
sudo apt-get clean | 清理安装包 |
16.1 软件安装
在Ubuntu下安装文件为deb格式
软件安装
sudo dpkg -i xxx.deb
软件卸载
sudo dpkg -r 软件名
若是不知道软件名,可以使用下面指令来进行模糊搜索
dpkg --get-selections | grep 软件相关名称
17.重定向
ls /etc/passwd > output.txt 标准正确输出重定向到output.txt
ls /etc/shadow >> output.txt 标准正确输出追加重定向到output.txt
ls dddddd 2> error.txt 标准错误输出重定向到error.txt
ls ddddd 2>> error.txt 标准错误输出重定向到error.txt,
18.其他命令
18.1 tree
tree 以树状形式查看指定目录内容,使用该命令需要安装软件 tree:
sudo apt install tree
18.2 ln
ln命令主要用于创建链接文件。Linux链接文件类似于Windows下的快捷方式。
链接文件分为软链接和硬链接:
-
软链接:软链接不占用磁盘空间,源文件删除则软链接失效。
-
硬链接:硬链接只能链接普通文件,不能链接目录。
使用格式:
ln 源文件 链接文件
ln -s 源文件 链接文件
如果没有-s选项代表建立一个硬链接文件,两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在,所以-s选项是更常见的形式。
注意:如果软链接文件和源文件不在同一个目录,源文件最好要使用绝对路径,不要使用相对路径。