参考:
目录管理
目录结构
/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:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
处理目录
绝对路径:
路径的写法,由根目录 / 写起,例如:/usr/share/doc 这个目录。
相对路径:
路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:cd …/man
ls (列出目录)
选项与参数:
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
-l :长数据串列出,包含文件的属性与权限等等数据;(常用)、
可以连起来使用 把目录下的所有文件列出来
ls -al
cd (切换目录)
cd是Change Directory的缩写
# 切换到用户目录下
[root@kuangshen /]# cd home
# 使用 mkdir 命令创建 kuangstudy 目录
[root@kuangshen home]# mkdir kuangstudy
# 进入 kuangstudy 目录
[root@kuangshen home]# cd kuangstudy
# 回到上一级
[root@kuangshen kuangstudy]# cd ..
# 回到根目录
[root@kuangshen kuangstudy]# cd /
# 表示回到自己的家目录,亦即是 /root 这个目录
[root@kuangshen kuangstudy]# cd ~
pwd ( 显示目前所在的目录 )
pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。
选项与参数:-P :显示出确实的路径,而非使用连接(link) 路径。
# 单纯显示出目前的工作目录
[root@kuangshen ~]# pwd
/root
# 如果是链接,要显示真实地址,可以使用 -P参数
[root@kuangshen /]# cd bin
[root@kuangshen bin]# pwd -P
/usr/bin
mkdir (创建新目录)
mkdir (make directory)
选项与参数:
-m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
-p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
# 进入我们用户目录下
[root@kuangshen /]# cd /home
# 创建一个 test 文件夹
[root@kuangshen home]# mkdir test
# 创建多层级目录
[root@kuangshen home]# mkdir test1/test2/test3/test4
mkdir: cannot create directory ‘test1/test2/test3/test4’:
No such file or directory # <== 没办法直接创建此目录啊!
# 加了这个 -p 的选项,可以自行帮你创建多层目录!
[root@kuangshen home]# mkdir -p test1/test2/test3/test4
# 创建权限为 rwx--x--x 的目录。
[root@kuangshen home]# mkdir -m 711 test2
[root@kuangshen home]# ls -l
drwxr-xr-x 2 root root 4096 Mar 12 21:55 test
drwxr-xr-x 3 root root 4096 Mar 12 21:56 test1
drwx--x--x 2 root root 4096 Mar 12 21:58 test2
rmdir ( 删除空的目录 )
语法:
rmdir [-p] 目录名称
选项与参数:-p :连同上一级『空的』目录也一起删除
# 看看有多少目录存在?
[root@kuangshen home]# ls -l
drwxr-xr-x 2 root root 4096 Mar 12 21:55 test
drwxr-xr-x 3 root root 4096 Mar 12 21:56 test1
drwx--x--x 2 root root 4096 Mar 12 21:58 test2
# 可直接删除掉,没问题
[root@kuangshen home]# rmdir test
# 因为尚有内容,所以无法删除!
[root@kuangshen home]# rmdir test1
rmdir: failed to remove ‘test1’: Directory not empty
# 利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 依次删除。
[root@kuangshen home]# rmdir -p test1/test2/test3/test4
注意:这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录
cp ( 复制文件或目录 )
语法:
[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
[root@www ~]# cp [options] source1 source2 source3 .... directory
选项与参数:
-a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
-r:递归持续复制,用於目录的复制行为;(常用)
-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身。
-s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
-u:若 destination 比 source 旧才升级 destination !
rm ( 移除文件或目录 )
语法:
rm [-fir] 文件或目录
选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了!
mv ( 移动文件与目录,或修改名称 )
语法:
[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory
选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)
基本属性
文件属性
通过ls -l
或ll
命令就可以查看文件的属性和文件所属的用户和组
-
第一列: 十个字符
这 十个字符可以分成第一个字符和后9个字符
①第0确定文件类型
第一个字符代表这个文件是目录、文件或链接文件等等:- 当为[ d ]则是目录
- 当为[ - ]则是文件;
- 若是[ l ]则表示为链接文档 ( link file );
链接文档相当于Windows的快捷方式, 这种的后面都会->显示出真实路径lrwxrwxrwx 1 root root 33 Dec 24 2018 initrd.img -> boot/initrd.img-4.4.0-131- generic
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 );
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )。
②后9个字符
以三个为一组,且均为『rwx』 的三个参数的组合
其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。
要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
修改文件属性
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
chgrp:更改文件属组
一般不用
chgrp [-R] 属组名 文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
chown:更改文件属主
一般不用
也可以同时更改文件属组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
chmod: 更改文件9个属性 **
chmod [-R] xyz 文件或目录
遇到没有权限的时候就要用到chmod
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4 w:2 x:1
每种身份(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
给文件赋予最高权限
chmod 777 filename
文件内容查看
cat 由第一行开始显示文件内容
语法:
cat [-AbEnTv]
选项与参数:
-A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字节 $ 显示出来;
-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
例子:
# 查看网络配置: 文件地址 /etc/sysconfig/network-scripts/
[root@kuangshen ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
tac 从最后一行开始显示文件内容
tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
例子:
[root@kuangshen ~]# tac /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
BOOTPROTO=dhcp
DEVICE=eth0
nl 显示出行号
语法:
nl [-bnw] 文件
选项与参数:
-b :指定行号指定的方式,主要有两种:-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:-n ln :行号在荧幕的最左方显示;-n rn :行号在自己栏位的最右方显示,且不加 0 ;-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w :行号栏位的占用的位数。
测试:
[root@kuangshen ~]# nl /etc/sysconfig/network-scripts/ifcfg-eth0
1DEVICE=eth0
2BOOTPROTO=dhcp
3ONBOOT=yes
more 一页一页往下翻动,不能往上翻
在 more 这个程序的运行过程中,你有几个按键可以按的:
- 空白键 (space):代表向下翻一页;
- Enter :代表向下翻『一行』;
- /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
- :f :立刻显示出档名以及目前显示的行数;
- q :代表立刻离开 more ,不再显示该文件内容。
- b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
less 一页一页翻动,可以往上翻
上下键代表翻动页面
less运行时可以输入的命令有:
- 空白键 :向下翻动一页;
- [pagedown]:向下翻动一页;
- [pageup] :向上翻动一页;
- /字串 :向下搜寻『字串』的功能;
- ?字串 :向上搜寻『字串』的功能;
- n :重复前一个搜寻 (与 / 或 ? 有关!)
- N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
- q :离开 less 这个程序;
head 取出文件前面几行
head [-n number] 文件
选项与参数:-n 后面接数字,代表显示几行的意思!
默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样:
[root@kuangshen etc]# head -n 20 /etc/csh.login
tail 取出文件后面几行
tail [-n number] 文件
选项与参数:
-n :后面接数字,代表显示几行的意思
默认的情况中,显示最后 10 行!若要显示最后 20 行,就得要这样:
[root@kuangshen etc]# tail -n 20 /etc/csh.login
关机
关机指令为:shutdown
sync # 将数据由内存同步到硬盘中。
shutdown # 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:
shutdown –h 10 # 这个命令告诉大家,计算机将在10分钟后关机
shutdown –h now # 立马关机
shutdown –h 20:25 # 系统会在今天20:25关机
shutdown –h +10 # 十分钟后关机
shutdown –r now # 系统立马重启
shutdown –r +10 # 系统十分钟后重启
reboot # 就是重启,等同于 shutdown –r now
halt # 关闭系统,等同于shutdown –h now 和 poweroff
账号管理
用户的增删改查 其实就是修改/etc/passwd
的内容
/etc/passwd
的每一行的意思如下:
用户名:口令(登录密码,我们不可见):用户标识号:组标识号:注释性描述:主目录:登录shell
- 口令
密码是再/etc/shadow 文件中
添加用户
useradd -选项 用户名
参数:
-m 自动创建这个用户的主目录 /home/flora
本质: linux中一切皆文件,这里的添加用户就是往/etc/passwd中写入了用户的信息了
-G 用户组, 指定该用户所属的组
cat /etc/passwd # 查看这个文件内容
就可以看到所有添加的用户
删除用户
userdel -r flora #删除用户flora -r是把目录一并删掉
修改用户
usermod 选项 用户名
选项和添加用户的选项相同
注意 修改完毕后要查看配置文件
切换用户
- 当前用户名
当当前用户是root 的时候 后面会 对应#
表明是超级用户
普通用户 后面对应的就是$
- 主机名
hostname # 查看当前的主机名
hostname 要修改的主机名 # 修改主机名
1 .切换用户的命令:
su- username
- 加
-
表示切换用户之后时候新用户的工作环境
从普通用户切换到root用户,还可以使用命令 sudo su
设置密码
passwd flora #修改/设置flora的密码
锁定账户:
pass -l flora #锁定之后这个账户就不能登录了
passwd -d flora #没有密码也不能登录
用户组管理
属组 就是每个用户都有一个组
组的增加 删除和修改实际上就是对/etc/group
文件的更新
创建用户组
groupadd fl #创建用户组
参数:
-g 指定id
可以通过下面的命令查看 所有的用户组
cat /etc/group #
删除用户组
groupdel f1 #删处用户组
修改用户组的权限信息和名字
groupmod -g 修改的id -n 原名字 新名字
groupmod -g 666 -n fl flora #修改f1 用户组id 为666 重命名为 flora
磁盘管理
df
df -h #列出文件系统整体的磁盘使用量
-h 是用我们看的懂 的M G 来表示
du
查看空间的具体使用
du
du -sm /* #检查根目录下每个目录所占用的容量
mount
Mac 或者想使用Linux挂载我们的一些本地磁盘或者文件
mount /dev/flora /mnt/flora # 将外部设备flora 挂载到mnt目录下 来实现访问
卸载
unmount -f [挂载位置] # 强制卸载
进程管理
- linux中,每一个程序都有自己的一个进程,每个进程都有一个id号
- 每一个进程都会有一个父进程
- 进程可以有两种存在方式:
- 前台
程序一般是再前台运行的,也就是关掉就没了 - 后台
服务一般是在后台运行的
ps - aux 查看当前进程的信息
ps -aux #显示所有包含其他使用者的行程
ps -aux |grep mysql # 查看所有关于mysql的信息
ps 是process status
参数:
-a 显示当前终端运行的所有的进程信息
-u 以用户的信息显示进程
-x 显示后台运行进程的参数
| 管道符 A|B A的结果会给B
grep 查找文件中符合条件的字符串
ps -ef
ps -ef # 显示所有进程信息,可以查看到父进程
查看父进程我们也可以通过目录树结构来查看
pstree -pu
参数:
-p 显示父id
-u 显示用户组
结束进程
kill -9 进程id # 强制结束该进程