Linux系统编程基础

这里主要记录了博主容易忘记的命令,并不全面。

Lec1 基础命令

一、常见命令

  1. date:查看日期
kelvin@kelvin-V:~$ date
2024年 10月 30日 星期三 07:46:32 CST
  1. cat /etc/shells:查看当前系统所支持的shell
kelvin@kelvin-V:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/usr/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/usr/bin/dash
  1. echo $SHELL:查看正在使用的shell
kelvin@kelvin-V:~$ echo $SHELL
/bin/bash
  1. history:命令历史
kelvin@kelvin-V:~$ history
    1  ll
    2  chmod u+x runasroot.sh 
    3  cat runasroot.sh 
    4  sudo ./runasroot.sh
  1. file:查看文件性质
kelvin@kelvin-V:~/Documents/codes$ file t1.cpp
t1.cpp: C++ source, ASCII text
  1. uname -a:查看内和版本信息
kelvin@kelvin-V:~/Documents/codes$ uname -a
Linux kelvin-V 6.11.0-9-generic #9-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct 14 13:19:59 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
  1. lsb_release -a:查看发行版信息
  2. free -m:查看空闲内存

二、主键盘快捷键

功能 快捷键 助记
Ctrl-p previous
Ctrl-n next
Ctrl-b backward
Ctrl-f forward
Del Ctrl-d delete光标后面的
Home Ctrl-a the first letter
End Ctrl-e end
Clear Ctrl-u 清空当前输入命令

Lec2 类Unix系统目录

/bin,/boot,/dev,/etc,/home,/lib,/media,/mnt,/opt,/proc,/root,/sys,/usr,/var,/sbin

Lec3 目录与文件

vim ./.bashrc:修改光标提示符前面的内容

  1. cd -:切换到上一个目录
  2. ls -R:递归显示子目录
  3. ls -d:显示当前目录信息
  4. Linux系统文件类型:
    • 普通文件:-
    • 目录文件:d
    • 字符设备文件:c
    • 块设备文件:b
    • 软链接:l
    • 管道文件:p
    • 套接字:s
  5. cp -a dir:拷贝dir中的文件包含文件信息
  6. cp -r dir:拷贝dir不包含文件信息
  7. tac file:倒着cat显示内容
  8. more file:分屏显示
    • 空格:向下翻屏
    • b:向上翻屏
    • 回车:下一行
    • f:上一行
    • q:退出
  9. stat file:显示文件或文件系统的状态
kelvin@kelvin-V:~/Documents/codes$ stat t1.cpp
  文件:t1.cpp
  大小:103       	块:8          IO 块大小:4096   普通文件
设备:8,2	Inode: 929256      硬链接:1
权限:(0664/-rw-rw-r--)  Uid: ( 1000/  kelvin)   Gid: ( 1000/  kelvin)
访问时间:2024-10-29 22:43:51.606658830 +0800
修改时间:2024-10-29 22:43:50.445239831 +0800
变更时间:2024-10-29 22:43:50.448238331 +0800
创建时间:2024-10-29 22:43:50.445239831 +0800
  1. sudo chown other file:将file的拥有者改为other
  2. sudo chgrp gother file:将file的所属组改为gother
  3. sudo chown other:gother file:一次性修改拥有者及所属组

Lec4 查找与检索

一、find命令

  1. find ./ -type 'l':查找当前目录(及子目录)内的所有软链接文件
  2. find . -name '*.cpp':查找当前目录(及子目录)内所有cpp文件
kelvin@kelvin-V:~/Documents/codes$ find . -name '*.cpp'
./t1.cpp
  1. find . -maxdepth 1 -name '*.cpp':查找当前目录内所有cpp文件,注意 -maxdepth 1 参数必须在文件名参数前面
  2. find . -size +20M -size -50M:查找当前目录(及子目录)下所有20~50M之间的文件
    • c:字符
    • k:注意小写
    • M
    • G
  3. cmin,ctime,cmin,ctime,mmin,mtimemin单位为分钟,time单位为天
  4. find /usr/ -name "*tmp*" -exec ls -l {} \;:先找出/usr目录下所有包含tmp的文件名,接着对这些文件执行 ls -l操作,其中 {} 代表前面查找到的内容,\;表示命令结束,与前面{}中间要用一个空格隔开
    等价于
    find /usr/ -name "*tmp*" | xargs ls -l:其中xargs 是Linux后加入的参数
    -exec会一次性接收全部查询结果
    xargs当结果集过大时,执行切片,一部分一部分地处理查询结果。
  5. find /usr/ -name "*tmp*" -ok rm -r {} \;:其中-ok参数使得以交互方式逐个文件询问是否执行命令
  6. find . -type f -print0 | xargs -0 ls -l:显示当前目录下所有普通文件的详细信息,当有文件名带空格时,需要通过-print0将分隔符由空格改为null,才能正常将带空格的文件名正确解析出来
kelvin@kelvin-V:~/Documents$ find . -maxdepth 1 -type f -print0 | xargs -0 ls -l
-rw-rw-r-- 1 kelvin kelvin 0 10月 30 10:28  ./a
-rw-rw-r-- 1 kelvin kelvin 0 10月 30 10:27 './a b c'

二、grep命令

  1. grep -r 'ios' . -n:搜索当前目录(及子目录)内所有文件,包含ios内容的文件及行号-n
kelvin@kelvin-V:~/Documents$ grep -r 'ios' . -n
grep: ./codes/t1: 匹配到二进制文件
./codes/t1.cpp:1:#include <iostream>

三、ps命令

监控后台进程的工作情况
主要参数:

  • -e:显示所有进程
  • -f:全格式
  • -h:不显示标题
  • -l:长格式
  • -w:宽输出
  • -r:只显示正在运行的进程
  • -a:即all,查看当前系统所有用户的所有进程
  • -u:查看进程所有者及其他一些详细信息
  • x:显示没有控制终端的进程

Lec5 软件包安装

Ubuntu一年两个大版本号,04为稳定版,10为测试版。

一、apt命令

  1. sudo apt update:更新服务器软件列表
  2. sudo apt upgrade:根据软件列表实施更新

二、deb命令

需要先下载需要安装的deb软件包。

  1. sudo dpkg -i xxx.deb:安装deb软件包
  2. sudo dpkg -r xxx.deb:删除软件包
  3. sudo dpkg -r --purge xxx.deb:连同配置文件一起删除
  4. sudo dpkg -info xxx.deb:查看软件包信息
  5. sudo dpkg -L xxx.deb:查看文件拷贝详情
  6. sudo dpkg -l:查看系统中已安装软件包信息
  7. sudo dpkg-reconfigure xxx:重新配置软件包

三、aptitude命令

  1. sudo apt intstall aptitude:该命令非默认安装
  2. aptitude show xxx:查看xxx命令的信息(是否安装,及其依赖)

四、源码安装

  1. 解压缩源代码包
  2. cd dir
  3. ./configure:检测文件是否缺失,创建makefile,检测编译环境
  4. make:编译源码,生成库和可执行程序
  5. sudo make install:把库和可执行程序安装到系统路径下
  6. sudo make distclean:删除和卸载软件

五、压缩与解压(gzip 和 bzip2)

  1. tar -zcvf xxx.tar.gz file1 file2:将file1和file2使用gzip压缩打包为 xxx.tar.gz 文件
  2. tar -jcvf xxx.tar.bz2 file1 file2:将file1和file2使用bzip2压缩打包为 xxx.tar.bz2 文件
  3. tar -zxvf xxx.tar.gz:对xxx.tar.gz进行解压
  4. tar -jxvf xxx.tar.bz2:对xxx.tar.bz2进行解压
  5. sudo apt install rar,unrar:安装rar压缩与解压缩工具
  6. rar a -r xxx.rar dir file:将dir目录和file文件一同压缩为xxx.rar文件
  7. unrar x xxx.rar:对xxx.rar进行解压
  8. zip -r dir.zip dir:将dir目录(及子目录)内容压缩为dir.zip文件
  9. unzip dir.zip:对dir.zip进行解压缩

Lec6 其他常用命令

  1. who:查看谁在登录
  2. jobs:查看当前后台有哪些用户作业
  3. fg [job...]:把指定的后台作业或挂起作业移到前台运行。参数job是一个或多个进程的PID,或者是命令名称,或者是作业号(作业号前面要带一个%)
  4. bg [job...]:把被挂起的进程提到后台执行。
  5. kill PID:杀掉进程PID
  6. env:显示当前系统所有环境变量
  7. top:文字版的任务管理器
  8. Ctrl+Alt+t:图形界面下创建新终端
  9. Ctrl+Shift+t:创建新的终端标签
  10. Alt+n:切换对应编号的终端标签

Lec7 Vim

一、光标跳转

  1. 0:跳到行首
  2. ^:跳到行首第一个非空字符
  3. $:跳到行尾
  4. gg:跳到第一行首
  5. G:跳到最后一行首
  6. w:跳到一个单词开头
  7. b:跳到本单词或上一个单词开头
  8. e:跳到本单词或下一个单词结尾
  9. ge:跳到上一个单词结尾
  10. f{char}:跳到下一个 {char} 所在位置
  11. F{char}:反向跳到上一个 {char} 所在位置
  12. t{char}:跳到下一个 {char} 的前一个字符
  13. T{char}:反向跳到上一个 {char} 的后一个字符
  14. ;:重复上次的字符跳转操作
  15. ,:反向重复上次的字符跳转操作

二、动作

image
注:t-标签(html),s-句子,p-段落
image

三、操作符

需要配合上面的“动作”一同操作。

  1. d:删除
  2. c:修改
  3. y:复制
  4. p:粘贴
  5. v:visual模式,再次按下退出模式
  6. ndd/ncc/nyy:对当前行及以下连续 \(n\) 行执行操作
  7. S:清空当前行,光标停在行首原来第一个非空字符的位置

四、切换大小写

  1. ~:将光标下的字母改变大小写
  2. 3~:将光标位置开始的3个字母改变大小写
  3. g~~:改变当前行所有字母的大小写
  4. gUU:将当前行的字母全改成大写
  5. guu:将当前行的字母全改成小写
  6. gUaw(gUiw):将光标下的单词改成大写
  7. guaw(guiw):将光标下的单词改成小写
    在visual模式下,按 Uu 将选中内容改为大写或小写。

五、vscode下的快捷键

  1. gd:跳转到定义
  2. gt:跳转到下一个tab标签页,也可以 ctrl-PageDown 或者 alt-Right
  3. gT:跳转到上一个tab标签页,也可以 ctrl-PageUp 或者 alt-Left
  4. ctrl-F4:关闭当前tab标签页
  5. ctrl-0:打开文档侧边栏
  6. ctrl-2:向右拆分(右方为空)
  7. ctrl-3:向右拆分出第3列(空)
  8. ctrl-shift-t:重新打开刚刚关闭的文件
  9. ctrl-p:在当前目录中查找文件
    在vscode中打开 easymotion 模式,并检查是否已经设置好 <leader>
  10. <leader><leader>s<char>:全文显示 <char> 出现的位置,每个位置用不同的字母对应,按下即可切换过去
  11. <leader><leader>f<char>:向下显示 <char> 出现的位置,每个位置用不同的字母对应,按下即可切换过去
  12. <leader><leader>F<char>:向上显示 <char> 出现的位置,每个位置用不同的字母对应,按下即可切换过去
  13. d s <existing char>:删除当前位置包裹的符号
  14. c s <existing char> <desired char>:更新当前位置包裹的符号
  15. y s <motion> <desired char>:给当前部分添加包裹字符
posted @ 2024-10-30 09:38  飞花阁  阅读(138)  评论(0)    收藏  举报
//雪花飘落效果