模板: Raspberry-pi-Linux

来自Waveshare Wiki
跳转至: 导航搜索

Linux操作基础

Linux

  • Linux是一种通用的操作系统,它的网络功能非常强大,对内存等硬件的消耗也小,多用于网络服务器中。
  • 极其稳定、极其安全、可移植性、可扩展性强。
  • 具有开放源码、没有版权、技术社区用户多等特点,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。
  • 缺点入门比Windows难,由于缺少桌面周边生态,使用Linux桌面系统的用户也非常少。

为什么学习Linux

  • Linux系统被广泛应用在人们的日常生活用品中,如手机、智能家居、汽车电子、可穿戴设备等,只不过很多人不知道自己使用的电子产品里面运行的是Linux系统,例如我们用的安卓手机系统就是基于Linux内核开发的。
    • 全球100万个顶尖领域中超过90%在使用Linux系统;全球大部分的股票交易市场是基于Linux系统部署的,包括纽交所、纳斯达克等;
    • 全球知名的淘宝、亚马逊、易趣、沃尔玛等电子商务平台都在使用Linux系统。
    • 参与Linux内核开发的开发人员和公司也是最多的、最活跃的。因此了解和学习Linux是十分重要的。

终端

  • 计算机上的终端允许用户对其系统进行大量控制。Windows的用户可能已经接触过Command Promptor Powershell,而mac OS的用户可能已经熟悉了Terminal。所有这些工具都允许用户通过使用命令直接操作他们的系统。
  • 由于早期并没有鼠标,所以Linux终端完全是由键盘和显示器完成工作的,这个做法一直沿用至今。可以使用键盘的Ctrl+Alt+t打开树莓派终端。
    Terminal.png
    • pi 当前用户名/登录名
    • raspberrypi 主机名
    • ~ 当前用户所在的目录是/home/pi
    • $ 字符表示当前登录的是普通用户啊
    • # 字符表示登录的是root用户
  • 在终端窗口中键入命令,然后按键盘上的回车键运行命令。

Linux 系统目录结构

  • 在Windows中每一个分区都是一个树形结构,有多少个分区就有多少个树形结构,而Linux中只有一个树形结构,所有的文件、分区都是存在于一个树形结构中。在这个结构中,最上层的是根目录,其他所有的目录、文件、分区都是在根目录下建立的。读者可以通过ls /命令来查看整个根目录的文档,如图所示。
    Linux根目录水印.png
  • 以下是对这些目录的解释:

常用目录

  • /home:用户目录。
    • 除了root用户外,其他所有的使用者的数据都存放在这个目录下,在树莓派的系统中,/home目录中有一个pi的子目录,这个就是pi用户的默认目录。
  • /bin: 主要放置系统的必备执行文件目录。
    • 放置与Linux系统有关(包括运行图形界面所需的)的二进制可执行文件,如ls、mkdir、rm等。
  • /boot:引导目录。
    • 用于存放系统引导程序,如linux内核以及启动配置文件,里面的config.txt也是用户配置使用频率最高的文件。
  • /etc: 系统配置文件存放目录。
    • 在这个目录中存放了几乎所有的Linux系统软件所需的配置文件,如果需要对这个目录中的文本进行修改,那么最好是先将需要修改的文件进行备份,以保证在修改之后还可以回到原来的状态。

其它目录

  • /dev :设备目录。在Linux系统中,所有设备都视为文件,而在这个目录中存放了所有设备,例如第一个SATA硬盘或U盘会被识别为sda文件,而SATA硬盘或U盘第一个分区会被识别为sda1文件。
  • /lib:基本系统的动态链接库存放位置,在这个目录中存放了可以维持一个基本系统启动所需要的库文件。如果没有这个目录,系统程序根本就无法工作。
  • /lost + found/分区系统的目录。系统非正常关机而产生的文件通常都存放在这里,另外由fsck等程序进行硬盘修复后产生的文件也存放在这里。
  • /media:linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下。
  • /mnt:传统的外部设备挂载点。在早期的时候,除了系统分区外的其他分 区,如U盘等设备,都会被挂载到这个目录下以供用户读写。不过现在已经被 /media/取代。
  • /proc:proc是一个虚拟文件系统。这个目录是存放在内存中的,因此不会占用硬盘空间,系统或用户通过读取这些设备来了解它们的信息。例如,可以使用cat /proc/cpuinfo命令来査看CPU信息。
  • /root:该目录为系统管理员,也称作超级权限者的用户主目录。
  • /srv:该目录存放一些服务启动之后需要提取的数据。
  • /sys:与/proc目录一样,也是一个虚拟目录,是由内核中的sysfs系统来实现的,其作用与proc有些类似,但除了与proc具有相同的查看和设定内核参数功能之外,还有为Linux统一设备模型作为管理之用。
  • /tmp:临时目录。由程序所产生的临时文件都会存放在该目录下,不用担心这个目录会占用太多的空间,因为每次系统启动都会清除这个目录的内容;同时这也是系统为数不多的拥有所有用户可读写属性的目录。
  • /usr:Linux系统所安装的程序都是存放在该目录中的,如非必要请不要修改这个目录的内容。类似于windows下的program files 目录。
  • /usr/src:内核源代码默认的放置目录。
  • /run:用于存放系统启动时描述系统信息的文件。这个目录最初是在/var/目录下的,但是现在被提升到根目录下。

重要目录

  • 在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
  • /etc:这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
  • /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如ls就是在/bin/ls目录下的。
  • /bin, /usr/bin是给系统用户使用的指令(除root外的普通用户),而/sbin,/usr/sbin则是给root使用的指令。
  • /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log目录下。

常见指令介绍

文件系统

sudo

  • sudo命令以系统管理者的身份执行指令。
  • 初次使用树莓派系统时,默认用户是pi ,密码为raspberry。
  • 要想使用root帐号,或者说开启root用户,可使用pi用户登录,执行下面命令(此命令是给root账户设置密码的,当切换到root管理员后,此命令无效)
    sudo su  #切换为超级用户
    su pi    #切换普通用户
    

    Linux-root水印-1.png

ls

  • ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
  • 常用的指令:
    ls
    ls -a   #显示所有文件及目录 (. 开头的隐藏文件也会列出)
    ls -l   #除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
    ls -lh  #文件大小以容易理解的格式列出,例如4K
    

    Ls-lha水印-1.png

  • 想要学习了解指令更多参数,我们可以使用help指令来查看:
    ls --help

chmod

  • chmod命令是控制用户对文件的权限的命令。
  • Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
  • 在下图中,显示了Linux根目录下的详细文件信息。在这些文件信息中, 最重要的就是第一列,它详细描述了文件和目录的权限,而第三与第四列则显示了这个文件和目录属于哪一个用户或组。
    Ls-l水印.png
  • Linux的文件属性可以分为三种:只读(r)、写(w)和可执行(x)。但是上面的文件属性却分为10小格,这是因为除了第一格显示目录外,另外三组每组三格分别表示文件所有者权限、同一组内的权限以及其他用户权限。
    • 第一栏中如果显示d,则表示这是一个目录;如果是链接文件,则在这里显示l;如果是设备文件,则显示c。
    • 第一个rwx栏位:-rwx------ 表示文件拥有者所拥有的权限。
    • 第二个rwx栏位:---rwx--- 表示同一工作组内用户权限。
    • 第三个rwx栏位:------rwx 表示其他用户权限。
    • 例如:
    • -rwx rwx rwx 表示无论哪个用户都可以对这个文件读写与执行。
    • -rw- --- --- 表示只有文件拥有者有读写权限,但是没有执行权限。
    • -rw -rw -rw 表示所有用户都有读写权。
  • 符号模式
    • who(用户类型)
      who 用户类型 说明
      u user 文件所有者
      g group 文件所有者所在组
      o others 所有其他用户
      a all 所用用户, 相当于 ugo
    • operator(符号模式表)
      Operator 说明
      + 为指定的用户类型增加权限
      - 去除指定用户类型的权限
      = 设置指定用户权限的设置,即将用户类型的所有权限重新设置
    • permission 的符号模式表
      模式 名字 说明
      r 设置为可读权限
      w 设置为可写权限
      x 执行权限 设置为可执行权限
      X 特殊执行权限 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行
      s setuid/gid 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限
      t 粘贴位 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位
    • 符号模式实例
      1. 给file的所有用户增加读权限
        chmod a+r file
      2. 删除file的所有用户的执行权限
        chmod a-x file
      3. 给file的所有用户增加读写权限
        chmod a+rw file
      4. 给file的所有用户增加读写执行权限
        chmod +rwx file 
      5. 对file的所有者设置读写权限,清空该用户组和其他用户对file的所有权限(空格代表无权限)
        chmod u=rw,go= file
      6. 对目录waveshare和其子目录层次结构中的所有文件给用户增加读权限,而对用户组和其他用户删除读权限
        chmod -R u+r,go-r waveshare
  • 八进制语法
    • chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。
      # 权限 rwx 二进制
      7 读 + 写 + 执行 rwx 111
      6 读 + 写 rw- 110
      5 读 + 执行 r-x 101
      4 只读 r-- 100
      3 写 + 执行 -wx 011
      2 只写 -w- 010
      1 只执行 --x 001
      0 --- 000
    • 例如:765的解释如下:
      • 所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。
      • 用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。
      • 其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。
    • 常用的数字权限
      • 400 -r-------- 拥有者能够读,其他任何人不能进行任何操作;
      • 644 -rw-r–r-- 拥有者都能够读,但只有拥有者可以编辑;
      • 660 -rw-rw---- 拥有者和组用户都可读和写,其他人不能进行任何操作;
      • 664 -rw-rw-r-- 所有人都可读,但只有拥有者和组用户可编辑;
      • 700 -rwx------ 拥有者能够读、写和执行,其他用户不能任何操作;
      • 744 -rwxr–r-- 所有人都能读,但只有拥有者才能编辑和执行;
      • 755 -rwxr-xr-x 所有人都能读和执行,但只有拥有者才能编辑;
      • 777 -rwxrwxrwx 所有人都能读、写和执行(该设置不建议使用)。
    • 实例
      • 给file的所有用户增加读权限,拥有者和组用户可编辑权限
        sudo chmod 664 file

mkdir

  • mkdir命令用于创建目录。
  • 语法
  • mkdir [-p] dirName
    • -p 确保目录名称存在,不存在的就建一个。
  • 在工作目录下,建立一个名为waveshare的子目录 :
    sudo mkdir waveshare

    Linux-mkdir-1水印新.png

  • 在工作目录下的waveshare目录中,建立一个名为test的子目录。
    sudo mkdir -p waveshare/test

    Linux-mkdir-2水印新.png

  • 若waveshare目录原本不存在,则建立一个。(注:本例若不加 -p 参数,且原本 waveshare 目录不存在,则产生错误。)

cd

  • 切换当前工作目录。cd命令是最常用的Linux命令之一,用于切换用户当前的工作目录。如果需要快速回到登录用户的家目录,可以直接使用不带参数的cd命令来返回。
  • 语法:
    cd [dirName]

    dirName:要切换的目标目录。

    cd..    返回上一层目录
    cd /home  进入/home目录
    cd        返回用户目录
    

touch

  • touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
    • 使用指令"touch"时,如果指定的文件不存在,则将创建一个新的空白文件。例如,在当前目录下,使用该指令创建一个空白文件"file",输入如下命令:
    sudo touch file

    Linux-touch水印新.png

cp

  • cp命令主要用于复制文件或目录。
  • 语法:
    cp [options] source dest
    或
    cp [options] source... directory
    
  • 参数:
    • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
    • -d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
    • -f:覆盖已经存在的目标文件而不给出提示。
    • -i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答y时目标文件将被覆盖。
    • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
    • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
    • -l:不复制文件,只是生成链接文件。
  • 使用指令cp将当前目录test/下的所有文件复制到新目录 newtest 下,输入如下命令:
    sudo cp –r test/ newtest 

    Linux-cp水印新.png

mv

  • mv命令用来为文件或目录改名、或将文件或目录移入其它位置。
  • 语法:
    mv [options] source dest
    mv [options] source... directory
    
  • 参数:
    • -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
    • -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入y表示直接覆盖,输入n表示取消该操作。
    • -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
    • -n: 不要覆盖任何已存在的文件或目录。
    • -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
  • 使用指令mv将当前目录test/下的file1文件复制到新目录/home/pi下,输入如下命令:
    sudo mv file1 /home/pi

    Linux-mv水印新.png

rm

  • rm命令用于删除一个文件或者目录。
  • 语法:
    rm [options] name...
  • 参数:
    • -i 删除前逐一询问确认。
    • -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
    • -r 将目录及以下之档案亦逐一删除。
    • 删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如:
    sudo rm  test.txt 
    • rm:是否删除 一般文件 "test.txt"? y
    sudo rm  homework  
    • rm: 无法删除目录"homework": 是一个目录
    sudo rm  -r  homework  
    • rm:是否删除 目录 "homework"? y

reboot

  • reboot命令用于用来重新启动计算机,更改树莓派的配置经常需要重启。
  • 语法:
    reboot [-n] [-w] [-d] [-f] [-i]
  • 参数:
    • -n : 在重开机前不做将记忆体资料写回硬盘的动作
    • -w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
    • -d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
    • -f : 强迫重开机,不呼叫 shutdown 这个指令
    • -i : 在重开机之前先把所有网络相关的装置先停止
  • 重新启动
    sudo reboot

shutdown

  • 树莓派的关机是不能直接拔掉电源线的,因为树莓派会将内存作为暂存区,如果直接拔掉电源线会使一些在内存中的数据没有来得及写入SD卡中,从而造成数据的丢失或是损坏SD卡上的数据,造成系统无法启动。
  • 语法
    shutdown [-t seconds] [-rkhncfF] time [message]
  • 参数
    • -t seconds : 设定在几秒钟之后进行关机程序。
    • -k : 并不会真的关机,只是将警告讯息传送给所有使用者。
    • -r : 关机后重新开机。
    • -h : 关机后停机。
    • -n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机。
    • -c : 取消目前已经进行中的关机动作。
    • -f : 关机时,不做 fsck 动作(检查 Linux 档系统)。
    • -F : 关机时,强迫进行 fsck 动作。
    • time : 设定关机的时间。
    • message : 传送给所有使用者的警告讯息。
  • 实例
    • 立即关机
    sudo shutdown -h now
    • 指定 10 分钟后关机
    sudo shutdown -h 10
    • 重新启动计算机
    sudo shutdown -r now
  • 无论使用哪一个命令来关闭系统都需要root用户权限,如果用户使用pi这样的普通用户,可以使用sudo命令暂时获得root权限。

pwd

  • 该pwd命令显示当前工作目录的名称:在树莓派上,输入pwd将输出类似/home/pi.

scp

  • scp是用于通过SSH发送文件的命令,可以通过此命令来实现树莓派和Windows计算机之间的文件传输。
  • 将文件从您的树莓派复制到您的windows计算机上:
    • 按住键盘上的 Win+R,输入cmd,按下enter键确认:
      Scp水印新-1.png
  1. 将文件waveshare.py从树莓派复制到Windows计算机的当前目录,在终端上输入指令应为:
    scp pi@192.168.10.30:waveshare.py .
  2. 回车,输入yes:
      PS:输入密码时屏幕上没有变化属于正常现象,yes输入完成后按回车键会显示树莓派密码输入界面
      Windows-cmd2水印新.png
  3. 回车,输入树莓派的默认密码 raspberry:
      PS:输入密码时屏幕上没有变化属于正常现象,密码输入完成后按回车键访问树莓派
      Windows-cmd3水印新.png
  4. 此时我们就复制成功了:
      Windows-cmd4水印新.png
      Windows-cmd5水印新.png
  • 将文件从您的计算机复制到您的树莓派用户:
    • 首先进入test.py文件的存储位置,按住键盘Shift且右键空白处,打开Windows PowerShell:Pow1水印新.png
      PS:直接点击右键空白处是不会出现Open PowerShell window here
  1. 使用以下命令将文件test.py从您的计算机复制到树莓派用户的/home/pi下:
    scp test.py pi@192.168.10.30:
      Powershell-1水印新.png
  2. 回车,输入树莓派的默认密码 raspberry:
      Powershell-2水印新.png

    此时我们就复制成功了:

      Powershell-3水印新.png
      Powershell-4水印新.png

head

  • 该head命令显示文件的开头。可用于-n指定要显示的行数(默认为 10 行),或与-c指定字节数。
    head test.py -n 5

    Linux-head水印新.png

tail

  • 该tail显示文件的结尾。-c字节或-n行数指定文件中的起始点

df

  • 用于df显示已安装文件系统上可用和使用的磁盘空间。用于df -h以可读的格式查看输出,使用 M 表示 MB,而不是显示字节数。
    df -h

    Linux-df水印新.png

zip

  • zip命令用于压缩文件,zip 是个使用广泛的压缩程序,压缩后的文件后缀名为 .zip。
  • 如果在我们在 /home/pi/waveshare 目录下,将这个目录下所有文件和文件夹打包为当前目录下的waveshare.zip,可以执行以下命令:
    zip -q -r waveshare.zip *

    Linux-zip水印新.png

unzip

  • unzip命令用于解压缩zip文件,unzip为.zip压缩文件的解压缩程序。
    unzip waveshare.zip -d user/

    Linux-unzip水印新.png

    • 其中-d为指定文件解压缩后所要存储的目录。

tar

  • tar命令是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
  • 压缩文件:
    tar -cvzf waveshare.tar.gz *

    Linux-tar1水印新.png

  • 解压文件:
    tar -xvzf waveshare.tar.gz 

    Linux-tar2水印新.png

tree

  • 使用该tree命令将目录以及所有子目录和文件缩进为树结构。

wget

  • 下载树莓派4数据表并将其另存为raspberry-pi-4-datasheet.pdf,使用
    wget https://datasheets.raspberrypi.com/rpi4/raspberry-pi-4-datasheet.pdf 

    Wget水印新.png

curl

  • Linux curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。
  • 语法:
    curl  (选项)  (参数)
  • 参数:
    • -A/--user-agent <string> 设置用户代理发送给服务器
    • -b/--cookie <name=string/file> cookie字符串或文件读取位置
    • -c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中
    • -C/--continue-at <offset> 断点续转
    • -D/--dump-header <file> 把header信息写入到该文件中
    • -e/--referer 来源网址
    • -f/--fail 连接失败时不显示http错误
    • -o/--output 把输出写到该文件中
    • -O/--remote-name 把输出写到该文件中,保留远程文件的文件名
    • -r/--range <range> 检索来自HTTP/1.1或FTP服务器字节范围
    • -s/--silent 静音模式。不输出任何东西
    • -T/--upload-file <file> 上传文件
    • -u/--user <user[:password]> 设置服务器的用户和密码
    • -w/--write-out [format] 什么输出完成后
    • -x/--proxy <host[:port]> 在给定的端口上使用HTTP代理
    • -#/--progress-bar 进度条显示当前的传送状态
  1. 基本用法: 执行以下命令,www.waveshare.net 的html就会显示在屏幕上:
    curl http://www.waveshare.net

    Linux-curl1水印新.png

  2. 保存访问网页: 使用curl的内置option:-o(小写)保存网页,显示100%则表示保存成功:
    curl -o waveshare.html http://www.waveshare.com

    Linux-curl2水印新.png

  3. 使用curl的内置option:-O(大写)保存网页中的文件,要注意这里后面的url要具体到某个文件,不然抓不下来
    curl -O http://www.waveshare.com/hello.sh
  4. 测试网页返回值
    curl -o /dev/null -s -w %{http_code} www.waveshare.com
  5. 利用curl下载文件:
    使用内置option:-o(小写)和内置option:-O(大写)
    curl -o 1.png https://www.waveshare.net/wiki/文件:Test-1111.png
    curl -O https://www.waveshare.net/wiki/文件:Test-1111.png 

apt

  • apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。
  • apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
  • apt 命令执行需要超级管理员权限(root)。
  • apt 常用命令
    • 列出所有可更新的软件清单命令:sudo apt update
    • 升级软件包:sudo apt upgrade
    • 列出可更新的软件包及版本信息:apt list --upgradeable
    • 升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade
    • 安装指定的软件命令:sudo apt install <package_name>
    • 安装多个软件包:sudo apt install <package_1> <package_2> <package_3>
    • 更新指定的软件命令:sudo apt update <package_name>
    • 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>
    • 删除软件包命令:sudo apt remove <package_name>
    • 清理不再使用的依赖和库文件: sudo apt autoremove
    • 移除软件包及配置文件: sudo apt purge <package_name>
    • 查找软件包命令: sudo apt search <keyword>
    • 列出所有已安装的包:apt list --installed
    • 列出所有已安装的包的版本信息:apt list --all-versions

搜索

find

  • Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
  1. 通过文件名查找,例如我们查找waveshare.py文件:
    find  -name waveshare.py 
  2. 通过文件嵌套层数查找。
    • 文件查找最大层数为1,找出的文件全部在/etc目录下,例如我们查找/etc目录下的.conf文件:
      find /etc/ -maxdepth 1 -name *.conf
    • 文件查找最小层数为2,找出的文件不会包含/etc目录下文件,而是去/etc子目录查找。
      find /etc/ -mindepth 2 -name *.conf
  3. 将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
    find . -ctime -20
  4. 查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
    find /var/log -type f -mtime +7 -ok rm {} \;
  5. 查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
    find . -type f -perm 644 -exec ls -l {} \;
  6. 查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
    find / -type f -size 0 -exec ls -l {} \;

grep

  • 用于grep在文件内部搜索某些搜索模式,可以列出包含特殊字母所有组合。
    ls | grep sys

    Linux-grep水印新.png

cat

  • 您可以使用cat列出文件的内容,例如cat thisFile将显示thisFile. 可用于列出多个文件的内容,即cat *.txt会列出.txt当前目录下所有文件的内容。
    cat test.txt

    Linux-cat水印新.png

awk

  • AWK 是一种处理文本文件的语言,是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
  1. 每行按空格或TAB分割,输出文本中的1、4项:
    awk '{print $1,$4}' waveshare.txt

    Linux-awk1水印新.png

  2. 输出第一列大于2的行:
    awk '$1>2' waveshare.txt

    Linux-awk2水印新.png

  3. 输出第一列等于2的行:
    awk '$1==2' waveshare.txt

    Linux-awk3水印新.png

  4. 输出第一列大于2并且第三列等于'SQL'的行
    awk '$1>2 && $3=="SQL"' waveshare.txt

    Linux-awk4水印新.png

  5. 输出包含 "Python" 的行:
    awk '/Python/ ' waveshare.txt

    Linux-awk5水印新.png

  6. awk -v # 设置变量
    awk -va=1 '{print $1,$1+a}' waveshare.txt

    Linux-awk6水印新.png

    awk -va=1 -vb=nice '{print $1,$1+a,$1b}' waveshare.txt

    Linux-awk7水印新.png

whereis

  • 用于whereis查找命令的位置。它查看标准程序位置,直到找到请求的命令。
    whereis sudo

    Linux-whereis水印新.png

联网

ifconfig

  • 用于在不带任何参数(即)ifconfig运行时显示当前系统上接口的网络配置详细信息。
  • 用SSH连接时可以通过ifconfig查找IP地址,例如这台设备的IP地址就是:192.168.10.51
    Ifconfig水印新.png

hostname

  • 该hostname命令显示系统的当前主机名。我们使用树莓派的时候经常需要使用远程工具,而默认的网络配置IP地址采用动态分配,会造成IP地址不确定的问题,当我们的树莓派IP地址发生变化时,可以使用主机名登录。
  1. 登录树莓派,修改hosts文件,命令如下:
    sudo nano /etc/hosts

    Linux-hostname1.png Linux-hostname2水印新.png

    • 将raspberrypi替换成要修改的名字,例如waveshare,按下键盘Ctrl+x,按下键盘的y,回车确认:

    Linux-hostname4水印新.png

  2. 修改hostname文件,将这里raspberrypi也替换成要修改的名字,例如waveshare,按下键盘Ctrl+x,按下键盘的y,回车确认:
    sudo nano /etc/hostname

    Linux-hostname5.png

  3. 修改完成重启树莓派即可:
    sudo reboot
  4. 修改主机名也可以用sudo raspi-config中 System Options

ping

  • 该ping实用程序通常用于检查是否可以与另一台主机进行通信。它可以与默认设置一起使用,只需指定主机名或 IP 地址(例如ping 192.168.1.1)。-c它可以使用标志指定要发送的数据包数。
    ping 192.168.1.1

    Ping水印新.png

nmap

  • nmap是一个网络探索和扫描工具。它可以返回有关主机或主机范围的端口和操作系统信息。运行nmap将显示可用的选项以及示例用法。
  • 先让我们ping一段地址范围,找到在线主机:
     nmap -sP 192.168.10.1-255 

    Nmap水印新.png