系统目录结构
查看根目录下目录
ls /
会看到如下图所示
目录解释
- /bin : bin是Binary的缩写,这个目录存放着最经常使用的命令
- /boot:这里存放的是启动linux时使用的一些核心文件,包括一些连接文件以及镜像文件
- /dev:dev是Device(设备)的缩写。存放的是linux的外部设备,在linux中访问设备的方式和访问文件的方式是相同的。
- /etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录
- /home:用户的主目录,在linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
- /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件
- /lost+found :这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
- /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
- /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt上,然后进入该目录就可以查看光驱里的内容了
- /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个oracle数据库则就可以放到这个目录下。默认是空的。
- /proc:这个目录是一个虚拟目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息
- /root:该目录为系统管理员,也称作超级权限者的用户主目录
- /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序
- /srv:该目录存放一些服务启动之后需要提取的数据
- /sys:这是linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs
- /tmp:这个目录用来存放一些临时文件的
- /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录
- /usr/bin:系统用户使用的应用程序
- /usr/sbin : 超级用户使用的比较高级的管理程序和系统守护程序
- /usr/src : 内核源代码默认的放置目录
- /var : 这个目录中存放着不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下,包括各种日志文件。
- /run : 是一个临时文件系统,存储系统启动以来的信息,当系统重启时,这个目录下的文件应该被删掉或清除
常用的基本命令
目录管理
cd 命令 切换目录
cd :切换目录
./ : 当前目录
cd .. : 返回上一级目录
ls:列出目录
-a : all,查看全部文件,包括隐藏文件
-l : 列出所有文件,包括文件的属性和权限,没有隐藏文件
在linux下所有的linux命令可以组合使用。
pwd 显示当前用户所在目录
mkdir 创建目录
# 创建test目录
mkdir test
#创建多级目录
mkdir -p test1/test2/test3
rmdir 删除目录
#删除目录
rmdir test
#删除多级目录
rmdir -p test1/test2/test3
rmdir 仅能删除空的目录,如果下面存在文件,需要先删除文件。
cp 复制文件或目录
语法:cp 原来的地方 新的地方
cp test.sh test
rm 移除文件或目录
-f 忽略不存在的文件,不会出现警告,强制删除
-r 递归删除目录
-i 互动,删除询问是否删除
# 删除根目录下所有文件,不要这么操作 !!!删库跑路就是这么操作的。
rm -rf /
mv 移动文件或目录、重命名
-f 强制移动
-u 只替换已经更新过的文件
#移动文件
mv test.sh test
#重命名
mv test test1
基本属性
实例中,boot文件的第一个属性用“d”表示,“d”在linux中代表该文件是一个目录文件。
在linux中第一个字符代表这个文件是目录、文件或者链接文件等等:
- 当为【d】则是目录
- 当为【-】则是文件
- 若是【l】则表示为链接文档(link file)
- 若是【b】则表示为装置文件里面的可供储存的接口设备(可随机存取装置)
- 若是【c】则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
接下来的字符中,以三个为一组,且均为【rwx】的三个参数组合。
其中,【r】代表可读(read)、【w】代表可写(write)、【x】代表可执行(execute)
要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号【-】而已。
每个文件的属性由左边第一部分的10个字符来确定:
从左至右用0-9这些数字表示
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其它用户拥有该文件的权限。
其中:
第1、4、7位表示读权限,如果用“r”字符表示,则有读权限,如果用“-”字符表示,则没有读权限。
第2、5、8位表示写权限,如果用“w”字符表示,则有写权限,如果用“-”字符表示,则没有写权限。
第3、6、9位表示可执行权限,如果用“x”字符表示,则有执行权限,如果用“-”字符表示,则没有执行权限。
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在linux系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所有者的同组用户和其它用户。
因此,linux系统按文件所有者、文件所有者同组用户和其它用户来规定了不同的文件访问权限。
修改文件属性
1、chgrp : 更改文件属组
chgrp [-R] 属组名 文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R参数,那么该目录下的所有文件的属组都会更改。
2、chown : 更改文件属主,也可以同时更改文件属组
chown [-R] 属主名 文件名
chown [-R] 属主名: 属组名 文件名
3、chmod : 更改文件9个属性
chmod [-R] xyz 文件或目录
linux文件属性有两种设置方法,一种是数字(常用),一种是符号
linux文件的基本权限就有9个,分别是owner、group、others三种身份各有自己的read、write、execute权限。
文件的权限字符为:【-rwxrwxrwx】,这9个权限是三个三个一组,其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
每种身份(owner、group、others)各自的三个权限(r/w/x)分数是需要累加的,例如:当权限为:【-rwxrwx---】分数则是:
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others = --- = 0+0+0 = 0
chmod 770 filename
文件内容查看
linux系统中使用以下命令来查看文件的内容
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示,可以看出tac是cat的倒写
- nl 显示的时候,顺道输出行号
- more 一页一页的显示文件内容(空格代表翻页,enter代表向下看一行)
- less与more类似,但是比more更好的是,它可以往前翻页(空格代表翻页,上下键代表翻动页面,q 退出命令,向下查找字符串:/要查询的字符,向上查找字符串:?要查询的字符, n向下寻找,N向上寻找)
- head 只看头几行 ,语法:head -n 20(行数)文件名
- tail 只看尾巴几行, 语法:tail -n 20(行数) 文件名
用户账号管理
1、添加用户
useradd 选项 用户名
参数说明:
-
选项 :
-
-c comment 指定一段注释性描述。
-
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-
-g 用户组 指定用户所属的用户组。
-
-G 用户组,用户组 指定用户所属的附加组。
-
-m 使用者目录如不存在则自动建立。
-
-s Shell文件 指定用户的登录Shell。
-
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
-
-
用户名 :
-
指定新账号的登录名。
-
2、删除帐号
如果一个用户的账号不再使用,可以从系统中删除。
删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。
删除一个已有的用户账号使用userdel命令,其格式如下:
userdel 选项 用户名
常用的选项是 -r,它的作用是把用户的主目录一起删除。
[root@iZuf6ecpsnuw5412vz7xhsZ home]# userdel -r test
此命令删除用户test在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。
3、修改帐号
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
修改已有用户的信息使用usermod命令,其格式如下:
usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。
例如:
# usermod -s /bin/ksh -d /home/z –g developer test
此命令将用户test的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。
4、切换用户
1.切换用户的命令为:su username 【username是你的用户名哦】
2.从普通用户切换到root用户,还可以使用命令:sudo su
3.在终端输入exit或logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令
4.在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如:【su - root】
$表示普通用户
#表示超级用户,也就是root用户
5、设置密码
用户账号刚创建时没有密码,但是被系统锁定,无法使用,必须为其指定密码后才可以使用,即使是指定空密码。
指定和修改用户密码的Shell命令是passwd。超级用户可以为自己和其他用户指定密码,普通用户只能用它修改自己的密码。
密码的格式为:
passwd 选项 用户名
可使用的选项:
-
-l 锁定密码,即禁用账号。
-
-u 密码解锁。
-
-d 使账号无密码。
-
-f 强迫用户下次登录时修改密码。
如果默认用户名,则修改当前用户的密码。
例如,假设当前用户是test,则下面的命令修改该用户自己的密码:
$ passwd
Old password:******
New password:*******
Re-enter new password:*******
如果是超级用户,可以用下列形式指定任何用户的密码:
# passwd test
New password:*******
Re-enter new password:*******
普通用户修改自己的密码时,passwd命令会先询问原密码,验证后再要求用户输入两遍新密码,如果两次输入的密码一致,则将这个密码指定给用户;而超级用户为用户指定密码时,就不需要知道原密码。
为了系统安全起见,用户应该选择比较复杂的密码,例如最好使用8位长的密码,密码中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。
为用户指定空密码时,执行下列形式的命令:
# passwd -d test
此命令将用户 test的密码删除,这样用户 test下一次登录时,系统就不再允许该用户登录了。
passwd 命令还可以用 -l(lock) 选项锁定某一用户,使其不能登录,例如:
# passwd -l test
用户组管理
1、增加用户组
groupadd 选项 用户组
可以使用的选项有:
-
-g GID 指定新用户组的组标识号(GID)。
-
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
实例1:
# groupadd group1
此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。
实例2:
# groupadd -g 101 group2
此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。
2、删除用户组
groupdel 用户组
# groupdel group1
此命令从系统中删除组group1。
3、修改用户组
groupmod 选项 用户组
常用的选项有:
-
-g GID 为用户组指定新的组标识号。
-
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-
-n新用户组 将用户组的名字改为新名字
# 此命令将组group2的组标识号修改为102。
groupmod -g 102 group2
# 将组group2的标识号改为10000,组名修改为group3。
groupmod –g 10000 -n group3 group2
4、切换组
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:
$ newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。
磁盘管理
Linux磁盘管理常用命令为 df、du。
-
df :列出文件系统的整体磁盘使用量
-
du:检查磁盘空间使用量
1、df
df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:
df [-ahikHTm] [目录或文件名]
选项与参数:
-
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-
-k :以 KBytes 的容量显示各文件系统;
-
-m :以 MBytes 的容量显示各文件系统;
-
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-
-H :以 M=1000K 取代 M=1024K 的进位方式;
-
-T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-
-i :不用硬盘容量,而以 inode 的数量来显示
2、du
Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux du命令。
语法:
du [-ahskm] 文件或目录名称
选项与参数:
-
-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-
-h :以人们较易读的容量格式 (G/M) 显示;
-
-s :列出总量而已,而不列出每个各别的目录占用容量;
-
-S :不包括子目录下的总计,与 -s 有点差别。
-
-k :以 KBytes 列出容量显示;
-
-m :以 MBytes 列出容量显示;
Linux链接
linux的链接分为两种:硬链接、软链接
硬链接:A--B,假设B是A的硬链接,那么他们两个指向了同一个文件,允许一个文件拥有多个路径,用户可以通过这种机制建立链接到一些重要文件上,防止误删。
软链接:类似Windows下的快捷方式,删除的源文件,快捷方式也访问不了。
创建链接 ln 命令。
touch:创建文件
echo : 输入字符串
[root@iZuf6ecpsnuw5412vz7xhsZ home]# touch f1 #创建f1文件
[root@iZuf6ecpsnuw5412vz7xhsZ home]# ls
f1 test1
[root@iZuf6ecpsnuw5412vz7xhsZ home]# ln f1 f2 #创建硬链接
[root@iZuf6ecpsnuw5412vz7xhsZ home]# ls
f1 f2 test1
[root@iZuf6ecpsnuw5412vz7xhsZ home]# ln -s f1 f3 #创建软链接
[root@iZuf6ecpsnuw5412vz7xhsZ home]# ls
f1 f2 f3 test1
[root@iZuf6ecpsnuw5412vz7xhsZ home]# echo "i love" >> f1 #向f1文件中输入字符串
[root@iZuf6ecpsnuw5412vz7xhsZ home]# cat f1
i love
[root@iZuf6ecpsnuw5412vz7xhsZ home]# cat f2
i love
[root@iZuf6ecpsnuw5412vz7xhsZ home]# cat f3
i love
Vim编辑器
vim分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Lastline mode)。
命令模式:
用户刚刚启动vim,便进入了命令模式。
此状态下敲击键盘动作会被vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当做了一个命令。
以下是几个常用的命令:
- i 切换到输入模式,以输入字符
- x 删除当前光标所在处的字符
- :切换到底线命令模式,以在最底一行输入命令
若想要编辑文本:启动vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
输入模式:
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE , 退格键,删除光标前一个字符
- DEL 删除键,删除光标后一个字符
- 方向键 在文本中移动光标
- HOME/END, 移动光标到行首、行尾
- Page Up/Page Down , 上/下翻页
- Insert 切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
底线命名模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有:
- q 退出程序
- w 保存文件
按esc键可随时退出底线命令模式。
Vim按键说明
第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等
移动光标的方法 | |
---|---|
h 或 向左箭头键(←) | 光标向左移动一个字符 |
j 或 向下箭头键(↓) | 光标向下移动一个字符 |
k 或 向上箭头键(↑) | 光标向上移动一个字符 |
l 或 向右箭头键(→) | 光标向右移动一个字符 |
[Ctrl] + [f] | 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用) |
[Ctrl] + [b] | 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用) |
[Ctrl] + [d] | 屏幕『向下』移动半页 |
[Ctrl] + [u] | 屏幕『向上』移动半页 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
数字 < space> | 按下数字后再按空格键,光标会向右移动这一行的 n 个字符。 |
0 或功能键[Home] | 这是数字『 0 』:移动到这一行的最前面字符处 (常用) |
$ 或功能键[End] | 移动到这一行的最后面字符处(常用) |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行的第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
G | 移动到这个档案的最后一行(常用) |
nG | n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu) |
gg | 移动到这个档案的第一行,相当于 1G 啊!(常用) |
n< Enter> | n 为数字。光标向下移动 n 行(常用) |
搜索替换 | |
---|---|
/word | 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可!(常用) |
?word | 向光标之上寻找一个字符串名称为 word 的字符串。 |
n | 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串! |
N | 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。 |
删除、复制与粘贴 | |
---|---|
x, X | 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用) |
nx | n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。 |
dd | 删除游标所在的那一整行(常用) |
ndd | n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用) |
d1G | 删除光标所在到第一行的所有数据 |
dG | 删除光标所在到最后一行的所有数据 |
d$ | 删除游标所在处,到该行的最后一个字符 |
d0 | 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符 |
yy | 复制游标所在的那一行(常用) |
nyy | n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用) |
y1G | 复制游标所在行到第一行的所有数据 |
yG | 复制游标所在行到最后一行的所有数据 |
y0 | 复制光标所在的那个字符到该行行首的所有数据 |
y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
p, P | p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢?那么原本的第 20 行会被推到变成 30 行。(常用) |
J | 将光标所在行与下一行的数据结合成同一行 |
c | 重复删除多个数据,例如向下删除 10 行,[ 10cj ] |
u | 复原前一个动作。(常用) |
[Ctrl]+r | 重做上一个动作。(常用) |
第二部分:一般模式切换到编辑模式的可用的按钮说明
进入输入或取代的编辑模式 | |
---|---|
i, I | 进入输入模式(Insert mode):i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。(常用) |
a, A | 进入输入模式(Insert mode):a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用) |
o, O | 进入输入模式(Insert mode):这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』;O 为在目前光标所在处的上一行输入新的一行!(常用) |
r, R | 进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用) |
[Esc] | 退出编辑模式,回到一般模式中(常用) |
第三部分:一般模式切换到指令行模式的可用的按钮说明
指令行的储存、离开等指令 | |
---|---|
:w | 将编辑的数据写入硬盘档案中(常用) |
:w! | 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊! |
:q | 离开 vi (常用) |
:q! | 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。 |
注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~ | |
:wq | 储存后离开,若为 :wq! 则为强制储存后离开 (常用) |
ZZ | 这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开! |
:w [filename] | 将编辑的数据储存成另一个档案(类似另存新档) |
:r [filename] | 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面 |
:n1,n2 w [filename] | 将 n1 到 n2 的内容储存成 filename 这个档案。 |
:! command | 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中看 /home 底下以 ls 输出的档案信息! |
:set nu | 显示行号,设定之后,会在每一行的前缀显示该行的行号 |
:set nonu | 与 set nu 相反,为取消行号! |