基础命令行
1、rm可以删除文件(rm -d /path/to/directory或者rm -r /path/to/directory)
2、ls是展开文件 在linux中,“ll”是“ls -l”命令的别名,ls命令用于显示指定工作目录下之内容,参数“-l”表示除文件名称外,将文件型态、权限、拥有者、文件大小等资讯详细列出。
3、Mkdir是创建目录(无法使用vim)
4、Touch是创建文件(可以使用vim)
5、cd是查看文件 在最后加左下划线/ cd ..是退回上一级目录
6、ctrl+l或者是clear可以清除当前页面
7、显示当前路径:pwd 命令
8、查找所有路径用whereis 查找当前运行路径用which
9、切换root账户用su - 创建root用户用useradd -m root 更改密码用sudo passwd root
Su - nowcoder切换回nowcoder用户
10、Make 在编译大型项目的时候使用makefile,所需要的时间也比较长。尤其是在做测试的时候,需要使用很多次make指令,这需要耗费大量的时间。
使用make -j命令可以缩短这部分时间。使用方法就是在-j后面加一个数字,比如 -j10,意为在编译文件的时候用10个线程进行编译.
11、tree查看树状结构
12、Tar -xzf ...是解压缩操作
13、Sudo 是允许系统管理员让普通用户执行一些或者全部root命令的一个工具
14、重启用sudo reboot
15、移动文件到另外一个文件夹
mv [选项] 源文件 目标文件夹 比如mv example.txt /target/directory/
16、安装使用sudo apt install ...
卸载用sudo apt-get remove
17、cp是复制
语法:cp 【-r】 表示递归复制目录 【-r】选项,可选,用于复制文件夹使用,表示递归 参数1,Linux 路径,表示被复制的文件或文件夹 参数2,Linux 路径,表示要复制去的地方
编辑器命令行
基础命令
Vi/vim进入编辑操作
i是开始编辑
esc然后shift+:然后wq!退出编辑模式 (非管理员需要加感叹号)
wq是保存退出
q!是不保存退出
Ctrl+z可以强制退出
:w保存文件。
:q
退出 Vim。
vim netrw
vim netrw在文件打开时关闭netrw缓冲区 vim netrw是一个用于在Vim编辑器中浏览文件系统的插件。当使用netrw打开文件时,可以通过以下步骤关闭netrw缓冲区:在Vim中,按下Esc键,确保处于正常模式。输入命令:bd,按下Enter键。这将关闭当前的netrw缓冲区。netrw插件的优势是它提供了一个方便的界面来浏览和管理文件系统,可以在Vim中直接进行文件操作,而无需切换到终端。它支持文件和目录的创建、复制、移动、删除等操作,还可以通过FTP和HTTP进行远程文件的访问。netrw插件的应用场景包括但不限于:
在Vim中快速浏览和编辑本地文件。
在Vim中进行文件和目录的管理和操作。
在Vim中通过FTP和HTTP访问远程文件。
在Vim中进行文件的比较和合并操作。
补充命令行
mount指令
在类Unix系统中(如Linux),mount
命令用于将文件系统挂载到指定的挂载点上,从而使文件系统中的内容可以被访问。这个命令通常需要管理员权限来执行。
基本的语法如下:
mount [-t 文件系统类型] [-o 选项] 设备 文件夹
其中:
-t 文件系统类型
:指定要挂载的文件系统的类型,如 ext4、ntfs、vfat 等。如果不指定类型,mount 命令会尝试自动检测。-o 选项
:指定挂载选项,比如读写权限、权限设置等。常见的选项有rw
(读写)、ro
(只读)、exec
(允许执行程序)、noexec
(禁止执行程序)等。设备
:指定要挂载的设备,可以是硬盘分区、光盘、USB 设备等。文件夹
:指定挂载点,也就是设备要挂载到文件系统的位置。
举个例子,如果你想将 /dev/sdb1
这个分区挂载到 /mnt
文件夹上,可以这样做:
sudo mount /dev/sdb1 /mnt
如果你知道这是一个 FAT32 文件系统,你可以明确指定文件系统类型:
sudo mount -t vfat /dev/sdb1 /mnt
要查看当前系统上已经挂载的文件系统,可以使用 mount
命令不带参数地运行:
mount
如果你要取消挂载,可以使用 umount
命令,例如:
sudo umount /mnt
请注意,使用 mount
和 umount
命令需要谨慎,特别是在涉及到系统关键文件系统的情况下,错误的操作可能会导致数据丢失或系统无法启动。
pushd命令
pushd
是一个命令行工具,通常在 Unix-like 系统中可用(如 Linux、macOS 等),用于在 shell 环境中管理当前工作目录的堆栈。
当你在 shell 中使用 pushd
命令时,它会将当前目录推送到一个堆栈中,并将你指定的目录作为新的当前目录。同时,它也会显示出堆栈中所有的目录,按照它们的索引编号进行排序。
pushd
的基本用法如下:
pushd [目录]
其中 [目录]
是你想要切换到的目标目录。
pushd
命令会将当前目录压入堆栈,然后切换到指定的目录。如果你省略了目标目录,pushd
将切换到堆栈中的下一个目录。
与 pushd
对应的命令是 popd
,它会将堆栈顶部的目录弹出,并切换到弹出的目录。
使用 pushd
和 popd
可以很方便地在多个目录之间进行导航,特别是在需要频繁切换目录的情况下。
pushd和cd的区别
pushd
和 cd
是用于在 shell 环境中切换工作目录的两个不同的命令,它们之间有一些区别:
-
用法:
cd
:cd
命令后面通常跟着要切换到的目录的路径。例如:cd /home/user/Documents
将当前工作目录切换到/home/user/Documents
。pushd
:pushd
命令通常后面跟着要切换到的目录的路径,类似于cd
命令,但是它还可以接受一个数字参数,表示将当前目录推入堆栈并切换到指定目录的索引位置。例如:pushd /home/user/Documents
或pushd +3
。
-
目录堆栈:
cd
命令不会修改目录堆栈。每次使用cd
命令切换目录时,前一个工作目录会被丢弃,当前目录被替换为新的目录。pushd
命令会修改目录堆栈。每次使用pushd
命令切换目录时,当前目录会被推入堆栈中,并且切换到新的目录。
-
目录堆栈的使用:
pushd
命令可以与popd
命令配合使用来实现目录的压入和弹出操作。popd
命令会从目录堆栈中弹出顶部的目录,并切换到弹出的目录。- 使用
pushd
和popd
可以很方便地在多个目录之间进行导航,特别是在需要频繁切换目录的情况下。
popd指令
popd
是一个命令行工具,通常在 Unix-like 系统中可用(如 Linux、macOS 等),用于在 shell 环境中管理当前工作目录的堆栈。
当你在 shell 中使用 popd
命令时,它会从目录堆栈中弹出顶部的目录,并将你切换到弹出的目录。同时,它也会显示出堆栈中所有的目录,按照它们的索引编号进行排序。
popd
的基本用法如下:
popd
popd
命令会从目录堆栈中弹出顶部的目录,并切换到弹出的目录。
与 popd
对应的命令是 pushd
,它会将当前目录压入堆栈,并切换到指定的目录。
使用 pushd
和 popd
可以很方便地在多个目录之间进行导航,特别是在需要频繁切换目录的情况下。
echo指令
echo命令是linux中最基础的命令,在写shell脚本的时候,会经常被用到,echo命令功能非常丰富,下面我们结合实际案例进行详细介绍。
echo命令的基本用法,很简单,就是echo命令后面跟上要输出的文本
-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
--help 显示帮助
--version 显示版本信息
每一个shell支持的echo指令可能都不太相同。
-n 不输出最后的\n
-e解释转义字符
-E不解释转义字符
示例:echo "i am a boy" // 执行后会打印 i am a boy
i am a boy
Linux export 命令
用于设置或显示环境变量。
在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。
-f 代表[变量名称]中为函数名称。
-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p 列出所有的shell赋予程序的环境变量。
gcc命令
gcc 命令:用来编译C和C++文件
-v 同时显示编译器的代码
-x<语言> 指定语言
--help 显示帮助信息
--version 显示版本信息
-o<文件> 将输出输入到指定文件
-E 只进行预处理
-S 只进行预处理、编译 编译而不进行汇编和链接
-c 只预处理、编译、汇编,但不链接
-D 使用-D name[=definition]预定义名为name的宏,若不指定值则默认宏的内容为1
-l(小写的L) 使用-l libname或者-llibname,使链接器在链接时搜索名为libname.a/libname.so(静态/动态)的库文件
-L 使用-Ldir添加搜索目录,即链接器在搜索-l选项指定的库文件时,除了系统的库目录还会(优先)在-L指定的目录下搜索
-I(大写的i) 使用-I dir,将目录dir添加为头文件搜索目录
-include 使用-include file,等效于在被编译的源文件开头添加#include "file"
-static 指定静态链接(默认是动态链接)
-O0~3 开启编译器优化,-O0为不优化,-O3为最高级别的优化
-Os 优化生成代码的尺寸,使能所有-O2的优化选项,除了那些让代码体积变大的
-Og 优化调试体验,在保留调试信息的同时保持快速的编译,对于生成可调试代码,比-O0更合适,不会禁用调试信息。
-Wall 使编译器输出所有的警告信息
-march 指定目标平台的体系结构,如-march=armv4t,常用于交叉编译
-mtune 指定目标平台的CPU以便GCC优化,如-mtune=arm9tdmi,常用于交叉编译
其中GCC -c选项:生成目标文件
所谓目标文件,其本质为二进制文件,但由于尚未经过链接操作,所以无法直接运行。简单地理解,汇编其实就是将汇编代码转换成可以执行的机器指令。大部分汇编语句对应一条机器指令,有的汇编语句对应多条机器指令。相对于编译操作,汇编过程会简单很多,它并没有复杂的语法,也没有语义,也不需要做指令优化,只需要根据汇编语句和机器指令的对照表一一翻译即可。通过为 gcc 指令添加 -c 选项(注意是小写字母 c),即可让 GCC 编译器将指定文件加工至汇编阶段,并生成相应的目标文件
gcc生成文件类型:
(1)以.c文件结尾的文件名,表示C语言源文
(2)以.a文件结尾的文件名,表示目标文件构成的库文件
(3)以.o文件结尾的文件名,表示源文件编译的目标文件
(4)以.h文件结尾的文件名,表示头文件
(5)以.s文件结尾的文件名,表示汇编语言源文件
(6)以.S文件结尾的文件名,表示经过预编译的汇编源代码文件
(7)以.C,.cc,.cxx文件结尾的文件名,表示C++源代码文件
(8)以.i文件结尾的文件名,表示经过预处理的C源代码文件
(9)以.ii文件结尾的文件名,表示经过预处理的C++源代码文件
MD指令
在计算机上,"md" 通常是 "make directory" 的缩写,用于创建新目录(文件夹)。在不同的操作系统中,该命令可能会有所不同。
在 Windows 操作系统中,md
或 mkdir
命令用于创建新目录。使用方法是在命令提示符或 PowerShell 中输入 md
命令,后跟要创建的目录路径。例如:
md new_folder
这将在当前目录下创建一个名为 "new_folder" 的新目录。在 Linux 和 Unix 操作系统中,mkdir
命令用于创建新目录。使用方法与 Windows 中的 md
命令类似。例如:
mkdir new_folder
这将在当前目录下创建一个名为 "new_folder" 的新目录。在使用这些命令时,请确保你有适当的权限来在指定位置创建目录。
uboot下的md指令
在 U-Boot 中,md
是 "memory display" 的缩写,用于在控制台上显示内存的内容。这个命令通常用于调试和查看内存中的数据。以下是在 U-Boot 中使用 md
命令的基本语法:
md [options] address [# of objects] [format]
address
:要显示的内存地址。# of objects
:要显示的对象数量。format
:显示的格式,通常是十六进制(hexadecimal)格式。
例如,要在 U-Boot 中显示从地址 0x1000 开始的内存内容,显示10个对象(每个对象的大小取决于系统的字长),可以输入以下命令:
md 0x1000 10
你也可以指定显示的格式。例如,要以十六进制格式显示从地址 0x1000 开始的内存内容,可以输入以下命令:
md 0x1000 10 hex
这将显示地址范围从0x1000到0x101F的16字节的内存内容,以十六进制格式显示。
请注意,在 U-Boot 中使用 md
命令时需要小心,确保你知道要查看的内存地址范围,并避免对关键数据造成不可逆的影响。
mw指令
在U-Boot中,mw
是 "memory write" 的缩写,用于向内存中写入数据。这个命令通常用于调试和修改内存中的数据。以下是 mw
命令的基本语法:
mw [options] address value [count]
address
:要写入的内存地址。value
:要写入的值。count
:可选参数,指定要写入的字节数。
例如,要在 U-Boot 中将值 0x55
写入地址 0x1000
处的内存,可以输入以下命令:
mw 0x1000 0x55
这会将值 0x55
写入地址 0x1000
处的内存。如果指定了 count
参数,mw
命令将在指定的地址开始处写入连续的多个值。例如,要在 U-Boot 中将值 0x55
写入地址 0x1000
处的内存,连续写入5个值,可以输入以下命令:
mw 0x1000 0x55 5
这会将值 0x55
连续写入地址 0x1000
开始的5个内存地址中。请注意,在 U-Boot 中使用 mw
命令时需要小心,确保你知道要写入的内存地址和值,并避免对关键数据造成不可逆的影响。
Cat指令
在 Linux 和类 Unix 系统中,cat
是一个常用的命令,用于显示文件的内容。它的名称来自 "concatenate"(连接)的缩写,原本用于连接文件,但现在更常用于简单地显示文件的内容。
cat
命令的基本语法如下:
cat [OPTION]... [FILE]...
其中:
OPTION
是可选的命令选项,用于指定cat
命令的行为。FILE
是一个或多个要显示内容的文件的路径。
例如,要显示一个名为 example.txt
的文件的内容,可以使用以下命令:
cat example.txt
cat
命令还可以用于将多个文件的内容连接在一起,并将结果输出到标准输出流。例如:
cat file1.txt file2.txt
这将先显示 file1.txt
文件的内容,然后显示 file2.txt
文件的内容。
cat
命令的常见选项包括:
-n
:显示每行的行号。-b
:显示非空行的行号。-s
:合并连续的空行为一个空行。-v
:显示非打印字符的可视化表示。
除了显示文件内容外,cat
命令还有其他一些用途,例如创建文件、将文件内容重定向到其他文件等。
repo指令
在许多Linux发行版中,特别是那些使用基于Debian或Ubuntu的包管理系统的发行版,repo指令通常是一个用于管理软件源的命令。它通常用于添加、删除、更新和搜索软件源。
以下是一些常见的repo指令:
-
添加软件源:要添加一个软件源,可以使用repo指令,通常需要root权限。例如:
sudo add-apt-repository <repository>
其中
<repository>
是软件源的地址或标识符。 -
删除软件源:要删除已添加的软件源,可以使用repo指令。例如:
sudo add-apt-repository --remove <repository>
这将删除指定的软件源。
-
更新软件源列表:要更新系统中可用的软件源列表,可以使用repo指令。例如:
sudo apt update
这将更新软件包管理系统的软件源列表。
-
搜索软件源:要搜索软件源中可用的软件包,可以使用repo指令。例如:
apt search <keyword>
这将搜索包含指定关键字的软件包。
dmesg命令
dmesg
是一个用于查看系统消息(kernel ring buffer)的命令行工具。它显示了 Linux 内核在启动过程中产生的各种信息,包括硬件检测、设备驱动、内核模块加载、系统错误等。
使用 dmesg
命令可以帮助你快速了解系统的运行状态,排查系统启动和运行过程中的问题。通常情况下,你可以在终端中直接输入 dmesg
命令来查看系统消息。
下面是一个示例输出:
[ 0.000000] Linux version 5.4.0-91-generic (buildd@lgw01-amd64-056) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #102-Ubuntu SMP Fri Nov 5 16:31:28 UTC 2021 (Ubuntu 5.4.0-91.102-generic 5.4.138)
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.4.0-91-generic root=UUID=xxxx ro quiet splash
[ 0.000000] KERNEL supported cpus:
[ 0.000000] Intel GenuineIntel
[ 0.000000] AMD AuthenticAMD
[ 0.000000] Hygon HygonGenuine
[ 0.000000] Centaur CentaurHauls ...
输出的信息可能会很长,其中包含了大量的系统启动信息、硬件检测信息、内核模块加载信息等。你可以通过查看 dmesg
的输出来了解系统在启动过程中发生的情况,并查找是否有任何异常或错误信息。
fstype命令
fstype
是一个命令行工具,通常用于查看文件系统类型。
你可以使用 fstype
命令加上文件路径来查看该路径下文件系统的类型。例如:
fstype /dev/sda1
这会显示 /dev/sda1
所在的文件系统类型,比如 ext4、NTFS 等等。
grep指令
grep
是 Linux 和其他类 Unix 操作系统中的一个常用命令行工具,用于在文件中搜索指定的文本模式,并将匹配的行输出到标准输出。其基本语法如下:
grep [options] pattern [file...]
其中:
[options]
是可选的参数,用于控制grep
命令的行为。pattern
是要搜索的文本模式,可以是普通字符串或正则表达式。[file...]
是要搜索的文件列表,如果不指定文件,则grep
将从标准输入读取数据进行搜索。
一些常用的选项包括:
-i
忽略大小写。-r
递归搜索目录及其子目录中的文件。-n
显示匹配行的行号。-v
显示不匹配模式的行。-e
指定多个模式进行搜索。-w
只匹配整个单词。-c
仅显示匹配行的计数。
例如,要在文件 example.txt
中搜索包含字符串 "hello" 的行,可以执行以下命令:
grep "hello" example.txt
这将输出所有包含 "hello" 的行。
grep -rn
grep -rn
是 Linux 中 grep
命令的一种用法,用于在指定目录及其子目录中递归搜索包含指定文本的文件,并显示匹配的行及其行号。
-r
选项表示递归搜索,即在指定目录下的所有子目录中搜索。-n
选项表示显示匹配行的行号。
例如,如果要在当前目录及其所有子目录中搜索包含字符串 "example" 的文件,并显示匹配行及其行号,可以使用以下命令:
grep -rn "example" .
这将在当前目录下递归搜索包含字符串 "example" 的文件,并显示匹配行及其行号。
注意事项
(1)所有的单独的文件中间一定要用空格隔开
(2)*可以代表诸如此类的所有文件,比如说*.o就是所有后缀为.o的文件
(3)./是当前目录 ../是上一级目录
linux快捷键
终端快捷键
Ctrl+A :跳到命令行开头
Ctrl+E:跳到命令行末尾
Ctrl+U:将光标出到命令行开头内容清除
Ctrl+向左箭头:跳到命令行的前一字的开头
Ctrl+向右箭头:跳到命令行的下一字末尾
Ctrl+R:在历史记录列表里搜索某一模式的命令
Ctrl+C:中断当前正在运行的命令。
Ctrl+Z:将当前正在运行的命令置于后台,并暂停它的执行。
Ctrl+D:退出当前的终端会话。
Ctrl+L:清除终端屏幕,并将当前的命令提示移到屏幕顶部。
窗口管理快捷键(如 GNOME、KDE 等)
Alt + Tab
:切换应用程序
Alt + F4
:关闭当前窗口
Alt + F2
:打开应用程序运行框
Super
(Windows 键):打开应用程序菜单
系统级别快捷键
Ctrl + Alt + Delete
:重启系统(有些发行版可能会禁用)
Ctrl + Alt + T
:打开终端。