Linux命令:
shell和Linux的关系
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
根目录和家目录
Linux的根目录是目录的最高层,所有文件都在根目录下面,而根目录下有bin,etc,root,mnt等文件目录
1 | /bin:存放二进制文件,但在Linux中二进制文件是可以被执行的。该目录的命令文件是给普通用户使用(非超级管理员用户)。 |
基本操作命令:
命令行符号介绍:
1 | [root@localhost 桌面]# |
基本命令:
1 | #pwd //print working directory,打印当前的工作路径 |
cd
1 | change directory,切换目录 |
rm
1 | remove |
cp
1 | copy,复制文件 |
mv
1 | move 移动/重命名 文件或目录 |
ls
1 | ls +[路径] 查看目录内容 |
文件颜色:
1 | 白色:表示普通文件 |
init
1 | init + 数字 Linux的运行模式的切换 |
su
1 | 作用:切换用户(switch user) |
↑和↓
1 | 用于切换历史命令 |
shutdown
1 | // -h表示halt 关机,普通用户没有关机或重启的权限,只能退出后root登录关机 |
Linux中的whereis/find/which/locate/type
find
1 | #find [指定目录] [指定条件] [指定动作] |
locate
1 | //查找所有包含passwd的文件,并且只显示前十个 |
which
1 | which命令是查找命令是否存在,以及命令的存放位置在哪儿。 |
whereis
1 | #whereis passwd //查找命令文件位置 |
type
1 | type命令用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令. |
远程拷贝文件的命令spc即secure copy
1 | 将远程服务器上的文件复制到本机 |
用户和用户组管理:
useradd,usermod,userdel groupadd,groupmod,groupdel
在Linux中只有超级管理员权限才能对用户和用户组进行设置,其他的用户一律没有权限设置:
1、用户
1 | 1、添加用户 useradd hd |
设置密码
1 | 给用户设置密码:passwd hd (hd为用户名) |
用户编辑:
#usermod 参数(l/g) 需要修改的用户名
1 | (user modify)在Linux中,经常会用到的用户修改的参数有2个。 |
删除用户:
1 | 删除用户 userdel +用户名 (user delete) |
2、用户组
添加用户组:
1 | #groupadd 用户组名 文件信息在/etc/group |
用户组编辑:
#groupmod 参数 用户组名
重命名#groupmod -n 新的用户组名 旧的用户组名
用户组删除:
语法:#groupdel 需要删除的用户组名
如果这个用户组中存在用户的话,则该用户组是无法直接删除的,如果需要删除的话,则可以先将组内的成员删除掉或者移动到别的组,然后才可以删除当前的用户组。
权限
权限设置主要是针对用户和用户组对于文件/文件夹的一个操作限制,只有有权限才能进行相应的设置,没有权限则设置不了。
查看权限 ll
通过数字的形式设置权限
( r4w2x1 权限最高为7)ls -al也能查看到权限
修改权限:chmod(设置权限) 757(3数字3个权限) hod(文件或文件夹)
//文件:r 就可以查看内容
//目录 r+x 才可进去
通过字符设置权限
1、针对单个对象(ugo)的拆分user/group/other
给某个组成部分添加读权限:#chmod u+r,g+r,o+r 需要操作的文件/文件夹
给某个组成部分删减读权限:#chmod u-r,g-r,o-r 需要操作的文件/文件夹
给某个组成部分权限设置成一个目标值:#chmod u=rwx,g=rwx,o=rwx 文件名/文件夹名
2、设置全部的组成部分
#chmod a+r 文件 (表示给全部的组成部分添加读权限)
#chmod a-r 文件 (表示给全部的组成部分删减读权限)
#chmod a=rwx 文件 (表示给全部的组成部分权限设置成刻度可行可执行)
注意:在实际工作不要出现一个奇葩的权限:-wx。不要出现类似这样的权限,原因是读权限是最基本的,而你如果想写入,则必须先打开文件。
1 | 改变文件夹test的所有者为hod |
其他
vi编辑器
1 | vi a.php 创建并且编辑文件 |
1 | vim和vi编辑器:http://www.cnblogs.com/baichuanhuihai/p/7928404.html |
vim编辑器安装:
输入rpm -qa|grep vim 命令
1 | vim-enhanced-7.0.109-7.el5 |
vim +数字 文件 (打开文件之后快速的将光标定位到数字指定的行)
1 | vim +5 passwd |
vim +/字符串 文件 (打开文件后高亮显示/后的字符串;光标快速跳转,按下“n”向下切换,或者按下“N”向上切换;实际上就是之前用的文件内搜索内容)
:nohl 除去高亮(no highlight)
set nu 显示行号(number)
:/字符串 搜索 字符串
vim 3种模式:
在vim中存在三种模式:命令模式、末行模式、编辑模式。
末行模式下
替换:
😒/需要替换的字符串/替换成的字符串 (表示替换当前光标所在的行的第一处符合条件的字符串)
😒/需要替换的字符串/替换成的字符串/g (替换光标所在行全部符合条件的地方,g表示global)
:%s/需要替换的字符串/替换成的字符串 (表示替换当前文档中每一行第一个符合条件的地方)
:%s/需要替换的字符串/替换成的字符串/g (替换整个文档中全部符合条件的地方)
命令模式下:
G 将光标在默认的命令模式中快速的定位到文档的最后一行
gg 将光标从命令模式中快速的切换到文档的第一行
数字G 将光标快速的定位到当前文档中的指定行
数字+↑/↓。将光标以当前行为准,向上或者向下移动指定的行数,可以输入数字
dd 删除当前行,删除之后下一行上移。
数字+dd 光标所在行为基准,向下删除指定的行数
D 删除当前行,删除之后当前行留空。
复制:
dd 剪切也是删除命令
yy 复制当前行
数字+yy 以当前行为准,向下复制指定的行数
p 粘贴在光标所在行的下一行开始处
编辑模式:
i/a 进入编辑模式insert/after instert
esc按键 退出编辑模式
vim扩展:
1、默认显示行号(vi也可以用)
当前用户的家目录中,如果没有的话自己创建,文件名字叫做.vimrc
.vimrc文件中,进入编辑模式,然后输入set nu,输入完毕之后退出保存 。
2、别名机制
对clear设置别名
别名文件位于当前用户家目录中,文件名叫做**.bashrc**
写入alias cls='clear’保存退出。设置别名文件之后,需要重新登录之后别名才会生效
3、异常处理
当一个文件在vim中进行打开,打开之后没有正常关闭(直接关闭远程窗口),再下一次打开该文件的时候就会提示类似于以下的界面:
1 | E325: 注意 |
直接删除交换文件.swp
4、撤销/重做
当文件进行修改之后,如果想撤销/重做,则可以在末行模式中输入**:u**,来撤销上一步的操作。
撤销多步——末行模式中输入**:数字u**
取消撤销——命令模式中按下组合键ctrl+r
5、保存退出
wq和:x(千万不要输入大写的x,大写的x表示给当前文档进行加密)
在实际开发的时候还是建议使用:x的方式进行退出。这两个方式的区别在于,wq的方式无论文件是否有修改,都会对文件的最后修改时间进行改变;而x方式只有在文件内容真的发生变化了才会去修改文件的最后修改时间
window上用Xshell连接远程
命令连接服务器:ssh root@ip地址。
1、输入命令,中文乱码->echo $LANG 结果若是zh_CN.UTF-8系统支持中文,那么只能说明是我的xshell不能支持中文,那就改文件属性;
2、file(文件)->弹出对话框,在找Properties(属性)->Terminal(终端),下方选择Encoding(编码),选择UTF-8即可
复制Ctrl+Insert 粘贴 ShIft+Insert或者鼠标
鼠标操作技巧——跳出虚拟机界面:右边 alt+ctrl
虚拟机 网络设置
1 | 1.关机,设置--网络-连接方式--桥接 |
rpm软件管理:
Red Hat Package Manager软件包管理器
查询软件的安装情况,安装软件,卸载软件
https://blog.csdn.net/hetoto/article/details/83593797(rpm相关知识点)
1、查询安装
查询vim编辑器的安装情况rpm -qa|grep vim
-q:表示query,查询
-a:表示全部,all
|:在php中称之它叫变量修饰器,在Linux中称之为管道
grep:表示从结果中进行过滤
2、软件卸载
rpm –e 需要卸载的软件名称(软件完整名称,即通过查询得到的名称)[–nodeps]
参数说明:
-e:表示卸载
--nodeps:表示忽略依赖关系
3、软件安装
语法:rpm -ivh 需要安装的软件完整名称
参数说明:
-i:表示安装,install
-v:表示显示进度条
-h:表示进度条以“#”显示
用了下载火狐rpm -ivh firefox-31.1.0-5.el6.centos.i686.rpm但是报没有这个文件或目录,可能是没有挂载的原因
yum和rpm的区别:
rpm是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装、查询、卸载、升级等工作。但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时。
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装
yum源卸载:yum remove mysql* 卸载相关的mysql
Linux运行模式
运行模式7种,0~6,的文件位置在/etc/inittab 更改其中的默认模式数字 id:3:initdefault:
网卡设置
配置文件在 /etc/sysconfig/network-scripts/
每个网卡对应着一个配置文件。例如ifcfg-eth0对应eth0这个网卡,ifcfg-lo对应lo
禁用网卡:#ifdown 设备名称 例如:#ifdown eth0
启用网卡:#ifup 设备名称 例如:#ifup eth0
在实际开发的时候Linux服务器/windows服务器的网卡不要随便的禁用,一旦禁用,远程终端连接立马会断开,一但断开就会连接不上。
其他:
1、Linux下的>和>>
在有的时候我们想保存命令操作结果,比如说将ls执行结果保存到某个文件中。这个时候可以使用>或者>>
一个>符号表示覆盖写。两个>>表示追加写。
例如#ls -al > list.txt
2、查找文件
#find 查找路径 -name 查找关键词
例如:#find / -name httpd.conf
3、man
语法:#man 命令名称 表示Manual(手册)
提示man命令未找到,则安装man(yum install man)
例如:#man find
Linux中whereis/find/which/locate/type区别
https://www.cnblogs.com/jycjy/p/6940544.html
4、命令:ssh、rpm 、 yum、cat分别是什么?
ssh是协议 ;
rpm(Red Hat Package Manager软件包管理器)由于依赖关系下载软件包麻烦,于是出现了yum,将所有软件包依赖关系的都下载,更加简便;
cat 主要有三大功能:
1.一次显示整个文件。$ cat filename
2.从键盘创建一个文件。$ cat > filename
只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件: $cat file1 file2 > file
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
例:
把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -n textfile1 > textfile2
把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
cat -b textfile1 textfile2 >> textfile3
把test.txt文件扔进垃圾箱,赋空值test.txt
cat /dev/null > /etc/test.txt
ssh协议和光盘挂载
1、ssh协议
端口号为22,应用最典型的就是我们可以使用终端去连接Linux,这个终端它使用的协议就是ssh协议。(终端可能指的是Xshell软件)
在Linux中ssh协议它是有个守护进程,进程名字叫做sshd。
在Linux中开启/关闭/重启一个服务/进程,都有一个比较固定的格式:
#service 服务名称 start/stop/restart
例如:关闭ssh协议,则可以输入命令service sshd stop。
注意:在停止ssh协议之后,终端后立即断开(在低版本Linux中仍然会保留当前的会话),所以该性质优点类似于禁用网卡,在实际开发的时候小心使用。
2、利用ssh工具实现跨平台传输文件
在实际开发的时候可能会遇到要往Linux中传输文件,这个问题如何去解决?
这个时候可以使用ssh协议的工具来实现文件的跨平台传输。可以使用pscp.exe来实现文件的传输:
Pscp.exe是一个命令行工具,所以不能被直接打开,因此需要在cmd中运行,为了方便运行,我们可以将pscp.exe放到环境变量当中去——我们可以直接将其放到c盘的windows中。(先下载PuTTY软件,找到pscp.exe复制到c盘window中就可以了)
在cmd中运行结果:
语法格式(windows中文件传输到Linux中):
#pscp windows中的文件路径 用户名@主机地址:文件的保存路径
#pscp D:\Epan\IT-notebook\linux* root@192.168.1.10:/root/data
上传目录,可以用
pscp -r D:\MySQL\MySQL高级\mysql5.5.48 root@192.168.1.15:/opt
案例:使用pscp将文件传输到root用户家目录中的data目录中。
创建data目录:
3、利用sftp工具实现文件的上传/下载(linux第三天资料)
除了可以使用上述的命令行工具去传输文件,还可以使用sftp工具实现文件的传输:fileliza
安装完成打开之后会看到以下的界面:
在使用的时候,只需要将上述的空白地方补全信息即可:
登录之后左右两侧各有一个框框,左边显示的本地的文件系统,右侧的显示服务器的文件系统:
在左侧的文件上右键“上传”,即可将文件传输到右侧的文件目录中。
2、光盘挂载
Linux中的根目录以外的文件要想被访问,需要将其“关联”到根目录下的某个目录来实现,这种关联操作就是“挂载”,这个目录就是“挂载点”,解除关联关系的过程称之为“卸载”(umount)。
可以理解成将光盘创建一个快捷方式。在windows下也有类似这样的过程(盘符的分配),但linux下必须的手动进行光盘/USB外接设备的挂载,只有挂载之后才能使用该外接设备中的文件/文件夹。
1 | 语法:#mount [-fnrsvw] [-t vfstype] [-o options] device dir |
语法:#mount[参数] 设备名称 挂载点/挂载位置
设备名称,可以通过命令lsblk(list block **devices)**来获取:
在使用lsblk之前先确保iso文件已经放入到光驱中:
然后使用lsblk命令:#lsblk
在列出的文件树中最接近光驱中iso文件大小的是sr0的3.8G,而lsblk列出的块状设备都位于/dev目录中,所以sr0的完整路径应该是/dev/sr0(MOUNTPOINT下无符号)
挂载点就是指将这个设备放到什么地方去,挂载点就是一个目录。一般情况有个习惯,在实际使用的时候习惯于将外接设备挂载到/mnt目录下,比如说可以在mnt目录下创建一个dvd目录,然后可将光盘挂载到/mnt/dvd上:
创建好目录之后再去使用命令进行挂载:
#mount /dev/sr0 /mnt/dvd/
光盘挂载成功,但是由于光盘是写保护的,所以只能读不能写。
使用lsblk命令查看挂载结果,看到已经存在挂载点了。
那后期如果需要使用光盘文件iso中的文件,则可以直接去/mnt/dvd目录中去寻找。
**ISO文件:**其实就是光盘的镜像文件,刻录软件可以直接把ISO文件刻录成可安装的系统光盘,ISO文件一般以iso为扩展名,其文件格式为iso9660。
ISO 9660,也被一些硬件和软件供应商称作CDFS(光盘文件系统),是一个由国际标准化组织(ISO)为光盘媒介发布的文件系统。其目标是能够在不同的操作系统,如Windows,Mac OS以及类Unix系统上交换数据。
LAMP安装:
1、压缩和解压
bz2比gz的压缩比高,tar是Linux下常用的解压与压缩命令
gz格式文件解压:tar -zxvf
bz2格式文件解压:tar -jxvf
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
例如:#tar -cvf sysconfig.tar /etc/sysconfig
命令解释:将目录/etc/sysconfig/目录下的文件打包成文件sysconfig.tar文件,并且放在当前目录中
// tar -zcvf b.tar.gz b /将b目录下所有文件以gzip 方式压缩为b.tar.gz的文件,并放在当前目录
// tar -zxvf b.tar.gz b //gzip解压
Linux扩展知识:
网卡:用于接收无线网络信号(在电脑或接收wifi的手机上都有)
路由器:发射无限网络信号
显卡:将计算机系统所需要的显示信息进行转换 驱动显示器
MAC地址(Media Access Control Address),直译为媒体访问控制地址,也称为局域网地址(LAN Address),以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网上设备位置的地址。
UUID:全局唯一标识符,只是用来标志硬件用的。在网络上起作用的是ip和mac,因此改了之后,在网络上是可以正常使用的,这个uuid只在系统中有用
selinux:Security Enhance Linux,安全加强的Linux,就是程序和访问对象上都有一个安全标签(即selinux上下文)进行区分,只有对应的标签才能允许访问,否则即使权限是777,也是不能访问的。
防火墙:计算机和它所连接的网络之间的软件,对流经它的网络通信进行扫描,滤掉一些攻击,以免其在目标计算机上被执行,禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信
查询用户
1 | #id z3 |
ps -ef|grep mysql
ps是什么?
在linux中使用ps命令可以查看有哪些进程在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等. ps命令最常用的是用于监控后台进程的工作情况.
https://www.cnblogs.com/nethk/p/4820867.html
‘|’管道分隔符:
利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。下面来看看管道是如何在构造一条Linux命令中得到应用的。
例如:#cat /etc/passwd | grep /bin/bash | wc -l
这条命令使用了两个管道,利用第一个管道将cat命令(显示passwd文件的内容)的输出送给grep命令,grep命令找出含有“/bin /bash”的所有行;第二个管道将grep的输出送给wc命令,wc命令统计出输入中的行数。这个命令的功能在于找出系统中有多少个用户使用bash。