Linux常用命令行集锦(持续更新ing...)

诸神缄默不语-个人CSDN博文目录

本文介绍Linux中常用的命令行。

  1. 文件路径
    1. 相对路径 / 绝对路径
    2. .代表当前路径,..代表当前路径的上一级目录的路径
  2. 删除文件
    1. rm 文件名:删除文件
    2. rm -r 文件夹路径:删除文件夹及其下所有内容
    3. rm -r /path/to/your/directory/*:删除文件夹下所有内容,但不删除文件夹
    4. 直接用-r删除文件夹会不停被问是否要删除xxx,需要一个一个回复yes,解决方案是用-rf,就不会问了(也没有反悔的机会了,所以需要慎重)
  3. 下载文件
    1. wget
      1. wget 文件地址:直接将文件下载到当前路径下
        值得注意的是类似zenodo的文件,要删掉直接的下载链接后面的?download=1语句
      2. wget --spider 文件地址:检查指定文件是否存在。不下载数据,一般用于测试网络连接情况和预测数据大小
      3. wget -P 文件夹 文件地址:将文件下载到指定文件夹
    2. curl1
      1. 如果想直接下载为内置的命名方式(也就是原来叫啥,下下来还叫啥):curl -O 文件地址
      2. 指定下载到本地后的名称:curl -o 名称 文件地址
  4. 复制
    1. 文件 cp source target(target可以是文件路径或者文件夹路径)
    2. 文件夹 cp -r source target
  5. 移动和重命名:mv 当前路径 要转移到的路径 将会转移到移动目标路径之下
    1. 移动某文件夹下所有文件到另一个文件夹下:mv 现文件夹/* 要转移到的文件夹
  6. 新建文件夹:mkdir
    -p / --parents:需要时创建上层目录,如目录早已存在则不当作错误
  7. 直接在终端查看文件内容:cat 文件路径
  8. ls
    1. 查看当前文件夹下的所有文件和一级文件夹:ls 文件夹路径
    2. 查看当前文件夹下的所有文件和一级文件夹的详细信息(-l 长列表格式),其中文件大小以人能看懂的形式输出:-lh
      在这里插入图片描述
      这样的输出通常包括以下几个字段:
      1. 文件类型和权限:这是一个由10个字符组成的字符串。第一个字符表示文件类型(例如,- 表示普通文件,d 表示目录,l 表示符号链接等)。接下来的9个字符分为三组,每组3个字符,分别表示文件所有者、文件所属组和其他用户对该文件的读、写、执行权限。
        例如:-rw-r--r-- 表示这是一个普通文件,拥有者有读和写权限,而组内成员和其他人只有读权限。
      2. 硬链接数量:这个数字表示有多少硬链接指向这个文件或文件夹。
      3. 所有者用户名:这个字段表示文件的所有者是谁。
      4. 所有者所在组:这个字段表示文件所属的用户组。
      5. 文件大小:这个字段表示文件的大小。由于使用了 -h 参数,这个大小将以人类可读的格式(KB、MB、GB等)展示。
      6. 修改时间:这个字段显示了文件最后一次被修改的日期和时间。
      7. 文件/目录名:这个字段显示了文件或目录的名称。
        以下是一个例子来解释 ls -lh 命令的输出:
      -rw-r--r--  1 username  groupname  15K Jul 18 21:36 example.txt
      
      在这个例子中:
      • 文件权限:-rw-r--r--
      • 硬链接数量:1
      • 所有者:username
      • 所属组:groupname
      • 文件大小:15K
      • 最后修改时间:Jul 18 21:36
      • 文件名:example.txt
    3. 包括隐藏文件一起查看:-a
  9. lslsattr对比
    lslsattr 都是用于列出文件或目录信息的 Linux 命令,但它们展示的信息和用途有所不同。
    • ls 命令
      • ls 主要用于列出目录内容。
      • 它显示文件和目录的基本属性,如名称、大小、修改日期等。
      • ls 提供了很多选项来自定义输出,比如 -l 用于长格式输出,-a 用于显示隐藏文件等。
      • 示例:
        ls -l
        
        输出可能如下:
        -rw-r--r-- 1 user user    0 Sep  2 12:34 file1.txt
        drwxr-xr-x 2 user user 4096 Sep  2 12:34 dir1
        
    • lsattr 命令
      • lsattr 用于显示文件的扩展属性,这些属性通常用于文件系统级别的操作。
      • 这些扩展属性包括是否可以压缩(c)、是否可以进行安全删除(s)、是否可以备份(b)等。
      • 该命令主要用于更底层、高级的文件系统管理。
      • 示例:
        lsattr file1.txt
        
        输出可能如下:
        -------------e-- file1.txt
        
    • 关系
      1. ls 更为常用,适用于日常文件和目录管理任务。
      2. lsattr 更专业、高级,一般用于系统管理和维护。
      3. 都是用于查看文件/目录信息,但层次和侧重点不同。
    • 两者都非常有用,但用于不同的场景和需求。
  10. chattr执行改变文件或目录的属性
  11. 查看文件或文件夹大小:du命令
    1. du -h 文件名称:查看文件大小
    2. du -ah --max-depth=1 文件夹名称:查看该文件夹及其下一层子文件夹的大小
    3. du -sh 文件夹名称:仅显示该文件夹大小
    4. -h:以人类可读的形式输出
    5. -a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小
    6. -s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小
  12. 查看指定路径的总储存空间和已占用的储存空间:df 文件夹路径
    1. -h:以人类可读的形式输出
  13. Linux服务器清文件
    1. anaconda清缓存:conda clean -a
    2. huggingface.datasets清缓存:默认存放在~/.cache/huggingface/datasets2,可以使用rm .cache/huggingface/datasets/ -rf批量清除(别的几个包应该是类似的)
    3. jedi清缓存:直接删.cache/jedi里的文件就行3rm .cache/jedi -rf
    4. pip清缓存:pip cache purge
    5. sentence-transformers清缓存:直接删.cache/torch/sentence_transformers里的文件
    6. wandb清缓存:wandb sync --clean
  14. 查看文件的创建时间(我直接问的ChatGPT,具体能否实现没试过)
    对于文件的创建时间,Linux系统并不直接保存这个信息。在某些文件系统上,例如ext4或者btrfs,有一个叫做"birth time"或者"crtime"(creation time)的属性,它可能和你想要的创建时间相近。但是需要注意的是,这个属性并不总是被所有的文件系统或者操作系统支持,而且在一些操作上可能会被更改(例如在文件被复制的时候)。
    在CentOS系统中,如果你的文件系统支持,你可以通过使用 debugfs 来获取文件的创建时间。这是一个非常强大的命令,一般用于调试,所以要小心使用。下面是一个例子:
    sudo debugfs -R 'stat ' /dev/sda1 | grep crtime
    
    这里, 是文件的inode number,/dev/sda1 是你的硬盘设备。你可以使用 ls -i 来查看文件的inode number。
    在Ubuntu系统中,你可以尝试使用 stat 命令来查看文件的所有信息,这个命令可能会包含文件的创建时间(如果你的系统支持的话)。这个命令如下:
    stat filename
    
    在这个命令中, filename 是你想要查看的文件的名字。如果文件的创建时间被支持的话,你可以在输出的结果中看到一个 “Birth” 的字段。如果看不到这个字段,那可能是你的文件系统或者操作系统不支持保存文件的创建时间。
  15. touch
    修改文件或者目录的时间属性,创建普通文件
  16. less:查看文本文件4
  17. 在服务器之间传递文件或文件夹:scp命令5
    1. 上传文件:scp -P 指定端口 本地文件路径 对方用户名@IP地址:目标文件路径
      示例输出:
      在这里插入图片描述
      如图所示,第一次指定的对方服务器需要手动输入yes确认是否继续连接。
      需要输入对方服务器密码
      ETA(Estimated Time of Arrival)显示为30:51,这表示预计还需要30分钟51秒的时间来完成这次传输。
    2. 下载文件:scp -P 指定端口 对方用户名@IP地址:文件路径 本地文件路径
    3. 上传文件夹:scp -P 指定端口 -r 本地文件夹路径 对方用户名@IP地址:目标文件夹路径
    4. 下载文件夹:scp -r 对方用户名@IP地址:文件夹路径 本地文件夹路径
  18. 压缩文件相关处理
    1. tar命令:常见的压缩文件后缀 .tgz .tar.gz tar.bz2
      1. 查看压缩文件里的内容:
        1. tar tf *.tar
        2. tar tf *.tgz
        3. tar tzf *.tar.gz
        4. tar tjf *.tar.bz2
      2. 解压缩到指定路径:tar -zxvf 压缩文件 -C 文件夹
    2. zip文件
      1. 查看压缩文件里的内容:zipinfo 压缩文件路径
      2. 解压文件:unzip 压缩文件路径
      3. 解压文件到指定文件夹:unzip 压缩文件路径 -d 文件夹
    3. bz2文件
      1. bzcat命令,查看文件内容:bzcat *.bz2(解压缩指定的.bz2文件,并显示解压缩后的文件内容。保留原压缩文件,并且不生成解压缩后的文件)
      2. bunzip2命令
        1. 查看详细信息:bunzip2 -v *.bz2
  19. 更换终端根路径:cd 文件夹路径
  20. 进程管理
    1. 查看系统整体进程情况:
      1. top
      2. htop:互动式的
    2. 指定关键词(比如用户名)查询进程情况:ps -ef | grep 关键词
    3. 使用进程PID,查看进程持有者:ps aux | grep PID
      在这里插入图片描述
      (图中user位置就是进程持有者的用户名,红字就是PID,最后那一项是运行命令)
    4. kill指定PID的进程:kill PID6
  21. 想打断本session正在运行的代码,可以直接用Ctrl+C实现。Python代码将会返回KeyboardInterrupt信息。
  22. 给shell脚本所有权限(使其可以运行):chmod u+x sh脚本
  23. 运行shell脚本
    1. 直接运行
    2. 使用sh运行
    3. 使用bash运行(bashsh的区别可参考这篇博文:linux:bash和sh区别_源代码杀手的博客-CSDN博客_linux sh和bash)
  24. source命令(点命令.):通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。因为linux所有的操作都会变成文件的格式存在。
    (对上面两种命令的区别可参考这篇博文:Linux中的source命令 - 皮皮祥 - 博客园)
  25. shell脚本写循环的示例:
    Linux常用命令行集锦(持续更新ing...)_第1张图片
  26. 运行编程语言
    1. Python:安装Python环境后,进入Python虚拟环境直接运行python Python程序路径,或者运行python编译器路径 Python程序路径即可
    2. C语言:将.c文件编译为可执行文件:gcc -o 可执行文件路径 .c文件 -Wall
      直接调用可执行文件的路径即可执行
  27. gcc
  28. 修改密码:passwd 用户名(如果不输入用户名,就默认是当前用户)7
  29. 建立用户账号:useradd 用户名8
  30. 挂载进程
    1. nohup 命令 >> 日志输出文件 2>&1 &(使用该代码可以将进程挂载到后台运行,即使结束session也不会停止运行。注意事项:
      1. 挂起后,当前session可以在终端使用jobs命令行查看进程运行状态,使用kill %jobs命令行中显示的索引可以直接kill。
      2. >会覆盖原日志文件中的内容,>>就直接追加9
      3. 挂起Python文件时:
        1. 如果不指定Python编辑器,需要在所需虚拟环境下运行Python命令。(感觉这是废话,但是加上)
        2. python后面加-u可以使输出不缓存,直接输出
        3. CUDA_VISIBLE_DEVICES=0要放在nohup前面
    2. nohup无法与运行中的进程互动,如果有这种需求可以使用screentmux命令
    3. tmux:直接创造一个tmux
      1. tmux new -s 新建tmux,并起名(如果不起名的话,就会默认名称0、1这种)
      2. 按Ctrl+b,松开,按d,即可从tmux退出(detach)
      3. tmux attach -t <会话编号或名称>tmux attach-session -t <会话编号或名称> 重新进入tmux(attach)
      4. tmux ls:查看当前的所有tmux
        如果没有创建tmux,会报错,报错信息类似于:error connecting to /tmp/tmux-1018/default (No such file or directory)
      5. tmux无法使用鼠标滑轮的解决方式:进入~/.tmux.conf(如果没有,可以直接新建),添加set -g mouse on命令,然后在终端输入:tmux source-file ~/.tmux.conf,即可在tmux中正常使用鼠标滚轮
      6. tmux无法复制
        1. 按住shift,选择文本,右键点击Copy10(诡异的是我在一台服务器上无法使用这个操作,得用下一条)
        2. 进入复制模式:按下 Prefix 键(默认是 Ctrl + b),然后按 [。
          开始复制:按下空格键。
          结束复制:按下 Enter 键。(事实上直接Ctrl+C就行了)
      7. tmux卡住:Esc
      8. 删除一个窗格(分屏):按Ctrl+b,松开,按x,选择y
        如果你希望在关闭窗格时不再收到确认提示,你可以在 .tmux.conf 文件中添加以下行:
        conf setw -g window-kill without-confirmation
        这将关闭窗格时的确认提示。
        注意:关闭一个窗格会终止在该窗格中运行的所有进程。确保你已经保存了所有的工作,并且确定要关闭窗格之后再进行这个操作。
      9. 删除tmux:tmux kill-session -t <>
    4. screen
    5. 把当前正在前台运行的进程放到后台运行(关闭terminal后进程继续运行):
      1. Ctrl+Z暂停进程
      2. bg %1 将前台进程转到后台(如果想放回前台用fg %1
      3. disown %1 从 shell 的作业列表中删除该作业
        使用 disown 后,你将无法通过作业控制再次访问该进程。如果你希望保持一定程度的访问能力,例如要查看进程的输出或将其带回到前台,你可能需要考虑使用 screentmux 这样的终端多路复用器。
  31. 将Python的输出重定向到文件中(正常在前台运行),输出也会正常在终端输出,应该是会直接覆盖原文件中的内容:运行Python文件的命令 2>&1 | tee 存储输出的文本文件名
  32. shasum:创建或检查cryptographic SHA checksums
    1. 计算文件的SHA1 checksum:shasum {{filename}}
    2. 计算文件的SHA256 checksum:shasum --algorithm 256 {{filename}}(这个在安装anaconda时会建议对anaconda安装的sh脚本做,可以参考我写的博文Anaconda教程(持续更新ing…))
  33. ping:默认会无限执行下去(Windows上默认4次)
  34. traceroute11:显示数据包到主机间的路径
  35. export命令12:设置或显示环境变量,仅对当前terminal有效
    我比较常用这个命令的场合就是在使用深度学习框架时临时设置cuda/cudnn的位置,如TensorFlow 2 echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/' > $CONDA_PREFIX/etc/conda/activate.d/env_vars.shexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/(见我撰写的博文TensorFlow安装教程)、paddlepaddle export LD_LIBRARY_PATH=user_path/anaconda3/envs/envpaddlepaddle/lib:$LD_LIBRARY_PATH(见我撰写的博文PaddleNLP教程(持续更新ing…))
  36. 查看文件
    1. 第一行:head -n 1 文件名
    2. tail
  37. 查看可执行文件的位置:which
    在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果
  38. 查看文件的位置:whereis
  39. 配合数据库查看文件位置:locate
  40. 实际搜寻硬盘查询文件名称:find13
  41. 清除屏幕:clear
  42. 退出terminal:exit
  43. 查看Java版本:java -version
  44. python其他入参
    1. -m:直接运行模块的代码。在环境里面一般就不需要python -m这个前缀14
  45. vim15vi 文件名进入编辑界面,i实现插入,esc然后:进入执行命令界面(后面接命令然后回车即可执行,w保存,q退出,q!不保存退出,wq保存并退出)
  46. 很多terminal都是鼠标左键复制,右键粘贴
  47. 搭建FTP服务器的相关参考资料(我现在感觉没必要建FTP服务器,自己上传和下载文件用WinSCP / VSCode或者云服务器平台官方提供的工具都可以,如果要集中收集大家的文件……为什么非要用FTP这种不安全的形式实现?)
    1. Linux实例搭建FTP站点_搭建FTP站点_建站教程_云服务器 ECS-阿里云
    2. 如何在CentOS 7系统中搭建FTP站点?_云服务器 ECS-阿里云帮助中心
    3. 云服务器 Linux 实例搭建 FTP 服务 - 运维指南 - 文档中心 - 腾讯云
  48. Emacs
    软件官网:Emacs中文网
  49. vi / vim:命令行编辑器16
    据我所知一般云服务器平台都是默认安装的
    进入vi界面示例:vi hello-vi-world.c
    进入编辑模式:i 插入模式
    退出编辑模式:Esc
    (非编辑模式叫命令模式)
    :后面跟的命令:w保存 q退出 x保存+退出
    1. 将vim的tab修改为四个空格并显示行数:进入~/.vimrc
      添加:
      set number
      set ts=4
      set expandtab
      
    2. 在vi界面中(命令模式运行)
      关闭行号::set nonumber
      开启行号::set number17
      整页翻页:向后翻Ctrl+f 向前翻Ctrl+b
      翻半页 :向下翻Ctrl+d 向上翻Ctrl+u
      滚一行:Ctrl+e Ctrl+y
      gg:命令将光标移动到文档开头
      G:命令将光标移动到文档末尾
    3. 如何设置缩进(我自己没试过):VIM中gg=G是什么?_51CTO博客_vim是什么意思
  50. 使用Git
    CentOS平台安装软件:yum install git
    查看软件版本:git version
    设置用户名:git config --global user.name "username"
    设置邮箱:git config --global user.email [email protected](如果这两步不设置的话,将无法正常使用Git)
    mkdir github1
    cd ./github1
    git clone Git下载地址

本文撰写过程中参考的资料:

  1. Linux 命令 rm(文件管理)——想玩转linux就请一直看下去
  2. Linux命令之rm(删除一切)_rm删除隐藏文件_单身bug的博客-CSDN博客
  3. Delete a file or directory
  4. 请教在linux 怎么用rm 删除目录和文件.不要提示_百度知道
  5. 【Linux】磁盘空间占用:查看某个文件或目录占用磁盘空间的大小_Lucky@Dong的博客-CSDN博客_linux查看文件夹占用空间
  6. Linux基础教程 linux scp命令的用法详解 - 百度文库
  7. linux利用scp远程上传下载文件/文件夹 | 《Linux就该这么学》
  8. Linux scp命令-菜鸟笔记
  9. 2021129:linux篇-查看压缩包里面的内容_微风❤水墨的博客-CSDN博客_linux查看gz文件内容
  10. linux压缩文件有哪些类型 - CSDN
  11. Linux tar 命令 | 菜鸟教程
  12. Linux bunzip2命令 | 菜鸟教程
  13. Linux如何查看文件内容?Linux常用命令_ITPUB博客
  14. linux wget指定下载目录和重命名_mob604756f56fd6的技术博客_51CTO博客
  15. Linux cp 命令 | 菜鸟教程
  16. Linux ps 命令 | 菜鸟教程
  17. linux – 进程的查看、进程id的获取、进程的杀死 - goodup - 博客园
  18. htop与top的区别_热气球、的博客-CSDN博客_htop和top
  19. Linux命令之touch命令_恒悦sunsite的博客-CSDN博客_linux touch
  20. Linux命令手册 - shasum命令手册,shasum命令详解
  21. 服务器后台运行程序(nohup/screen/tmux)_zeronose的博客-CSDN博客_服务器后台运行
  22. Tmux 使用教程 - 阮一峰的网络日志
  23. tmux无法使用鼠标滚轮滚动页面_小xing在北方的博客-CSDN博客
  24. Linux终端复用神器-Tmux使用梳理 - 散尽浮华 - 博客园
  25. tmux 快捷键 不起作用_kpiss的博客-CSDN博客_tmux快捷键不能用
  26. python将控制台输出保存至文件的方法 - 经验笔记
  27. 如何在 Linux 下查看进程是以哪个用户身份在运行的?_surfirst的博客-CSDN博客_linux查看进程用户
  28. mkdir -p的用法_Christo3的博客-CSDN博客
  29. 阿里云ECS服务器Linux创建新用户_zhangvalue的博客-CSDN博客
  30. tmux 命令快速入门_tmux 删除_lMasterSparkl的博客-CSDN博客
  31. 阿里云GPU服务器配置深度学习环境-远程访问-centos,cuda,cudnn,tensorflow,keras,jupyter notebook - 医疗兵皮特儿 - 博客园
  32. 在Linux下简单编写、编译并执行一个C语言程序_编写linux操作系统下可编译执行的一段c语言程序,包括二进制文件的创建、读写和关_知Hu·醉卧沙场的博客-CSDN博客:这篇博文在我第一次用Linux服务器的时候真的帮了我很多
  33. Linux lsattr命令 | 菜鸟教程

  1. Linux curl命令详解 - 都市烟火 - 博客园 ↩︎

  2. https://huggingface.co/docs/datasets/cache ↩︎

  3. Jedi cache 1.5G · Issue #957 · davidhalter/jedi:作者说无所谓的,直接删就完了 ↩︎

  4. Linux 系统 less命令详解_linux less命令_大家都说我身材好的博客-CSDN博客 ↩︎

  5. Linux scp命令 | 菜鸟教程 ↩︎

  6. Linux kill命令 | 菜鸟教程 ↩︎

  7. Linux passwd命令 | 菜鸟教程 ↩︎

  8. Linux useradd 命令 | 菜鸟教程 ↩︎

  9. Linux 输出重定向>和>>的区别_吃鱼的羊的博客-CSDN博客_linux重定向是创建文件还是 ↩︎

  10. tmux如何将内容复制到系统clipboard? - 知乎 ↩︎

  11. Linux traceroute命令 | 菜鸟教程 ↩︎

  12. Linux export命令 | 菜鸟教程 ↩︎

  13. linux中which命令详解,Linux下which命令使用详解(转)_zibuyu9的博客-CSDN博客 ↩︎

  14. python -m详解_python-m_洛蕾的博客-CSDN博客 ↩︎

  15. Linux vi/vim | 菜鸟教程 ↩︎

  16. vim指令操作大全__大太阳_的博客-CSDN博客 ↩︎

  17. vi 怎么显示行号-百度经验 ↩︎

你可能感兴趣的:(编程学习笔记,linux,服务器,运维,命令行,terminal)