• Linux操作命令笔记


    前言

    Linux的一切命令都是本质都是一个个可执行文件,只是由于系统通过shell解释器帮我们找到了对应的可执行文件,致使我们可以通过输入一个简单命令来执行对应的可执行文件。因此这些命令也称为shell命令。讲到shell,可能很多人疑惑bash和shell的关系。其实bash全称是Bourne Again shell,是shell的一种,也是Linux中默认和最常用的一种shell。
    比如输入:

    ls
    
    • 1

    系统会自动找到以下目录中的可执行文件ls。

    /bin/ls
    
    • 1

    如图:
    在这里插入图片描述

    Linux命令查询器

    中文网页版: LZL在线工具

    https://www.lzltool.com/LinuxCommand
    
    • 1

    系统内英文官方版方式一:
    用help,例子如下

    ls --help
    
    • 1

    系统内英文官方版方式二:
    再man中查找,例子如下

    man 1 ls
    
    • 1

    注:man 1 指的是manual的page1,这一页记录了许多shell命令的用法。

    Linux的字母大小写

    Linux的文件以及命令指令都是区分大小写的,这点和window系统完全相反。
    比如,在Linux下面,a和A可以是两个截然不同文件夹。但在window中,a和A是只能是同个文件夹,系统并不帮你区分。

    下载和卸载

    download: sudo apt-get install ...
    notes:1、下载的软件存放路径是"var--cache--archives"
    2、yum install也是一个下载命名,但用在Redhat系列的系统上的。本文用的是Debian下的Ubuntu系统。
    
    • 1
    • 2
    • 3
    unload: sudo apt-get clean ...
    
    • 1

    软件更新

    sudo apt-get update  
    mean:从服务器获取软件列表,并在本地保存为文件。
    sudo apt-get upgrade
    mean:本地安装软件与本地软件列表对比,如本地安装版本低,会提示更新。
    note:提示更新之后,输入y(yes)即可更新。
    
    • 1
    • 2
    • 3
    • 4
    • 5

    查看空间使用情况

    查看磁盘分区表

    fdisk -l
    
    • 1

    查看分区使用情况

    df -h
    
    • 1

    查看文件占用空间使用情况

    du -sh [file_name and directory]
    mean: disk usage  
    
    • 1
    • 2

    查看磁盘挂载情况

    lsblk -f
    mean: list show block
    
    • 1
    • 2

    当前目录所在的位置

    pwd
    mean: point working directory
    
    • 1
    • 2

    查看文件中的内容

    cat file_name
    
    • 1

    查看目录下的文件

    ls -l  or ls -al
    mean: list show
    
    • 1
    • 2

    许多时候我们也会直接用到ls -all的缩写:

    ll
    
    • 1

    重启

    reboot 
    
    • 1

    关机

    shutdown now
    
    • 1

    移动文件

    mv file_name directory_name
    mean: move
    
    • 1
    • 2

    磁盘管理软件

    gparted
    donwload: sudo apt-get install gparted
    
    • 1
    • 2

    查看文件权限

    查看当前目录下某个文件权限

    ls -l file_name
    
    • 1

    查看当前目录下所有文件权限

    ls -l
    
    • 1

    修改文件掩码

    文件掩码顾名思义,当文件被创建后,其系统分配的权限会被文件掩码抹去一些权限,以根据用户需要保证文件的安全性。下面是修改文件掩码的指令,再修改权限那小节会有例子讲诉文件掩码如何抹去文件权限的。

    umask numnber
    note: 数字必需是三位数,且每个数字最大是7,最小是0。
    eg: umask 666
    
    • 1
    • 2
    • 3

    修改文件权限

    chmod xxx <file_name>
    mean: change mode xxx
    eg: chmod 777 <file_name>
    那么file_name的权限为 111(rwx)111(rwx)111(rwx):用户权限,同组用户权限,其他用户权限。
    note:111(rwx)->7,110(rw )->6....(二进制转换)
    rwx: read write execute
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如果懒的计算rwx对应的数字,也可以用加减号来添加和删除权限。不过这会让三个用户同时添加或删除某个权限。

    chmod +x <file_name>
    chmod -r <file_name>
    
    • 1
    • 2

    值得一提的是,用户创建一个文件或文件夹默认权限是:

    create a file: (rw-rw-rw-) & (~umask)
    create a directory: rwxrwxrwx & (~umask)
    
    • 1
    • 2

    其中(~umask)是用于抹去一部分权限的。

    删除文件或文件夹

    删除一个文件夹:

    rm <directory_name> -rf
    mean:remove
    
    • 1
    • 2

    或者使用以下指令:

    rmdir <directory_name>
    
    • 1

    删除多个文件夹:

    rm <file_1> <file_2> -rf
    
    • 1

    删除一个文件

    rm <file_name>
    
    • 1

    删除多个文件

    rm <file_name1> <file_name2>
    
    • 1

    新建文件夹

    mkdir directory_name
    
    • 1

    新建一个文件

    touch file_name
    
    • 1

    移动一个文件夹

    mv file_name target_directory
    mean:move,将file_name移动到 target_directory
    note:这里必须是把文件移动到文件夹,而不能两个都是文件
    
    • 1
    • 2
    • 3

    复制一个文件

    cp source_file object_file
    
    • 1

    比如想把a.c复制并命名为b.c

    cp a.c b.c
    
    • 1

    文件重命名

    mv file_name target_file
    mean:rename file_name as target_file
    note:这里和移动文件夹用的是同一个指令,但参数都是文件,而非文件夹。
    
    • 1
    • 2
    • 3

    编译C和C++文件

    编译一个.c文件可用如下方法,但若想编译一个.cpp文件,则把gcc换成g++即可。

    gcc file_name.c -o compile_file
    note:gcc 是编译的意思,-o是output的意思
    
    • 1
    • 2

    同时编译多个文件,并将他们连接起来

    gcc file_1.c file_2.c -o compile_file
    
    • 1

    执行可以执行文件

    ./compile_file
    note:Linux的可执行文件是没有后缀的,并且它的编译和执行是分开的。
    
    • 1
    • 2

    一步一步的编译文件

    gcc -E file_name.c -o file_name.i		//预处理步骤,生成.i文件
    gcc -S file_name.i -o file_name.s		//编译步骤,生成.s文件
    gcc -c file_name.s -o file_name.o		//汇编步骤。生成.o文件(二进制文件)
    gcc file_name.o -o file_name			//链接步骤,生成目标文件
    
    notes:大小写不能混用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    以上是程序编译的四个步骤,当然我们也可以跳步骤编译,系统会自动补上跳过的步骤。比如可以直接跳到汇编步骤,然后再链接生成目标文件。

    gcc -c file_name.c -o file_name.o		
    gcc file_name.o -o file_name
    
    • 1
    • 2

    VIM编辑器的相关操作

    :w 		
    mean:write but no quit
    :q      	
    mean:quit without modification
    :wq   	
    mean:write and quit
    :w!    	
    mean:force write
    :q! 		
    mean:force quit but no modify
    :wq! 	
    mean:force write and quit
    :e! 
    mean:exit and forgive the modification
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    查看内容

    grep [contents] [file_name]
    mean:在file_name这个文件中查看contents并打印到终端来。
    
    • 1
    • 2

    查看进程

    查看进程的三种方法

    ps -a
    ps -au
    ps -aux
    mean: process status
    
    • 1
    • 2
    • 3
    • 4

    搜索具体的进程

    ps -aux | grep [process_name]
    ps -aux | grep [the pid of ther process]
    
    • 1
    • 2

    杀死进程

    kill -9 [the pid of ther process]
    
    • 1

    echo命令(重定向文件,打印变量)

    在test.c文件的第一行写入"hello world"。如果test.c文件不存在则创建它,如果test.c存在但第一行有东西,那就覆盖它前N个字符。其中,N等于"hello world"的字符数量。

    echo "hello world" > test.c
    
    • 1

    在test.c文件末尾添加一句"hello test"。同样如果如果test.c文件不存在则创建它。

    echo "hello test" >> test.c
    
    • 1

    用echo打印变量,比如PATH变量。

    echo $PATH
    
    • 1
  • 相关阅读:
    Qt Signals & Slots VS QEvents - Qt跨线程异步操作性能测试与选取建议
    神经网络可以解决的问题,神经性修复治疗方法
    Android T(13)-- Looper 的使用(一)
    阿里云通义千问大模型正式开放;玩10次ChatGPT就要消耗1升水
    WebGL笔记:图形转面的原理与实现
    Flutter App混淆加固、保护与优化原理
    MySQL日志(undo log 和 redo log 实现事务的原子性/持久性/一致性)
    Java:Java 仍然很棒的7个原因
    如何快速创建腾讯云MySQL数据库并远程连接?
    Gin 自定义控制器
  • 原文地址:https://blog.csdn.net/weixin_45885074/article/details/132643952