树莓派 Linux 系统命令行快捷键

刚入门树莓派时,在 Linux 下使用命令操作的时候,光标的移动令人头痛。命令输入完了,执行之后发现缺少权限,然后不得不移动光标到行首,而命令又极长……当我学会了命令行相关的快捷键之后,不仅效率提高了,更让我喜欢上了命令行这种操作方式。

常用

  • Ctrl+左右键:在单词之间跳转
  • Ctrl+a:跳到本行的行首
  • Ctrl+e:跳到页尾
  • Ctrl+u:删除当前光标前面的文字 (还有剪切功能)
  • Ctrl+k:删除当前光标后面的文字(还有剪切功能)
  • Ctrl+L:进行清屏操作
  • Ctrl+y:粘贴Ctrl+u或ctrl+k剪切的内容
  • Ctrl+w:删除光标前面的单词的字符
  • Alt – d :由光标位置开始,往右删除单词。往行尾删

说明

  • Ctrl – k: 先按住 Ctrl 键,然后再按 k 键;
  • Alt – k: 先按住 Alt 键,然后再按 k 键;
  • M – k:先单击 Esc 键,然后再按 k 键。

移动光标

  • Ctrl – a :移到行首
  • Ctrl – e :移到行尾
  • Ctrl – b :往回(左)移动一个字符
  • Ctrl – f :往后(右)移动一个字符
  • Alt – b :往回(左)移动一个单词
  • Alt – f :往后(右)移动一个单词
  • Ctrl – xx :在命令行尾和光标之间移动
  • M-b :往回(左)移动一个单词
  • M-f :往后(右)移动一个单词

编辑命令

  • Ctrl – h :删除光标左方位置的字符
  • Ctrl – d :删除光标右方位置的字符(注意:当前命令行没有任何字符时,会注销系统或结束终端)
  • Ctrl – w :由光标位置开始,往左删除单词。往行首删
  • Alt – d :由光标位置开始,往右删除单词。往行尾删
  • M – d :由光标位置开始,删除单词,直到该单词结束。
  • Ctrl – k :由光标所在位置开始,删除右方所有的字符,直到该行结束。
  • Ctrl – u :由光标所在位置开始,删除左方所有的字符,直到该行开始。
  • Ctrl – y :粘贴之前删除的内容到光标后。
  • ctrl – t :交换光标处和之前两个字符的位置。
  • Alt + . :使用上一条命令的最后一个参数。
  • Ctrl – _ :回复之前的状态。撤销操作。

Ctrl -a + Ctrl -k 或 Ctrl -e + Ctrl -u 或 Ctrl -k + Ctrl -u 组合可删除整行。

Bang(!)命令

  • !! :执行上一条命令。
  • ^foo^bar :把上一条命令里的foo替换为bar,并执行。
  • !wget :执行最近的以wget开头的命令。
  • !wget:p :仅打印最近的以wget开头的命令,不执行。
  • !$ :上一条命令的最后一个参数, 与 Alt - . 和 $_ 相同。
  • !* :上一条命令的所有参数
  • !*:p :打印上一条命令是所有参数,也即 !*的内容。
  • ^abc :删除上一条命令中的abc。
  • ^foo^bar :将上一条命令中的 foo 替换为 bar
  • ^foo^bar^ :将上一条命令中的 foo 替换为 bar
  • !-n :执行前n条命令,执行上一条命令: !-1, 执行前5条命令的格式是: !-5

查找历史命令

  • Ctrl – p :显示当前命令的上一条历史命令
  • Ctrl – n :显示当前命令的下一条历史命令
  • Ctrl – r :搜索历史命令,随着输入会显示历史命令中的一条匹配命令,Enter键执行匹配命令;ESC键在命令行显示而不执行匹配命令。
  • Ctrl – g :从历史搜索模式(Ctrl – r)退出。

控制命令

  • Ctrl – l :清除屏幕,然后,在最上面重新显示目前光标所在的这一行的内容。
  • Ctrl – o :执行当前命令,并选择上一条命令。
  • Ctrl – s :阻止屏幕输出
  • Ctrl – q :允许屏幕输出
  • Ctrl – c :终止命令
  • Ctrl – z :挂起命令

重复执行操作动作

  • M – 操作次数 操作动作 : 指定操作次数,重复执行指定的操作。

转载自 树莓派实验室

Linux/Raspbian 每个目录用途说明

本文转自无聊小博,很多刚接触树莓派/Linux 的同学会在给树莓派安装、卸载、配置软件时,软件和配置文件等存放在哪儿产生疑惑。也会遇到诸如“磁盘分区”、U盘挂载等涉及到的目录路径问题。Linux 的目录是有非常明确的规则的,这里推荐这篇文章助你快速了解、快速上手。

为什么会有这篇文章

因为在使用apt-get purge remove openvpn之后,发现系统里依然有很多openvpn名字的目录或者文件,比如像下面这样

/usr/sbin/openvpn
/etc/default/openvpn
/etc/network/if-down.d/openvpn
/etc/network/if-up.d/openvpn
/etc/bash_completion.d/openvpn
/etc/init.d/openvpn
/run/openvpn

有强迫症+洁癖的我当然就很不爽了,挨个查看之后,就删掉了这些,但是对于一些目录的用户比较感兴趣,就找到了下面这篇文章,英文的,翻译了,留在这里,增加自己对LINUX系统的了解。

Linux和Windows的区别

的显著区别之一就是其不同的目录结构,并不仅仅是格式上的不同,而是不同位置上保存的东西区别很大。

在Windows中,典型的路径可能是这样的 D:\Folder\subfolder\file.txt,而在Linux中,路径则是这样的 /Folder/subfolder/file.txt

斜线倾斜的方向不同,并且,在Linux中,也没有C盘D盘的概念,Linux系统启动之后,根分区 就”挂载”在了在了 / 的位置,并且所有的文件、文件夹、设备以及不同的硬盘光驱之类的,也都挂载在了 /

虽然可能在下面这个例子中并不明显,但是Linux系统对文件或者文路径的名称中的大小写字符是敏感的。

比如 /Folder/subfolder/file.txt 与 /folder/subfolder/file.txt并不是同一个文件。

Linux系统目录说明

Unix中和Linux的目录结构是一个统一的目录结构,所有的目录和文件最终都统一到”/“根文件系统下。文件系统是无论是不是挂载过来的,最终都分层排列到以”/“为起始的文件系统之下。
Linux目录结构遵循”文件系统层次结构(Filesystem Hierarchy Structure,FHS)”,这标准是由“自由标准组织(Free Standards Group)”进行维护的,然而大多数LINUX发行版都有意或者无意的与这一规范背离。

“/” 根路径

这是Linux系统的“根”目录,也是所有目录结构的最底层。在UNIX以及和它兼容的系统中,”/“是一个单独的目录。

/boot

这个目录下包含系统启动文件(boot loader),例如Grub,Lilo或者Kernel,以及initrd,system.map等配置文件。

Initrd ramdisk或者””initrd””是指一个临时文件系统,它在启动阶段被Linux内核调用。initrd主要用于当“根”文件系统被挂载之前,进行准备工作。

/sys

这个目录下包含内核、固件以及系统相关文件。

/sbin

包含系统操作和运作所必需的二进制文件以及管理工具,主要就是可执行文件。类似WINDOWS下的EXE文件。

/bin

包含单用户模式下的二进制文件以及工具程序,比如cat,ls,cp这些命令。

/lib

包含/sbin和/bin目录下二进制文件运行所需要的库文件。

/dev

内含必需的系统文件和驱动器。

/etc

内含系统配置文件,其下的目录,比如 /etc/hosts, /etc/resolv.conf, nsswitch.conf, 以及系统缺省设置,网络配置文件等等。以及一些系统和应用程序的配置文件。

/home

每一个用户的在这个目录下,都会单独有一个以其用户名命令的目录,在这里保存着用户的个人设置文件,尤其是以 profile结尾的文件。但是也有例外,root用户的数据就不在这个目录中,而是单独在根路径下,保存在单独的/root文件夹下。

/media

一个给所有可移动设备比如光驱、USB外接盘、软盘提供的常规挂载点。

/mnt

临时文件系统挂载点。比如,你并不想长期挂载某个驱动器,而是只是临时挂载一会U盘烤个MP3之类的,那么应该挂载在这个位置下。

/opt

在Linux系统中,这个目录用到的并不多,opt是 可选系统程序包(Optional Software Packages)的简称。这个目录在UNIX系统,如Sun Solaris用途要广泛的多。

/usr

用户数据目录,包含了属于用户的实用程序和应用程序。这里有很多重要的,但并非关键的文件系统挂载这个路径下面。在这里,你会重新找到一个 bin、sbin 和 lib目录,其中包含非关键用户和系统二进制文件以及相关的库和共享目录,以及一些库文件。

/usr/sbin

包含系统中非必备和并不是特别重要的系统二进制文件以及网络应用工具。

/usr/bin

包含用户的非必备和并不是特别重要的二进制文件。

/usr/lib

保存着/usr/sbin以及/usr/bin中二进制文件所需要的库文件。

/usr/share

“平台无关”的共享数据目录。

/usr/local

是/usr下的二级目录,这里主要保存着包含系统二进制文件以及运行库在内的本地系统数据。

/var

这个路径下通常保存着包括系统日志、打印机后台文件(spool files)、定时任务(crontab)、邮件、运行进程、进程锁文件等。这个目录尤其需要注意进行日常的检查和维护,因为这个目录下文件的大小可能会增长很快,以致于很快占满硬盘,然后导致系统便会出现各种奇奇怪怪的问题。

/tmp

顾名思义,这是一个临时文件夹,专门用来保存临时文件,每次系统重启之后,这个目录下的”临时”文件便会被清空。同样,/var/tmp 也同样保存着临时文件。两者唯一的不同是,后者 /var/tmp目录保存的文件会受到系统保护,系统重启之后这个目录下的文件也不会被清空。

/proc

这个目录是驻留在系统内存中的虚拟(psuedo,伪)文件系统,其中保存的都是文本格式的系统内核和进程信息。

LINUX系统目录结构图

需要注意的是,不同LINUX发行版本的目录结构会有一些差异,这对LINUX新手来说比较纠结,但是大体上,所以LINUX的不同发行版本,都符合上面这幅图片中的路径结构。

参考文章

1.Linux Directory Structure Overview

本文来自:树莓派实验室

在树莓派上学习命令行-零

本文翻译参考自MagPi系列文章Conquer the Command Line。
旨在带领新手更好更快地学会在树莓派上的命令行和终端的使用。

不要慌张

首先终端不是一种到过去的退化,反而它是一种高效而有力的使用树莓派的方法。
假如你的树莓派没有设置开机直接进入图形化界面的话,开机进入的就是终端,当你登陆之后输入startx进入图形界面,然后按住ALT+CTRL加上F1就能发现这个终端还是开着的,按住ALT加上从F2F6都会有一个虚拟的终端等着你去登陆,而且任何时候你都能进入并使用这些终端。

按下ALT+F7,就会回到图形化界面,有鼠标、有菜单,在图形化界面也有终端可以使用,他们一般被称为终端模拟器(term或者xterm),你应该也听很多人说过shell或者Bash,现在不用担心这个,后面就会提到。现在只要在上面的任务栏单机这个黑色显示器样子的图标,或者通过菜单Accessories>Terminal,终端模拟器就打开了。

 

 

 

查看文件目录

你肯定已经习惯了在Windows中用串口看各种文件和目录,现在把那些图标都抛到脑后,注意这些文件或者文件夹的名字,在终端中输入ls并回车,在刚刚安装好的干净的树莓派系统中,你会看到两个目录:python_gamesDesktop,输入ls python_games,就会看到下面这个图这样的输出。

ls这样的命令其实一点都不神秘,但是他们会显得很简洁,是一些英文的缩写,比如ls就是list的缩写。

 

文件路径

你可以列出系统中的任何地方的文件或者目录,只要你在ls命令后面加上路径参数,而路径这个东西呢,它还是层次化的一个东西,比如在Windows系统中,路径从我的电脑开始,而在树莓派上,路径从/开始,被叫做根目录(root),把你的系统看作一课树状的结构的话,/确实是树的根部,现在我们再试试输入ls /,发现反馈的是一堆很奇怪的单词,比如binbin是binary的缩写,这个目录里面放的全是可执行二进制文件(输入ls /bin就可以看一些细节了),同样的ls /dev就能查看树莓派上的硬件设备有哪些,尝试一下ls /home,会看到返回的是pi,这个pi就是登录中的你自己,你如果改个名字,这个pi文件夹也会相应的改变。

通过pwd命令,可以查看当前终端所在的目录,pwd也就是present working directory。

~是什么

对于所有的登录的用户,他们的home目录都被简写成~,除了~,Linux还保留着两个类似的目录,一个是.一个是..,他们在每个目录中都有,在每个目录都不太一样,如果你使用ls -a,就会在返回中看到他们的存在,其中.代表着当前目录,假如你在/home/pi目录里面,.就是/home/pi,而..代表的就是上一级目录,就是/home目录。

切换目录

我们现在学会了在一个目录下面通过ls查看这个目录中的文件,而通过cd命令,我们就能切换当前所在的目录(change directory),无论当前你在哪个目录,输入cd /home/pi,就会切换到/home/pi这个目录;除了常规的路径,我们也能在其中加入上面提到的~...,假如当前目录是/var/www/html,那么我们输入cd .,就会切换到/var/www目录,如果输入..,就会切换到/目录,同样的,无论你在哪个目录,假如你输入cd ~,都会切换到/home/pi这个目录。

FAQ

查看某个命令的用法

在一个命令之后可以加上一些参数来得到一些附加的功能,比如对于ls命令,我们在后面加上-l或者-a都会得到不同的更加详细的反馈,而且我们可以通过man加命令来得到这个命令的所有用法解释,比如man ls

按下回车键

每当你输完一个命令,都得在这一行的最后按下回车告诉终端这个命令写完了,需要执行。

Raspbian Update-rc.d 命令用法详解

Raspbian、Ubuntu或者Debian系统中update-rc.d命令,是用来更新系统开机启动项的脚本。这些脚本的链接位于/etc/rcN.d/目录,对应脚本位于/etc/init.d/目录。在了解update-rc.d命令之前,你需要知道的是有关Linux 系统主要启动步骤,以及Ubuntu中运行级别的知识。

一、Linux 系统主要启动步骤

  1. 读取 MBR 的信息,启动 Boot Manager。
  2. 加载系统内核,启动 init 进程, init 进程是 Linux 的根进程,所有的系统进程都是它的子进程。
  3. init 进程读取 /etc/inittab 文件中的信息,并进入预设的运行级别。通常情况下 /etc/rcS.d/ 目录下的启动脚本首先被执行,然后是/etc/rcN.d/ 目录。
  4. 根据 /etc/rcS.d/ 文件夹中对应的脚本启动 Xwindow 服务器 xorg,Xwindow 为 Linux 下的图形用户界面系统。
  5. 启动登录管理器,等待用户登录。

二、运行级别

Ubuntu中的运行级别

  • 0(关闭系统)
  • 1(单用户模式,只允许root用户对系统进行维护。)
  • 2 到 5(多用户模式,其中3为字符界面,5为图形界面。)
  • 6(重启系统)

切换运行级别

init [0123456Ss]

例如:init 0 命令关机; init 6 命令重新启动

启动项管理工具

sudo install sysv-rc-conf //或者使用带gui的工具bum
sudo sysv-rc-conf

三、update-rc.d命令详解

从所有的运行级别中删除指定启动项

update-rc.d -f <basename> remove

按指定顺序、在指定运行级别中启动或关闭

update-rc.d <basename> start|stop <order> <runlevels>

实例:

update-rc.d apachectl start 20 2 3 4 5 . stop 20 0 1 6 .

解析:表示在2、3、4、5这五个运行级别中,由小到大,第20个开始运行apachectl;在 0 1 6这3个运行级别中,第20个关闭apachectl。这是合并起来的写法,注意它有2个点号,效果等于下面方法:

update-rc.d apachectl defaults

A启动后B才能启动,B关闭后A才关闭

update-rc.d A defaults 80 20
update-rc.d B defaults 90 10

启动和关闭顺序为90,级别默认

update-rc.d <basename> defaults 90

本文来自:树莓派实验室
链接地址:http://shumeipai.nxez.com/2017/01/23/updatercd-command-usage-details.html

Linux烧写树莓派镜像

在终端中输入
$ df -h
插入SD卡,重复步骤1

比较两次输出结果,判断哪一个是SD卡的分区,格式应该类似于

/dev/sdb1
卸载SD卡
$ sudo umount /dev/sdb1

不用管是否有/dev/sdb2

确定原始设备名称

/dev/sdb1的原始设备名称为/dev/sdb
解压缩镜像文件后,写入

$ sudo dd bs=1M if=~/下载/2014-01-07-wheezy-raspbian.img of=/dev/sdb

等待几分钟以后烧写完成,dd命令在最后才会有统计信息

记录了2825+0 的读入
记录了2825+0 的写出
2962227200字节(3.0 GB)已复制,705.317 秒,4.2 MB/秒

为保险起见,可以运行

$ sudo sync 
确保所有数据都被正确写入了

将SD卡插入树莓派,应该可以使用了。