linux学习笔记

linux学习笔记

vi和vim编辑器

  • vi 文本编辑器
  • vim 增强版vi,具有程序编程能力等。

三种模式

命令模式

刚启动vim,就进入命令模式。
此时敲下键盘被vim识别为命令

常用命令:

切换模式

  • i 切换到输入模式,以输入字符。
  • : 切换到底线命令模式,以在最底一行输入命令。

移动光标

  • nG n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
  • gg 移动到这个档案的第一行,相当于 1G 啊!
  • n<Enter> n 为数字。光标向下移动 n 行

搜索替换

  • /word 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
  • ?word 向光标之上寻找一个字符串名称为 word 的字符串。
  • n 向上寻找
  • N 向下寻找

删除

  • nx n 为数字,连续向后删除 n 个字符。
  • dd 删除游标所在的那一整行
  • ndd n 为数字。删除光标所在的向下 n 行
  • d1G 删除光标所在到第一行的所有数据
  • dG 删除光标所在到最后一行的所有数据

复制

  • yy 复制游标所在的那一行
  • nyy n 为数字。复制光标所在的向下 n 行
  • y1G 复制游标所在行到第一行的所有数据
  • yG 复制游标所在行到最后一行的所有数据

粘贴

  • p, P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!
  • J 将光标所在行与下一行的数据结合成同一行
  • u 复原前一个动作。
  • [Ctrl]+r 重做上一个动作。

插入模式

在命令模式下按下i就进入了输入模式。

ESC,退出输入模式,切换到命令模式

底行命令模式

在命令模式下按下 :(英文冒号) 就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底行命令模式中,基本的命令有:

  • :q    退出程序
  • :q!   使用 ! 为强制离开不储存。
  • :w    保存文件
  • :wq   储存后离开,若为 :wq! 则为强制储存后离开
  • :! command 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如
    『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!

按ESC键可随时退出底线命令模式。

行号

在底行模式下:

  • :set nu      
    显示行号,设定之后,会在每一行的前缀显示该行的行号
  • :set nonu    与 set nu 相反,为取消行号!

三种模式的转换

image.png

关机和重启

sync 把内存的数据同步到磁盘,执行关机或重启命令前先执行此命令

关机

  • shutdown

      shutdown -h now 立刻关机
      shutdown -h 1   1分钟后关机
  • halt

  • systemctl pweroff

  • init 0

重启

  • reboot
  • shutdown -r now

用户登录和注销

登录

su username 切换用户

注销

用户离开Linux(UNIX)系统时,应进行注销(logout )操作。注销后的用户终端可提供给其他用户使用。

“注销”也通知了正在进行中的系统记账程序停止对该用户的记账工作。有多种方式完成用户注销,如:

  • logout 在命令行输入logout表示退出登录
  • exit 用终止当前进程执行的方式退出用户登录的进程
  • Ctrl-d 用退出shell主进程的方式注销用户

用户注销后系统回到“Login”提示符下等待下一次用户的登录。通常在用户下次进行登录时,系统会提供一些报告给用户查阅,例如用户最近一次注册的时间和使用的终端信息。

实用指令

指定运行级别

运行级别说明

  • 0 : 关机
  • 1 : 单用户(找回丢失密码)
  • 2 : 多用户状态没有网络服务
  • 3 : 多用户状态有网络服务
  • 4 : 系统未使用保留给用户
  • 5 : 图形界面
  • 6 : 系统重启

帮助指令

man - 获得帮助信息

man 命令或配置文件

help 指令

获得shell内置命令的帮助信息

help 命令

文件目录类

pwd

显示当前工作目录的绝对路径

ls

ls [选项] [目录或是文件]

常用选项:

  • -a:显示当前目录所有的文件和目录,包括隐藏的
  • -l: 以列表的方式显示信息

cd

切换到指定目录

cd~ / cd  : 回到自己的家目录
cd.. : 回到当前工作目录的上一级目录

mkdir

创建目录

-p:创建多级目录

rmdir

删除空目录,目录下有内容时无法删除

touch

创建空文件

cp

拷贝文件到指定目录

cp [选项] source(源路径) dest(目标路径)

-r:递归复制整个文件夹

mv

移动文件

mv oldNameFiel newNameFile

rm

移除文件或目录

rm [选项] 要删除的文件或目录

常用选项
-r:递归删除整个文件夹
-f:强制删除不提示

cat

查看文件内容

-n:显示行号

more

基于vi编辑器的文本过滤器,以全屏幕方式按页显示文本文件内容

常用操作

  • Enter 向下n行,需要定义。默认为1行
  • 空格键 向下滚动一屏
  • Ctrl+B 返回上一屏
  • = 输出当前行的行号
  • :f 输出文件名和当前行的行号
  • V 调用vi编辑器
  • !命令 调用Shell,并执行命令
  • q 退出more

less

与more相似,适合查看大型文件

echo

输出内容到控制台

echo [选项] [输出内容]

显示文件开头部分,默认显示前10行

head -n 5 显示前5行

tail

输出文件中尾部的内容,默认10行

tali -n 5:查看文件尾5行

tail -f :实时追踪该文档的所有更新

>指令和>>指令

  • >:输出重定向(覆盖)
  • >>:追加(文件尾)

基本语法

  • ls -l > 文件:列表内容写入文件中(覆盖写)
  • ls -al >> 文件:列表内容追加写入文件(文件尾处)
  • cat file1 > file2:将文件1的内容覆盖到文件2

ln

软链接也称为符号链接,存放链接其他文件的路径

基本语法:
给源文件创建一个软链接

ln -s [源文件或目录] [软链接名]

注:当使用pwd指令查看目录时,看到的仍是软链接所在目录

history

查看已经执行过的历史命令

history n:查看最近使用的n行命令
!5:执行历史编号为5的命令

时间日期类

date

显示当前日期

基本语法

  • date + %Y:显示当前年份
  • date + %m:显示当前月份
  • date + %d:显示当前是哪一天
  • date "%Y-%m-%d %H:%M:%S":显示年月日时分秒

设置系统当前时间

date -s 字符串时间

cal

显示日历

搜索查找类

find

find指令从指定目录向下递归其各个子目录,将满足条件的文件或者目录显示在终端

常用选项

  • -name:按照指定的文件名查找模式查找文件
  • -user:查找属于指定用户名的所有文件
  • -size:按照指定文件大小查找文件

应用实例

  1. 按文件名:根据名称查找/home目录下的hello.txt文件

     find /home -name hello.txt
  2. 按拥有者:查找/opt目录下,用户名为nobody的文件

     find /opt -user nobody
  3. 查找整个linux系统下大于200M的文件(+n大于 -n小于 n等于,单位有K,M,G)

     find / -size +200M

grep指令和管道符号 |

  • grep 过滤查找
  • 管道符“**|**”,表示将前一个命令的处理结果输出传递给后面的命令处理

语法:

grep [选项] 查找内容 源文件

常用选项:

  • -n:显示匹配行及行号
  • -i:忽略字母大小写

压缩和解压类

gzip和gunzip

gzip用于压缩文件,gunzip用于解压文件

基本语法:

gzip:压缩文件,只能将文件压缩为*.gz文件
gunzip:解压缩文件命令

zip和unzip

zip用于压文件,unzip用于解压

基本语法:

    zip <-r(递归压缩,压缩目录)> xx.zip 要压缩的内容
    unzip <-d 目录(指定解压后文件的存放目录)> xx.zip 

tar

打包指令,打包后的文件是 .tar 文件

基本语法:

打包目录,压缩后的文件格式.tar

tar [选项] xx.tar 打包的内容

常用选项:

  • -c:产生.tar打包文件
  • -v:显示详细信息
  • -f:指定压缩后的文件名
  • -z:打包同时压缩,此时产生的文件后缀名为.tar.gz
  • -x:解包.tar文件

用户管理

用户

添加用户

useradd username

注:

  • 用户创建成功后,会自动创建和用户同名的家目录 /home/username

  • useradd -d dir username 给新创建的用户指定家目录

修改口令

passwd username

删除用户

userdel username(保留家目录)
userdel -r username(同时删除家目录)

修改用户名

usermod -l new-name old-name

锁定用户使其不能登录

usermod -L username

查询用户信息指令

基本语法

id username 

切换用户

su username

查看当前用户/登录用户

whoami
who am i

用户组

新增组

groupadd groupname

删除组

groupdel groupname

修改用户的组

usermod -g groupname username

用户和组相关文件

/etc/passwd 文件

用户的配置文件,记录用户的各种信息

每行的含义:

    用户名:口令:用户标识号:组标识号:注释行描叙:主目录:登录shell

/etc/shadow 文件

的配置文件,记录linux包含的组的信息

每行的意义:

    组名:口令:组标识号:组内用户列表

组管理和权限管理

linux组的基本介绍

在linux中,每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者所在组其他组

文件/目录 所有者

一般为文件的创建者,谁创建了该文件,就自然成为该文件的所有者。

查看文件的所有者

指令:ls -l 的第一个用户为文件所有者

修改文件所有者

指令:chown 用户名 文件名

组的创建

基本指令

groupadd 组名

将用户放大指定组

useradd -g groupname username

文件/目录 所在组

当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组。

查看文件/目录所在组

基本指令:

ls -ahl

修改文件/目录所在组

基本指令

chgrp 组名 文件名

其他组

除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组

改变用户所在组

在添加用户时,可以指定将该用户添加到那个组,使用root的管理权限可以改变某个用户所在的组。

改变用户所在组

usermod -g 新组名 用户名
usermod -d 目录名 用户名 改变该用户登陆的初始目录

权限的基本介绍

ls -l 中的显示内容如下

0-9位说明

第0位确定文件类型(d,-,l,c,b)

  • l是链接,相当于windows的快捷方式
  • d是目录,相当于windows的文件夹
  • c是字符设备文件,如:鼠标、键盘
  • b是块设备,如:硬盘

第1-3位

确定所有者(该文件的所有者),拥有该文件的权限 – user

第4-6位

确定所属组(同用户组的)拥有该文件的权限 – group

第7-9位
确定其他用户拥有该文件的权限 – other

rwx权限

rwx作用到文件

  • r代表可读:可以读取,查看
  • w代表可写:可以修改,但不代表可以删除文件,删除一个文件的前提是对该文件所在的目录有写权限,才能删除该文件
  • x代表执行:可以被执行

rwx作用到目录

  • r代表可读:可以读取,ls查看目录内容
  • w代表可写:可以修改,对目录内创建+删除+重命名目录
  • x代表可执行:进入该目录

修改权限—-chmod

修改文件或目录的权限

通过+,-,=变更权限

+:赋予某权限

-:去除某权限

  • u:所有者
  • g:所有组
  • o:其他人
  • a:所有人(u,g,o的总和)

用法示例

  1. chmod u=rwx,g=rx,o=x 文件/目录名
  2. chmod o+w 文件/目录名
  3. chmod a-x 文件/目录名

通过数字变更权限

r=4,w=2,x=1
用法:

`chmod u=rwx,g=rx,o=x`  文件/目录名
等同于
chmod 751  文件/目录名

修改文件所有者—-chown

用法

改变所有者

chown newowner 文件/目录 

改变所有者和所在组

chown newowner:newgroup 文件目录

-R:如果是目录。则使其下所有子文件或目录递归生效

修改文件/目录所在组—-chgrp

改变所在组:

chgrp newgroup 文件/目录