Linux系统编程基础
这里主要记录了博主容易忘记的命令,并不全面。
Lec1 基础命令
一、常见命令
date:查看日期
kelvin@kelvin-V:~$ date
2024年 10月 30日 星期三 07:46:32 CST
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
echo $SHELL:查看正在使用的shell
kelvin@kelvin-V:~$ echo $SHELL
/bin/bash
history:命令历史
kelvin@kelvin-V:~$ history
1 ll
2 chmod u+x runasroot.sh
3 cat runasroot.sh
4 sudo ./runasroot.sh
file:查看文件性质
kelvin@kelvin-V:~/Documents/codes$ file t1.cpp
t1.cpp: C++ source, ASCII text
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
lsb_release -a:查看发行版信息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:修改光标提示符前面的内容
cd -:切换到上一个目录ls -R:递归显示子目录ls -d:显示当前目录信息- Linux系统文件类型:
- 普通文件:
- - 目录文件:
d - 字符设备文件:
c - 块设备文件:
b - 软链接:
l - 管道文件:
p - 套接字:
s
- 普通文件:
cp -a dir:拷贝dir中的文件包含文件信息cp -r dir:拷贝dir不包含文件信息tac file:倒着cat显示内容more file:分屏显示- 空格:向下翻屏
b:向上翻屏- 回车:下一行
f:上一行q:退出
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
sudo chown other file:将file的拥有者改为othersudo chgrp gother file:将file的所属组改为gothersudo chown other:gother file:一次性修改拥有者及所属组
Lec4 查找与检索
一、find命令
find ./ -type 'l':查找当前目录(及子目录)内的所有软链接文件find . -name '*.cpp':查找当前目录(及子目录)内所有cpp文件
kelvin@kelvin-V:~/Documents/codes$ find . -name '*.cpp'
./t1.cpp
find . -maxdepth 1 -name '*.cpp':查找当前目录内所有cpp文件,注意-maxdepth 1参数必须在文件名参数前面find . -size +20M -size -50M:查找当前目录(及子目录)下所有20~50M之间的文件c:字符k:注意小写MG
cmin,ctime,cmin,ctime,mmin,mtime:min单位为分钟,time单位为天find /usr/ -name "*tmp*" -exec ls -l {} \;:先找出/usr目录下所有包含tmp的文件名,接着对这些文件执行ls -l操作,其中{}代表前面查找到的内容,\;表示命令结束,与前面{}中间要用一个空格隔开
等价于
find /usr/ -name "*tmp*" | xargs ls -l:其中xargs是Linux后加入的参数
-exec会一次性接收全部查询结果
xargs当结果集过大时,执行切片,一部分一部分地处理查询结果。find /usr/ -name "*tmp*" -ok rm -r {} \;:其中-ok参数使得以交互方式逐个文件询问是否执行命令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命令
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命令
sudo apt update:更新服务器软件列表sudo apt upgrade:根据软件列表实施更新
二、deb命令
需要先下载需要安装的deb软件包。
sudo dpkg -i xxx.deb:安装deb软件包sudo dpkg -r xxx.deb:删除软件包sudo dpkg -r --purge xxx.deb:连同配置文件一起删除sudo dpkg -info xxx.deb:查看软件包信息sudo dpkg -L xxx.deb:查看文件拷贝详情sudo dpkg -l:查看系统中已安装软件包信息sudo dpkg-reconfigure xxx:重新配置软件包
三、aptitude命令
sudo apt intstall aptitude:该命令非默认安装aptitude show xxx:查看xxx命令的信息(是否安装,及其依赖)
四、源码安装
- 解压缩源代码包
cd dir./configure:检测文件是否缺失,创建makefile,检测编译环境make:编译源码,生成库和可执行程序sudo make install:把库和可执行程序安装到系统路径下sudo make distclean:删除和卸载软件
五、压缩与解压(gzip 和 bzip2)
tar -zcvf xxx.tar.gz file1 file2:将file1和file2使用gzip压缩打包为 xxx.tar.gz 文件tar -jcvf xxx.tar.bz2 file1 file2:将file1和file2使用bzip2压缩打包为 xxx.tar.bz2 文件tar -zxvf xxx.tar.gz:对xxx.tar.gz进行解压tar -jxvf xxx.tar.bz2:对xxx.tar.bz2进行解压sudo apt install rar,unrar:安装rar压缩与解压缩工具rar a -r xxx.rar dir file:将dir目录和file文件一同压缩为xxx.rar文件unrar x xxx.rar:对xxx.rar进行解压zip -r dir.zip dir:将dir目录(及子目录)内容压缩为dir.zip文件unzip dir.zip:对dir.zip进行解压缩
Lec6 其他常用命令
who:查看谁在登录jobs:查看当前后台有哪些用户作业fg [job...]:把指定的后台作业或挂起作业移到前台运行。参数job是一个或多个进程的PID,或者是命令名称,或者是作业号(作业号前面要带一个%)bg [job...]:把被挂起的进程提到后台执行。kill PID:杀掉进程PIDenv:显示当前系统所有环境变量top:文字版的任务管理器Ctrl+Alt+t:图形界面下创建新终端Ctrl+Shift+t:创建新的终端标签Alt+n:切换对应编号的终端标签
Lec7 Vim
一、光标跳转
0:跳到行首^:跳到行首第一个非空字符$:跳到行尾gg:跳到第一行首G:跳到最后一行首w:跳到一个单词开头b:跳到本单词或上一个单词开头e:跳到本单词或下一个单词结尾ge:跳到上一个单词结尾f{char}:跳到下一个{char}所在位置F{char}:反向跳到上一个{char}所在位置t{char}:跳到下一个{char}的前一个字符T{char}:反向跳到上一个{char}的后一个字符;:重复上次的字符跳转操作,:反向重复上次的字符跳转操作
二、动作

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

三、操作符
需要配合上面的“动作”一同操作。
d:删除c:修改y:复制p:粘贴v:visual模式,再次按下退出模式ndd/ncc/nyy:对当前行及以下连续 \(n\) 行执行操作S:清空当前行,光标停在行首原来第一个非空字符的位置
四、切换大小写
~:将光标下的字母改变大小写3~:将光标位置开始的3个字母改变大小写g~~:改变当前行所有字母的大小写gUU:将当前行的字母全改成大写guu:将当前行的字母全改成小写gUaw(gUiw):将光标下的单词改成大写guaw(guiw):将光标下的单词改成小写
在visual模式下,按U或u将选中内容改为大写或小写。
五、vscode下的快捷键
gd:跳转到定义gt:跳转到下一个tab标签页,也可以ctrl-PageDown或者alt-RightgT:跳转到上一个tab标签页,也可以ctrl-PageUp或者alt-Leftctrl-F4:关闭当前tab标签页ctrl-0:打开文档侧边栏ctrl-2:向右拆分(右方为空)ctrl-3:向右拆分出第3列(空)ctrl-shift-t:重新打开刚刚关闭的文件ctrl-p:在当前目录中查找文件
在vscode中打开 easymotion 模式,并检查是否已经设置好<leader>:<leader><leader>s<char>:全文显示<char>出现的位置,每个位置用不同的字母对应,按下即可切换过去<leader><leader>f<char>:向下显示<char>出现的位置,每个位置用不同的字母对应,按下即可切换过去<leader><leader>F<char>:向上显示<char>出现的位置,每个位置用不同的字母对应,按下即可切换过去d s <existing char>:删除当前位置包裹的符号c s <existing char> <desired char>:更新当前位置包裹的符号y s <motion> <desired char>:给当前部分添加包裹字符

浙公网安备 33010602011771号