– 根据狂神说Linux视频做的笔记
基础命令学习
开机登录
开机会启动许多程序,这些程序长时间运行在系统中,这类程序
在Window系统中叫“服务”,在Linux系统中叫“守护进程”。
开机登陆三种方式
- 命令行
- SSH连接
- 图形化界面登录
关机及重启
在Linux领域里,大多用在服务器上,很少会执行关机操作。
sync # 一定要先运行sync,将数据由内存同步到硬盘中
shutdown # 关机指令,可以man shutdown 查看帮助文档
shutdown -h 10 # 10分钟后关机
shutdown -h now #立马关机
shutdown -h hh:mm # 在 hh:mm 时间关机
shutdown -h +10 # 十分钟后关机
shutdown -r now # 系统立马重启
shutdown -r +10 # 十分钟后重启
reboot # 重启,等同于 shutdown -r now
halt # 关闭系统,等同于 shutdown -h now 和 poweroff
不管重启还是关闭系统,要先运行sync命令,将内存中的数据写入到磁盘里
查看系统信息
cat /etc/redhat-release # 查看CentOS版本
hostname # 查看主机名
hostname newHostName # 修改主机名
系统目录结构
- 一切皆文件
- 根目录 / , 所有的文件都挂载在这个节点下
登陆系统后,执行 ls 命令即可查看当前目录下的文件
ls /
对应的树形结构文件目录:
- /bin : bin是Binary的缩写,这个目录存放着最经常用的命令
- /boot : 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
- /dev : dev是Device(设备)缩写,存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的
- /mnt : 系统提供该目录是为了让用户临时挂载别的文件系统,可以将光驱挂载,进入目录中可以查看到光驱里的内容
- /etc : 这个目录用来存放所有的系统管理所需要的 配置文件 和子目录
- /home : 用户主目录,在Linux中,每个用户都有一个自己的目录,一般该目录是以用户名的账号命名的
- /lib : 这个目录存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件
- /lost+found : 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
- /media : Linux系统会自动识别一些设备,例如U盘、光驱等,当识别后,Linux会把识别的设备挂载到这个目录下
- /opt : 这是个给主机额外安装软件所摆放的目录。
- /proc : 这个目录是一个虚拟目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息
- /root : 该目录为系统管理员,也称作超级权限者的用户主目录
- /sbin : s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
- /srv : 该目录存放一些服务启动之后需要提取的数据
- /sys : 这是linux2.6内核很大变化,该目录下安装了2.6内核中新出现的一个文件系统 sysfs
- /tmp : 这个目录用来存放一些临时文件的,用完即丢
- /usr : 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似Windows下的program files目录
- /usr/bin : 系统用户使用的应用程序
- /usr/sbin : 超级用户使用的比较高级的管理程序和系统守护程序,Super
- /usr/src : 内核源码默认放置目录
- /var : 这个目录中存放不断扩充的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件
- /run : 这个是临时文件系统,存储系统启动以来的信息,当系统重启,这个目录文件应被删除或清除
- /www : 存放服务器网站相关的资源、环境、网站的项目
常用基本命令
目录管理
绝对路径、相对路径
绝对路径路径的全程:C:\ProgrameData\1.txt
相对路径,比如ProgrameData目录下,使用 /1.txt ,即相对路径
cd : 切换目录命令
./ : 当前目录
cd … : 返回上一级目录
ls (列出目录!)
在Linux中 ls 使用非常频繁
-a 参数 : all ,查看全部文件,包括隐藏目录
-l 参数 :列出所有文件,包括文件的属性和权限,没有隐藏文件。
所有的Linux可以组合使用!!
文件类型说明
b 块设备,是一些提供系统存取数据的接口设备,例如硬盘。
c 字符设备,是一些串行端口的接口设备,例如键盘、鼠标、打印机、tty终端。
d 目录,类似于Windows的文件夹。
l 链接文件,类似于Windows的快捷方式。
s 套接字文件(socket),用于进程之间的通信。
- 文件,分纯文本文件(ASCII)和二进制文件(binary)。
命令 说明
file filename 查看文件类型
cd 命令 切换目录
cd 目录名( 绝对路径都是以 / 开头,相对路径,对于当前目录如何寻找 …/…/ )
pwd 显示当前用户所在目录
mkdir 创建一个目录
[root@localhost programermaozk]# mkdir test1 # 创建目录
[root@localhost programermaozk]# ls
test1
[root@localhost programermaozk]# cd test1
[root@localhost test1]# mkdir test2/test3/test4
mkdir: 无法创建目录"test2/test3/test4": 没有那个文件或目录
[root@localhost test1]# mkdir -p test2/test3/test4 # 创建多级目录
[root@localhost test1]# ls
test2
[root@localhost test1]# cd test2
[root@localhost test2]# ls
test3
[root@localhost test2]#
rmdir 删除目录
[root@localhost test2]# rmdir test3
rmdir: 删除 "test3" 失败: 目录非空
[root@localhost test2]# rmdir -p test3
rmdir: 删除 "test3" 失败: 目录非空
[root@localhost test2]# rmdir -p test3/test4
[root@localhost test2]# ls
[root@localhost test2]#
rmdir仅能删除空的目录,如果下面存在文件,需要删除子文件,才能删除。还可以使用递归删除多个目录,只需要加 -p 参数即可
cp (复制文件或者目录)
cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。
语法
cp(选项)(参数)
选项
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
参数
源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;
目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
实例
如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点…的形式。例如,下面的命令将指定文件复制到当前目录下:
cp …/mary/homework/assign .
所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。如果没有文件复制的权限,则系统会显示出错信息。
将文件file复制到目录/usr/men/tmp下,并改名为file1
cp file /usr/men/tmp/file1
将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh中
cp -r /usr/men /usr/zh
交互式地将目录/usr/men中的以m打头的所有.c文件复制到目录/usr/zh中
cp -i /usr/men m*.c /usr/zh
我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是折腾来半天总结了一个方法:
cp aaa/* /bbb
复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,需要按Y来确认并且会略过aaa目录下的子目录。
cp -r aaa/* /bbb
这次依然需要按Y来确认操作,但是没有忽略子目录。
cp -r -a aaa/* /bbb
依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。
\cp -r -a aaa/* /bbb
成功,没有提示按Y、传递了目录属性、没有略过目录。
rm (移除文件或者目录)
-f 忽略不存在的文件,不会出现警告,强制删除
-r 递归删除目录
-i 互动,删除询问是否删除
rm -rf / #系统中所有文件就都被删除了~
mv 移动文件到目标目录下
-f 强制
-u 只替换已经更新过的文件
查看文件命令
- cat 由第一行开始显示文件内容,用来读文章或者读取配置文件。
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写
- nl 显示的时候,顺便输出行号,看代码的时候,一般希望看到行号
- more 一页一页的显示文件内容
- less 与 more 类似,但是比more更好的是可以往前翻页
空格翻页,上下键代表翻动页面,
q表示退出命令,
查找字符串使用 /要查询字符串向下查询,
向上查询使用?要查询的字符串
n 继续搜寻下一个,N继续搜寻上一个
- head 只看头几行,通过-n参数来决定显示几行
- tail 只看尾巴几行,通过-n参数来决定显示几行
可以使用man [命令] 来查看各个命令的使用文档,如:man cp
网络配置相关命令
ifconfig
ifconfig命令是设置或显示网络接口的程序,可以显示出我们机器的网卡信息。
最小化安装Linux发行版或者阿里基础镜像里是没有携带ifconfig命令的。需要使用yum安装ifconfig这个命令包,具体操作如下:
- 使用yum search ifconfig 查看这个命令属于哪个包
- 使用yum install 安装这个包
ip addr
主要是用来查看本地IP地址的,除此之外也有一些辅助信息
-
lo: 全称loopback,即回环地址,经常分配到 127.0.0.1 地址上,用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。
-
eth0: 网卡名,如果有多块网卡,会有多个 eth 或者其他名称。
link/ether:这个是MAC地址,唯一的,一块网卡一个MAC。
inet:网卡上绑定的IP地址,通常所说的IPV4,一块网卡可以绑定多个IP地址。在绑定IP地址时注意:windows主机会提示IP地址冲突,而linux主机无任何提示,在添加新的IP地址时务必检测一下新地址是否和原有地址冲突,避免造成访问不可用。常用检测命令:ping或arping IP;
inet6:IPV6地址 -
网络设备状态标识<BROADCAST,MULTICAST,UP,LOWER_UP>
UP:网卡处于启动状态
BROADCAST:网卡有广播地址,可以发生广播包。
MULTICAST:网卡可以发生多播包。
LOWER_UP:L1是启动的,即网线是插着的。