写点什么

Linux 系统下基础命令介绍

作者:DS小龙哥
  • 2022 年 10 月 11 日
    重庆
  • 本文字数:6215 字

    阅读完需:约 20 分钟

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。


Linux 操作系统诞生于 1991 年 10 月 5 日(这是第一次正式向外公布时间)。Linux 存在着许多不同的 Linux 版本,但它们都使用了 Linux 内核。Linux 可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

1.1 Linux 目录结构

1​ /bin 该目录中存放 Linux 的常用命令,在有的版本中是一些和根目录下相同的目录。


2​ /boot 该目录下存放的都是系统启动时要用到的程序,当用 lilo 引导 Linux 时,会用到这里的一些信息。


3​ /dev 该目录包含了 Linux 系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,你可以访问这些外部设备,与访问一个文件或一个目录没有区别。例如在系统中键入“cd /dev/cdrom”,就可以看到光驱中的文件;键入“cd /dev/mouse”即可看鼠标的相关文件。


4​ /etc 该目录存放了系统管理时要用到的各种配置文件和子目录,例如网络配置文件、文件系统、X 系统配置文件、设备配置信息、设置用户信息等。


5​ /sbin 该目录用来存放系统管理员的系统管理程序。


6​ /home 如果建立一个名为“xx”的用户,那么在/home 目录下就有一个对应的“/home/xx”路径,用来存放该用户的主目录。


7​ /lib 该目录用来存放系统动态连接共享库,几乎所有的应用程序都会用到该目录下的共享库 。


8​ /lost+found 该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放在这里。


9​ /mnt 该目录在一般情况下也是空的,你可以临时将别的文件系统挂在该目录下。


10​ /proc 可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的


11​ /root 如果你是以超级用户的身份登录的,这个就是超级用户的主目录


12​ /tmp 用来存放不同程序执行时产生的临时文件。


13​ /usr 用户的很多应用程序和文件都存放在该目录下。


14​ /usr/X11R6:X-Window 目录;


15​ /usr/src:Linux 源代码;


16​ /usr/include:系统头文件;


17​ /usr/lib:存放常用动态链接共享库、静态档案库;

1.2​ Linux 基本命令介绍

1.2.1 su 命令:切换用户。

语法:su [用户名] ([]表示可选)


linux 下有两种帐号:


1.root--超级用户帐号(系统管理员),使用这个帐号可以在系统中做任何事情。


2.普通用户--这个帐号供普通用户使用,可以进行有限的操作。


su 命令的常见用法是变成超级用户,如果普通用户发出不带用户名的 su 命令 ,则系统提示输入根口令,输入之后则可切换为根用户。


1.2.2 ls 命令:遍历目录

功能:ls 是英文单词 list 的简写,其功能为列出目录的内容。这是用户最常用的一个命令之一,因为用户需要不时地查看某个目录的内容。该命令类似于 DOS 下的 dir 命令。


语法:ls [选项] [目录或是文件]


说明:对于每个目录,该命令将列出其中的所有子目录与文件。对于每个文件,ls 将输出其文件名以及所要求的其他信息。默认情况下,输出条目按字母顺序排序。当未给出目录名或是文件名时,就显示当前目录的信息。


常用选项:



​ 用 ls - l 命令显示的信息中,开头是由 10 个字符构成的字符串,其中第一个字符表示文件类型:


  • 普通文件、d 目录 、l 符号链接、b 块设备文件、c 字符设备文件、p 命名管道(FIFO)、s socket 文件


​ 后面的 9 个字符表示文件的访问权限,分为 3 组,每组 3 位。


第一组表示文件所有者的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字符分别表示对文件的读、写和执行权限。


​ 各权限如下所示:


r 读 (4)


w 写 (2)


x 执行 (1) 对于目录,表示进入权限。


  • 没有设置权限。

1.2.3 man 命令:查看帮助

功能:用于查看命令、函数、头文件的使用帮助信息。


用法: man [页码] <命令、函数名称、头文件名称>


页码一般为 1-7 页。如果当前页看不到想要的信息,可以切换到其他页查看。

1.2.4 cd 命令:切换目录

功能:切换目录


语法:cd [目录路径]


说明:该命令将当前工作目录切换至指定的目录。若没有指定目录路径, 则回到用户的主目录~。为了改变到指定目录,用户必须拥有对指定目录的执行和读权限。


常用的目录表示符号:


cd .. 到父目录,即上一级目录,相当于“向上”


cd - 到上一次目录,相当于“后退”


cd / 到根目录


cd ~或者只写 cd 回到到用户主目录下

1.2.5 mkdir 命令:创建目录

功能:创建一个目录


语法:mkdir [选项] dirname


说明:该命令创建由 dirname 命名的目录。要求创建目录的用户在当前目录中 (dirname 的父目录中)具有写权限,并且 dirname 不能是当前目录中已有的目录或 文件名称。


参数:


  • m 对新建目录设置存取权限。也可以用 chmod 命令设置。

  • p 可以是一个路径名称。此时若路径中的某些目录尚不存在, 加上此选项后, 系统将自动建立好那 些尚不存在的目录,即一次可以建立多个目录。


创建多层目录示例:mkdir ./dir1/dir2/dir3 -p

1.2.6 touch 命令:创建普通文件

功能:创建一个文件。


语法:touch [文件名称]

1.2.7 rm 命令:删除文件/目录

功能:在 linux 中创建文件很容易,系统中随时会有文件变得过时且毫无用处。用户可以用 rm 命令将其删除。该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。


语法:rm [选项] <文件或者目录>


说明:如果没有使用- r 选项,则 rm 不会删除目录。


参数:


  • f 忽略不存在的文件,从不给出提示。

  • r 指示 rm 将参数中列出的全部目录和子目录均递归地删除。

  • i 进行交互式删除。


-v 输出已经删除的文件


使用 rm 命令要格外小心。因为一旦一个文件被删除,它是不能被恢复的。为了防止此种情况的发生,可以使用 rm 命令中的 -i 选项来确认要删除的每个文件。如果用户输入 y,文件将被删除。如果输入任何其他东西,文件将被保留。

1.2.8 cat 命令:查看文件内容

功能:查看文件内容


语法:cat [选项] [文件]


参数:


-b 对非空输出行编号


-E 在每行结束处显示 $


-n 对输出的所有行编号


-s 不输出多行空行

1.2.9 pwd 命令:显示工作目录

功能:在 Linux 层次目录结构中,用户可以在被授权的任意目录下利用 mkdir 命令创建新目录,也可以利用 cd 命令从一个目录转换到另一个目录。然而,没有提示符来告知用户目前处于哪一个目录中。要想知道当前所处的目录,可以使用 pwd 命令,该命令显示整个路径名。


语法:pwd


说明:此命令显示出当前工作目录的绝对路径。


举例:pwd


根目录以开头的“/”表示。如果 pwd 后面什么都没有,则显示当前所在位置。如果屏幕信息很多,用 clear 可以清除。

1.2.10 cp 命令:拷贝文件/目录

功能:将给出的文件或目录拷贝到另一文件或目录中。


语法:cp [选项] <源文件或目录> <目标文件或目录>


说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。


参数:


  • a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录。

  • d 拷贝时保留链接。

  • f 删除已经存在的目标文件而不提示。

  • i 和 f 选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答 y 时目标文件将被覆盖,是交互式拷贝。

  • r 若给出的源文件是一目录文件,此时 cp 将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。一般使用-a 参数。


举例:


1.2.11 mv 命令:改名、移动、文件/目录

功能:为文件或目录改名或将文件由一个目录移入另一个目录中。


语法:mv [选项] <源文件或目录> <目标文件或目录>


说明:视 mv 命令中第二个参数类型的不同(是目标文件还是目标目录),mv 命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv 命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv 先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。


参数:


-i 交互方式操作。如果 mv 操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答 y 或 n,这样可以避免误覆盖文件。


-f 禁止交互操作。在 mv 操作要覆盖某已有的目标文件时不给任何指示,指定此选项后,i 选项将不再起作用。


如果所给目标文件(不是目录)已存在,此时该文件的内容将被新文件覆盖。为防止用户在不经意的情况下用 mv 命令破坏另一个文件,建议用户在使用 mv 命令移动文件时,最好使用 i 选项。

1.2.12 chmod 命令:修改文件/目录权限

功能:改变文件或目录的访问权限


语法:chmod [权限] <文件或者目录>


​ 通过 ls -l 命令可以查看目录或者文件的详细信息,其中第 2~10 个字符代表了文件的访问权限,当中的每 3 个为一组,左边三个字符表示所有者权限,中间 3 个字符表示与所有者同一组的用户的权限,右边 3 个字符是其他用户的权限。这三个一组共 9 个字符,代表的意义如下:



其中的权限可以使用数字的组合方式进行表示:



数字设定的关键是取值,一开始许多初学者会被搞糊涂,其实很简单,我们将 rwx 看成二进制数,如果有则有 1 表示,没有则有 0 表示,那么 rwx r-x r- -则可以表示成为:111 101 100


再将其每三位转换成为一个十进制数,就是 754。


​ 例如,我们想让 123.txt 这个文件的权限为:



那么,我们先根据上表得到权限串为:rwx-rw-rw--,那么转换成二进制数就是 111 110 100,再每三位转换成为一个十进制数,就得到 764,因此我们执行命令:


1.2.13 ln 命令:建立符号链接

ln 连接文件或目录,分为软链接和硬链接。


软连接语法:ln -s <源文件> <目标文件> (删除源文件之后,链接变成无效的了),相当于快捷方式。


硬链接语法:ln <源文件> <目标文件>(删除源文件之后,目标没有影响)


举例:


#ln -s a.txt p 创建软链接之后通过 ls -l 命令,可以查看到 p 带有一个箭头指向 a.txt。

1.2.14 eog 命令:查看图片

功能:打开图片浏览器查看图片。


语法:eog <图片文件>


例如:eog 123.png

1.2.15 echo 命令:输出调试语句

功能:echo 命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。


语法:echo [参数] <输出的数据>


参数:


-n :表示在最后输出时不自动换行。


​ 说明:使用 echo 输出字符串时,双引号会自动省略掉。


(1)示例:



以上两条命令输出的效果一样。


(2)示例:如果想要显示符号,需要使用转义符号。


1.2.16 重定义到文件

在终端中常用的重定义符号为: > 和 >>


其中:>符号表示覆盖、>>符号表示追加。


示例:


1.2.17 du 命令:查看磁盘/文件的大小

功能:查看文件的大小信息。


用法: du [参数] <文件名称>


常用参数如下:


-k 用 1024 字节单位计算块数。


-h 选择合适的单位计算大小。


-b 选择字节单位计算大小。

1.3 文件编辑器相关命令介绍

在 linux 下常用的文本编辑器命令有: vi、vim、gedit 等。


其中 vi 与 vim 命令是基于命令行的编辑器。gedit 命令是基于鼠标键盘的编辑器,类似于 windows 下的记事本。

1.3.1 gedit 编辑器介绍

gedit 编辑器用法示例:



打开的界面如下:



设置显示行号:



打开文件时,如果需要进入到文件的指定行位置,可以在命令的最后面写上需要进入的行号。


示例:


1.3.2 vim 编辑器介绍

vim 分为两种状态,即命令状态和编辑状态,在命令状态下,所键入的字符系统均作命令来处理,如:q 代表退出,而编辑状态则是用来编辑文本的。当你进入 vim 时,会首先进入命令状态。在命令状态下,按”i”(插入)或”a”(添加)可以进入编辑状态,在编辑状态,按 ESC 键进入命令状态。


​ 插入文本:


a 从光标后面开始添加文本


A 从光标所在行的末尾开始添加文本


i 从光标前面开始插入文本


I 从光标所在行的开始处插入文本


o 在目前光标所在的下一行处插入新的一行


O 在目前光标所在处的上一行插入新的一行


s 删除游标所在字符,并进入编辑模式


S 删除游标所在的行,并进入编辑模式


r 输入字符,取代光标所在的那一个字符


R 一直取代光标所在的字符,直到按下 ESC 为止


​ 删除与修改:


x 删除光标处的字符


dd 删除光标所在的整行


3dd 删除光标所在行以及下面的两行


D 或 d$ 删除光标到行尾的文本,常用语删除注释语句


d^或 d0 删除光标到行首的文本


​ 光标的移动:


h 或 向左方向键(←) → 光标向左移动一个字符


j 或 向下方向鍵(↓) → 光标向下移动一个字符


k 或 向上方向鍵(↑) → 光标向上移动一个字符


l 或 向右方向鍵(→) → 光标向右移动一个字符


w 光标往后移一个字


b 光标往前移一个字


^ 光标移动到行首


$ 光标移动到行尾


Ctrl+f 向下翻一页 forward


Ctrl+b 向上翻一页 back


Ctrl+d 向下翻半页 down


Ctrl+u 向上翻半页 up


gg 光标定位到文档头


G 光标定位到文档尾


H 光标定位到当前页首


L 光标定位到当前页的最后一行的行首


[n]+ 光标向后移动 n 行,[n]表示一个整数,比如 10+


[n]- 光标向前移动 n 行,[n]表示一个整数,比如 10+


[n]G 光标定位到第 n 行行首, [n]表示一个整数,比如 10+


​ 查找与替换:


/[str] 查找字符串 str,[str]表示要查找的字符串,回车后会加亮显示所有找到的字符串,命令 n 移动到下一个找到的字符串,命令 N 移动到上一个找到的字符串


示例: /hello


​ 块操作:


v 可视化块选择状态,选中块之后,可以对块进行删除(d),复制(y),剪切(x)


u 撤销上次操作


ctrl + r 恢复上次操作


​ 结束编辑:


:q 在未修改文档的情况下退出


:q! 放弃文档的修改,强行退出


:w 保存


:wq 保存并退出


​ 其他:


:help 命令 查看该命令的帮助提示


:%!xxd 十六进制模式


:%!xxd -r 返回文本模式


​ 如果在编辑过程中不小心按了 Ctrl+s,vi 会处于僵死状态,按 Ctrl+q 可以恢复。


执行 vim +3 main.c //表示定位到 main.c 的第 3 行


执行 vim +/printf main.c //表示定位到第一个 printf 处


在命令模式下输入:new 2.c //表示再打开一个 vi,是横向的 用 vnew 2.c 表示纵向


进行切换用 Ctrl+w 然后再按 w 即可切换


在命令模式中输入 gg=G 可以自动对齐


​ 配置 vim 显示行号


在/etc/vimrc 文件中加上以下代码:


1.4 编译器命令

在 linux 系统下通常使用 gcc 作为主要编译器。GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C 语言。GCC 很快地扩展,变得可处理 C++。后来又扩展能够支持更多编程语言。


使用 GCC 编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC 编译器的调用参数大约有 100 多个,这里只介绍其中最基本、最常用的参数。


GCC 最基本的用法∶ gcc [参数] [文件名称]


​ 常用的参数如下


-c 只编译:不链接成为可执行文件,编译器只是由输入的.c 等源代码文件生成.o 为后缀的目标文件,通常用于编译不包含主程序的子程序文件。


-o output_filename:确定输出文件的名称为 output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc 就给出预设的可执行文件 a.out。


-g:产生符号调试工具(GNU 的 gdb)所必要的符号信息,要想对源代码进行调试,我们就必须加入这个选项。


-O:对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、链接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、链接的速度就相应地要慢一些。


-O2:比-O 更好的优化编译、链接,当然整个编译、链接过程会更慢。


-E:仅执行编译预处理;


-S:将 C 代码转换为汇编代码;


示例:



​ 编译时指定库与头文件路径


-L:指定动态库路径。示例:gcc test.c -o app -L/usr/lib


-I: 指定头文件存放的路径。示例:gcc test.c -o app -I/usr/include


-l: 指定库名称。示例:示例:gcc test.c -o app -lpthread

发布于: 刚刚阅读数: 5
用户头像

DS小龙哥

关注

之所以觉得累,是因为说的比做的多。 2022.01.06 加入

熟悉C/C++、51单片机、STM32、Linux应用开发、Linux驱动开发、音视频开发、QT开发. 目前已经完成的项目涉及音视频、物联网、智能家居、工业控制领域

评论

发布
暂无评论
Linux系统下基础命令介绍_10月月更_DS小龙哥_InfoQ写作社区