linux学习笔记

文章目录

  • linux学习笔记
    • 一、基本命令
      • 切换用户:su 用户名
        • - ls 显示当前目录下的**所有文件和子目录**
        • - 对-rw------- 1 root root 955 Sep 24 00:08 .bash_history显示解释
        • - cd 切换目录
        • - pwd 是 Print Working Directory (打印工作目录)的缩写,显示当前路径
        • - mkdir 命令,是 make directories 的缩写,用于创建新目录
        • -rmdir(remove empty directories 的缩写),用于删除空目录
        • touch:创建文件,修改文件的时间参数
        • -cp 主要用来复制文件和目录
        • -rm命令:删除文件或目录
        • mv命令:移动文件或改名
        • cat 的用法
        • more和less 命令
        • > 和 >>
        • tail
        • history 显示已经执行过的历史命令
        • 时间日期类命令:date 和cal
        • 搜索查找类 find和locate、grep
        • 压缩和解压缩类gzip和gunzip、zip和unzip 、tar
        • 常用快捷键
        • 查询用户信息和修改用户密码和删除用户的方法
        • 增加用户时直接加上组、修改用户组
        • 绝对路径和相对路径
        • chkconfig命令的使用(重要)(永久和临时关闭防火墙和打开防火墙)
    • 二、基础知识
      • 2.1、参数的作用
      • 2.2、命令提示符
      • 2.3、基本常识
      • 2.4、Linux命令执行过程
      • 2.5、三种连接方式
      • 常用的文件目录
    • 三、组管理和权限管理
      • 修改文件所有者和组chown
      • 修改文件所在组、改变用户所在组chgrp和usermod
      • 文件或者目录权限的修改:chmod
    • 四、磁盘分区和挂载
        • 如何增加一块硬盘
        • 磁盘情况查询
    • 五、 网络配置
    • 六、进程管理,查看进程ps ,终止进程kill和killall
        • 服务(service)管理
        • 动态监控进程:top
        • 查看系统网络情况netstat(重要)
    • rpm和yum
        • 查询rpm包
        • 卸载rpm包
        • 安装rpm包
        • yum的基本命令
      • 面试题

linux学习笔记

一、基本命令

切换用户:su 用户名

- ls 显示当前目录下的所有文件和子目录

- -l 显示文件的详细信息
- -a 显示全部的文件,包括隐藏的文件
-  -h 以人们易读的方式显示文件或目录大小,如 234MB、2GB 

可以组合使用。比如:
ls -lh /root/ 意思是显示root目录下的所有文件和目录信息,并以诸如200m的大小形式显示

- 对-rw------- 1 root root 955 Sep 24 00:08 .bash_history显示解释

第一列:规定了不同的用户对文件所拥有的权限,具体权限的含义将在后续章节中讲解。
第二列:引用计数,文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录有多少个一级子目录。
第三列:所有者,也就是这个文件属于哪个用户。默认所有者是文件的建立用户。
第四列:所属组,默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。
第五列:大小,默认单位是字节。
第六列:文件修改时间,文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个时间不是文件的创建时间。
第七列:文件名或目录名

- cd 切换目录

linux学习笔记_第1张图片

- pwd 是 Print Working Directory (打印工作目录)的缩写,显示当前路径

- mkdir 命令,是 make directories 的缩写,用于创建新目录

  • -p 选项递归建立目录
[root@localhost ~]# mkdir lm/movie/jp/cangls
mkdir:无法创建目录"lm/movie/jp/cangls":没有那个文件或目录
[root@localhost ~]# mkdir -p lm/movie/jp/cangls
[root@localhost ~]# ls
anaconda-ks.cfg cangls install.log install.log.syslog lm
[root@localhost ~]# ls lm/
movie
#这里只查看一级子目录,其实后续的jp目录、cangls目录都已经建立
  • -m 选项自定义目录权限
[root@localhost ~]# mkdir -m 711 test2
[root@localhost ~]# ls -l
drwxr-xr-x  3 root  root 4096 Jul 18 12:50 test
drwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2

仔细看上面的权限部分,也就是 ls 命令输出的第一列数据(绿色部分),
test 和 test1 目录由于不是使用 -m 选项设定访问权限,
因此这两个目录采用的是默认权限(这里的默认权限值是 755,
后续章节再详细介绍默认权限)。
而在创建 test2 时,使用了 -m 选项,通过设定 711 权限值来给予新的目录 
drwx--x--x 的权限

-rmdir(remove empty directories 的缩写),用于删除空目录

touch:创建文件,修改文件的时间参数

【例 1】 touch 命令创建文件。

[root@localhost ~]#touch bols
#建立名为 bols 的空文件

【例 2】 在例 1 的基础上修改文件的访问时间

[root@localhost ~]#ll --time=atime bols
#查看文件的访问时间
-rw-r--r-- 1 root root 0 Sep 25 21:23 bols
#文件上次的访问时间为 9252123
[root@localhost ~]#touch bols
[root@localhost ~]#ll --time=atime bols
-rw-r--r-- 1 root root 0 May 15 16:36 bols
#而如果文件已经存在,则也不会报错,只是会修改文件的访问时间。

-cp 主要用来复制文件和目录

cp 命令的基本格式如下:

[root@localhost ~]# cp [选项] 源文件 目标文件

选项:

-a:相当于 -d、-p、-r 选项的集合,这几个选项我们一一介绍;
-p:复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间);
-r:递归复制,用于复制目录;

【例 1】cp 命令基本用法

cp 命令既可以复制文件,也可以复制目录。我们先来看看如何复制文件,例如:
**复制文件**
cp x.txt data/
**复制目录**
cp -r test/ data/ 将test整个目录,复制到data下
**强制覆盖目录下的文件或者目录**
\cp -r test/ data/
[root@localhost ~]# touch cangls
#建立源文件
[root@localhost ~]# cp cangls /tmp/
#把源文件不改名复制到 /tmp/ 目录下
如果需要改名复制,则命令如下:
[root@localhost ~]# cp cangls /tmp/bols
#改名复制

**复制目录只需使用“-r”选项即可,例如:

[root@localhost ~]# mkdir movie
#建立测试目录
[root@localhost ~]# cp -r /root/movie/ /tmp/
#目录原名复制

-rm命令:删除文件或目录

此命令的基本格式为:

[root@localhost ~]# rm [选项] 文件或目录
删除非空的目录
rm -rf 目录
选项:

-f:强制删除(force),和 -i 选项相反,使用 -f,系统将不再询问,而是直接删除目标文件或目录。
-i:和 -f 正好相反,在删除文件或目录之前,系统会给出提示信息,使用 -i 可以有效防止不小心删除有用的文件或目录。
-r:递归删除,主要用于删除目录,可删除指定目录及包含的所有内容,包括所有的子目录和文件。

注意:加入了强制功能之后,删除就会变得很简单,但是需要注意,数据强制删除之后无法恢复,数据恢复很难恢复完整的数据,一般能恢复 70%~80% 就很难得了。

mv命令:移动文件或改名

该命令的基本格式如下:

[root@localhost ~]# mv 【选项】 源文件 目标文件

选项:

-f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;
-i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);
-n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;
-v:显示文件或目录的移动过程;
-u:若目标文件已经存在,但两者相比,源文件更新,则会对目标文件进行升级;

同 rm 命令类似,mv 命令也是一个具有破坏性的命令,如果使用不当,很可能给系统带来灾难性的后果

【例 1】移动文件或目录。

[root@localhost ~]# mv cangls /tmp
#移动之后,源文件会被删除,类似剪切
[root@localhost ~]# mkdir movie
#创建movie目录
[root@localhost ~]# mv movie/ /tmp
#将movie移动到tmp的目录下

【例 2】强制移动。

之前说过,如果目标目录下已经存在同名文件,则会提示是否覆盖,需要手工确认。这时如果移动的同名文件较多,则需要一个一个文件进行确认,很不方便。
如果我们确认需要覆盖已经存在的同名文件,则可以使用 "-f" 选项进行强制移动,这就不再需要用户手工确认了。例如:
[root@localhost ~]# touch cangls
#重新建立文件
[root@localhost ~]# mv -f cangls /tmp
#就算 /tmp/ 目录下已经存在同名的文件,由于"-f"选项的作用,所以会强制覆盖

【例 3】改名。

如果源文件和目标文件在同一目录中,那就是改名。例如:
[root@localhost ~]# mv bols lmls
#把 bols 改名为 lmls

cat 的用法

以只读的方式查看文件内容,也有合并文件的作用
cat 【选项】 要查看的文件
-n 显示行号
cat -n 要查看的文件加上 | more 能够进行分页浏览

more和less 命令

more 以全屏幕的方式按页显示文本文件的内容
格式:more 文件
例如:more /etc/profile
q键代表立刻结束more
less 支持多终端显示,适用于大型文件,它的效率比较高
格式:less 要查看的文件

> 和 >>

输出重定向:会将原来的文件覆盖
ls -l > a.txt 将 ls -l 的显示内容覆盖写入到a.txt中,如果文件不存在,则会创建
cat 文件1 > 文件2 将文件1的内容覆盖到文件2
** >>的用法 cat 文件1>> 文件2 将文件1的内容追加到文件2
echo“内容” >> 文件

tail

基本语法
tail 文件 (查看文件尾部后十行)
tail -f 文件 (实时追踪该文档的所有更新,工作经常使用)
比如: tail -f aa.txt 监控aa文档的实时更新

history 显示已经执行过的历史命令

基本语法:history (查看所有的历史命令)
history 10 查看最后面执行的十个命令
!10 执行编号为10的指令

时间日期类命令:date 和cal

  • date (显示当前时间)
    date -s “2019-01-02 06:30:20” 将系统时间设置为2019.。。。
  • cal 查看当前日历
    cal 年份 显示一年的时间

搜索查找类 find和locate、grep

  • find
    基本语法:find 搜索范围 选项
    find /root -name hello.txt 在root目录下,按文件名查找hello.txt
    find /root -user root 查找/root目录下,用户名称为root的文件
    find / size +20M 在根目录下,查找大于20m的文件 (+n 是大于,-n是小于,=n是等于,M必须大写,也可查找K字节的大小)
  • grep 过滤查找 “|”表示将前一个命令的处理结果传递给后面的命令处理
    基本语法:grep 【选项】查找内容 源文件
    -n 显示匹配行和行号
    -i 忽略字母大小写
    例如:cat hello.txt | grep -ni yes
    显示hello.txt 文件,经过管道| ,交给grep 进行查找处理,显示行号(并且不区分大小写),查找的内容是yes

压缩和解压缩类gzip和gunzip、zip和unzip 、tar

  • gzip用于压缩文件 gunzip用于解压缩文件(只能对单个文件)
    当我们使用gzip对文件进行压缩后,不会保留原来的文件

  • zip和unzip
    这个在项目打包发布中很有用
    基本语法:zip 【选项】 xxx.zip(压缩后文件的名字) 将要压缩的内容(可以是文件和目录)
    -r 是递归压缩,压缩目录
    zip -r xxx.zip /home/ 将/home下的所有文件压缩成xxx.zip
    unzip 【选项】xxx.zip 解压缩文件
    -d<目录> :指定解压后文件的存放目录
    unzip -d /opt/tmp/ xxx.zip 将xxx.zip 解压到 /opt/tmp目录下

  • tar 打包指令,最后打包后的文件是.tar.gz的文件
    基本语法:tar 【选项】 xxx.tar.gz(打包目录)
    tar -czvf xxx.tar.gz a1.txt a2.txt -C /home将a1和a2文件压缩成xxx.tar.gz 并将压缩的文件存放到 /home目录下
    tar -xzvf a.tar.gz -C /home 将压缩文件解压到 home目录下
    注意:解压用czvf ,压缩用xzvf

常用快捷键

i: 在当前光标所在字符的前面,转为输入模式;
I:在当前光标所在行的行首,转换为输入模式
a: 在当前光标所在字符的后面,转为输入模式;
A:在当前光标所在行的行尾,转换为输入模式
o: 在当前光标所在行的下方,新建一行,并转为输入模式;
O:在当前光标所在行的上方,新建一行,并转为输入模式;
拷贝当前行 yy ,拷贝当前行及向下的四行(一共五行) 5yy 并粘贴 p
**删除当前的行 dd 5dd代表删除下面的五行**
**设置文件的行号:set nu 取消行号 set nonu**
**到达文档的末尾:G**
**到达行首:gg**
查找文档内的内容:输入:/ ,在输入关键字,如果要继续查找,输入小n
例如::/if 就会找到一个if,接着找按n
** 将光标移动到某一行方法
第一步:显示行号:set nu
第二部:输入10这个数(不在编辑模式下输入)
第三部:输入shift+g

向上滚动一屏 crtl + b
向下滚动一屏 ctrl + f

查询用户信息和修改用户密码和删除用户的方法

查询用户信息
id 用户名
修改用户密码
passwd 用户名
删除用户的方法
删除用户xm 但是保留家目录
userdel xm
删除用户xm和家目录
userdel -r xm
** 一般情况下,不会删除家目录**
从用户返回到root用户下
exit命令

增加用户时直接加上组、修改用户组

useradd -g 用户组 用户名
** 修改用户组**
usermod -g 要添加到的用户组 用户名

绝对路径和相对路径

  • 当前工作目录是/root,我们希望进入到/home目录下,
    绝对路径:/home ,就是从根目录开始定位
    相对路径:…/home,从当前工作目录下开始定位到需要的目录

chkconfig命令的使用(重要)(永久和临时关闭防火墙和打开防火墙)

通过此命令可以给每个服务器的各个运行级别设置自启动/关闭

  • 查看服务 chkconfig --list 后面加上| grep xxx 能够精确搜到xxx
  • chkconfig 服务名 --list 直接显示 ***服务名***的运行级别
    应用案例
  • 在所有运行级别下,关闭防火墙
    chkconfig iptables off
  • 永久开启防火墙
    chkconfig iptables on
  • 当在运行级别为5时,关闭防火墙
    chkconfig – level 5 iptables off
  • 临时打开或者关闭防火墙
    service iptables on/off

二、基础知识

2.1、参数的作用

参数是命令的操作对象,一般文件、目录、用户和进程等可以作为参数被命令操作。比如:

[root@localhost ~]# ls -l anaconda-ks.cfg
-rw-------.1 root root 1207 1 月 14 18:18 anaconda-ks.cfg

为什么一开始 ls 命令可以省略参数?那是因为有默认参数,默认参数是当前所在位置,所以会显示当前目录下的文件名。

2.2、命令提示符

登录系统后,第一眼看到的内容是:
[root@localhost ~]#
这就是 Linux 系统的命令提示符。那么,这个提示符的含义是什么呢?
[]:这是提示符的分隔符号,没有特殊含义。
root:显示的是当前的登录用户,笔者现在使用的是 root 用户登录。
@:分隔符号,没有特殊含义。
localhost:当前系统的简写主机名(完整主机名是 localhost.localdomain)
~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录
#:命令提示符,Linux 用这个符号标识登录的用户权限等级。如果是超级用户,提示符就是 #;如果是普通用户,提示符就是 $。

2.3、基本常识

  • 分辨目录和文件:Linux 用蓝色代表目录,其他颜色则表示是文件
    -每个文件有3个时间参数
    • 访问时间access time 简称atime。只要文件的内容被读取,访问时间就会更新
    • 数据修改时间(Modify Time,简称 mtime):当文件的内容数据发生改变,此文件的数据修改时间就会跟着相应改变。
    • 状态修改时间(Change Time,简称 ctime):当文件的状态发生变化,就会相应改变这个时间。比如说,如果文件的权限或者属性发生改变,此时间就会相应改变。

2.4、Linux命令执行过程

1) 判断路径
判断用户是否以绝对路径或相对路径的方式输入命令(如 /bin/ls),如果是的话直接执行。
2) 检查别名
Linux 系统会检查用户输入的命令是否为“别名命令”。要知道,通过 alias 命令是可以给现有命令自定义别名的,即用一个自定义的命令名称来替换原本的命令名称。
例如,我们经常使用的 rm 命令,其实就是 rm -i 这个整体的别名:

[root@localhost ~]# alias rm
alias rm='rm -i'

这使得当使用 rm 命令删除指定文件时,Linux 系统会要求我们再次确认是否执行删除操作。例如:

[root@localhost ~]# rm a.txt <-- 假定当前目录中已经存在 a.txt 文件
rm: remove regular file 'a.txt'? y  <-- 手动输入 y,即确定删除
[root@localhost ~]#

这里可以使用 unalias 命令,将 Linux 系统设置的 rm 别名删除掉,执行命令如下:

[root@localhost ~]# alias rm
alias rm='rm -i'
[root@localhost ~]# unalias rm
[root@localhost ~]# rm a.txt
[root@localhost ~]#  <--直接删除,不再询问

注意,这里仅是为了演示 unalisa 的用法,建议读者删除 rm 别名之后,再手动添加到系统中,执行如下命令即可再次成功添加:
[root@localhost ~]# alias rm=‘rm -i’
3) 判断是内部命令还是外部命令
Linux命令行解释器(又称为 Shell)会判断用户输入的命令是内部命令还是外部命令。其中,内部命令指的是解释器内部的命令,会被直接执行;而用户通常输入的命令都是外部命令,这些命令交给步骤四继续处理。
内部命令由 Shell 自带,会随着系统启动,可以直接从内存中读取;而外部命令仅是在系统中有对应的可执行文件,执行时需要读取该文件。

判断一个命令属于内部命令还是外部命令,可以使用 type 命令实现。例如:

[root@localhost ~]# type pwd
pwd is a shell builtin  <-- pwd是内部命令
[root@localhost ~]# type top
top is /usr/bin/top  <-- top是外部命令

4) 查找外部命令对应的可执行文件
当用户执行的是外部命令时,系统会在指定的多个路径中查找该命令的可执行文件,而定义这些路径的变量,就称为 PATH 环境变量,其作用就是告诉 Shell 待执行命令的可执行文件可能存放的位置,也就是说,Shell 会在 PATH 变量包含的多个路径中逐个查找,直到找到为止(如果找不到,Shell 会提供用户“找不到此命令”)。

2.5、三种连接方式

  • 桥连接:可以和其他系统通信,但是会造成ip冲突
  • nat 网络地址转换。可以访问外网,不会造成冲突
  • 主机模式。不能访问外网。

常用的文件目录

  • bin 存放着最常使用的命令
  • sbin 系统管理员使用的程序
  • home 普通用户的主目录,创建用户后,都会在home下出现
  • dev 设备文件。类似于设备管理器
  • media 识别U盘、光驱等,识别后,会挂在到这个目录
  • mnt 临时挂在其他系统的目录
  • opt 存放安装软件的目录
  • var 存放着不断扩充的内容,** 习惯将经常修改的目录放在这个目录下**

三、组管理和权限管理

修改文件所有者和组chown

chown 新用户名 文件名
chown tom a.txt(a文件属于root,通过chown命令,用户名改成了tom)
chown 新用户名:新组 文件 改变用户的所有者和所有组
-R 如果是目录,则使其所有子文件或者目录递归生效
chown -R tom kkk/ 将kkk目录下的所有文件,包括子目录和子目录下的所有文件,递归的将文件、目录的所有者改成tom

修改文件所在组、改变用户所在组chgrp和usermod

改变文件所在组
chgrp 组名 文件名
例如:chgrp tom or.txt(将or.txt的组名root,改成tom组名)
改变用户所在组
usermod -g 组名 用户名

-R是递归更改文件所在组

文件或者目录权限的修改:chmod

通过数字变更权限
规则:r=4,w=2,x=1,rwx=7
chmod u=rwx,g=rx,o=x 文件目录名
相当于 chmod 751 文件目录名

例如:chmod 755 /home/abc.txt

四、磁盘分区和挂载

如何增加一块硬盘

lsblk(老师不离开)查看当前系统的分区情况
lsblk -f 查看系统的分区和挂载的情况

  • 虚拟机添加硬盘

  • 分区 fdisk /dev/sdb

  • 格式化 mkfs -t ext4 /dev/sdb1

  • 挂载 先创建一个 /home/newdisk ,挂载mount /etc/sdb1 /home/newdisk

  • 设置自动挂载(永久挂载,当重启系统后,仍然可以挂载到目录)
    vi /etc/fstab
    添加
    /etc/sdb1 /home/newdisk ext4 defaults 0 0

  • 最后mount -a 实现永远挂载
    卸载硬盘
    umount 挂载目录
    例如:umount /dev/sdb1

磁盘情况查询

基本语法:df -h 查询系统整体磁盘的使用情况

五、 网络配置

指定固定的ip
编辑 /etc/sysconfig/networi-scripts**/ifcfg-eth0**
linux学习笔记_第2张图片
重启网络:service network restart
linux学习笔记_第3张图片

六、进程管理,查看进程ps ,终止进程kill和killall

查看进程的指令是ps,一般使用 ps -aux
ps -aux | grep sshd 查看有没有sssh服务

终止进程kill
kill 【选项】 进程号
-9 表示强迫进程立即停止
killall 进程名称 /通配符
例如:kill -9 4000
killall gedit(终止多个gedit编辑器)

服务(service)管理

服务本质是进程,运行在后台,会监听某个端口。
service 服务名 start| stop| status| restart 这种方法只是临时生效
在centos7后,不再使用service ,而是systemctl

动态监控进程:top

查看系统网络情况netstat(重要)

基本语法:netstat 【选项】
常用的: netstat -anp
-an 按一定顺序排列输出
-p 显示哪个进程在调用

rpm和yum

查询rpm包

rpm -qa (| grep xxx ) 查询 已安装的rpm列表
rpm-qa | grep firefox 查询有没有安装firefox
rpm -q 软件包名 查询软件包是否暗转
例如:rpm -q firefox
rpm -qi 软件包名:查询软件包信息
rpm -ql firefox 查询rpm包的文件安装到哪里去了

卸载rpm包

rpm -e rpm包的名称
例如:rpm -e firefox

安装rpm包

rpm -ivh rpm包全路径名称
例如:rpm -ivh firefox-42.1.rpm
i 表示安装(install)
v=verbose 提示
h=hash 进度条

yum的基本命令

yum list 查询yum服务器的能够安装的软件列表
安装指定的yum包
yum install xxx 下载安装

面试题

1、如何找回root密码

  • 进入单用户模式,然后修改密码。因为进入单用户模式,root不需要密码就可以登录。

linux有任务调度的功能----------
比如每天两点钟将mysql备份

你可能感兴趣的:(linux学习)