当前位置:   article > 正文

基于GEC6818开发板的ARM多项目实践

基于GEC6818开发板的ARM多项目实践

 

1、Linux命令

cd 命令

    cd:修改当前所在目录(文件夹,用来切换文件夹)
     cd      切换到家目录(/home/china)
     cd ~    切换到家目录(/home/china)
     cd /home/china  切换到家目录(/home/china)
     cd /  切换到根目录(文件系统的最底层)
      cd ..  切换到上一级目录
      cd ./day1    切换到当前目录下的day1文件夹
      cd -   切换到上一次所在的目录
      cd /mnt/hgfs/Share  切换到共享文件夹所在的路径
      路径分为两种:以/开头的和以.开头的
                以/开头的路径,是绝对路径,从根目录的位置开始
                以.开头的路径,是相对路径,从当前所在的目录开始
                如:
                    cd /home/china  切换到家目录(/home/china)
                    cd /  切换到根目录(文件系统的最底层)
                    cd ..  切换到上一级目录
                    cd ./day1    切换到当前目录下的day1文件夹

ls命令 

    ls:list,显示当前路径或者指定路径中所有文件的文件名
        ls      显示当前目录下的文件名(不包含隐藏文件)
        ls /home/china  显示指定目录下的所有文件的文件名(不包含隐藏文件)
        ls -a   显示当前目录下的文件名(包含隐藏文件)
        ls -a /home/china  显示指定目录下的所有文件的文件名(包含隐藏文件)
            在Linux中,以.开头的文件就是隐藏文件
        ls -l   显示当前目录下所有文件的详细信息,包括文件大小、权限、最后一次修改时间、文件名
            如:
                -rwxr-xr-x 1 china china    8632 5月   7 11:37 a.out

                第一个字符:用来描述文件的类型
                        -:表示普通文件,包括文本文件(.txt文件)和二进制文件(可执行文件等)
                        d:表示目录文件,即 文件夹

                        c:字符设备文件
                        b:块设备文件
                        l:软链接文件

                rwxr-xr-x:一共有9个字符,用来表示文件的读写以及可执行权限
                        这9个字符可以分成三组,每3个字符为一组
                        每一组包含3个权限:读权限(r)、写权限(w)、执行权限(x)
                        所以,这3组权限,就表示3种用户对该文件的权限
                        第一组,表示属主用户对该文件的权限,如:rwx 表示 可读,可写,可执行
                        第二组,表示组用户对该文件的权限,如:r-x 表示 可读,不可写,可执行
                        第三组,表示其他用户对该文件的权限,如:r-x 表示 可读,不可写,可执行

                        所以,如果一个文件的权限为:rwxr----,它代表的含义为:
                            属主用户对该文件可读可写可执行
                            组用户对该文件可读不可写不可执行
                            其他用户对该文件不可读不可写不可执行

                1:代表该文件的硬链接个数为1个

                china:属主用户的组名

                china:属主用户的名称
                
                8632:文件的大小,单位为字节

                5月 7 11:37:该文件最后一次修改的时间

                a.out:文件的名称

        ls -l /mnt/hgfs/Share/day1/笔记/笔记.txt    查看指定路径下的某个文件的详细信息
        ls -la 查看当前路径下所有文件的详细信息(包含隐藏文件)
        ls -la /mnt/hgfs/Share  查看指定路径下所有文件的详细信息(包含隐藏文件)

其他命令 

    touch:创建空的普通文件
        touch 1.c
        touch 2.c 3.c 4.c 5.txt

    rm:删除文件,默认只能删除普通文件
        rm 1.c
        rm 2.c 3.c
        rm *.c      删除所有的以.c结尾的文件
        rm *        删除当前路径下所有的文件

        rm -r 文件名    递归地删除文件中的内容
            rm -r dir4  递归地删除目录dir4

        rm -f 文件名    强制删除一个文件,不询问是否删除有写保护的文件
            rm -rf dir5 强制且递归地删除一个文件,通常用来删除目录

    mkdir:创建空目录
        mkdir dir1
        mkdir dir2 dir3 dir4

    rmdir:删除空目录
        rmdir dir1
        rmdir dir2 dir3 dir4
        rmdir *     删除当前路径下所有的空目录

    chmod:修改文件的权限
        chmod +x test.c     给当前路径下的test.c文件添加可执行权限(对所有用户有效)
        chmod -r test.c     去除当前目录下的test.c文件的可读权限(对所有用户有效)
        chmod +w test.c     给当前路径下的test.c文件添加可写权限(对所有用户有效)

        chmod u+x test.c    给当前路径下的test.c文件的属主用户添加可写权限(只对属主用户有效)
        chmod g-r test.c
        chmod o+w test.c
        chmod ug+x test.c

        注意:
            共享文件夹中的文件的权限不仅仅只受到Ubuntu的影响,还会受到Windows的影响
            所有,共享文件夹中的某些权限是无法修改的(可读和可执行)

        文件的权限是通过位域来实现的(通过bit来实现的)
        用0表示没有对应的权限,1表示有对应的权限
        所以,假设文件的权限为 rwxrw-r--,该文件的权限可以表示为:
            111 110 100
        文件权限3个为一组,即3个bit表示一组权限,所以,通常用八进制数来描述文件的权限
        如:    
            rwx rwx rwx => 111 111 111 => 0777
            rw- r-- r-- => 110 100 100 => 0644
            rwx rw- r-- => 111 110 100 => 0764
        
        通常情况下,当用来描述文件的权限时,八进制数可以省略前面的0
        因此,我们可以这样来修改文件的权限:
            chmod 777 test.c    =》 rwx rwx rwx
            chmod 764 test.c    =》 rwx rw- r--

    cp:拷贝文件或者目录
        cp 1.c 2.c      将1.c拷贝到当前目录,并且指定新文件名为2.c
                        该命令通常用来备份文件
        cp 1.c /home/china  将当前路径下的1.c拷贝到指定的路径下去
        cp 1.c /home/china/2.c  将当前路径下的1.c拷贝到指定的路径下去,并且指定新文件名为2.c
        cp -r dir3 /mmt/hgfs/Share 将当前路径下的dir3这个目录拷贝到指定的路径下去

    mv:移动文件或者目录
        mv 1.c 2.c      将1.c移动到当前目录下,并且修改文件名为2.c
                        该命令通常用来修改文件名称
        mv 1.c /home/china  将1.c移动到指定的路径下去
        mv 1.c /home/china/2.c  将1.c移动到指定的路径下去,并修改文件名为2.c
        mv code /home/china 将当前路径下的code目录移动到指定的路径下去

    clear:清屏
        快捷键:Ctrl + L

    sudo:以超级用户的权限去执行后面的命令
        sudo touch 1.c
            注意:
                在使用sudo 的时候会需要输入用户的登录密码
                而且在输入密码的时候不会显示输入的密码个数,没有任何的显示
                密码验证通过以后,在一定的时效内是可以免密的

2、vi/vim编辑器的使用


    vi/vim:vi和vim是编辑器的名称
            vim是vi的升级版,但是他们的基本功能都差不多
            vi和vim是Linxu中功能非常强大的编辑器,可以用来编辑文本以及代码
            通常用来编辑Linxu中的一些配置文件

            vi和vim有两种工作模式:命令模式、编辑模式
            在命令模式下,键盘字符的输入都会被当作一条命令来执行
            如:  
                u:并不是在文件中输入一个u,而是执行命令撤销的操作
                d:剪切
                p:粘贴
                y:复制

            在编辑模式下,键盘字符的输入都会当作一个字符输入到文件中去
            即,编辑文本

            命令模式下有以下一些命令常用:
                dd:剪切一行,如果不粘贴可以理解为删除一行
                dnd:剪切n行,如果不粘贴可以理解为删除n行,如:d3d,从当前行开始往后剪切3行
                yy:复制一行
                yny:复制n行,如:y5y,从当前行开始复制5行
                p:粘贴,在当前行的后面新开一行粘贴
                P:粘贴,在当前行的上一行新开一行粘贴
                u:撤销
                i/I/o/O/a/A:从命令模式进入到编辑模式,字母不同,光标位置不同

            当用vi或者vim编辑器打开一个文件时,默认处于命名模式


            在编辑模式下,按Esc键可以退出编辑模式,进入命令模式

            在命令模式下,输入:
                :w      保存文件
                :q      退出编辑器,如果修改了文件内容,会提示是否需要保存
                :wq     保存并退出
                :q!     强制退出,不保存
                :x      保存并退出

3、系统io

1.文件IO(系统IO)
    在Linux中一切皆文件!
    
    假设没有操作系统,那么所有的程序都需要程序员自己设计
    那么这样的话,所有操作文件的代码,也需要程序员自己去设计并实现
    所以,这样的话效率很低,可移植性很差

    为了避免这种情况,提供硬件设备的利用率,对硬件设备进行更好的管理和调度
    就有了操作系统!

    操作系统就是用来管理设备上硬件的程序,它介于底层硬件和应用程序之间
    原本需要直接和硬件打交道的地方,就可以直接交给操作系统去完成
    这样,开发人员在开发程序的时候,就有更多的精力投入到项目本身。提供开发效率

    操作系统提供了一些操作文件的函数接口
    即,操作系统帮我们实现了对文件访问的函数设计
    我们只要调用这些函数就可以完成对文件的访问

    由操作系统提供的访问文件的函数统称为:系统IO(文件IO)
    
    对一个文件的操作无非分为以下几种:
        打开            open
        读              read
        写              write
        设置光标位置     lseek
        关闭            close

    所以,学习对文件的操作,无非就是对这几个函数进行应用

2.open
    描述:
        open - open and possibly create a file
                打开并且有可能创建一个文件

    函数原型:
        int open(const char *pathname, int flags);

    参数:
        pathname:要打开的文件的路径名(可以用相对路径和绝对路径)
        flags:打开标志,有以下标志可用
            O_RDONLY:只读打开
            O_WRONLY:只写打开
            O_RDWR:可读可写
            O_APPEND:追加打开,光标移动到文件末尾
            O_CREAT:如果要打开的文件不存在,则创建该文件
            O_TRUNC:截短打开,在打开文件前,先清空文件内容,即每次打开文件,都会清空文件内容
            打开标志之间可以用或运算,如:
                可读可写打开,如果文件不存在则创建,打开以后光标移动到文件末尾
                O_RDWR|O_CREAT|O_APPEND

    返回值:
        open() return the new file descriptor, 
        or -1 if an error occurred (in which case,  errno  is set appropriately).
        成功,返回一个新的文件描述符
            文件描述符:该程序在运行期间打开的文件的序号
                    如:    
                        打开的第一个文件,那么该文件的文件描述符为0
                        打开的第二个文件,那么该文件的文件描述符为1
                        打开的第三个文件,那么该文件的文件描述符为2
                        ...
            文件打开以后,对该文件的操作,都是通过文件描述符来完成的

        失败,返回-1,同时errno被设置
            errno:erro number,是程序在执行一些库函数的时候出错了的错误编号
                根据该错误编号,就可以找到具体的错误信息
                可以通过perror()这个函数来将错误码对应的错误提示文本打印出来

    头文件:
        #include <sys/types.h>
        #include <sys/stat.h>
        #include <fcntl.h>

    注意:
        程序在运行前,系统会为其打开3个文件:标准输入,标准输出,标准错误
        所以,在程序中打开的对一个文件实际上已经是第4个文件了!

3.close
    描述:
        close - close a file descriptor
                关闭一个文件描述符(文件)

    函数原型:
        int close(int fd);

    参数:
        fd:要关闭的文件的文件描述符

    返回值:
        close() returns zero on success.  
        On error, -1 is returned, and errno is set appropriately.
        成功,返回0
        失败,返回-1,同时errno被设置

    头文件:
        #include <unistd.h>

4.read
    描述:
        read - read from a file descriptor
                从一个文件描述符中去读取数据
    
    函数原型:
        ssize_t read(int fd, void *buf, size_t count);
    
    参数:
        fd:指定从哪个文件中读取数据
        buf:是一个指针变量,用来保存一个地址,这个地址就是存放读到的数据的地址
            即,将读到的数据保存到哪个地方去
        count:计数,指定一次性最多读取多少个字节的数据

    返回值:
        On success, the number of bytes read is returned (zero indicates end of file)
        On  error,  -1  is returned, and errno is set appropriately.
        成功,返回读到的字节数(返回0就表示读到文件末尾了,读完了)
        失败,返回-1,同时errno被设置

    头文件:
        #include <unistd.h>

5.write
    描述:
        write - write to a file descriptor
                往一个文件描述符中写入数据

    函数原型:
        ssize_t write(int fd, const void *buf, size_t count);

    参数:  
        fd:指定要往哪个文件中写入数据
        buf:是一个常量指针,指向的目标内容不能变
            该指针变量用来接收一个地址,这个地址中存储的是要写入的数据
            即,用来指定将哪些内容写入到文件中去
        count:计数,指定一次性写入的字节数
                count值不能大于实际内容的长度

    返回值:
        On success, the number of bytes written is returned (zero indicates nothing was written).
        On error, -1 is returned, and errno is set appropriately.
        成功,返回写入的字节数(返回0就表示什么都没有写进去,通常是因为要写入的数据为空)
        失败,返回-1,同时errno被设置

    头文件:
        #include <unistd.h>


    注意:
        打开一个文件以后,光标位置默认在文件开头的位置
        每读一个字节数据或者写入一个字节数据,光标就会自动往后移动一个字节
        这样才不会重复地读或者写同一个字节的数据

6.lseek
    描述:
        lseek - reposition read/write file offset
                重新设置读/写的文件偏移量(光标位置)
    
    函数原型:
        off_t lseek(int fd, off_t offset, int whence);

    参数:
        fd:文件描述符,指定设置哪个文件的文件偏移量
        offset:设置要便宜的字节数
        whence:指定从文件的哪个位置开始偏移,有以下几个位置可选:
            SEEK_SET:从文件开头的位置开始偏移offset个字节
            SEEK_CUR:从当前位置开始偏移offset个字节
            SEEK_END:从文件末尾的位置开始偏移offset个字节

    返回值:
        lseek() returns the resulting offset location as measured in bytes from  the  beginning of the file.  
        On error, the value (off_t) -1 is returned and errno is set to indicate the error.
        成功,返回光标距离文件开头的字节数(返回偏移量)
        失败,返回-1,同时errno被设置

    头文件:
        #include <sys/types.h>
        #include <unistd.h>
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/855482
推荐阅读
相关标签
  

闽ICP备14008679号