Linux系统编程Day01

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命令解析器

4.1 shell命令解析器
	命令解析器的作用:交互式地解释、执行用户输入的命令,将用户的操作翻译成机器
可以识别的语言,完成相应功能。
	Linux系统中提供了好几种不同的命令解释器,如shell(/bin/sh)、bash(/bin/bash)等,
一般默认使用bash作为默认的解释器。

4.2 Bash解析器常用快捷键
	4.2.1 Tab键
		1.补齐命令
		2.补齐路径
		3.显示当前目录下的所有目录
		
	4.2.2 清屏
		clear作用为清除终端上的显示(类似于DOS的cls清屏功能),也可使用快捷
	键:Ctrl + L ( “L” 为字母 )。
	
	4.2.3 中断进程
		ctlr+c的作用是中断终端的操作。
	
	4.2.4 遍历输入的历史命令
		从当前位置向上遍历:ctrl + p (↑)
		从当前位置向下遍历: ctrl + n(↓)
		
	4.2.5 光标相关操作
		光标左移: ctrl + b (←)
		坐标右移: ctrl + f (→)
		移动到头部: ctrl + a(Home)
		移动到尾部: ctlr + e(End)
	
	4.2.6 字符删除
		删除光标前边的字符:ctrl + h(Backspace)			
		删除光标后边的字符:ctrl + d(光标后边的字符即光标覆盖的字符)			
		删除光标前所有内容:ctrl + u			
		删除光标后所有内容:ctrl + k

4.3 Linux系统相关快捷键
	4.3.1 终端相关快捷键
		Ctrl + Shift + N 新建一个终端 
		Ctrl + Shift + T 在终端里新建一个标签 
		Ctrl + Shift + W 关闭标签页 
		Ctrl + Shift + Q 关闭窗口
		
		Ctrl + Shift + C 复制 
		Ctrl + Shift + V 粘贴
		
		Alt + [1 - 9] 标签之间切换 
		Ctrl + Shift + = 放大终端字体 
		Ctrl + - 缩小终端字体 
		Ctrl + 0 普通大小 F11 全屏 再次按F11退出全屏 
		Ctrl + D 关闭当前一个终端 Alt + F4 关闭整个终端 
		Ctrl + Shift + F 查找

		Alt + Tab 应用程序间切换 
		Ctrl + Alt + Backspace 注销 
		Ctrl + Alt + F7 回到图形界面
		Ctrl + Alt + F1到 Ctrl + Alt + F6 可以访问6个虚拟控制台

4.4 内建命令和外部命令
	4.4.1 什么是内建命令	
		shel内建命令是指bash(或其它版本)工具中集成的命令。一般都会有一个与之
	同名的系统命令,比如bash中的echo命令与/bin/echo是两个不同的命令,尽管他
	们行为大体相仿。当在bash中键入一个命令时系统会先看他是否是一个内建命令,
	如果不是才会查看是否是系统命令或第三方工具。所以在bash中键入echo命令实
	际上执行bash工具集中的bash命令也就是内建命令,而不是/bin/echo这个系统命令。
	
	4.4.2 外部命令
		外部命令是安装外部软件所带的命令
	
	4.4.3 内建命令和外部命令对比		
		内建命令要比系统论命令有比较高的执行效率。外部命令执行时往往需要fork出
	(产生出)一个子进程,而内建命令一般不用。外部命令是在bash之外额外安装的,
	通常放在/bin,/usr/bin,/sbin,/usr/sbin......等等。可通过“echo $PATH”
	命令查看外部命令的存储路径,比如:ls、vi等。
	
	4.4.4 命令类型查看方法		
		使用type命令查看		
		格式:		
			type [-afptP] 名称 [名称 ...]​ 显示命令类型的信息。

4.5 文件类型
	通常,Unix/Linux系统中常用的文件类型有7种:普通文件、目录文件、设备文件、
管道文件、链接文件和套接字。
	1)普通文件(-)
		普通文件是计算机操作系统用于存放数据、程序等信息的文件,一般都长期存
	放于外存储器(磁盘、磁带等)中。普通文件一般包括文本文件、数据文件、可执
	行的二进制程序文件等。
		在Unix/Linux中可以通过file命令来查看文件的类型。如果file文件后面携带
	文件名,则查看指定文件的类型,如果携带通配符“*”,则可以查看当前目录下的
	所有文件的类型。
	
	2)目录文件(d)	
		Unix/Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。		
		目录文件只允许系统管理员对其进行修改,用户进程可以读取目录文件,但不能
	对它们进行修改。
		每个目录文件至少包括两个条目,“..”表示上一级目录,“.”表示该目录本身。
	
	3)设备文件(c)		
		Unix/Linux系统把每个设备都映射成一个文件,这就是设备文件。它是用于
	向I/O设备提供连接的一种文件,分为字符设备和块设备文件。				
		字符设备的存取以一个字符为单位,块设备的存取以字符块为单位。每一种
	I/O设备对应一个设备文件,存放在/dev目录中,如行式打印机对应/dev/lp,第
	一个软盘驱动器对应/dev/fd0。
	
	4)管道文件(l)
		管道文件也是Unix/Linux中较特殊的文件类型,这类文件多用于进程间的通信。
	
	5)链接文件(-)		
		似于 windows 下的快捷方式,链接又可以分为软链接(符号链接)和硬链接。

	6)块设备(b)
		
	7)套接字文件(s)

4.6 帮助文档查看方法
	4.6.1 man命令
		man 是 Linux 提供的一个手册,包含了绝大部分的命令、函数使用说明。
		该手册分成很多章节(section),使用 man 时可以指定不同的章节来浏览
	不同的内容。

	man 中各个 section 意义如下:
	
	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 [选项]  命令名
	
	man设置了如下的功能键:
	
		功能键			功能
		空格键		显示手册页的下一屏
		Enter键		一次滚动手册页的一行
		b			回滚一屏
		f			前滚一屏
		q			退出man命令
		h			列出所有功能键
		/word		搜索word字符串

	4.6.2 help命令
		1.格式: help + 内建命令
		2.外部命令(--help)
			一般是 Linux 命令自带的帮助信息,并不是所有命令都自带这个选项。如
		我们想查看命令 ls 的用法:ls --help

4.7  Linux命令格式
	command  [ -options] [parameter1]  …

	说明:
		command:命令名,相应功能的英文单词或单词的缩写
		[-options]:选项,可用来对命令进行控制,也可以省略,[]代表可选
		parameter1 …:传给命令的参数,可以是零个一个或多个

	4.7.1 目录相关的命令
	
	1 pwd
	格式:		
		pwd [-LP]​ 打印当前工作目录的名字。
				
	使用pwd命令可以显示当前的工作目录,该命令很简单,直接输入pwd即可,后面不
	带参数。

	2 cd
		在使用Unix/Linux的时候,经常需要更换工作目录。cd命令可以帮助用户
	切换工作目录。Linux所有的目录和文件名大小写敏感。
	
		cd后面可跟绝对路径,也可以跟相对路径。如果省略目录,则默认切换到当前
	用户的主目录。
	
	命令		含义
	cd		切换到当前用户的主目录(/home/用户目录),用户登陆的时候,默认的目录就是用户的主目录。
	cd ~	切换到当前用户的主目录(/home/用户目录)
	cd .	切换到当前目录
	cd ..	切换到上级目录
	cd -	可进入上一个进入的目录

	3 mkdir
		用法:mkdir [选项]... 目录...
		
		通过mkdir命令可以创建一个新的目录(不能新建普通文件)。参数-p可递归
	创建目录。
		
		需要注意的是新建目录的名称不能与当前目录中已有的目录或文件同名,并且
	目录创建者必须对当前目录具有写权限。

	4.rmdir
		用法:rmdir [选项]... 目录... 删除指定的空目录。
	
		可使用rmdir命令删除一个目录。必须离开目录,并且目录必须为空目录,不
	然提示删除失败。
	
	4.7.2 文件相关命令
	
	1 ls
		ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一.
		Linux文件或者目录名称最长可以有256个字符,“.”代表当前目录,“..”代表
	上一级目录,以“.”开头的文件为隐藏文件,需要用 -a 参数才能显示。

	参数		含义
	-a		显示指定目录下所有子目录与文件,包括隐藏文件
	-l		以列表方式显示文件的详细信息
	-h		配合 -l 以人性化的方式显示文件大小

	2 touch
		用法:touch [选项]... 文件...
		
	1)如果文件不存在, 创建新文件(只能是普通文件,不能是文件夹)
	2)如果文件存在, 更新文件时间

	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		递归地删除目录下的内容,删除文件夹时必须加此参数
	
	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目录下,并且根据文件时间来决定要不要移动

	4.7.3 文件内容查看命令
	1 cat
		cat 将文件内容一次性输出到终端。		
	缺点:终端显示的内容有限,如果文件太长无法全部显示。
			
	示例:
		cat file 查看file内容
		cat -n file 查看file内容,对输出的所有行编号	
		cat -b file 查看file内容并且给非空行编号		
		cat -A file 等价于 -vET

	2 more(了解)
		more命令将文件内容分页显示到终端,但是只能一直向下浏览,不能回退:

	命令				作用
	回车				显示下一行
	空格				显示下一页
	q(ctrl + c)	退出
	h				获取帮助

	3 less
	less命令将文件内容分页显示到终端,可以自由上下浏览

	命令					作用
	回车(ctrl + n)		显示下一行
	ctrl + p			显示上一行
	空格(PageDown)		显示下一页
	PageUp				显示上一页
	q					退出
	h					获取帮助

	4 head
		head命令从文件头部开始查看前 n 行的内容。
		如果没有指定行数,默认显示前10行内容。
	命令格式:
	
		head –n[行数] 文件名
	
	示例:
	head file 			查看file前10行内容 
	head -c 30 file		查看file前30个字符
	head -30 file 		查看file前30行 
	head -q file 		查看file的内容,但是不打印头信息 
	head -v file 		查看file的内容,但是打印头信息

	5 tail
		从文件尾部向上查看最后 n 行的内容
		使用方式:tail –n[行数] 文件名
		如果没有指定行数,默认显示最后10行内容

	示例:
	tail file	 		查看file后10行内容 
	tail -n 30 file 	查看file后30行内容 
	tail -c 30 file 	查看file后30个字符 
	tail -f file 		实时查看file文件内容 
	tail -q file 		查看file的内容,但是不打印头信息 
	tail -v file 		查看file的内容,但是打印头信息
 	
 	4.7.4 du和df命令 (了解)
	1 du
	du命令用于查看某个目录大小。
	du命令的使用格式如下:
		du [选项] 目录或文件名
	
	选项		含义
	-a	递归显示指定目录中各文件和子目录中文件占用的数据块
	-s	显示指定文件或目录占用的数据块
	-b	以字节为单位显示磁盘占用情况
	-h	以K,M,G为单位,提高信息的可读性

	2 df
	df命令用于检测文件系统的磁盘空间占用和空余情况,可以显示所有文件系统对节
点和磁盘块的使用情况。

	选项	含义
	-a	显示所有文件系统的磁盘使用情况
	-m	以1024字节为单位显示
	-h	以K,M,G为单位,提高信息的可读性

	4.7.5 查找相关命令
	1 find
	find命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。		
	1.1按文件名查询:使用参数 -name	
	命令:find + 路径 + -name +“文件名”
	
	1.2按文件大小查询:使用参数 -size		
	命令:find + 路径 + -size + 范围
	范围		
	大于:+表示 -- +100k		
	小于:-表示 -- -100k		
	等于: 不需要添加符号 -- 100k			
			
	例: 查询目录为家目录		
	等于100k的文件: find ~/ -size 100k		
	大于100k的文件: find ~/ -size +100k		
	大于50k, 小于100k的文件: find ~/ -size +50k -size -100k

	1.3按文件类型查询:使用参数 -type
	命令:find + 路径 + -type + 类型	
	类型		
		普通文件类型用 f 表示而不是-		
		d -> 目录		
		l -> 符号链接		
		b -> 块设备文件		
		c -> 字符设备文件		
		s -> socket文件,网络套接字		
		p -> 管道
	例:
	查找指定目录下的普通文件: find /home -type f

	补充:
		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 / -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               	查找根目录下总是错误的文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值