Linux系统常见目录
- /bin:二进制文件目录,里面都是一些可执行命令/程序;
- /boot:存放开机引导程序;
- /dev:存放设备文件,如鼠标、键盘、内存、硬盘等;
- /etc:存放系统配置文件以及用户名密码相关文件;
- /home:存放操作系统的用户主目录;
- /lib:存放库文件;
- /media:扩展目录,用来挂载第三方磁盘空间,例如插一个U盘会自动挂载到该目录;
- /mnt:手动挂载点目录;
- /usr:Unix Software Resource,安装第三方软件的目录;
- /var:系统提供给用户用来存储文件的目录,如登录日志、系统缓存、备份等。
常用命令
- shell:命令解释器
- ls : 查看当前目录下的文件。类似于Windows下的dir命令;参数:-a : 列出所有文件; -l : 以列表形式列出文件
- 通配符:*:代表所有的字符;?:代表一个字符; [ ] :括号内多个字符里选任一个。
- 转义字符\:去掉通配符的功能含义,而代表普通字符本身。
- 注意:如果 * 和?放在[ ]内,或者-放在 [ ]之外,则 * , ?, - 失去通配符的作用。
- 重定向 < , > : 命令的输入或者输出由用户指定
- more:分屏显示文件内容
- 管道:把上一个命令的输出作为下一个命令的输入
- cd :进入指定目录
- pwd :显示当前路径
- mkdir:创建一个新目录
- rmdir:删除一个空目录
- rm:删除一个文件;rm -r : 递归地删除指定目录和里面的目录和文件,很彻底的删除; rm -f:不加提示地删除;rm -i:交互式删除(较好的执行方式,避免误删)
- ln:创建链接文件,分为硬链接和软链接(-s),区别是硬链接文件和源文件一样大并且占磁盘空间,而软链接很小并且不占磁盘空间。若删除源文件,则硬链接文件还有内容,而软链接就没有内容了,软链接类似于快捷方式。Windows中只有软链接没有硬链接。注意:无法创建目录的硬链接。
- cat:看文件的内容或者合并两个文件的内容(合并功能要结合重定向命令生成一个新文件)
- grep:查找文件中的指定字符串。
- -v:查找不包含指定字符串的行,即反向查找;
- -n:显示行号;
- -i:忽略字符串的大小写。
- 查找指定字符:
1)grep '^a' stdio.h:在文件stdio.h中查找以a开头的行;
2)grep 'a$' stdio.h:查找stio.h文件中以a结尾的行。
3) 注:'^':从行首开始匹配;'$':至行尾;.:任意单个字符
4)sudo grep -r 'EAGAIN' /usr | grep 'define':在/usr/目录中搜索EAGAIN字符串的宏定义。
5)查找一个程序中用到的系统定义结构体的定义:
(系统库函数文件一般在文件/usr/include或/usr/src中)
grep "struct ip_mreqn {" -r /usr/include -n //得到该定义所在的文件和行号,用vi带行号即可定位到struct ip_mreqn的定义
- wc:计算文件的行数和字符数。-l:显示行数;-w:显示字数,注意,文件中以空格或换行符隔开的不同字符序列就不算是同一个字;-c:显示字节数
- find:查找文件。
例如:
find ./ -name b.txt:从当前目录下递归查找名字为b.txt的文件(前提是用户对当前目录有权限);
find /usr/ -size +900k -size -2M -exec ls -lh {} \; > result.txt或
find /usr/ -size +900k -size -2M | xargs ls -lh > result.txt:查找/usr目录下大小介于900K-2M之间的文件,并将这些文件的详细信息存入文件result.txt中。 - cp:复制文件
- mv:移动或重命名文件
- file:得到文件类型。linux系统中文件类型不是根据扩展名确定的,这一点不同于WIndows系统。
- clear:清理屏幕。Windows中为cls命令。
- ps:查看进程信息。-a:显示终端上的所有进程,包括其他用户的进程;-u:显示进程的详细信息;-x:显示没有控制终端的进程;-w:显示加宽以便显示更多的信息;-r:只显示正在运行的进程。不过参数前也可以不见短横线 - 。通常参数aux一起使用显示所有进程的详细信息。
- top:动态显示正在运行的进程。top和ps命令一起实现了Windows中的任务管理器的功能。
- kill:终止进程。
kill [-signal] pid: 需要知道要终止进程的PID,可用ps命令得到。信号值从0到15,其中9为绝对终止,可以处理一般信号无法终止的进程。 - whoami:我是谁,显示是哪个用户登录当前系统的。
- who:查看当前系统的登录用户的信息,通常系统管理员用此命令。
- w:和who命令功能相同,只不过显示的信息更详细。
- tar:归档管理,把多个文件和目录打包成一个文件,不负责压缩,最常用的备份工具。-cvf:打包;-xvf:解包
- gzip:压缩文件,压缩后的文件扩展名为.gz;-d:解压
- zip:压缩文件,和Windows下的压缩文件格式通用。
zip abc.zip abc.tar:把abc.tar压缩为abc.zip;unzip abc.zip abc.tar把abc.zip解压为abc.tar。 - tar命令和压缩命令组合起来最常用的参数组合为:
tar -zcvf , tar -zxvf //使用gzip打包压缩说个文件/使用gzip解压压缩包。 - 前台 vs. 后台:前台能与用户交互,而后台不能与用户交互。
- 命令的前后台切换:命令+&:把一个前台执行的命令调到后台运行;如果程序已经在执行,ctrl+Z可以把它调到后台;jobs:查看后台运行程序;fg+编号:将后台运行程序调出到前台。
- man:联机帮助命令。空格键:显示手册页的下一屏;Enter键:一次滚动手册页的一行;b:回滚一屏;f:前滚一屏;q:退出man命令;h:列出所有功能键;/word:搜索word字符串。
- manual手册分为9卷:
卷1:可执行程序或shell命令
卷2:系统调用(内核提供的函数,通常Linux系统编程中用得较多)
卷3:库调用(程序库中的函数)
卷4:特殊文件(通常位于/dev)
卷5:文件格式和规范,如/etc/passwd
卷6:游戏
卷7:杂项(包括宏包和规范,如man(7), groff(7))
卷8:系统管理命令(通常只针对root用户)
卷9:内核例程
其中,卷1,2,3,5很重要,用得较多。 其他卷了解即可。
系统管理命令
-
重启:
reboot, shutdown -r now, init 6; -
关机:
shutdown -h now, init 0; -
切换到命令模式:
init 3; -
切换到x window模式:
init 5; -
df:查看磁盘使用情况;
-
du:查看具体目录的大小;
-
mkfs:系统文件系统的格式化;
-
rpm:安装卸载软件;
-
用户管理:包括用户账号和组账号的管理。
从普通用户切换到root时用su或su -命令,退出root到普通用户用exit。- groupadd:添加组
- groupdel:删除组,要注执行此命令时当前用户的权限。
- useradd:添加用户(root用户才能用此命令),
-d:指定用户的主目录;
-m:若主目录不存在,就自动创建指定的目录,如:useradd -d /home/abc abc -m;
-g:指定新建用户所属的组,若不指定,则默认属于和用户名同名的组,如:useradd -d /home/abc abc -m -g aabb创建一个用户,名字叫abc,主目录是/home/abc目录,属于aabb这个组 - userdel:删除用户,
-r:删除用户时把其主目录一并删掉;若用户所属的组是系统默认的同名组,则删除用户时所属的组也会自动被删掉,但若用户所属的组不是默认而是root用户在创建时指定的,那么删除这个组就需要使用groupdel命令。
-
passwd:设置用户密码
-
last:查看用户最后一次登录系统的状态。
文件系统
- 文件路径:相对路径和绝对路径。和Windows不同的是linux的绝对路径开始时没有盘符,而且分隔符也不同。
- Linux文件系统不使用驱动器的概念,而是使用单一的根目录结构,所有分区都挂载到单一的根目录‘/’上,而Windows有多个根目录,即每个磁盘是一棵独立的树。linux中根目录不能作为某个用户的主目录,即
useradd -d / user1是不对的。 - inode是Linux系统中唯一表示一个文件或者目录的方法,类似于指向文件的指针。所以,严格来说,只有当某一个文件的硬链接数为0时才是彻底删除了该文件。
- 文件名最长可达256个字符,可由
A~Z a~z 0~9 . - _等符号组成,且区分大小写,没有扩展名的概念。 - dd命令:拷贝
dd if=sfile of=dfile //把文件sfile拷贝到文件dfile中
dd if=/dev/zero of=hello.txt bs=100M count=1 //创建一个100M的空文件
// /dev/zero是一个输入设别,可用来初始化文件,从中读出的数据都是0(ASCII值0)
// /dev/null是一个输出设备,任何数据都可以容纳
//例如,新建一个2M大小的文件并挂载到/mnt下
dd if=/dev/zero of=imagefile bs=2048 count=1024
mke2fs imagefile
sudo mount -o loop imagefile /mnt
-
文件类型有:
普通文件,存放数据和程序等信息,包括文本文件、数据文件、可执行二进制文件;
目录文件;
设备文件:所有设备都映射成一个文件,用于向I/O设备提供连接;
管道文件:多用于进程间通信 -
文件权限:
- chmod:更改文件读写权限。
- 对于目录:
目录的r权限代表是否可以查看目录内容;
目录的w权限代表是否可以在目录下生成文件;
目录的x权限代表是否可以cd进入这个目录。
- 对于目录:
- chown:更改文件的所有者。
注意:chown需要特权用户才能执行;一个文件的owner和owning group是没有关联的,即它所属的用户不一定就属于它所属的那个用户组。 - chgrp:更改文件所有组
- chmod:更改文件读写权限。
-
od命令:查看二进制文件内容:
-t:指定数据的显示格式,主要参数有:
c ASCII字符或反斜杠序列
d[SIZE] 有符号十进制数,每个整数SIZE字节。
f[SIZE] 浮点数,每个整数SIZE字节。
o[SIZE] 八进制(系统默认值为02),每个整数SIZE字节。
u[SIZE] 无符号十进制数,每个整数SIZE字节。
x[SIZE] 十六进制数,每个整数SIZE字节。
例如:od -tcx file1 //以十六进制形式显示二进制文件中的ASCII字符
此命令在嵌入式开发中反汇编时用得较多。 -
文件和目录的三个权限的具体含义:
| 权限 | 文件 | 目录 |
|---|---|---|
| r | 可以查文件内容,cat/more/head…vim | 可以查看目录(文件的)内容,ls /get |
| w | 文件的内容可修改、删除,vim对文件写操作 | 可以在目录内创、修改、删除 |
| r | 可以运行(可执行程序、脚本) | 目录可以被打开 |
软件安装
- 自动(在线)安装:apt-get
sudo apt-get install package //安装软件包package
sudo vi /etc/apt/sources.list //更新源服务器列表,即选择一个默认的下载源服务器
sudo apt-get update //更新所连源服务器的软件包列表
sudo apt-get remove package //删除软件包package
注意:使用Linux系统的一个重要准则是,所用的系统和软件工具不一定是最新版的,但一定要是最稳定的。比如,以ubuntu的版本号14.04为例,前两位数若是双数,表示长期支持版,单数表示短期支持版;后两位数表示一年中的两次版本发布时间,04表示4月发布的稳定版,10表示10月发布的测试版。类似于Linux内核的版本号,单数表示测试版,双数表示稳定版。
- 手动(离线)安装:下载好离线软件包后自动安装,安装位置自己不能指定,系统指定
sudo dpkg -i xxx.deb
//通过下载好的离线安装包xxx.deb安装xxx
//其中后缀名.deb表示这个离线包是debian系列linux系统
//其中ubuntu就是该系列的一个Linux系统版本。
- 源码安装:一般软件商发布一款软件时软件包中会附带一个readme文件,指导该软件的安装。但假如没有readme文件,则可参考下面的安装流程:
- 解压缩源代码包
cd dir./configure //检测文件是否缺失,创建Makefile,检测编译环境make //编译源码,生成库和可执行程序sudo make install //把库和可执行程序,安装到系统路径下sudo make distclean //删除和卸载软件
vi
| 按键 | 功能 |
|---|---|
| a | 光标位置右边插入文字 |
| i | 光标位置当前处插入文字 |
| o | 光标位置下方开启新一行 |
| O | 光标上方开启新一行 |
| I | 光标所在行首插入文字 |
| A | 光标所在行尾插入文字 |
- 退出vi:
| 按键 | 功能 |
|---|---|
| ZZ、:wq、:x | 保存退出 |
| :w filename | 保存到指定文件 |
| :q | 退出,如果文件修改但未保存,会提示无法退出 |
| :q! | 退出,不保存 |
| :!命令 | 暂时离开vi,执行命令 |
- 删除
- 输入模式下,可用Backspace键或者delete键;
- 命令模式下:
| 按键 | 功能 |
|---|---|
| x | 删除当前光标所在字符 |
| X | 删除光标前一个字符 |
| D | 删除光标处到本行结尾之间的所有字符 |
| dd | 删除光标所在行 |
| dG | 删除光标处到文件结尾之间的所有字符 |
| J | 合并两行 |
其实,vi中并未定义删除功能,而是剪切到默认缓冲区中,因此可以将剪切掉的内容粘贴到另一处;若不粘贴,则为删除。
- 行定位功能:
| 按键 | 功能 |
|---|---|
| Ctrl+f | 向前滚动一屏 |
| Ctrl+b | 向后滚动一屏 |
| G | 到文件最后一行行首 |
:$ | 到文件最后一行行尾 |
| mG | 到指定行,m为目标行数 |
| /内容 | 查找指定内容 |
- 文本查找功能:
| 按键 | 功能 |
|---|---|
| /字符串 | 查找指定字符串 |
| n | 寻找下一个 |
| N | 回到前一个 |
| ? | 寻找上一个 |
| /^字符串 | 查找以字符串开始的行 |
| /字符串$ | 查找以字符串结尾的行 |
| /a.b | 查找字符串a任意字符b |
- 文本替换:
| 按键 | 功能 |
|---|---|
| r | 替换当前光标字符 |
| :r 文件名 | 在光标当前位置载入另一个文件 |
| :开始行号,截止行号 s/源字符串/目标字符串/g | 在指定行号范围内替换字符串 |
注:vi 替换时最后的/g中的g代表global
比如:
1,$ s/start/end/g :从第一行开始到文件最后,将字符串start替换为end
- set指令:
| 按键 | 功能 |
|---|---|
| :set ic/noic | 搜索时忽略/不忽略大小写 |
| :set nu/nonu | 显示/不显示行号 |
-
在vi/vim打开的一段程序中查看其中用到的库函数定义:光标移到该库函数上然后按 “
K”(大写的k)。(常用) -
vi/vim中执行shell命令:先按感叹号!,再输入具体的shell命令。
-
vi/vim中分屏操作(常用):
sp:上下分屏;
ctrl + ww:上下切换
vsp:左右分屏
sp/vsp后加某个文件名,可以在当前屏幕中分屏打开另一个文件。 -
用vi编辑一段C代码a.c,然后编译它:
gcc -o a a.c,执行时需输入:./a而不能只输入a,因为linux默认不在当前目录下查找可执行程序。
那么怎么才能像Windows下一样只输入a就可以执行呢?-
第一步,回到用户的主目录:cd
-
第二步,编辑用户配置文件
ubuntu:.profile
redhat:.bash_profile
在文件最后一行
export PATH=$PATH:. -
第三步,保存退出
-
第四步,重新登录用户:exit,su
-
注意:一切修改只针对具体用户,如用户test修改了test的配置文件,只对test。即使是root修改了root配置文件,也只是对root有效。Linux下每个用户的运行环境是不一样的。
-
-
vim的配置文件在用户的主目录下:.vimrc,是一个隐藏文件。如果没有这个文件,可以手动创建这个文件。任何对vim的配置都要通过修改这个文件来实现,比如,用vim打造IDE就是通过向这个文件写配置语句实现的。
-
动态链接库:Windows下有一种文件,扩展名为dll,dll是动态链接库,dll一般都是用c语言写的。动态链接库在unix和linux就是扩展名为so的文件,等同于windows的dll文件。
网络管理
- ifconfig:配置网络参数,可查看linux主机的ip地址(windows下查看ip:终端输入ipconfig)
- roote:网络路由设置
- netstat:监控网络状态
- 通信协议:
TCP:可靠通信,发送完需要对方回复,占用带宽宽;
UDP:不可靠通信,只发不回复,占用带宽小,允许丢包。 - ping:测试目标地址是否可达,后跟参数为目标主机的ip地址
本文全面介绍了Linux系统的目录结构、常用命令及文件权限管理等内容,适用于初学者快速掌握Linux基础操作。
768

被折叠的 条评论
为什么被折叠?



