Linux命令笔记


ctrl+alt+t   --->打开终端快捷方式


gec@ubuntu64:~$   ---》shell命令行,命令行提示符

gec      -->主机用户名  
@        -->作为分隔符
ubuntu64  -->主机名
:      -->作为分隔符
~       -->表示用户当前路径   ~  表示家目录    ~ == /home/gec
$       -->表示普通用户
#       -->表示管理员用户

----
sudo -s   --》切换管理员用户

exit  --》退出管理员用户

sudo vi /etc/vim/vimrc   -->临时切换管理员权限

----
ls       -->查看当前目录下的目录和文件
ls -l   -->查看当前目录下的目录和文件的详细信息
ls -a   -->查看当前目录下的目录和文件,包括隐藏文件
ls -la    -->查看当前目录下的目录和文件,包括隐藏文件详细信息
ls filename      -->查看当前目录下的是否有filename这个文件
ls -l filename  -->

-----
ls -l   -->查看当前目录下的目录和文件的详细信息

-rw-rw-r--  3 gec  gec        12 3月  20 15:28 1


Linux下一切皆文件


第一个字符:表示文件类型
    Linux文件种类:7种
    -        --->普通文件(.txt 、.c、.doc、二进制文件、.png)
    d        --->目录文件(文件夹)
    l        --->链接文件(快捷方式)
    b        --->块设备文件(内存)
    c        --->字符设备文件
    s        --->套接字文件(用于网络传输)
    p        --->管道文件(先进先进)

第二个字符至第十个字符:分别表示三种用户对该文件的操作权限
    r --->read  可读
    w --->write 可写
    x --->excute 可执行
    - ---》 表示没有该权限
    
    第一种用户:文件拥有者
    第二种用户:同组用户
    第三种用户:其它用户
    
    第十一个字符:表示硬链接的个数
    
    第十二个: 文件拥有者的用户名
    第十三个:文件拥有者的所属组名,如果没有分组,指的就是自己的用户名
    第十四个:文件的大小
    第十五个:文件最后的修改时间
    
----
cd  -->切换路径

cd dirname    -->进入该目录/路径
cd /          -->进入根目录
cd ..          -->返回上一级目录
cd ../..      -->返回上一级目录的上一级目录
cd ~          -->进入家目录
cd               -->进入家目录
cd -          -->返回原本所在的路径
cd .          -->进入当前目录

~  《==》 /home/gec   -->家目录
.    当前目录
..   上一级目录

cd dev  <==>  cd ./dev  <==> cd ./dev/  <==>cd dev/
都是一样的写法

/home/gec   对于路径来说  最前面的/才有意义,表示根目录
            /写到中间或者最后面表示分隔符没有实际作用

绝对路径:从根目录开始写的路径
        eg:    cd /home/lcy
            

相对路径:不是从根目录开始写的路径

        eg:    cd ./../../home/lcy
---------
Linux目录结构:

参考链接:
https://www.cnblogs.com/ajianbeyourself/p/4187535.html


---------
mkdir/rmdir 创建空目录/删除空目录

mkdir dirname  --->创建一个新的目录dirname
mkdir dirname/dirname1 在已存在的dirname创建一个目录dirname1

mkdir dirname/dirname1 -p 在不存在的dirname创建一个目录dirname1
rmdir dirname --->只能删除空目录


-------
rm 删除文件或目录

rm filename -->删除一个文件
rm dirname -r  --->删除一个目录(不管里面是否有文件)
rm dirname -rf --->强制删除一个目录(不管里面是否有文件)

-r  --->递归
-f  --->强制删除

删库跑路---->不要尝试

sudo rm /* -rf


* -->通配符

------
touch 创建文件以后不进入编辑模式  

touch filename -->创建文件以后不进入编辑模式  
                    如果文件已存在,表示更新文件最后修改时间
vi filename    -->创建文件以后进入编辑模式  
vim filename   --->创建文件以后进入编辑模式  
gedit filename -->创建文件以后进入编辑模式  

        
-------    
cp    复制文件或目录

cp filename filename1    -->复制一个内容一样文件
cp filename dirname     -->把filename复制到dirname
 
cp  dirname  dirname1 -r  -->把目录dirname复制到dirname1

-------
mv   剪切文件或目录/更改文件或目录的名字


mv filename dirname     -->把filename剪切到dirname
 
mv  dirname  dirname1(存在)   -->把目录dirname剪切到dirname1

mv filename filename1  -->  把filename改名为filename1

mv  dirname  dirname1(不存在)  --> -->把目录dirname改名dirname1


-------
cat/more/less  查看文件里面的信息

cat filename  --> 查看filename文件里面的信息
cat filename -n -->查看filename文件里面的信息,并打印它的行号
more          -->分页查看文件里面的内容-->按回车切换下一行和空格可以翻页
less          -->分页查看文件里面的内容-->按回车切换下一行和空格可以翻页-->输入q退出查看
                                方向键上下也可以切换


--------

head  查看文件开头的信息

head filename         --> 默认查看文件开头的十行信息
head filename -n 20 -->默认查看文件开头的二十行信息

tail    查看文件结尾的信息

head filename         --> 默认查看文件结尾的十行信息
head filename -n 20 -->默认查看文件结尾的二十行信息

--------
sort 给文件里面的内容排序

    sort filename        -->给文件里面的内容排序(正序)
    sort filename -r    -->给文件里面的内容排序(反序)

-----
uniq  去除相邻行的重复内容
        
        uniq filename -->去除相邻行的重复内容

        
sort filename | uniq   --->把filename文件里面的内容排序,然后给uniq作为输入的,然后输出我们所要的内容

|   --->管道文件

-------
find 在目录中查找文件

    find dirname -name "1.c"   -->在目录dirname里面查找1.c文件
    find dirname -name "*.c"   -->在目录dirname里面查找以.c为后缀的文件
    find dirname -type d       -->在目录dirname里面查找某种类型的文件

------
grep 在文件中查找字符串
    
    grep 'hello' filename         -->在文件filename 里面查找是否有字符"hello"
    grep 'hello' filename -n    -->在文件filename 里面查找是否有字符"hello",并把它所在行号打印

    grep 'hello' dirname -rnH    -->-->在目录dirname 里面查找是否有字符"hello",并把它所在路径、文件名和行号打印
    

-------
chmod -->更改文件的权限  -->在共享文件夹上不一定可以修改文件的权限
        eg:
        gec@ubuntu64:~$ ls -l 4.c
        -rw-rw-r-- 1 gec gec 15 3月   4 10:31 4.c
    rw- rw- r--
    rw- rw- r--     用户对文件的操作权限
    110 110 100  --->二进制
    6    6    4     --->八进制

    
    7    7    7    --->八进制
    111 111 111 --->二进制
    rwx rwx rwx 用户对文件的操作权限
    
    eg:
    gec@ubuntu64:~$ chmod 777 4.c
    gec@ubuntu64:~$ ls -l 4.c
    -rwxrwxrwx 1 gec gec 15 3月   4 10:31 4.c

    
    rwx rw- r-x
    111 110 101
    7   6   5
    
    
    
    
-------
ln 创建快捷方式 (软连接不能在共享目录新建,目录不能创建硬链接文件)

创建软链接:
    ln -s  filename newname -->给filename文件创建一个快捷方式叫做newname
创建硬链接:    
    ln filename newname -->给filename文件创建一个硬链接叫做newname
    
硬链接文件的类型是: 普通文件
软连接文件的类型是: 链接文件

硬链接文件在源文件删除的情况,文件内容依然可以通过硬链接文件找到
软连接文件在源文件删除的情况,文件内容不能通过软链接文件找到
    
-------
diff  比较两个文件内容是否一样
    diff filename filename1  -->比较两个文件内容是否一样

-------
tar 压缩和解压

    c ---》表示归档
    v ---》把过程打印输出
    f ---》指代文件
    x ---》释放
    
    xz、gz、bz2压缩算法不同
    
    tar -cvf 1.tar *.c 把所有的.c归档,生成1.tar
    tar -xvf 1.tar   释放1.tar文件里面的文件
    
    
    xz 1.tar      把1.tar文件压缩生成1.tar.xz
    xz --decompress 1.tar.xz    把1.tar.xz文件压解压生成1.tar
    
    tar -Jcvf 1.tar.xz *.c  把所有的.c文件压缩生成1.tar.xz
    tar -Jxvf 1.tar.xz      把1.tar.xz文件压解压
    
    
    tar -zcvf 1.tar.gz *.c    把所有的.c文件压缩生成1.tar.gz
    tar -zxvf 1.tar.gz         把1.tar.gz文件压解压
    
    
    tar -jcvf 1.tar.bz2 *.c 把所有的.c文件压缩生成1.tar.bz2
    tar -jxvf 1.tar.bz2        把1.tar.bz2文件压解压
    
    
------
echo   -->在屏幕输出指定字符
        echo "hello"                   在屏幕输出hello
        echo "hello" > 6.c            把字符串hello导入文件6.c , ">"表示重定向
        echo $PATH                 打印环境变量中的PATH的值  $ -->表示调用环境变量
------
env        查看整个系统的环境变量
        环境变量是整系统都能使用的变量 ---》操作系统中用来指定操作系统运行环境的一些参数
        
        PATH  --->它是系统环境变量中的一个,表示系统执行可执行文件的时候,
                如果没有写路径,就会在当前设置的PATH环境变量设置的路径里面去找这个执行文件
    
        执行可执行文件时:./hello  敲回车 ---> ./  表示hello文件的路径
        
        ls   敲回车--> ls它也是一个可执行文件,但是它不用输入路径就可执行
        
        环境变量的作用:
        https://www.jianshu.com/p/3faacdf979e5
------
export 临时设置环境变量的参数

        export PATH=$PATH:/home/gec   -->把环境变量中的PATH增加一个路径
            
            
        
        永久设置:
            1、打开 ~/.bashrc ,把export PATH=$PATH:/home/gec加入配置文件
                sudo gedit ~/.bashrc
                
            2、该配置文件是在终端打开的时候加载了一次,不能立刻生效
            
            3、立刻生效还需加载一次配置文件:
                    source ~/.bashrc
-----------------------------
把一个可执行文件设置成,不需要加路径名也可以运行---》类似于Linux命令的效果

例子:
把家目录里面的可执行文件hello,设置为不需要加路径名也可以运行

    1、可以直接把该文件复制到/bin
            cp hello /bin
    
    2、可以把家目录的路径设置到环境变量PATH里面
            (1)临时设置环境变量PATH ---->新开的窗口里面是没有改路径
            export PATH=$PATH:/home/gec
            
            (2)永久设置环境变量PATH
                1》打开配置文件
                        sudo vi ~/.bashrc
                2》把设置命令:export PATH=$PATH:/home/gec加到配置文件最后一行
                3》使配置文件生效
                    source ~/.bashrc
------------------------------
练习:
    1、把一个可执行文件,设置为不输入路径也可以执行,可以永久设置
    
------------------------------

ubuntu16.04:
ctrl+alt+F2 -->切换成纯终端界面
ctrl+alt+F7 -->切换成图形界面

    
------------------------------                    
pwd  --》打印当前路径

----
who --> 显示已经登录的用户

环境变量HOME:当前用户的主目录(也称家目录)

sudo -s -->临时切换管理员用户  ---》表示原本用户还是普通用户
sudo su -->完全切换为管理员用户 ---》表示现在的用户是管理员用户

exit  退出管理员用户

which  --->查找Linux命令或可执行所在路径

--------------
clear  表示清屏

---
alias 临时给命令取别名 --->如果要永久设置,必须加入到配置文件
alias c='clear'   --->给clear取别名为c
alias ll='ls -l'

-------------
man --->查找帮助手册

man man ---->自己查找自己

        1
       可执行程序或 shell 命令
       2
       系统调用(内核提供的函数)---》Linux操作系统自带的函数
       3
       库调用(程序库中的函数)---》标准C语言库函数
      
man 1 ls --->查找Linux命令
man 2 open --->查找系统函数
man 3 printf --->查找标准C语言库函数

man -f printf --->查找所有关于printf函数的用法
man ascii --->查找ascii码表


========================动态库静态库的生成========================
函数库:
        1、便于移植,方便使用
        2、保密, 保护知识产权
        
动态库静态库编译之前一定要先函数模块化,主函数不要弄成动态库静态库
静态库:
        编译生成静态库:
        
        1、把.c文件编译生成.o文件(二选一)
            gcc -c add.c
            
            gcc add.c -c -o add.o
            
        2、把.o文件编译生成静态库
        ar -rc libadd.a add.o  
        
        3、静态库的使用(二选一):
        gcc main.c libadd.a -o project
        gcc main.c  -o project libadd.a
        

        4、执行文件
            ./project
            
动态库:
        
        1、把.c文件编译生成.o动态库
        
        gcc -fpic -shared add.c -o libadd.so

        
        2、动态库的使用(三选一):
        gcc main.c libadd.so  -o project
        gcc main.c -o project libadd.so
        gcc main.c -o project -L . -ladd

        3、执行二进制文件时:
            ./project
        如果出现以下错误:
        ./main: error while loading shared libraries: libadd.so: cannot open shared object file: No such file or directory

        解决方法:
        (1)永久设置需要把libadd.so拷贝到/lib
            sudo cp libadd.so /lib
                
        (2)临时设置环境变量LD_LIBRARY_PATH:
                export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/hgfs/GZ2019期嵌入式直播10班/02Linux基础/02/code/test_动态库
            永久设置:
                把export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/hgfs/GZ2019期嵌入式直播10班/02Linux基础/02/code/test_动态库加入配置文件 ~/.bashrc
            
        LD_LIBRARY_PATH的作用:执行可执行文件时,使用到动态库,系统会在    LD_LIBRARY_PATH设置的路径下去查找动态库,进行调用
        4、执行
        ./project

        
注意:LD_LIBRARY_PATH告诉编译器去哪个路径下找动态库

-----------------------------------
动态库和静态库的名称问题:

(1)
    libadd.so

    lib  add   .so.8.3.0
    前缀+库名+后缀+版本号
(2)
    lib    add  .a
    前缀+库名+后缀
----------------------------------
动态库和静态库的区别:
        静态库是把静态库函数放到一起编译生成二进制文件(比较大)
        动态库是把动态库函数没有放到一起编译生成二进制文件(相对比较小),执行文件的时候是需要去/lib去调用

---------------------    
动态库的库名:

    libadd.so.9.0
    
前缀+库名+后缀+版本号


把动态库和main.c编译的命令:

gcc main.c -o project -L . -ladd


-L  告诉编译器去哪里找动态库
-l  告诉编译器要连接的动态库的库名(不需要写前缀、后缀、版本号)
-I  告诉编译器去哪里找头文件


-----------------------
练习:

    1、编译生成动态库,并执行程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/901597.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【leetcode】动态规划

19. 918 环形子数组的最大和 题目&#xff1a; 给定一个长度为 n 的环形整数数组 nums &#xff0c;返回 nums 的非空 子数组 的最大可能和 。 环形数组 意味着数组的末端将会与开头相连呈环状。形式上&#xff0c; nums[i] 的下一个元素是 nums[(i 1) % n] &#xff0c; nums…

《2024中国泛娱乐出海洞察报告》解析,垂直且多元化方向发展!

随着以“社交”为代表的全球泛娱乐市场规模不断扩大以及用户需求不断细化&#xff0c;中国泛娱乐出海产品正朝着更加垂直化、多元化的方向发展。基于此&#xff0c;《2024中国泛娱乐出海洞察报告》深入剖析了中国泛娱乐行业出海进程以及各细分赛道出海现状及核心特征。针对中国…

Python游戏开发超详细第二课/一个小游戏等制作过程(入门级篇共2节)

直播内容&#xff0c;这里都用大多用照片代替了哈&#xff0c;因为在写一遍很累&#xff0c;哥哥姐姐理解一下抱歉抱歉 一个是我懒的写一遍&#xff0c;但是刚学的兄弟姐妹可不许学我偷懒哈 二防止有人偷懒&#xff0c;直接复制粘贴代码&#xff0c;所以为了方便帮助你们学习&a…

【AIGC】ChatGPT应用之道:如何打破`专家`幻象,提升AI协作质量

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;ChatGPT的实际能力用户对ChatGPT的常见误解超越误解&#xff0c;合理设定期望总结 &#x1f4af;超越“专家”幻想设定合理的期望总结 &#x1f4af;提升人工智能协作质量…

寻找大自然的颜色

走在停停&#xff0c;停停走走&#xff0c;恍惚间一天过去了&#xff0c;转瞬间一年过去了&#xff0c;身边的一切在变化又不在变化&#xff0c;生活是自己的又不是自己的。 今天是个特殊的日子&#xff0c;其实前几天对我而言就算特殊的日子了&#xff0c;一个心里暗暗等待着却…

python之数据结构与算法(数据结构篇)-- 集合

一、集合的概念 所谓的编程中的”集合“&#xff0c;其实和高中数学中集合是一样的的。比如&#xff1a;羊村和狼堡看作一个集合&#xff0c;而狼堡中的"灰太狼"、"红太狼"、"小灰灰"则可看作狼堡中的元素&#xff0c;同理&#xff0c;羊村中的…

通过火山云API来实现:流式大模型语音对话

这里我们需要在火山云语音控制台开通大模型的流式语音对话、获取豆包模型的apiKey&#xff0c;开通语音合成项目。 这里使用的豆包模型是Doubao-lite&#xff0c;延迟会更低一些配置说明 这里一共有四个文件&#xff0c;分别是主要的fastAPI、LLM、STT、文件 TTS中需要配置 ap…

洛谷 U411986 数的范围(二分模板)

题意&#xff1a;在一个有序序列里面找某个值的初始出现下标和最后出现下标&#xff0c;如果该值不存在&#xff0c;输出-1 -1。 整数二分模板题&#xff0c;该题主要用来练习如何写两种情况下的二分函数的代码模板。 1&#xff09;upper_bound函数&#xff1a;用来寻找边界点A…

鸿蒙是必经之路

少了大嘴的发布会&#xff0c;老实讲有点让人昏昏入睡。关于技术本身的东西&#xff0c;放在后面。 我想想来加把油~ 鸿蒙发布后褒贬不一&#xff0c;其中很多人不太看好鸿蒙&#xff0c;一方面是开源性、一方面是南向北向的利益问题。 不说技术的领先点&#xff0c;我只扯扯…

香橙派5(RK3588)使用npu加速yolov5推理的部署过程

香橙派5使用npu加速yolov5推理的部署过程 硬件环境 部署过程 模型训练(x86主机) 在带nvidia显卡(最好)的主机上进行yolo的配置与训练, 获取最终的best.pt模型文件, 详见另一篇文档 模型转换(x86主机) 下载airockchip提供的yolov5(从pt到onnx) 一定要下这个版本的yolov5, …

【力扣 + 牛客 | SQL题 | 每日三题】大厂笔试真题W1,W4

1. 力扣603&#xff1a;连续空余的座位 1.1 题目&#xff1a; 表: Cinema ------------------- | Column Name | Type | ------------------- | seat_id | int | | free | bool | ------------------- Seat_id 是该表的自动递增主键列。 在 PostgreSQL 中&#…

练习LabVIEW第十九题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第十九题&#xff1a; 创建一个程序把另外一个VI的前面板显示在Picture控件中 开始编写&#xff1a; 在前面板放置一个二…

C语言教程——数组(2)

目录 系列文章目录 前言 4、数组作为函数参数 4.1冒泡函数的错误设计 4.2数组名是什么&#xff1f; 总结 前言 我们知道一维数组是连续存放的&#xff0c;随着数组下标的增长&#xff0c;地址是由低到高依次存放的&#xff0c;二维数组&#xff0c;也是在内存里面是连续存放的…

Linux | 配置docker环境时yum一直出错的解决方法

yum出错 Centos 7版本出错问题补充&#xff1a;什么是yumyum 和 apt 有什么区别&#xff1f; Centos 7版本 [rootlocalhost yum.repos.d]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)出错问题 问题1 Could not retrieve mirrorlist http://mirrorlist.ce…

SQLite 3.47.0 发布,大量新功能来袭

SQLite 开发团队于 2024 年 10 月 21 日发布了 SQLite 3.47.0 版本&#xff0c;我们来了解一下新版本的改进功能。 触发器增强 SQLite 3.47.0 版本开始&#xff0c;触发器函数 RAISE() 的 error-message 参数可以支持任意 SQL 表达式。在此之前&#xff0c;该参数只能是字符串…

论1+2+3+4+... = -1/12 的不同算法

我们熟知自然数全加和&#xff0c; 推导过程如下&#xff0c; 这个解法并不难&#xff0c;非常容易看懂&#xff0c;但是并不容易真正理解。正负交错和无穷项计算&#xff0c;只需要保持方程的形态&#xff0c;就可以“预知”结果。但是这到底说的是什么意思&#xff1f;比如和…

Nodejs使用pkg打包为可执行文件

安装pkg npm install -g pkg查看pkg命令 pkg --help修改package.json 新增bin入口配置 {"name": "takescreenshot","version": "1.0.0","bin": "app.js", // 新增bin入口配置"scripts": {"t…

day10:ssh服务-跳板机

一&#xff0c;ssh服务概述 ssh服务概述 ssh&#xff08;Secure Shell&#xff09;是一种用于在不安全网络中进行安全登录、远程执行命令及传输文件的网络协议。它通过加密技术来保证通信的保密性和完整性&#xff0c;主要用于替代不安全的telnet、rlogin、rsh等协议。ssh通常…

计算机视觉-边缘检测实验报告

实验一 边缘检测实验 一、实验目的 1&#xff0e;理解并掌握 Sobel 算子和 Canny 算子的基本原理和应用。 2&#xff0e;学习如何在图像处理中使用这两种算子进行边缘检测。 3&#xff0e;比较 Sobel 算子和 Canny 算子的性能&#xff0c;了解各自的优缺点。 4&#xff0…