linux学习笔记


linux基本命令学习笔记

基本命令符的含义

  • 终端符号含义解释
    2
  • mujie 用户名,表示现在进行操作的是mujie这个用户
    ubuntu 主机名称,我现在示例的主机是ubuntu
    “~“ 指示用户位置,表示家目录[home目录]
    Desktop 指示用户位置,表示我现在处于桌面目录中
  • 路径的概念
    绝对路径:从根目录开始到该目录的全部路径,例如:D:\CTF\boke\mybolg\hexoblog 就是到hexoblog的绝对路径
    相对路径:指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系,比如我现在如果处于mybolg文件夹中,那么hexoblog和boke两个
    相邻路径都是相对与mybolg文件夹的相对路径。
  • 命令的格式 cat是用于查看文件的命令,-b是选项,mu是文件夹名称
    每个选项格式均为[-选项字母]看情况选择是否添加
    选项可连续使用,如ls -alh

linux学习须知

  • 软件包的概念
    linux系统的常用软件都储存在数据库中,下载时只是用命令从数据库中下载,所以非常方便。

  • 软件源
    软件源是指下载软件的数据库,因为linux是国外的系统,所以如果按默认软件源,下载软件的速度会非常感人。所以有时需要将软件源设置到国内的镜像,以提升下载速度。

  • Tab键
    快速补齐命令,是linux系统操作是非常常用的按键。还可用于忘记命令时进行提示等操作,

命令笔记

文件的创建&目录切换

文件创建命令

  • touch
    创建一个文件,例:touch 111.txt 意为创建一个名为111.txt的文件
    同时创建多个同级文件,例 touch 111 112 113 114
  • mkdir
    创建一个文件夹,例:mkdir 111 意为创建一个名为111的文件夹
    同时创建多个同级目录,例 mkdir 111 112 113 114

    -p选项
    同时创建多个递归目录,例 mkdir -p 111/112/113/114

目录切换命令

  • cd
    切换目录
    cd .. 回到上一级目录
    cd . 留在当前目录
    cd /切换至根目录
    cd -切换至上一次工作路径
    cd [目录名] 切换到指定目录,
    注:cd 命令相对路径只能一级一级切换,如同图形界面只能一个一个打开文件夹
     cd命令绝对路径可以直接打开目标文件,无需一级一级切换。  
    

查看文件&文件复制与移动删除

查看文件命令

  • ls 查看当前目录下的文件
    -a选项,查看所有文件,包括隐藏文件。例
    1

  • 其中文件名前有点的为隐藏文件

  • l选项,查看该目录下文件的详细信息
    ![4 - 副本](4 - 副本.png)

  • h选项,使查看到的内容更加人性化
    这里直观的看到内存从一些看不懂的数字变为了看的懂的表示方法
    5

  • tree 以树状图的方式查看所在目录下的文件
    需要运行命令下载,按终端提示即可
  • cat 查看文件内容
  • b选项,将查看到的内容输出行号,空行不输出
    6
  • 如图3行和4行中间无行号

-n选项,输出所有行号,包括空行。
7如图可见空行也输出了行号

  • more 查看文件内容
    基本用法同cat类似,但如遇到内容极多的文件,cat命令直接显示至最底部,more从最开始按页显示。
    8
  • 按空格一次翻一页
    按Enter向下 n 行,需要定义。默认为 1 行
    按Ctrl+B后退一页
    按Ctrl+F向前一页
    按q退出查看
  • head 显示文件内容(默认十行)
    格式:head [-n 行数] 文件名
    head同more一般,可以按页查看
  • tail 显示文件后几行,以动态显示
    -f选项,表示持续查看文件,直到按Ctrl+C结束
  • grep 查看文件
    不同于cat和more,grep后接字符可查找指定内容
    如grep 11 mu 意为查看mu文件中所有包含11的行
  • pwd 查看当前工作路径

文件的复制&移动&删除

  • cp 复制文件
    格式为cp (需复制文件的位置)/[需复制文件的文件名] (复制后文件的位置)/ [复制后文件的文件名]
    括号内内容可不选,仅用于从一个大目录到另一个大目录
    如cp ./ mu ~/Desktop mi 意为将当前目录下的文件mu复制到桌面,并命名为mi(同一位置不能出现两个同名文件)
    -i选项,出现重名文件询问是否覆盖
    9

  • mv 对文件重命名或移动文件
    在同一目录中操作,如mv mu mi意为将mu文件重命名为mi
    移动至其他文件夹夹,格式等同与cp命令但无需移动后文件名,如mv mu ./114意为将m文件mu移动至114文件夹

  • rmdir 删除文件夹
    rmdir命令只能删除文件夹,无法删除文件
    与创建文件夹命令mkdir对应

  • rm 删除文件
    rm 后加文件名可删除文件,但无法删除文件夹

  • r选项,删除文件夹和目录,如rm -r 114是删除114这个文件夹

  • f强制删除

  • rf选项,删除且不询问

  • i选项,删除前逐一询问
    注:rm -r命令需谨慎使用,一不小心就会成rm -rf / 删库

  • clear 清空终端页面内容与缓存,超级常用的命令。

用户权限及组管理

用户权限详解

  • ls -l 查看页面解释
    4
    解释顺序从左到右
    第一个d(-)说明文件类型,d为文件夹,-为文件
    rwxrwxr-x 三位数为一组,从左到右依次为拥有者权限,组权限,其他人的权限
    r 可读权限,常用数字4代替
    w 可写权限,常用数字2代替
    x 可执行权限,常用数字1代替

第一个mujie意为该目录的拥有者(创建者)为用户mujie,对应第一组权限
第二个mujie意为组名称为mujie,对应第二组权限

root权限的获取

  • 获取命令
    sudo passwd root 获取root权限并设置密码
    12
    设置后用su(切换用户命令)即可进入root
    设置后使用sudo可用root运行后续命令,但只能进入五分钟,超过五分钟需重新输入密码

权限的修改

  • chmod 修改文件权限
    chmod后常跟权限选项
    例:chmod +r 1 给所有用户1文件的可读权限
    chmod -r 1 给所有用户取消对1文件的可读权限
    r w x 用法均相同
    10
  • -指定权限修改
    指定修改文件权限用数字表示
    -R修改一个目录下所有文件权限
    例:chmod -R 777 1
    这里7表示权限所对应的数字和,此时为rwx(4+2+1=7),其他同理
    11

创建组,删除组&查看组,修改文件所属组

创建与删除组

创建组与删除组均为group起头
创建组与删除组均需在root权限下运行或使用sudo命令

  • groupadd 创建组
    例:sudo groupadd 1234 创建一个名为1234的组
  • groupdel 删除组
    例:sudo groupdel 1234 删除名为1234的组
    查看组&修改文件所属组
  • 查看组
    首先须知,linux中,所有组的信息均储存在etc目录下的group文件中
    故,无改动情况下,用任意文件查看命令均可查看
    例:cat /etc/group
    13
  • 修改文件所属组
    chgrp
    各式:chgrp [修改的目标组] [修改的文件名]
    例chgrp 12345 1
    14如图可见组名从原来的mujie变成了12345

增加与删除用户

  • useradd 增加用户
    -m选项,自动生成该用户的家目录
    -g选项,指定用户所在组,否则自动创建与增加用户同名的组
    例:sudo useradd -mg zhangsan muyu
    15

  • 16

  • userdel 删除用户
    -r选项,同时删除创建的家目录
    例:sudo userdel -r muyu
    17

  • 注:在linux中,用户数据保存在etc目录下的passwd文件中,查看用户只需要用任意查看命令查看即可
    例:cat /etc/passwd

  • passwd 添加用户的密码
    格式:passwd [用户名]
    一般每次创建用户后都需要设置密码
    例:sudo passwd muyu
    18切换用户&查看用户信息

  • su 切换用户
    只输入su时,默认切换至root用户(管理员用户)
    su [用户名] 切换至目标目录,但不会切换至目标文件夹
    su - 用户名 切换至目标用户的同时切换至目标用户的家目录文件夹
    19

  • who 查看当前登录的用户列表
    20如图,表示现在muyu用户只有mujie用户登录

  • whoami 查看当前所在用户
    21
    如图表示现在我处于muyu这个用户

  • id 查看当前用户的id
    id是用户的识别信息,分为UID和GID。如果说用户名是qq昵称,那id就是账号
    UID 用户标识
    GID 组标识

  • exit 退出当前用户/返回上一个用户
    使用exit可退出当前所在的用户
    举个例子,我从mujie用户su进root用户,再从root用户进muyu用户,使用exit命令会使我从muyu用户退出到root用户,而不是退至mujie用户。再从root用户exit,才可退出至mujie用户。
    22

主组与附加组

  • 概念
    主组:创建用户时设定的组,一般不轻易修改
    附加组:创建后添加的组,给主组用户提供附加组的权限,如sudo就是一个附加组,无sudo附加组的用户无法执行sudo命令。
  • usermod 修改组
  • G 修改附加组
    格式:usermod -G [附加组名称] [用户名称]
    -g 修改主组
    格式:usermod -g [目标主组] [用户名称]
  • 修改终端显示页面
  • s 修改shell(终端显示界面)
    格式:usermod -s [目标终端页面路径] [用户名]
    例:usermod -s /bin/bash muyu
    修改前
    23
  • 修改后:
  • 24
  • 可以明显看到页面美化了一层
    注:linux中有两中主要的终端界面,分别是dash和bash。一般linux创建用户默认为dash,因为系统觉得这样操作更方便,但dash页面不美观也不易辨识,在输入一些操作指令时会出现重大缺陷,所以有时需要我们根据需要手动修改。
    而bash便是我们常用的终端界面,有颜色有位置标识。
  • which 查看命令执行文件位置
    往往在输入cat /etc/group 查看组位置时容易忘记如etc的目录,所有常需要一个命令查找。
    例:which sudo
    25

打包压缩与软件安装

打包压缩

-tar 打包命令
格式:tar -cvf [打包后文件名。tar] [要打包的文件]
26 注:打包不是压缩,打包文件名后要加.tar

  • tar 解包命令
    格式:tar -xvf [需解包文件]
    27

  • c选项,生成档案文件,创建打包文件

  • v选项,列出归档解档详细进程,显示进度。

  • f选项,指定档案名称,f后解.tar,所以一定要放在最后。

  • x选项,解开档案文件

  • gzip压缩命令
    格式:gzip [要压缩的tar文件]
    例:gzip qwer.tar
    28

  • bzip2压缩命令
    格式同gzip

  • 注:gzip和bzip2还有tar一般不单独使用,而是联合使用
    gzip代表选项-z
    bzip2代表选项-b
    故常用的打包压缩命令为 tar -zcvf [压缩包名.tar.gz] [压缩文件名]
    故常用的解压缩命令为 tar -zxvf [压缩包名.tar.gz]
    bzip2同理

-C选项,指定压缩/解压位置
29

软件安装

  • apt install 安装命令
    需在sudo下运行
    格式:sudo apt install [软件包]
    30
    sudo apt install htop 下载htop 效果是让top命令显示的界面更好看。
    31
  • 32
  • apt remove 卸载命令
    须在sudo下运行
    格式:sudo apt remove [软件名]
    例:sudo apt remove sl 卸载sl软件
  • apt upgrade 升级命令
    须在sudo下运行
    格式:sudo apt upgrade 自动检查升级并发出更新情求。
    33
  • 设置软件源
    设置方法按自己具体版本在百度找方法。

系统信息

  • date 查看当前时间

    • cal 查看日历
      -y选项,查看一年的日历
  • df 显示磁盘剩余空间大小

  • h使显示内容更人性化

  • du 显示文件占用空间大小

  • h使显示内容更人性化
    注:du命令后可接具体文件夹查看
    34

  • ps 查看当前用户通过终端启动的 进程
    aux选项,查看正在进行的全部进程,前面-可加可不加
    a选项,查看所有进程,包括其他用户进程
    u选项,查看进程详细状态
    x选项,查看没有终端控制的进程

  • top 动态显示系统所有进程并排序
    按q或ctrl+c退出top查看页面,其中显示的页面第一行是进程代码,需要特别关注。

  • kill 关闭/杀死进程

  • 9强制终止进程
    格式:kill -9 [进程代码]

远程管理

  • 远程连接的准备工作

    • 下载xshell,官网即可下载选学生用免费版即可。
    • ifconfig 查看ip地址,在win10主机中IP查看命令为ipconfig。
      35
      如图,上方ens33对应的inet对应ip地址,用于和网络互通,下方lo对应inet为本机环回地址,用于检查本机网络连接状态。
    • ping 测试网络连接量,常用来查看两台主机是否网络互通。
      ping通是远程连接的前置条件。
      用法:ping [IP地址/网址]
      36
    • route -n 查看linux系统网关
    • 41
    • -n 不解析得到的数字
      不加-n时,使用route命令得到的Destination(目的地址)是自动解析为英文的,而当使用-n后,目的地址不会被解析,仍以数字显示。
      42
      没有使用-n选项,目的地址被解析。
  • ssh 远程连接命令
    格式:ssh [用户名]@[ip地址]
    连接成功后即可访问目标主机/服务器(用xshell连接)
    -p选项,指定端口位置
    37

38

  • scp 远程复制
    格式:scp [要复制的文件] [用户名]@[IP地址]:[远程复制后文件位置]
    scp -P 22 [用户名]@[IP地址]:[要复制的文件地址] [复制后文件地址]
    -r选项,可以选择传送文件夹
    -P选项,可以指定端口位置
    注:ssh命令默认端口为22,非22时需要用-P指定。
    • 注:Win系统如果无法使用该命令,建议下载xftp进行远程文件复制,无论服务器还是主机都方便快捷。
      也可以使用FileZilla进行文件传输,我推荐xftp是因为在官网下载xshell是会同时下载xftp。
    • 注意:上传任意文件至ubuntu时,都只能指定目录为tmp ,因为非管理员只对tmp目录有w(可写)权限
  • ssh 高级
    • ssh信息都储存在.ssh文件中。
    • 免密登录
      • 公钥配置shh-kengen 一路回车即可
      • 公钥上传到服务器
        ssh-copy-id -p [端口号] [用户名]@[ip地址]

其他命令

  • echo (显示指定文字)与>/>>(重定向)
    echo命令通常与重定向同用
    linux允许将内存追加到文件中
    ‘>’输出,将终端上的内容输出的文件中,会覆盖文件。
    ‘>>’追加,在文件后追加终端中输入的内容。
    格式:echo [终端内容] > [文件名] 或 echo [终端内容] >> [文件名]

  • ‘|’管道
    管道是将两个命令同时执行的条件,命令符为“|”
    例:cat -n mi | grep 2 将文件mi加行号查看,并选出含有2的行(包括行号)
    39

  • 软连接与硬链接

    • ln 建立硬链接
      -s选项,建立软连接
      格式:ln -s [文件路径(绝对或相对)]
      注:绝对比相对更稳定
      软连接与硬链接概念
      40
  • man 使用手册
    格式:man [命令] 用于记得命令写法却忘记命令用途时,查看命令具体用处。

    • info 格式用途和man均相同,但info更加详细。

xargs命令

xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。

xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。

xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。

xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令

find /sbin -perm +700 |ls -l       #这个命令是错误的
find /sbin -perm +700 |xargs ls -l   #这样才是正确的

xargs 一般是和管道一起使用。

参数:

  • -a file 从文件中读入作为 stdin
  • -e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
  • -p 当每次执行一个argument的时候询问一次用户。
  • -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
  • -t 表示先打印命令,然后再执行。
  • -i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
  • -r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
  • -s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
  • -L num 从标准输入一次读取 num 行送给 command 命令。
  • -l 同 -L。
  • -d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
  • -x exit的意思,主要是配合-s使用。。
  • -P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧

vi命令

   vi的基本概念  

  基bai本上vi可分为三种操du作状态,分别是命令模式zhi(Command mode)、插入模dao式(Insert mode)和底线命令模式(Last line mode),
  各模式的功能区分如下:
  1. Comand mode:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入Insert mode下,或者到Last line mode。
  2. Insert mode:唯有在Insert mode下,才可做文字数据输入,按Esc等可回到Comand mode。
  3. Last line mode:将储存文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。
  不过可以把vi简化成两个模式,即是将Last line mode也算入Command mode,把vi分成Command 和Insert mode。
          vi的基本操作
          ?进入vi
          在系统提示符号输入vi及文件名称后,即可进入vi全屏幕编辑画面:
          $ vi testfile
          有一点要特别注意,就是您进入vi之后是处于“Command mode”下,您要切换到Insert mode才能输入文字。
          初次用vi的用户都会想先用上下左右键移动光标,结果电脑一直叫,把自己气个半死,所以进入vi后,先不要乱动,
          转换入Insert后再说。?切换至Insert mode编辑文件在Command mode下按‘i’、‘a’或‘o’三键就可进入Insert mode。
          这时候您就可以开始输入文字了。
          i: 插入,从目前光标所在之处插入所输入的文字。
          a: 增加,目前光标所在的下一个字开始输入文字。
          o: 插入新的一行,从行首开始输入文字。
          ?Insert的切换→Command mode,按Esc键
          您目前处于Insert mode,您就只能一直打字。假如您发现打错字了,想用光标键往回移动,将该字删除,
          就要按ESC键转换回Command mode,再删除文字。
          ?离开vi及存文件
          在Command mode下,可按冒号“:”键入入Last line mode,例如:
          :w filename (输入“w filename”,将文章存入指定的文件名filename)
          :wq (输入“wq”,因为进入之时已经指定文件名testfile,所以会写入testfile并离开vi)
          :q! (输入“q!”,强制离开并放弃编辑的文件)
          Command mode功能键列表
          在介绍command mode指令的时后,指令后面加上“常用”字眼的功能键,表示比较常用的vi指令,
          请读者您一定要学会、记住。
          (1)I、a、o切换进入Insert mode。[超级常用]
          (2)移动光标
          vi可以直接用键盘上的光标键来上下左右移动,但正规的vi是用小写英文字母h、j、 k、l,分别控制光标左、下、上、右移一格。
          按Ctrl+B:屏幕往后移动一页。[常用]
          按Ctrl+F:屏幕往前移动一页。[常用]
          按Ctrl+U:屏幕往后移动半页。
          按Ctrl+D:屏幕往前移动半页。
          按 0 (数字零):移动文章的开头。[常用]
          按 G:移动到文章的最后。[常用]
          按 w:光标跳到下个word的开头。[常用]
          按 e:光标跳到下个word的字尾。
          按 b:光标回到上个word的开头。
          按 $:移到光标所在行的行尾。[常用]
          按 ^:移到该行第一个非空白的字符。
          按 0:移到该行的开头位置。[常用]
          按 #:移到该行的第#个位置,例:51、121。[常用]
          (3)删除文字
          x:每按一次删除光标所在位置的后面一个字符。[超常用]
          #x:例如,6x 表删除光标所在位置的后面6个字符。[常用]
          X:大字的X,每按一次删除光标所在位置的前面一个字符。
          #X:例如,20X 表删除光标所在位置的前面20个字符。
          dd:删除光标所在行。[超常用]
          #dd:例如,6dd表删除从光标所在的该行往下数6行之文字。[常用]
          (4)复制
          yw:将光标所在处到字尾的字符复制到缓冲区中。
          (想在和#x、#X的功能相反)
          p:将缓冲区内的字符粘贴到光标所在位置(指令‘yw’与‘p必须搭配使用)。
          yy:复制光标所在行。[超常用]
          p:复制单行到您想粘贴之处。(指令‘yy’与‘p’必须搭配使用)
          #yy:如:6yy表示拷贝从光标所在的该行往下数6行之文字。[常用]
          p:复制多行到您想粘贴之处。(指令‘#yy’与‘p’必须搭配使用)
          “ayy:将复制行放入buffer a, vi提供buffer功能,可将常用的数据存在buffer
          “ap:将放在buffer a的数据粘贴。
          “b3yy:将三行数据存入buffer b。
          “b3p:将存在buffer b的资料粘贴
          (5)取代
          r: 取代光标所在处的字符:[常用]
          R:取代字符直到按Esc为止。
          (6)复原(undo)上一个指令
          u:假如您误操作一个指令,可以马上按u,回复到上一个操作。[超常用]
          .: .可以重复执行上一次的指令。
          (7)更改
          cw:更改光标所在处的字到字尾$处。
          c#w:例如,c3w代表更改3个字。
          (8)跳至指定行
          Ctrl+G:列出光标所在行的行号。
          #G:例如,15G,表示移动光标至文章的第15行行首。[常用]
          Last line mode下指令简介
          读者您要使用Last line mode之前,请记得先按Esc键确定您已经处于Command mode下后,再按冒号“:”或“/”或“?”
          三键的其中一键进入Last line mode。
          1.列出行号
          set nu: 输入“set nu”后,会在文章的每一行前面列出行号。
          2.跳到文章的某一行
          #:井号代表一个数字,在Last line mode提示符号“:”前输入数字,再按Enter就会跳到该行了,
          如:15[Enter]就会跳到文章的第15行。[常用]
          3.寻找字符串
          /关键字:先按/,再输入您想寻找的字,如果第一次找的关键字不是您相尽可能的,可以一直按n会往下寻找到您要的关键字为止。
          ?关键字:先按?,再输入您想寻找的字,如果第一次找的关键字不是您想要的,可以按n会往前寻找到您要的关键字为止。
          4.取代字符串
          1,$s/string/replae/g:在last line mode输入“1,$s/string/replace/g”会将全文的string字符串取代为replace字符串,其中1,$s就是指搜寻区间为文章从头至尾的意思,g则是表示全部取代不必确认。
          %s/string/replace/c:同样会将全文的string字符串取代为replace字符串,和上面指令不同的地方是,%s和1,$s是相同的功能,c则是表示要替代之前必须再次确认是否取代。
          1,20s/string/replace/g:将1至20行间的string替代为relpace字符串。
          5.存文件
          w:在last line mode提示符号“:”前按w即可将文件存起来。[超常用]
          #,# w filename:如果您想摘取文章的某一段,存成另一个文件,可用这个指令#代表行号,例如30,50 w nice,将您正在编辑文章的第30~50行存成nice这个文件。
          6.离开
          q:按q就离开,有时如果无法离开vi,可搭配“!:强置离开vi,如“q!”
          qw:一般建议离开时,搭配w一起使用,如此离开时还可存文件

  • 以上摘抄自百度知道
    附学长给的图片
    41

笔记来自与后话

  • 到这里linux笔记告一段落,我会根据后续的学习不断对笔记进行更新,达到完善的目的。
    学习语言和命令在于多练习。而非一味观看。文章和视频各有优缺,按自己需求选择。
  • 笔记为学习linux视频与文章后自己的总结,在此附上资料链接

注意:写文章时别加花括号,除非写进代码块


文章作者: Atmujie
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Atmujie !
评论
  目录