Linux系统编程基本命令
@[toc]
前言
我们这里使用的是ubuntu,为什么不适用centous呢?它们相差不是很大,原因是ubuntu适合开发者使用,centous很适合结合Oracle。都是干货,标明了哪些是重点,需要掌握的模块,哪些是只要了解,这样的学习成本非常小。
一. 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存放在该目录下。
二.Bash解析器常用快捷键(熟练)
1 Tab键
- 补齐命令
- 补齐路径
- 显示当前目录下的所有目录
2 清屏
clear作用为清除终端上的显示(类似于DOS的cls清屏功能),也可使用快捷键:Ctrl + L ( “L” 为字母 )。
deng@itcast:~$ clear
3 中断进程
ctlr+c的作用是中断终端的操作。
deng@itcast:/$ sleep 3000
4 遍历输入的历史命令
- 从当前位置向上遍历:ctrl + p (↑)
- 从当前位置向下遍历: ctrl + n(↓)
5 光标相关操作
- 光标左移: ctrl + b (←)
- 坐标右移: ctrl + f (→)
- 移动到头部: ctrl + a(Home)
- 移动到尾部: ctlr + e(End)
6 字符删除
-
删除光标前边的字符:ctrl + h(Backspace)
-
删除光标后边的字符:ctrl + d
光标后边的字符即光标覆盖的字符
-
删除光标前所有内容:ctrl + u
-
删除光标后所有内容:ctrl + k
三.内建命令和外部命令
什么是内建命令
shel内建命令是指bash(或其它版本)工具中集成的命令。一般都会有一个与之同名的系统命令,比如bash中的echo命令与/bin/echo是两个不同的命令,尽管他们行为大体相仿。当在bash中键入一个命令时系统会先看他是否是一个内建命令,如果不是才会查看是否是系统命令或第三方工具。所以在bash中键入echo命令实际上执行bash工具集中的bash命令也就是内建命令,而不是/bin/echo这个系统命令。
外部命令
外部命令是安装外部软件所带的命令
内建命令和外部命令对比
内建命令要比系统论命令有比较高的执行效率。外部命令执行时往往需要fork出(产生出)一个子进程,而内建命令一般不用。外部命令是在bash之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin…等等。可通过“echo $PATH”命令查看外部命令的存储路径,比如:ls、vi等。
命令类型查看方法
使用type命令查看:
格式:
type [-afptP] 名称 [名称 …] 显示命令类型的信息。
使用方法示例:
deng@itcast:~$ type -a cd
cd 是 shell 内建
deng@itcast:~$ type -a echo
echo 是 shell 内建
echo 是 /bin/echo
deng@itcast:~$ type -a ls
ls 是 `ls --color=auto’ 的别名
ls 是 /bin/ls
四.Linux命令格式
command [ -options] [parameter1] …
说明:
- command:命令名,相应功能的英文单词或单词的缩写
- [-options]:选项,可用来对命令进行控制,也可以省略,[]代表可选
- parameter1 …:传给命令的参数,可以是零个一个或多个
五.帮助文档查看方法
1.man(有问题找男人)
man 是 Linux 提供的一个手册,包含了绝大部分的命令、函数使用说明。
该手册分成很多章节(section),使用 man 时可以指定不同的章节来浏览不同的内容。
man 中各个 section 意义如下:
deng@itcast:~$ man man
1).Standard commands(标准命令)
2).System calls(系统调用,如open,write)
3).Library functions(库函数,如printf,fopen)
4).Special devices(设备文件的说明,/dev下各种设备)
5).File formats(文件格式,如passwd)
6).Games and toys(游戏和娱乐)
7).Miscellaneous(杂项、惯例与协定等,例如Linux档案系统、网络协定、ASCII 码;environ全局变量)
8).Administrative Commands(管理员命令,如ifconfig)
man使用格式如下:
man [选项] 命令名
man设置了如下的功能键:
功能键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
Enter键 | 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出man命令 |
h | 列出所有功能键 |
/word | 搜索word字符串 |
用法示例:
man -k passwd 搜索关键词passwd man -a passwd 浏览passwd所有相关的页 man -f passwd 等价于whatis man 1 printf 浏览printf第1页介绍 man 2 read 浏览read第2页介绍 man 3 printf 浏览printf第3页介绍 man 5 passwd 浏览passwd第5页介绍 man 8 chpasswd 浏览chpasswd第8页介绍
如,我们想查看 ls 的用法:man 1 ls ( 1:为数字“1”,代表第 1 个 section,标准命令 ) :
2.内建命令(help)
格式: help + 内建命令
应用示例:
3.外部命令(–help)
一般是 Linux 命令自带的帮助信息,并不是所有命令都自带这个选项。
如我们想查看命令 ls 的用法:ls --help
六.绝对路径和相对路径
Unix/Linux路径由到达定位文件的目录组成。在Unix/Linux系统中组成路径的目录分割符为斜杠“/”,而DOS则用反斜杠“\”来分割各个目录。
路径分为绝对路径和相对路径:
1)绝对路径
- 绝对路径是从目录树的树根“/”目录开始往下直至到达文件所经过的所有节点目录。
- 下级目录接在上级目录后面用“/”隔开。
- 注意:绝对路径都是从“/”开始的,所以第一个字符一定是“/”。
/home/test
test
/var/ftp/pub
2)相对路径
- 相对路径是指目标目录相对于当前目录的位置。
- 如果不在当前目录下,则需要使用两个特殊目录“.”和“…”了。目录“.”指向当前目录,而目录“…”。
七.目录相关的命令
1.pwd
格式:
pwd [-LP] 打印当前工作目录的名字。
使用pwd命令可以显示当前的工作目录,该命令很简单,直接输入pwd即可,后面不带参数。
deng@itcast:~$ pwd
/home/deng
2.cd
在使用Unix/Linux的时候,经常需要更换工作目录。cd命令可以帮助用户切换工作目录。Linux所有的目录和文件名大小写敏感。
cd后面可跟绝对路径,也可以跟相对路径。如果省略目录,则默认切换到当前用户的主目录。
命令 | 含义 |
---|---|
cd | 切换到当前用户的主目录(/home/用户目录),用户登陆的时候,默认的目录就是用户的主目录。 |
cd ~ | 切换到当前用户的主目录(/home/用户目录) |
cd . | 切换到当前目录 |
cd … | 切换到上级目录 |
cd - | 可进入上一个进入的目录 |
3.mkdir
用法:mkdir [选项]… 目录…
通过mkdir命令可以创建一个新的目录(不能新建普通文件)。参数-p可递归创建目录。
新建目录的名称不能与当前目录中同名,并且目录创建者必须对当前目录具有写权限。
使用示例:
mkdir test 在当前目录下创建test目录
mkdir /tmp/test 在根目录下tmp目录里创建test目录
mkdir file{1…100} 在当前目录下创建file1到file100的目录,这里会创建100个目录
mkdir “file{1…100}” 在当前目录下创建file{1…100}目录,这里只创建一个目录
mkdir 'file{1…100}'同上
mkdir -p a/b/c 在当前目录下创建a/b/c目录树(ubuntu下载tree可查看树形结构)
mkdir “a b” 创建以"a b"命名的一个目录
mkdir a\ b 创建以"a b"命名的一个目录
mkdir a b 创建目录a和目录b
4.rmdir
用法:rmdir [选项]… 目录… 删除指定的空目录。
可使用rmdir命令删除一个目录。必须离开目录,并且目录必须为空目录,不然提示删除失败。
使用示例:(除rmdir a/b不同,其他方法相同 )
rmdir test 删除当前目录的test目录,test必须是空目录
rmdir /tmp/test 删除/tmp下的test目录
rmdir file{1…100} 删除file1到file100的目录
rmdir “file{1…100}” 删除file{1…100}目录
rmdir “a b” 删除a b这个目录
rmdir a\ b 删除"a b"目录
rmdir a b c 删除目录a 目录b 目录c
5.which
查看应用路径
八.文件类型
查看文件类型:file 文件名
Unix/Linux对数据文件(.mp3、.bmp),程序文件(.c、.h、*.o),设备文件(LCD、触摸屏、鼠标),网络文件( socket ) 等的管理都抽象为文件,使用统一的方式方法管理。 Linux下一切皆文件。
在Unix/Linux操作系统中也必须区分文件类型,通过文件类型可以判断文件属于可执行文件、文本文件还是数据文件。在Unix/Linux系统中文件可以没有扩展名。
文件类型分类
通常,Unix/Linux系统中常用的文件类型有7种:普通文件、目录文件、设备文件、管道文件、链接文件和套接字。
1)普通文件
普通文件是计算机操作系统用于存放数据、程序等信息的文件,一般都长期存放于外存储器(磁盘、磁带等)中。普通文件一般包括文本文件、数据文件、可执行的二进制程序文件等。
在Unix/Linux中可以通过file命令来查看文件的类型。如果file文件后面携带文件名,则查看指定文件的类型,如果携带通配符“*”,则可以查看当前目录下的所有文件的类型。
2)目录文件
Unix/Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。
目录文件只允许系统管理员对其进行修改,用户进程可以读取目录文件,但不能对它们进行修改。
每个目录文件至少包括两个条目,“…”表示上一级目录,“.”表示该目录本身。
3)设备文件
Unix/Linux系统把每个设备都映射成一个文件,这就是设备文件。它是用于向I/O设备提供连接的一种文件,分为字符设备和块设备文件。
字符设备的存取以一个字符为单位,块设备的存取以字符块为单位。每一种I/O设备对应一个设备文件,存放在/dev目录中,如行式打印机对应/dev/lp,第一个软盘驱动器对应/dev/fd0。
4)管道文件
管道文件也是Unix/Linux中较特殊的文件类型,这类文件多用于进程间的通信。
5)链接文件
似于 windows 下的快捷方式,链接又可以分为软链接(符号链接)和硬链接。
示例:
c-字符设备、d -目录文件、- 普通文件、p-管道文件、L-符号链接、b-块设备、s-套接字文件
九.文件相关命令
1.ls
ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令。
Linux文件或者目录名称最长可以有256个字符,“.”代表当前目录,“…”代表上一级目录,以“.”开头的文件为隐藏文件,需要用 -a 参数才能显示。
用法:ls [选项]… [文件]…
ls常用参数:
参数 | 含义 |
---|---|
-a | 显示指定目录下所有子目录与文件,包括隐藏文件 |
-l | 以列表方式显示文件的详细信息 |
-h | 配合 -l 以人性化的方式显示文件大小 |
使用示例:
ls -al 显示所有文件包括隐藏文件列表
ls -lt 显示按日期时间排序后的文件列表 等价于
ls -l -t ls -lh 显示计算大小为KB为单位的文件列表
ls -dl 显示文件夹详细列表
图中列出的信息含义如下图所示:
与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的文件 |
[^a-z] | 查找除a-z的文件 |
使用示例:
deng@itcast:~/test$ ls [123].html
1.html 2.html 3.html
deng@itcast:~/test$ ls [1-9].html
1.html 2.html 3.html 4.html 5.html 6.html 7.html 8.html 9.html
2.touch
用法:touch [选项]… 文件…
1)如果文件不存在, 创建新文件(只能是普通文件,不能是文件夹)
2)如果文件存在, 更新文件时间
示例:
touch file 创建file空文件,如果file存在则更新file的存取和修改时间
touch file{2,3,4} 同时创建file2,file3,file4三个空文件
touch “file{2,3,4}” 创建file{2,3,4}一个空文件
3.cp
cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令 。
常用选项说明:
选项 | 含义 |
---|---|
-a | 该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。 |
-f | 复制已经存在的目标文件而不提示 |
-i | 交互式复制,在覆盖目标文件之前将给出提示要求用户确认 |
-r | 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。 |
-v | 显示拷贝进度 |
示例:
cp file dirs/ 把file文件复制到dirs目录下
cp file1 file2 dirs/ 把file1 file2文件拷贝到dirs目录下
cp -i file1 file2 把文件file1拷贝到file2中,并且提示
cp -t dirs file1 把文件file1拷贝到dirs目录下
cp -r dir1/ dir2/ 把dir1目录复制到dir2目录下
cp -R dir1 dir2 把dir1目录拷贝到dir2目录下
cp -a file dirs/ 把file文件复制到dirs目录下,保留文件的原来属性
cp -rf dir1/ dir2/ 强制复制文件夹,不提示
cp -rvf dir1/ dir2/ 把dir1目录复制到dir2目录下,并且显示复制过程
4.rm
可通过rm删除文件或目录。使用rm命令要小心,因为文件删除后不能恢复。为了防止文件误删,可以在rm后使用-i参数以逐个确认要删除的文件。
常用参数及含义如下表所示:
参数 | 含义 |
---|---|
-i | 以进行交互式方式执行 |
-f | 强制删除,忽略不存在的文件,无需提示 |
-r | 递归地删除目录下的内容,删除文件夹时必须加此参数 |
示例:
rm a 删除文件a,在删除之前用户需确认删除该文件
rm a b c 删除文件a b c,在删除之前用户需确认是否删除该文件
rm -i a 删除文件a,在删除之前用户需确认是否删除该文件
rm -f a 删除文件a,强制删除该文件,不需要用户确认是否删除
rm -v a 删除文件a,删除之后会显式结果
rm -r dirs 递归删除目录dirs,并且每一次删除都需要用户确认是否删除
rm -rf dirs 强制递归删除目录dirs,每一次删除都不需要用户确认是否删除
rm file* 删除所有file打头的文件
rm -i file* 提示是否确定删除
rm -f file* 不提示,强行删除
rm -r dir2 删除目录
rm -f [ab].txt 等价于rm -f a.txt b.txt
rm -f[ ^ab].txt 删除除a.txt b.txt以外的所有?.txt
rm -f ?.txt ?代表一个字符
5.mv
用户可以使用mv命令来移动文件或目录,也可以给文件或目录重命名。
常用选项说明:
选项 | 含义 |
---|---|
-f | 禁止交互式操作,如有覆盖也不会给出提示 |
-i | 确认交互方式操作,如果mv操作将导致对已存在的目标文件的覆盖,系统会询问是否重写,要求用户回答以避免误覆盖文件 |
-v | 显示移动进度 |
示例:
mv file file2 把file文件重命名为file2
mv file dirs/ 把file文件移动到dirs目录下
mv file1 file2 dirs/ 把file1 file2文件剪切到dirs目录下
mv dir1 dir2 dir3/ 把dir1 dir2目录剪切到dir3目录下
mv -i file1 dir1/ 把file1文件剪切到dir1目录下,如果存在覆盖就提示用户
mv -f file1 dir1/ 把file1文件剪切到dir1目录下,如果存在覆盖也不提示用户
mv -u dir1/* dir2/ 把dir1目录下所有文件移动到dir2目录下,并且根据文件时间来决定要不要移动
十.文件内容查看命令
1.cat
cat 将文件内容一次性输出到终端。
缺点:终端显示的内容有限,如果文件太长无法全部显示。
gedit 文件名
示例:
cat /etc/passwd 查看/etc/passwd内容
cat -n /etc/passwd 查看/etc/passwd内容,对输出的所有行编号
cat -b /etc/passwd 查看/etc/passwd内容并且给非空行编号
cat -A /etc/passwd 等价于 -vET
2.more(了解)
more命令将文件内容分页显示到终端,但是只能一直向下浏览,不能回退:
deng@itcast:~$ more /etc/passwd
相关说明:
命令 | 作用 |
---|---|
回车 | 显示下一行 |
空格 | 显示下一页 |
q(ctrl + c) | 退出 |
h | 获取帮助 |
示例:
3.less
less命令将文件内容分页显示到终端,可以自由上下浏览
命令 | 作用 |
---|---|
回车(ctrl + n) | 显示下一行 |
ctrl + p | 显示上一行 |
空格(PageDown) | 显示下一页 |
PageUp | 显示上一页 |
q | 退出 |
h | 获取帮助 |
deng@itcast:~/share/test$ less /etc/passwd
4. head
- head命令从文件头部开始查看前 n 行的内容。
- 如果没有指定行数,默认显示前10行内容。
命令格式:
head –n[行数] 文件名
示例:
head /etc/passwd 查看/etc/passwd前10行内容
head -c 30 /etc/passwd 查看/etc/passwd前30个字符
head -30 /etc/passwd 查看/etc/passwd前30行
head -n 30 /etc/passwd 查看/etc/passwd前30行内容
head -q /etc/passwd 查看/etc/passwd的内容,但是不打印头信息
head -v /etc/passwd 查看/etc/passwd的内容,但是打印头信息
5. tail
- 从文件尾部向上查看最后 n 行的内容
- 使用方式:tail –n[行数] 文件名
- 如果没有指定行数,默认显示最后10行内容
示例:
tail /etc/passwd 查看/etc/passwd后10行内容
tail -n 30 /etc/passwd 查看/etc/passwd后30行内容
tail -c 30 /etc/passwd 查看/etc/passwd后30个字符
tail -f /etc/passwd 实时查看/etc/passwd文件内容
tail -q /etc/passwd 查看/etc/passwd的内容,但是不打印头信息
tail -v /etc/passwd 查看/etc/passwd的内容,但是打印头信息
十一.du和df命令 (了解)
1. du
du命令用于查看某个目录大小。
du命令的使用格式如下:
du [选项] 目录或文件名
选项 | 含义 |
---|---|
-a | 递归显示指定目录中各文件和子目录中文件占用的数据块 |
-s | 显示指定文件或目录占用的数据块 |
-b | 以字节为单位显示磁盘占用情况 |
-h | 以K,M,G为单位,提高信息的可读性 |
2. df
df命令用于检测文件系统的磁盘空间占用和空余情况,可以显示所有文件系统对节点和磁盘块的使用情况。
选项 | 含义 |
---|---|
-a | 显示所有文件系统的磁盘使用情况 |
-m | 以1024字节为单位显示 |
-h | 以K,M,G为单位,提高信息的可读性 |
十二.查找相关命令(重点)
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
大于100k的文件: find ~/ -size +100k
大于50k, 小于100k的文件: find ~/ -size +50k -size -100k
按文件类型查询:使用参数 -type
命令:find + 路径 + -type + 类型
类型
Ø 普通文件类型用 f 表示而不是-
Ø d -> 目录
Ø l -> 符号链接
Ø b -> 块设备文件
Ø c -> 字符设备文件
Ø s -> socket文件,网络套接字
Ø p -> 管道
查找指定目录下的普通文件: find /home -type f
查找根目录下所有的普通文件
deng@itcast:~$ find / -type f
查找根目录中所有的目录稳步
deng@itcast:~$ find / -type d
查找根目录所有的字符设备
deng@itcast:~$ find / -type c
查找根目录下所有的块设备
deng@itcast:~$ find / -type b
查找根目录下所有的符号链接
deng@itcast:~$ find / -type l
查找根目录下所有的套接字
deng@itcast:~$ find / -type s
查找根目录下所有的管道
deng@itcast:~$ find / -type p
find /etc -name grub.conf 查找/etc目录下的grub.conf文件
find / -name "*.conf" 查找/下所有.conf文件
find / -iname grub.conf 查找/目录下的grub.conf文件,忽略大小写
find / -maxdepth 2 -name grub.conf 可以使用-maxdepath参数来控制查找的层次,就是说只查当前目录和子目录,最多查2级目录
find / -mindepth 2 -name grub.conf 最少查二级目录
find /etc -type d 查找/etc/下所有的目录
find /etc -type f 查找/etc/下的所有普通文件
find /etc -type l -name *.conf 查找/etc/下软链接文件是.conf结尾的文件
find /etc -type s 查找/etc/下所有socket文件
find /etc -type c 查找/etc/下的所有字符设备文件
find /etc -type p 查找/etc/下所有管道文件
find /etc -user root 查找/etc/所属用户是root的文件
find /etc -group root 查找/etc/所属用户组是root的文件
find /etc -uid 500 查找/etc/下uid是500的文件,和-user类似
find /etc -gid 500 查找/etc/下gid是500的文件,和-group类似
find /etc -nouser 查找没有所属用户的文件
find /etc -nogroup 查找没有所属用户组的文件
find /etc -perm 777 -type d 查找/etc/下权限为777的目录
find . -perm 111 查找权限是111的文件
find . -size +10M 查找当前目录下大于10M的文件,单位可以有K,M,G,b等
find / -size -2M 查找根目录下少于2M的文件
find / -mtime 1 查找根目录下1天以前修改的所有文件
find / -mtime +2 查找根目录下2天以前修改的所有文件
find / -mtime -3 查找根目录下最近3天内修改的所有文件
find / -atime 1 查找根目录下1天以前访问或读过的所有文件
find / -atime -1 查找根目录下最近1天内读过或访问的文件
find / -ctime -3 查找根目录下最近3天内状态发生改变的文件
find / -cmin -3 查找根目录下最近3分钟内状态发生改变的文件
find / -empty 查找根目录下所有空白文件或者空目录
find / -false 查找根目录下总是错误的文件
高级用法:
find / -false -exec ls -l {} \; 查找根目录下总是错误的文件并且用ls -l查看
find . -name "*.conf" -exec rm -rf {} \;
find . -name "*.conf" | xargs rm -rf 删除当前目录下所有以 .conf 结尾的文件
deng@itcast:~$ find cmd/ -name "txt" -ok rm -rf {} \; 删除之前做确认
< rm ... cmd/txt > ? y
2. grep
Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。
grep一般格式为:
grep [-选项] ‘搜索内容串’ 文件名
在grep命令中输入字符串参数时,最好引号或双引号括起来。例如:grep ‘a ’1.txt。
常用选项说明:
选项 | 含义 |
---|---|
-v | 显示不包含匹配文本的所有行(相当于求反) |
-n | 显示匹配行及行号 |
-i | 忽略大小写 |
命令:grep -r + “查找的关键字” + 路径
搜索目录需要添加参数: -r
查找 /home/itcast 下包含“hello,world“字符串的文件
grep -r “hello,world” /home/itcast
示例:
grep -a hello /bin/ls 将二进制文件以文本文件的方式搜索hello
grep -i hello /etc/passwd 在/etc/passwd文件里找hello并且忽略大小写查找
grep -n hello /etc/passwd 搜索hello结果并显示在文件里出现的行号
grep -w hello /etc/passwd 搜索完全匹配hello单词的行
grep -v hello /etc/passwd 显示出在/etc/passwd文件里没有hello的行
grep -r hello /etc/ 在/etc/目录里所有文件里找hello并显示结果
grep -i hello /etc/passwd --color=auto 在/etc/passwd文件中找hello并且忽略大小写,然后高亮显示匹配的关键字
十三. 管道
管道(|):一个命令的输出可以通过管道做为另一个命令的输入。
管道我们可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里“ | ”的左右分为两端,左端塞东西(写),右端取东西(读)。
cat /etc/passwd | less
十四. 压缩包管理(重点)
1. tar
计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。
tar使用格式
tar [选项] 打包文件名 文件
tar命令很特殊,其选项前面可以使用“-”,也可以不使用。
常用参数:
参数 | 含义 |
---|---|
-c | 生成档案文件,创建打包文件 |
-v | 列出归档解档的详细过程,显示进度 |
-f | 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后 |
-t | 列出档案中包含的文件 |
-x | 解开档案文件 |
注意:除了f需要放在参数的最后,其它参数的顺序任意。
tar -cvf 创建归档文件
tar -xvf 解除归档文件(还原)
tar -tvf 查看归档文件内容
2. gzip
打包、解压 源文件都会删除
l tar与gzip命令结合使用实现文件打包、压缩。
l tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。
gzip使用格式如下:
gzip [选项] 被压缩文件
常用选项:
选项 | 含义 |
---|---|
-d | 解压 |
-r | 压缩所有子目录 |
一次性压缩多个文件: gzip后面不能跟目录
tar这个命令并没有压缩的功能,它只是一个打包的命令,但是在tar命令中增加一个选项(-z)可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程。
**压缩用法:**tar cvzf 压缩包包名 文件1 文件2 …
-z | 指定压缩包的格式为:file.tar.gz |
---|
例如:tar zcvf test.tar.gz 1.c 2.c 3.c 4.c把 1.c 2.c 3.c 4.c 压缩成 test.tar.gz
解压用法: tar zxvf 压缩包包名
参数 | 含义 |
---|---|
-z | 指定压缩包的格式为:file.tar.gz |
例:tar -zxvf VMwareTools-10.3.22-15902021.tar.gz 解压成默认文件
解压到指定目录:-C (大写字母“C”)
例子:tar -xvf new.tar.gz -C ./test/ 将 new.tar.gz 解压到当前目录下的 test 目录下:
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 -czvf
tar -cjvf
tar -xzvf
tar -xjvf
tar -xvf 万能解压 (gzip bzip2)
生成一个bz2压缩包
deng@itcast:~/share$ tar -cjvf test.tar.bz2 test
解压bz2压缩包
deng@itcast:~/share$ tar -xjvf share.tar.bz2
4. zip和unzip
l 通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。
l 压缩文件:zip -r 目标文件(没有扩展名) 源文件
l 解压文件:unzip -d 解压后目录文件 压缩文件
十五.文件权限管理
1 .文件权限
文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。
Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。
在 Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
2. 访问用户分类
通过设定权限可以从以下三种访问方式限制访问权限:
1)只允许用户自己访问(所有者)
所有者就是创建文件的用户,用户是所有用户所创建文件的所有者,用户可以允许所在的用户组能访问用户的文件。
2)允许一个预先指定的用户组中的用户访问(用户组)
用户都组合成用户组,例如,某一类或某一项目中的所有用户都能够被系统管理员归为一个用户组,一个用户能够授予所在用户组的其他成员的文件访问权限。
3)允许系统中的任何用户访问(其他用户)
用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户都能够访问用户的目录或文件。在这种意义上,系统内的其他所有用户就是 other 用户类
这有点类似于 QQ 空间的访问权限:
l 这个 QQ 空间是属于我的,我相当于管理者(也就是“所有者”),我想怎么访问就怎么访问。
l 同时,我可以设置允许 QQ 好友访问,而这些 QQ 好友则类似于“用户组”。
l 当然,我可以允许所有人访问,这里的所有人则类似于(不完全等价)“其他用户”。
3. 访问权限说明
用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限:
- 读权限(r)
对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
- 写权限(w)
对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
- 可执行权限(x)
对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
注意:通常,Unix/Linux系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。
4. 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-r file 给文件file的拥有者减去读的权限:
chmod g=x file设置文件file的所属组权限为可执行,同时去除读、写权限:
数字法:“rwx” 这些权限也可以用数字来代替
r | 读取权限,数字代号为 “4” |
---|---|
w | 写入权限,数字代号为 “2” |
x | 执行权限,数字代号为 “1” |
- | 不具任何权限,数字t代号为 “0” |
如执行:chmod u=rwx,g=rx,o=r filename
就等同于:chmod u=7,g=5,o=4 filename(不可以执行)
chmod 751 file*:*
l 文件所有者:读、写、执行权限
l 同组用户:读、执行的权限
l 其它用户:执行的权限
chmod 777 file:所有用户拥有读、写、执行权限
注意:如果想递归所有目录加上相同权限,需要加上参数“ -R ”。
如:chmod 777 test/ -R 递归 test 目录下所有文件加 777 权限。
5. chown(了解)
l chown用于修改文件所有者
l 使用方法:chown 用户名 文件或目录名
将文件所属者修改为root用户
chown root txt
deng@itcast:~/share/test: ls -l txt
-rw-rw-r-- 1 root deng 0 10月 10 11:12 txt
将文件所属者改为deng 所属组改为root
chown deng::root txt
deng@itcast:~/share/test: ls -l txt
-rw-rw-r-- 1 deng root 0 10月 10 11:12 txt
单独只修改文件所属组
chown :root txt
deng@itcast:~/share/test: ls -l txt
-rw-rw-r-- 1 deng root 0 10月 10 11:12 txt
6. chgrp (了解)
l chgrp用于修改文件所属组
l 使用方法:chgrp 用户组名 文件或目录名
单独修改文件所属组
chgrp deng txt
deng@itcast:~/share/test: ls -l txt
-rw-rw-r-- 1 deng deng 0 10月 10 11:12 txt
二十.扩展
stat
查看文件属性
ls和du区别
ls显示文件多大,du显示总内存使用了多少
- 点赞
- 收藏
- 关注作者
评论(0)