嵌入式Linux基本命令及常用命令

 一、Linux系统中文件层次结构
        / 为根目录
        /bin 存放命令的:bin是二进制英文的缩写
        /boot 系统启动装载引导程序:存放系统启动时需要用到的程序
        /dev:包含了所有Linux系统中使用的外设
        /etc:存放了系统管理时要用到的各种配置文件
        /lib:存放系统动态链接共享库
        /home:普通用户主目录(家目录)
        /root:根用户(超级用户)的主目录
    
二、Linux基本命令
        1.cd 跳转指令
                cd +路径
        绝对路径:
                cd /mnt/hgfs 以/(根目录)开头的路径 
        相对路径:
                cd share
        . 当前的工作目录 
        .. 上一级目录
        
        2.ls 列表指令
                ls -a (all)
                ls -l
        
        3.cp 复制指令
                cp 带复制路径的文件名 你要复制到哪里去
                cp -r 复制文件夹
        ps:补全键 Tab
        
        4.mv 移动指令 (剪切)
                mv 带移动路径的文件名 你要移动到哪里去
                mv 可以也可以用做重命名
        
        5.mkdir(make directory 创建目录)
                mkdir -p 级联创建文件夹
        
        6.rm remove 删除指令
                rm + 文件名
                rm + -rf +目录名

        7.touch 创建文件或更新时间戳
        
        8.cat指令  显示文件的内容
                cat -s:多个空行和并成一个空行
                cat -b:加行号显示
        
        9.head命令和tail命令
                head -n 文件名 :表示查看文件前n行
                tail -n 文件名 :表示查看文件倒数n行
        
        10.gcc 命令
            gcc -o <file>  表示输出文件名为file,不能和源文件名相同
            gcc 1.c -o 1 
            gcc 1.c 
            gcc 1.c -o 1 -Wall:加了-Wall会提示语法错误
            
            gcc -E -o    只预处理,不会编译、汇编、链接
            gcc -E -o hello.i hello.c
            
            gcc -S -o    只编译,不会汇编、链接
            gcc -S -o hello.s hello.i
            
            gcc -c -o    编译和汇编,不会链接
            gcc -c -o hello.o hello.s
            
            gcc -o hello hello.o    输出可执行文件
            
            小结:
            1)输入文件的后缀名和选项共同决定gcc到底执行哪些操作
            2)在编译过程中,除非使用了-E、-S、-c选项(或者编译出错阻止了完整的编译过程)
               否则最后的步骤都是链接
               
        ps:链接就是将汇编生成的OBJ文件、系统库的OBJ文件、库文件链接起来,最终生成可以在特定平台运行的可执行程序。
           crt1.o、crti.o、crtbegin.o、crtend.o、crtn.o是gcc加入的系统标准启动文件,对于一般应用程序,这些启动是必需的。
           
           -lc:链接libc库文件,其中libc库文件中实现了printf等函数。   
           gcc -v -nostdlib -o hello hello.o 会提示因为没有链接系统标准启动文件和标准库文件,而链接失败。
            -nostdlib选项常用于裸机/bootloader/linux内核等程序,因为它们不需要启动文件,也不需要标准库文件。
            一般应用程序才需要启动文件和标准库文件.
            
        sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4
        arm gcc (在ARM环境下编译)
            ./a.out :表示执行程序
            
        Makefile文件
            1、当”目标文件“不存在 或 某个依赖文件比目标文件”新“ ,则执行”命令“
        
            2、Makefile的语法
                a.通配符:%.o
                  $@ 表示目标文件(即.o输出文件)
                  $< 表示第一个依赖文件
                  $^ 表示所有的依赖文件
                  
                b.假想目标: .PHONY:    (防止有同名文件影响make的执行)
                
                c.即时变量、延时变量,export
                  简单变量(即时变量):
                  A := xxx  #A的值即刻确定,在定义时即确定(即时变量)
                  B  = xxx     #B的值使用到时才确定(延时变量)
                    ?= xxx    #延时变量,如果是第一次定义才起效,如果在前面该变量已定义则忽略
                    += xxx    #附加,它是即时变量还是延时变量取决于前面的定义

A := $(C)
B = $(C)
C = abc
                    
all:
    @echo A = $(A)
    @echo B = $(B)

#输出
A = 
B = abc

#ps: $() 表示引用变量


            3、Makefile函数
                a.$(foreach var,list,text)

A = a b c
B = $(foreach f, $(A), $(f).o)
                
#输出
a.o b.o c.o

               b.$(filter pattern...,text)        #在text中取出符合pattern格式的值
                  $(filter-out pattern...,text) #在text中取出不符合pattern格式的值

A = a b c d/
B = $(filter %/, $(A))
C = $(filter-out %/, $(A))
                 

#输出
B = d/
C = a b c

               c.$(wildcard pattern)    #pattern定义了文件名的格式,wildcard取出其中存在的文件

1、
files = $(wildcard *.c)

#输出
#会打印此文件夹下所有后缀为.c的文件名
 
2、              
file = a.c b.c c.c
files = $(wildcard $(file))

#输出
#会打印Makefile所在文件夹下与file同名的文件

               d.$(patsubst pattern, replacement, $(var))            #从列表中取出每一个值,如果符合pattern,则替换为replacement

file = a.c b.c c.c
files = $(patsubst %.c, %.o, $(file))

#输出
#把传入形参(file)中后缀为.c的文件全部替换成后缀为.o的文件

files = a.o b.o c.o


            4.Makefile实例
                a.改进:支持头文件依赖
                    gcc -M c.c        //打印出依赖
                    gcc -M -MF c.d c.c  //把依赖写入文件c.d
                    gcc -c -o c.o c.c -MD -MF c.d    //编译c.o,把依赖写入文件c.d
                b.添加CFLAGS
                c.分析裸板Makefile
                
        11.pwd 命令
                显示当前所在位置
        
        12.vi 命令
                命令行模式:vi + 文件名
        
        插入模式: 进入界面按(A a,I i,O o)一般为i
                a:光标后移一位
                i:光标位置不变
                o:光标下插入新的行
                A:把光标移到所在行的最后面
                I:把光标移到所在行的最前面
                O:光标上插入新的行
        
        底航模式:编辑完成后按esc
                :q:退出未修改的文件
                :q!:强制退出,不保存修改部分
                :w:保存文件
                :w FILE:不退出,当前文件另存为别的文件名
                :x:保存并退出
                :r FILE:把FILE中的内容读到当前文件中
        
        vi中复制与黏贴
                y0:复制光标至行首的字符
                y$:复制光标至行尾的字符
                rang y:1,$y(表示复制全文)(可用于复制特定行)
                [N]dd:剪切(N代表几行)
                [N]yy:复制
                小写p:黏贴到当前光标的下一行
                大写P:黏贴到当前光标的上一行
                u:撤销
        
        光标命令
                h:相当于左        (H在左边)
                j:相当于下       (J很像↓)
                k:相当于上
                l:相当于右        (I在右边)
                :[N]:光标跳转到某一行
                1G:跳掉第一行
                G:跳到最后一行
                :set nu:加行号
                :set nonu:去掉行号


        查找命令
                / + 想要查找的函数
                n:往下查找下一个
                N:往上查找下一个
        ps:查找命令支持正则表达式
        
        替换命令
                :/s/old/new (表示old替换为new)
                :.,$s/ole/new (表示从当前位置到文件末尾把第一个old替换为new)
                :.,$s/ole/new/g (表示从当前位置到文件末尾把所有old替换为new)
                :1,$s/ole/new/g (表示全文的old替换为new) 等同于 :%s/ole/new/g
        
        三、linux常用命令
            1、find        [路径]    [类型]    [名称]    (用于查找文件)
                find . -name "*.txt"    (找到当前路径下所有后缀为.txt的文件)
                find . -mtime -2        (找到当前路径下所有2天之内修改过的文件)
                
            2、grep        [选项]    [查找模式]    [文件名]
                grep -rn "abc" *    ( -r(递归查找) -n(显示行号) 表示递归查找当前目录下文件中有"abc"字符串的文件)
                     -w 全字匹配
                     
            3、file        [文件名]    (识别文件类型)
                file ~/.bashrc        为ASCII 编码的text类型
                file ~/.vimrc        为UTF-8 Unicode 编码的text类型
                file ~/Pictures/*    如图形文件JPEG/PNG/BMP格式
                file [文件名]        为directory表明这是一个目录
                file /bin/pwd        出现ELF 64-bit LSB,即为ELF格式的可执行文件
                file /dev/*            出现character special(字符设备文件)     block special(块设备文件)
                
            4、which 和 whereis        [命令名/应用程序名]     (查找命令或应用程序所在位置)
                举例:
                which pwd  定位到/bin/pwd
                which gcc  定位到/usr/bin/gcc
                whereis 查找到可执行程序的位置和手册页的位置
                
            5、常用压缩命令
                单个文件解压缩使用 gzip 和 bzip2
                多个文件和目录使用 tar

                gzip常用选项
                -l(list)  列出压缩文件的内容  (bzip2没有这个选项)
                -k(keep)  在压缩文件解压时,保留输入文件
                -d(decompress)    将压缩文件进行解压缩
                    1)查看文件内容 gzip -l [文件名]
                    2)解压文件  gzip -kd [文件名]
                    3)压缩文件  gzip -k  [文件名]
              ps:如果gzip不加任何选项,此时为压缩,压缩完文件会生成后缀为.gz的压缩文件,并删除原有的文件
                      若文件名不同,解压出来的大小也不一样
                      一般情况下,小文件使用gzip压缩,大文件使用bzip2压缩
                      
                多文件tar打包,gzip压缩  (bzip2压缩只需要把z改成j就行了)
                    tar -czvf [压缩文件名] [目录名]
                    ps: tar -czvf 和 tar czvf效果是一样的
                查看
                    tar tvf  [压缩文件名]
                解压
                    tar xzvf [压缩文件名]
                    tar xzvf [压缩文件名] -C [指定目录]

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

要有上進心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值