Linux的基本知识和基础操作
一、基本知识
Linux是基于Unix的
Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机
诞生于1991 年10 月5 日。是由芬兰赫尔辛基大学学生Linus Torvalds和后来加入的众多爱好者共同开发完成
通俗一点的解释:
/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:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
二、基本操作(man [命令]来查看各个命令的使用文档)
1. 切换目录命令cd:
cd app 切换到app目录
cd .. 切换到上一层目录
cd / 切换到系统根目录
cd ~ 切换到用户主目录
cd - 切换到上一个所在目录
(使用tab键来补全文件路径)
2. 列出文件列表:ls ll
ls(list)是一个非常有用的命令,用来显示当前目录下的内容。配合参数的使用,能以不同的方式显示目录内容。
格式:ls[参数] [路径或文件名]
常用:
在linux中以 . 开头的文件都是隐藏的文件
- ls
- ls -a 显示所有文件或目录(包含隐藏的文件)
- ls -l 缩写成ll
3. 创建目录和移除目录:mkdir rmdir
-m :配置文件的权限喔!直接配置
-p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
mkdir(make directory) 命令可创建目录
mkdir app 在当前目录下创建app目录
mkdir –p app2/test 创建aap2以及test目录
rmdir(remove directory)命令可用来删除“空”的子目录
rmdir app 删除app目录
4. 浏览文件
【cat、more、less、nl、tac、head、tail】
【cat】
-A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字节 $ 显示出来;
-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
cat用于显示文件的内容。格式:cat[参数]<文件名>
【nl]
-b :指定行号指定的方式,主要有两种:-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:-n ln :行号在荧幕的最左方显示;-n rn :行号在自己栏位的最右方显示,且不加 0 ;-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w :行号栏位的占用的位数。
【more】
空白键 (space):代表向下翻一页;
Enter :代表向下翻『一行』;
/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f :立刻显示出档名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
【less】
空白键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字串 :向下搜寻『字串』的功能;
?字串 :向上搜寻『字串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q :离开 less 这个程序;
【head】
选项与参数:-n 后面接数字,代表显示几行的意思!
【tail】
选项与参数:-n 后面接数字,代表显示几行的意思!
* cat yum.conf
more一般用于要显示的内容会超过一个画面长度的情况。按空格键显示下一个画面。
回车显示下一行内容。
按 q 键退出查看。
- more yum.conf 空格显示下一页数据 回车显示下一行的数据
- less用法和more类似,不同的是less可以通过PgUp、PgDn键来控制
- less yum.conf PgUp 和 PgDn 进行上下翻页
- nl 显示的时候,顺道输出行号!
- head 只看头几行
- tail 只看尾巴几行
【tail】
tail命令是在实际使用过程中使用非常多的一个命令,它的功能是:用于显示文件后几行的内容。
tail -10 /etc/passwd 查看后10行数据
tail -f catalina.log 动态查看日志(*****)
ctrl+c 结束查看
5. 文件操作:
【rm】
rm 删除文件
rm [选项]... 文件...
rm a.txt 删除a.txt文件 删除需要用户确认,y/nrm 删除不询问
rm -f a.txt 不询问,直接删除rm 删除目录
rm -r a.txt 递归删除询问递归删除(慎用)
rm -rf a.txt 不询问递归删除
rm -rf * 删除所有文件
rm -rf /* 删库跑路
【cp、mv】
cp(copy)命令可以将文件从一处复制到另一处。一般在使用cp命令时将一个文件复制成另一个文件或复制到某目录时,需要指定源文件名与目标文件名或目录(cp也可以重命名)。
【cp】
-a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
-r:递归持续复制,用於目录的复制行为;(常用)
-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身。
-s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
-u:若 destination 比 source 旧才升级 destination !
【mv】
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)
cp a.txt b.txt 将a.txt复制为b.txt文件
cp a.txt ../ 将a.txt文件复制到上一层目录中
cp [源目录[源文件] [新目录][新文件]
mv 移动或者重命名
mv a.txt ../ 将a.txt文件移动到上一层目录中
mv a.txt b.txt 将a.txt文件重命名为b.txt
mv [源目录[源文件] [新目录][新文件]
【tar】命令:(打包或解压)
tar命令位于/bin目录下,它能够将用户所指定的文件或目录打包成一个文件,但不做压缩。一般Linux上常用的压缩方式是选用tar将许多文件打包成一个文件,再以gzip压缩命令压缩成xxx.tar.gz(或称为xxx.tgz)的文件。常用参数:
-c:创建一个新tar文件
-v:显示运行过程的信息
-f:指定文件名
-z:调用gzip压缩命令进行压缩
-t:查看压缩文件的内容
-x:解开tar文件
打包:
tar –cvf xxx.tar ./
打包并且压缩:
tar –zcvf xxx.tar.gz ./
解压
tar –xvf xxx.tar
tar –xvf xxx.tar -C /usr/aaa 解压到指定目录
tar -zxvf xxx.tar.gz -C /usr/aaa 解压到指定目录
【find】命令
find指令用于查找符合条件的文件
示例:
find / -name “ins*” 查找文件名称是以ins开头的文件
find / -name “ins*” –ls
find / –user cjz –ls 查找用户cjz的文件
find / –user cjz –type d –ls 查找用户cjz的目录
find /-perm -777 –type d-ls 查找权限是777的文件
find / -name “ins*” 查找文件名称是以ins开头的文件
find / -name “ins*” –ls
find / –user cjz–ls 查找用户cjz的文件
find / –user cjz –type d –ls 查找用户cjz的目录
find /-perm -777 –type d-ls 查找权限是777的文件
【grep】命令
查找文件里符合条件的字符串。
用法: grep [选项]… PATTERN [FILE]…
grep lang anaconda-ks.cfg 在文件中查找lang
grep lang anaconda-ks.cfg –color 高亮显示
6. 其他常用命令
【pwd】
显示当前所在目录
【pwd -P】显示出确实的路径,而非使用连接(link) 路径。
【touch】
创建一个空文件
* touch a.txt
【clear/ crtl + L】清屏
hostname 查看主机名
hostname xxx 修改主机名 重启后无效
如果想要永久生效,可以修改/etc/sysconfig/network文件
7. Vi和Vim编辑器
在Linux下一般使用vi编辑器来编辑文件。vi既可以查看文件也可以编辑文件。三种模式:命令行、插入、底行模式。
切换到命令行模式:按Esc键;
切换到插入模式:按 i 、o、a键;
i 在当前位置前插入
I 在当前行首插入
a 在当前位置后插入
A 在当前行尾插入
o 在当前行之后插入一行
O 在当前行之前插入一行
切换到底行模式:按 :(冒号)
打开文件:vim file
退出:esc :q
修改文件:输入i进入插入模式
保存并退出:esc :wq
不保存退出:esc :q!
三种进入插入模式:
i:在当前的光标所在处插入
o:在当前光标所在的行的下一行插入
a:在光标所在的下一个字符插入
输入模式:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
快捷键:
dd – 快速删除一行
yy - 复制当前行
nyy - 从当前行向后复制几行
R – 替换
8. 重定向输出>和>>
重定向输出,覆盖原有内容;>> 重定向输出,又追加功能;
cat /etc/passwd > a.txt 将输出定向到a.txt中
cat /etc/passwd >> a.txt 输出并且追加
echo "hello" >a.txt 将hello写入a.txt/替换里面内容为hello
ifconfig > ifconfig.txt
9. 系统管理命令
ps 正在运行的某个进程的状态
ps –ef 查看所有进程
ps –ef | grep ssh 查找某一进程
kill 2868 杀掉2868编号的进程
kill -9 2868 强制杀死进程
curl 域名/ip地址 访问
ip addr 查看IP和网卡
netstat -nap|grep 8080 查看占用该端口号的进程
10.管道 |
管道是Linux命令中重要的一个概念,其作用是将一个命令的输出用作另一个命令的输入。
ls --help | more 分页查询帮助信息
ps –ef | grep java 查询名称中包含java的进程
ifconfig | more
cat index.html | more
ps –ef | grep mysql
11.磁盘管理
Linux磁盘管理常用命令为 df、du。
df :列出文件系统的整体磁盘使用量
du:检查磁盘空间使用量
df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:
df [-ahikHTm] [目录或文件名]
选项与参数:
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-i :不用硬盘容量,而以 inode 的数量来显示
Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux du命令。
语法:
du [-ahskm] 文件或目录名称
选项与参数:
-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;
根文件系统之外的其他文件要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”,此目录即为“挂载点”,解除此关联关系的过程称之为“卸载”
Linux 的磁盘挂载使用mount命令,卸载使用umount命令。
磁盘挂载语法:
mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点
磁盘卸载命令 umount 语法:
umount [-fn] 装置文件名或挂载点
选项与参数:
-f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
-n :不升级 /etc/mtab 情况下卸除。
12.账号管理
与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。
(1)用户账号
用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。
添加账号 useradd
useradd 选项 用户名
参数说明:
选项 :
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-m 使用者目录如不存在则自动建立。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
用户名 :
指定新账号的登录名。
Linux下如何切换用户
1.切换用户的命令为:su username 【username是你的用户名哦】
2.从普通用户切换到root用户,还可以使用命令:sudo su
3.在终端输入exit或logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令
4.在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如:【su - root】
$表示普通用户
#表示超级用户,也就是root用户
删除帐号
如果一个用户的账号不再使用,可以从系统中删除。
删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。
删除一个已有的用户账号使用userdel命令,其格式如下:
userdel 选项 用户名
常用的选项是 -r,它的作用是把用户的主目录一起删除
修改帐号
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
修改已有用户的信息使用usermod命令,其格式如下:
usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。
用户口令的管理
用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。
命令的格式为:
passwd 选项 用户名
可使用的选项:
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。
为用户指定空口令时,执行下列形式的命令:
passwd -d cjz
此命令将用户 cjz口令删除,这样用户 cjz下一次登录时,系统就不再允许该用户登录了。
passwd 命令还可以用 -l(lock) 选项锁定某一用户,使其不能登录,例如:
passwd -l cjz
(2)用户组
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
增加一个新的用户组使用groupadd命令
groupadd 选项 用户组
可以使用的选项有:
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
如果要删除一个已有的用户组,使用groupdel命令
groupdel 用户组
修改用户组的属性使用groupmod命令
groupmod 选项 用户组
常用的选项有:
-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字
切换组
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。
用户组的所有信息都存放在/etc/group文件中。
将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。
每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。
当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。
用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:
组名:口令:组标识号:组内用户列表
"组名"是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
"口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
"组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。
"组内用户列表"是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
三、 Linux的权限命令
r:对文件是指可读取内容 对目录是可以ls
w:对文件是指可修改文件内容,对目录 是指可以在其中创建或删除子节点(目录或文件)
x:对文件是指是否可以运行这个文件,对目录是指是否可以cd进入这个目录
普通文件: 包括文本文件、数据文件、可执行的二进制程序文件等。
目录文件: Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。
设备文件: Linux系统把每一个设备都看成是一个文件
当为[ d ]则是目录
当为[ - ]则是文件;
若是[ l ]则表示为链接文档 ( link file );
若是[ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 );
若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )。
修改文件属性
1、chgrp:更改文件属组
chgrp [-R] 属组名 文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
2、chown:更改文件属主,也可以同时更改文件属组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
3、chmod:更改文件9个属性
chmod [-R] xyz 文件或目录
Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
r:4 w:2 x:1
chmod 变更文件或目录的权限
chmod 755 a.txt
chmod u=rwx,g=rx,o=rx a.txt