1 Linux简介
Linux是免费的类Unix操作系统,支持多用户和多任务。
![140bcabf7d1de4f2a125a6334657432f.png](https://i-blog.csdnimg.cn/blog_migrate/2dcae5caf98796881ade83a7c11cee73.jpeg)
知名的Linux发行家族和发行版有:Ubuntu(Debian发行)、Centos(Fedora发行)等。
2 Linux基础知识
2.1 基础知识
- 目录结构:Linux的目录结构为树状结构,最顶级的目录为根目录 / 。
- 目录的符号:/正斜杠表示根目录或目录分隔符,~符号代表用户的主目录。.点号代表当前目录。 .. 两个点号代表父级目录。
- 绝对路径:以根目录/开始的路径。比如/usr/bin。
- 相对路径:不以根目录/开始的路径。比如当前目录为/usr/bin时,cd java表示切换到/usc/java。
2.2 命令的语法
命令的语法:命令关键字+空格+短横线+选项+参数,比如:ls -a /home。
命令的英文命令全称:linux很多命令的关键字其实就是英文命令的缩写,了解这一点对了解命令关键字很有帮助!
查看命令的帮助:命令后加上help参数或命令作为man命令的参数,比如ls --help 、man ls。这个命令经常用到,如果对命令不熟悉可以立即查看命令的说明。
3 Linux常用命令
3.1 目录相关的命令
提示:搞清楚命令的英文全称,对于理解和记忆很有帮助。
- ls:list的缩写,列出目录或文件。
- cd:change directory的缩写,切换目录。
- pwd:print working directory的缩写,打印当前工作目录。
- mkdir:make directory的缩写,创建文件夹。
- rmdir:remove directory的缩写,删除空的文件夹。
- rm:remove的缩写,删除文件或文件夹。
- cp:copy的缩写,复制文件或文件夹。
- mv:move的缩写,移动文件/文件夹,或修改文件/文件夹的名称。
命令用法举例:
用法:ls [选项]... [文件]...
举例:ls -al # 用较长格式列出所有文件,包括隐藏文件。
提示:如果对命令不熟悉,可以查看命令帮助,比如创建文件不知道怎么使用mkdir时,使用mkdir --help查看帮助。
实例:在目录/home/grid/learn中创建一个文件夹java,创建文件夹Java/bin(Linux区分大小写),复制、移动、删除这两个文件夹。
[grid@slave1 learn
3.2 文字编辑
vi是一个文本编辑器,所有的 Unix Like 系统都会内建 vi 文本编辑器。而vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
一共有三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
![d552501724a12088c12ae572957714d7.png](https://i-blog.csdnimg.cn/blog_migrate/fc275e585504112114e2c3a263b7829a.jpeg)
简单说明:启动 vi/vim,便进入了命令模式。键入a,进入到输入模式,可以开始编辑文本。按ESC键,进入到命令模式,按一下冒号键,进入到底线命令模式。
实例:使用vim创建一个新文件,键入一些字符,并保存。
[grid@slave1 learn
3.3 查看文件内容
- cat:concatenate的缩写,查看文件内容。
- tac:cat命令倒着写就是tac,从最后一行开始显示。
- nl:number of lines,显示文件内容并显示行号。
- more:一页一页的显示内容。
- less:和more命令类似,less还可以向前翻页。q退出less命令显示界面。
- head:查看前几行。
- tail:查看后几行。
实例:在/home/grid/learn目录中创建文件readme.txt,键入一些字符,并使用多种命令查看文件内容。
[grid@slave1 learn
3.4 文件属性相关的命令
使用ll命令显示文件时,会有形似“dr-xr-xr-x”的前缀,其中第一个d表示这是一个directory目录,后面9为是owner/group/others的read/write/execute权限,短横线表示没有相应的权限。可以使用数字去代表权限属性,每三位数字分别使用420。或者使用“+-=”符号权限去代表权限的加入、去掉、设定。
- chgrp:change group的缩写,改变文件所属的组。
- chown:change owner的缩写,改变文件拥有者,也可以更改文件属组。
- chmod:change mode的缩写,改变文件的属性,是owner/group/others三种用户的read/write/execute权限。
用法举例:chgrp [选项]... 用户组 文件...
或:chgrp [选项]... --reference=参考文件 文件...
实例:为/hone/grid/learn目录下的readme.txt设置权限:用户组修改为root;拥有者改为某个用户test;权限设置为属主可读可写可执行、属组可读、其他用户组没有任何权限。
[grid@slave1 learn
3.5 用户和用户组的管理
Linux是一个多用户多任务的操作系统,可以同时登陆多个用户,各自拥有各自的资源。
完成用户管理的命令实际上都是对有关的系统文件进行修改,与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。
/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell。
Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
- useradd:添加用户
- userdel:删除用户
- usermod:修改用户
- passwd:修改用户口令
- groupadd:添加用户组
- groupdel:删除用户组
- groupmod:修改用户组
实例:使用root账户,添加用户组test和用户lisi,并完成修改和删除的操作。
[root@slave1 ~
3.6 磁盘管理
- df:disk free的缩写,报告还剩多少空间。
- du:disk usage的缩写,磁盘使用情况。
- fdisk:format disk的缩写,格式化磁盘和磁盘分区。
- mount:挂载磁盘。
- umount:卸载磁盘。
用法:df [选项]... [文件]...
显示每个文件所在的文件系统的信息,默认是显示所有文件系统。
实例:使用df列出所有磁盘信息;
[lisi@slave1 ~
3.7 包的管理
package软件包类似windows系统的程序。在Linux系统中,也可以进行软件包的安装、删除。
3.7.1 yum
yum,yellowdog updater modified 的缩写,在Fedora和RedHat软件包管理器。能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,安装所有依赖的软件包。适用的发行版操作系统有centos。
yum常用命令:
- 列出所有可更新的软件:yum check-update
- 仅安装指定的软件命令:yum install <package_name>(需要root账户执行)
- 列出所有可以安裝的包:yum list <package_name>
- 列出所有已经安裝的包:yum list installed <package_name>
- 删除软件包:yum remove <package_name>
- 查找软件包:yum search <keyword>
3.7.2 dpkg
dpkg:debian packager的简写,为debian发行家族专门开发的套件管理系统,方便软件的安装、更新及移除。适用的系统有Ubuntu。
语法:dpkg [选项...] <.deb file name>
示例:dpkg -i XX_i386.deb
3.7.3 rpm
rpm:RedHat Package Manager的缩写,是RedHat公司研发的程序包管理器。适用的系统有CentOS。
语法:rpm [选项...]
示例:rpm -ivh package_name
3.7.4 apt-get
apt-get,Advanced Package Tool的缩写,适用于deb包管理式的操作系统,可以自动从互联网的软件仓库(repositories)中搜索、安装、升级、卸载软件或操作系统。
示例:apt-get install package_name
3.7.5 安装tar.gz源代码包
很多时候我们可以去软件包的官网下载tar.gz的软件包,里面包括了已经经编译可以马上运行的程序,只需要下载和解压(即安装)就可以使用。使用tar命令解压(安装)。
用法: tar [选项...] [FILE]...
示例:tar -xvf xx.tar.gz
实例:搜索并安装numpy包。
[root@slave1 ~
4 Shell命令
用户如何使用操作系统呢?Linux系统如何和用户交互?Shell命令就是解决这个问题的。
Shell,中文意思是壳,顾名思义,是连接Linux核心的一种应用程序。shell就是连接用户和操作系统的桥梁,为使用者提供操作界面的命令解析器。
从可视化操作方式上,shell可以分为两类,图形界面shell(Graphical User Interface shell 即 GUI shell)和命令行式shell(Command Line Interface shell ,即CLI shell)。从交互方式上,有交互式shell和非交互式shell两类。
Shell脚本,是指为 shell 编写的脚本程序。通常所说的 shell编程就是一组为shell编写的脚本程序。
Shell 种类比较多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)等。
4.1 bash编程
Bourne Again shell (bash),是 Bourne shell(sh)的扩展。bash 有很灵活和强大的编程接口,同时又有很友好的用户界面。
4.2 第一个shell脚本
- shell脚本的编写方式:使用vim命令创建一个文件,输入内容即可。
- shell脚本的文件后缀名:shell脚本后缀名一般是.sh(可以没有后缀名,但是一个文件应该有命名规范)。
- shell脚本的执行方式:(1)作为可执行文件:首先使用chmod命令添加x(execute可执行)权限。然后使用“./xx.sh”执行。(2)作为解释器参数:/bin/sh xx.sh。
注意:一定要写成 ./xx.sh,而不是 xx.sh,“./”代表当前目录。因为运行脚本时linux 系统会去 PATH 系统环境变量中寻找有没有叫 xx.sh 的,当前目录通常不在 PATH 里,所以就会找不到命令,报错“bash: XX.sh: command not found”。使用./xx.sh 告诉系统说,就在当前目录中查找。
实例:新建一个shell脚本,打印出helloworld。
[grid@slave1 learn
4.3 shell变量
其他内容,待更新