Linux下C/C++/汇编/内核编程与调试(02)

本书旨在帮助初学者快速掌握Linux命令行的基础知识,包括联机文档查询、文件系统操作、常用命令使用等,通过循序渐进的学习方式,让读者轻松上手Linux命令行,理解计算机工作原理,为后续深入学习打下坚实基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1章 linux命令行入门    

对于初学者而言,命令行可能有些晦涩难懂。确实,对于一个早已适应windows下鼠标点点就完成一切的用户来说,在一个比dos好不了多少的终端里输入一堆不知道怎么放到到一块的字符,的确不是一个很舒服的事情。但是,至少对于看这本书的读者而言,以后将要从事的工作和计算机都是分不开的。如果你把电脑当作很简单的工具的而不下功夫了解的话,估计一辈子都学不好计算机。所以,虽然命令行看似很古董,看似很落后,它是你了解计算机最好的窗口,当你有一天入门之后,你会发现,哇,原来计算机是这个样子啊。

 

 

我在学习linux的过程发现,很多讲授命令行的书,会把大量平时很少用到(仅仅指linux下编程,系统运维除外)或者新手不可能接触的命令一一罗列出来,这就如同学英语一样,拿一本牛津词典让你从头到尾背到尾,可能你的英语水平会因此提高很多,但这绝不是学习的最佳手段。况且,在初期,你只需要记住最常用的命令,在以此为基础慢慢拓展。当你遇到不熟悉的命令时,你只需要man一下,或者利用搜索引擎找到相关用法就可以了。

 

 

因此,我下面所罗列的命令,基本上属于最常用的,而且相对比较容易理解。可能这些内容既少又简单,不能让你感受到命令行的强大和魅力,但是当你熟悉了这些基本的命令之后,会更容易接受其它相对复杂的命令。因为不管做什么事情,都有一个循序渐进的过程,一口吃个大胖子的想法不仅不现实,还有可能造成厌食症。况且事物之间都是有联系的,当你熟悉一些东西之后,会帮助你更好的理解其它的问题。(以下命令均在终端输入)

 

 

1.1联机文档

 

 

开始就讲联机命令的目的,是帮助你培养一种习惯:当你遇到不熟悉的命令或功能时,随时可以在终端输入man/info + 命令进行查询。虽然多数的帮助文档是英文的(我在ubuntu下遇到的基本全是),它们的阅读难度都很小,既没有复杂的语法,也不会故意设置长难句考察你的英语阅读能力。所以,刚开始可能你不会太适应,但是慢慢的你就会习惯了,并且,在这个过程中,你的英语阅读水平会不断的提高,这也是一种进步和收获。

 

 

联机命令的作用,就是可以帮助你查看每一个命令的所有功能选项,能帮助你更好地理解和应用。linux下的联机命令有man,infohelp,其中最常用的就是man,用法就是在它们后面直接加上命令。相比于man,info命令具有更强的交互性,并且更详细;而help则比较简洁。

下面是一个典型的应用:

 

lishuo@lishuo-Rev-1-0:~$ man ls

LS(1)                            User Commands                           LS(1)

NAME

       ls - list directory contents

SYNOPSIS

       ls [OPTION]... [FILE]...

DESCRIPTION

       List  information  about  the FILEs (the current directory by default).

       Sort entries alphabetically if none of -cftuvSUX nor --sort  is  specified.

       Mandatory  arguments  to  long  options are mandatory for short options

       too.

       -a, --all

              do not ignore entries starting with .

       -A, --almost-all

              do not list implied . and ..

       --author

........

........

 

 

1.2文件系统

 

 

文件系统这个词听着很吓人,但我不会罗列一大堆晦涩的概念放在那里让你消化,下面要讲的仅仅是一个实用的命令,这些命令在平时用到的比较多,基本上都是对文件目录的操作。这也是我开始就讲文件系统的原因,我们在进行某项工作的时候都是在特定的目录下,如果不熟悉文件系统的话,你可能连你操作的文件都找不到。linux的文件系统和windows差别比较大,你无法找到D.E.F盘去存储或打开你需要的文件,尤其是使用一些命令行工具时,鼠标不能再帮你找到你所需要的文件或路径。因此,只有当你熟悉linux的基本文件系统之后,你才能更好的开展其它的工作。

 

 

下面是一个典型的linux文件系统的目录层次,熟悉它会帮助你理解后面的讲解。

 

 

 

 

 

例如我自己的桌面的目录是: /home/lishuo/桌面

注:lishuo是我的用户名,后面可能会涉及到

 

 

1pwd : 显示当前的工作目录

 

2ls/dir:显示当前目录下所有文件名

 

3cat显示文本文件的内容

   less/more:分屏显示文件内容,适合超过一屏的文件

 

4cd更改工作目录。

    例如: cd 绝对路径: cd /home/lishuo/桌面

           cd 相对路径: cd 桌面

           cd ..:进入上一级

           cd ~ :进入主目录

 

5cp复制文件或目录

         cp 源文件 目标文件

                cp -R dir1 dir2

       例如:cp test.txt 001.txt      test复制一份生成001

             cp hic    /home/文档     把当前目录下的hic复制到文档中

 

6mv移动或重命名文件或目录

         mv 存在文件 新文件

                mv file_lists  directory

  例如:mv a.txt b.txt       把a重命名为b

 

7rm : 删除文件或目录(加选项-r删除目录)

   rmdir:删除目录。通常情况加上-i实现交互,防止误删。

   例如:rm -i test.txt

                      rm -i -r test

 

8touch创建新文件或改变文件的访问和修改时间。

    例如:touch test.txt 如果不存在test,则在当前目录下创建它。

 

9:mkdir创建目录

    例如:mkdir  test 在当前目录下创建目录test

                                                                                        10diff对两个文件进行比较,显示两者的不同之处,但是不会改变文件内容。

 

11file: 查看文件的状态和信息

 

12ls -l:显示访问权限

 

13find在用户指定的目录下查找指定的文件或目录

 

     语法格式:

      find  [起始目录]  [搜索条件]  [操作]

      例如:

              find . -name '*.txt' -print

        会在当前目录下查找所有的以.txt结尾的文件并显示出来。

 

14 head:显示文件的头部信息

 

15 tail:显示文件的尾部信息

 

16wc命令:统计给动文件中的字节数,字数和行数。

 

          wc -m filename : 显示一个文件的字符数。

          wc -l filename : 显示一个文件的行数

          wc -L filename : 显示一个文件中最长行的长度。

          wc -w filename : 显示一个文件的字数。

 

17 sort命令:对文件中的各行进行排序

 

18: chmod 命令:修改文件的权限

 

19mount/unmount:加载或卸载文件系统

 

   下面是三种比较常用的命令:

     mount  -v -t auto /dev/hdb3  mnt/dir

   自动检测文件系统并加载/dev/hdb3到目录mnt/dir下,执行时显示详细信息

     umount -v /mnt/dir

   卸载当前挂载在mnt/dir中的文件系统,执行时显示详细信息

      mount  -o loop a.img /mnt/floppy_img

   将镜像文件a.img挂载到/mnt/floppy_img

 

 

 

1.3其它常用命令      

1:定位命令

whereis:在标准路径下搜索,与用户设定的路径无关,它会显示所有搜索到的文件。

which在设定的搜索路径下按顺序搜索目录,定位命令并执行。

 

2:显示日期和时间

date:设定系统时间

cal显示日历

 

3:显示文本

echo      

echo工具可将其后的任何内容显示在屏幕上。它在解释shell变量的工作机制以及在屏幕上显示shell脚本时非常有用。

 

4:格式转换

unix2dos  test.txt   将其转换为dos格式的文本文件

dos2unix  test.txt   将其转换为linux格式的文本文件

 

5:系统信息

cat /proc/meminfo:查看内存使用

cat /proc/cpuinfo:CPU使用率

top:显示所有进程信息

ps:显示进程的PID

free显示内存信息

kill杀死进程

time显示进程的执行时间

&:将命令放在后台执行

 

 

6:终端

       打开终端:Ctrl + Alt + T(或着是Ctrl + Shirt + T)

       关闭终端:Ctrl + Shift + Q

       复制:Ctrl + Shift + C

       粘贴:Ctrl + Shift + V

    clrear:清屏(会保留以前输入的命令)

 

    reset重新初始化终端,效果和clear差不多

 

小技巧:在输入的时候,TAB键可以帮你补全命令,两次TAB会列出所有的可能。

 

 

7:重定向和管道

 

1:重定向:改变shell标准输入来源和标准输出去向的各种方式。

通过重定向符号(>)可以将shell命令的输出重定向到指定的文件而非屏幕。

例如: commmand > filename

通过重定向符号(<)可以将shell命令的输入重定向到指定的文件而非键盘。

例如:command < filename

 

 

2:管道:管道的功能类似于下面的过程:将一个命令的标准输出重定向到

一个文件,然后将该文件作为另一个命令的标准输入。

命令行语法格式:commandA | commandB

其类似与:commandA > temp

              commandB < temp

              rm temp   

 

 

8:备份与压缩

 

.tar

解包:tar xvf FileName.tar

打包:tar cvf FileName.tar DirName

 

.gz

解压:gunzip FileName.gz

压缩:gzip FileName

 

.tar.gz 和 .tgz

解压:tar zxvf FileName.tar.gz

压缩:tar zcvf FileName.tar.gz DirName

 

.bz2

解压:bunzip2 FileName.bz2

压缩: bzip2 -z FileName

 

.tar.bz2

解压:tar jxvf FileName.tar.bz2

压缩:tar jcvf FileName.tar.bz2 DirName

 

.bz

解压:bzip2 -d FileName.bz

 

.tar.bz

解压:tar jxvf FileName.tar.bz

 

.Z

解压:uncompress FileName.Z

压缩:compress FileName

 

.tar.Z

解压:tar Zxvf FileName.tar.Z

压缩:tar Zcvf FileName.tar.Z DirName

 

.zip

解压:unzip FileName.zip

压缩:zip FileName.zip DirName

 

 

8:安装卸载软件:aptdpkg 

 

APT

1.apt-get install 软件包名称:安装或者升级指定软件包

2.apt-get remove 软件包名:移除指定软件包 

3.apt-get upgrade:对系统的软件全面升级 

5.apt-get clean:清理apt-get 后下载下来的包和未完成的包(安装源程序被清理)

 

 

dpkg:底层一些的包管理工具,用上apt(高级包管理工具)之后,一般是不需要处理单个的deb文件的。如果需要,就要用dpkg命令 

1.dpkg -i gedit-2.12.1.deb:安装gedit-2.12.1.deb 

2.dpkg -r gedit:卸载gedit,但不删除配置文件 

3.dpkg -P gedit:这会连同gedit的配置文件一起删除,只用-r的话是不删除配置文件的 

 

 

9dd:转换并复制文件

 

dd主要用来像在磁带或者软盘驱动器之间复制文件。dd可以在不同的操作系统之间传递信息而其它方法都不行。

例如:将test.bin文件写入a.img软盘中。

dd if=test.bin of=a.img bs=1 count=512 comv=notrunc

具体用法请使用联机命令。

 

 

11:开关机

 

由于关机重启之类的命令需要root权限,所以需要在命令前面加上sudo提权,或者输入sudo -s -E和密码进入root然后执行相关命令。

关机:

sudo halt

sudo shutdown now

重启:

sudo reboot

sudo shutdown -r

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值