Linux命令总结
一、文件类
- 重定向 >>
- grep -r “” 查找相关内容
- grep -R “” 精切查找
- find .|xargs grep -ri “” 查找关键字
- tree: -d 仅显示目录 -a 显示所有 -L n(n代表几层)tree -f 显示完整路径
- 位运算:
|=:两个二进制对应位都为0时,结果等于0,否则结果等于1;
&=:两个二进制的对应位都为1时,结果为1,否则结果等于0;
^=:两个二进制的对应位相同,结果为0,否则结果为1。 - tar命令相关:
*.tar 用 tar –xvf 解压
*.gz 用 gzip -d或者gunzip 解压
*.tar.gz和.tgz 用 tar –xzf 解压
*.bz2 用 bzip2 -d或者用bunzip2 解压
*.tar.bz2用tar –xjf 解压
*.Z 用 uncompress 解压
*.tar.Z 用tar –xZf 解压 - dd命令(制作fw时用到的dd命令,将一段段内容写入到fw.bin中):
dd of=fw.bin bs=1k count=32k if=/dev/zero
dd of=fw.bin bs=1k conv=notrunc seek=0 if= $ SHELL_FOLDER/output/lowlevelboot/lowlevel_fw.bin
dd of=fw.bin bs=1k conv=notrunc seek=2K if=$ SHELL_FOLDER/output/opensbi/fw_jump.bin
- file file 文件名 linux下查看文件的属性
- diff 【命令行选项】 源文件 新文件
-r 是一个递归选项,适合目录
-N 确保补丁文件正确处理新创建或删除文件的情况
-u 选项以统一格式创建补丁文件,格式紧凑
-a 表示可以包含二进制文件到patch
diff -ruN test1.txt test2.txt > test.patch
这样创建好了补丁文件test.patch,补丁创建好了以后需要给相应文件/程序打补丁
- scp -r user@xxx.xx.xx.xx:/path ./
- patch 【命令行选项】[输入文件/目录] [补丁文件]
常用的命令行选项为-pn(n是自然数)
patch -p0 file.c < patch.patch - VIM
u 撤销、U取消撤销
ctrl + f 下一页 ctrl + b 上一页
dd 删除此行
yy 复制此行
:n 快速到某行
- mknod
mknod命令创建设备节点:
用法:mknod 设备名 设备类型 主设备号 次设备号
如:mkmod /dev/test c 2 0
创建一个字符设备/dev/test,其主设备号为2,次设备号为0
下面展示在linux中mknod的系统调用关系:
二、用户环境
- 修改当前用户环境:
在.bashrc文件下
export PATH=...:$PATH
source ~/.bashrc
-
临时添加环境变量:
export PATH=/usr/bin/:$PATH, 即将/usr/bin/目录临时添加到环境变量中 -
make -j $ (nproc) 其中,“-j"参数用于指定并发编译的任务数,”$(nproc)"表示获取可用的CPU核心数。
三、SVN命令
- svn diff -r A:B >> xx.patch : 比较A,B版本不同并生成patch文件(高亮文件)
- svn checkout path -username -password :从服务器拉代码
- svn add xxx 添加新文件
- svn delete xxx 删除文件
- svn commit -m “备注说明” 提交代码到库,在commit之前必须add
- svn update 更新库文件
- svn update -r A 修正版本到A ; svn update 文件名 :更新指定文件
- svn revert :用来撤销文件或目录中的局部修改
- svn list : 查看库中文件目录
- svn log : 查看历史版本信息
- svn revert xxx:回退版本相关:
- svn status :查看文件状态
四、git命令
4.1 git工作区、暂存区和版本库
工作区就是你在电脑里能看到的目录。
暂存区英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
-
当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
-
当执行 git rm --cached 命令时,会直接从暂存区删除文件,工作区则不做出改变。
-
当执行 git checkout . 或者 git checkout – 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。
-
当执行 git checkout HEAD . 或者 git checkout HEAD 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
4.2 创建仓库命令
下表列出了 git 创建仓库的命令:
命令 | 说明 |
---|---|
[git init] | 初始化仓库 |
[git clone] | 拷贝一份远程仓库,也就是下载一个项目。 |
4.3 提交与修改
命令 | 说明 |
---|---|
[git add] | 添加文件到暂存区 |
[git status] | 查看仓库当前的状态,显示有变更的文件。 |
[git diff] | 比较文件的不同,即暂存区和工作区的差异。–cached可以比较 |
[git commit] | 提交暂存区到本地仓库。 |
[git reset] | 回退版本。 |
[git rm] | 将文件从暂存区和工作区中删除。 |
[git mv] | 移动或重命名工作区文件。 |
4.4 提交日志
命令 | 说明 |
---|---|
[git log] | 查看历史提交记录 |
[git blame <file>] | 以列表形式查看指定文件的历史修改记录 |
4.5 远程操作(远程仓库的指令,一般用不到)
命令 | 说明 |
---|---|
[git remote] | 远程仓库操作 |
[git fetch] | 从远程获取代码库 |
[git pull] | 下载远程代码并合并 |
[git push] | 上传远程代码并合并 |
4.6 分支操作:
命令 | 说明 |
---|---|
[git branch] | 查看分支列表 |
[git branch <branch-name>] | 创建一个新分支 |
[git checkout <branch-name>] | 切换到指定分支 |
[git merge <branch-name>] | 将指定分支合并到当前分支 |
[git branch -d <branch-name>] | 删除指定分支 |
4.7 远程仓库操作:
命令 | 说明 |
---|---|
[git remote add <remote-name> <remote-url>] | 添加远程仓库 |
[git remote remove <remote-name>] | 移除远程仓库 |
[git push <remote-name> <branch-name>] | 将本地分支推送到远程仓库 |
[git pull <remote-name> <branch-name>] | 从远程仓库拉取更新到本地分支 |
4.8 标签操作:
命令 | 说明 |
---|---|
[git tag] | 查看标签列表 |
[git tag <tag-name>] | 创建一个新标签 |
[git tag -a <tag-name> -m "tag message"] | 创建一个带有注释的标签 |
[git push <remote-name> <tag-name>] | 推送标签到远程仓库 |
4.9 撤销操作:
命令 | 说明 |
---|---|
[git revert <commit>] | 撤销指定提交的更改 |
[git reset --hard <commit>] | 重置当前分支到指定提交,并丢弃之后的所有提交 |
[git cherry-pick <commit>] | 选择一个提交并将其应用到当前分支 |
4.10 回滚版本:
git reset --hard HEAD^,回滚到上个版本
git reset --hard HEAD^~2,回滚到前两个版本
git reset --hard xxx(版本号或版本号前几位),回滚到指定版本号,如果是版本号前几位,git会自动寻找匹配的版本号
git reset --hard xxx(版本号或版本号前几位) filename,回滚某个文件到指定版本号(需要进入该文件所在目录)
4.11 查看历史提交版本:
git log 查看历史所有版本信息
git log -x 查看最新的x个版本信息
git log -x filename查看某个文件filename最新的x个版本信息(需要进入该文件所在目录)
git log --pretty=oneline查看历史所有版本信息,只包含版本号和记录描述
4.12 git commit --amend 重新提交如题
本条仅适用于修改已经push过了的最近一次的commit注释信息,确保本地文件的最新的。
step1:使用【git commit --amend】命令,会进入到vim编辑器。
step2:输入【i】,即进入编辑模式,此时编辑提交信息。
step3:编辑好之后,按键【Esc】,输入【:wq】,即保存和退出。
step4:输入【git push -f】强制提交。
操作完之后,再看提交记录,即可看到修改的注释信息。
4.13 拉取库上某个分支代码
主要步骤如下:
1、进入某个文件下执行git clone操作拉取远程代码
git clone https://gitlab.com/qemu-project/qemu.git
2、进入项目目录
cd qemu
3、执行git brach -a查看所有分支,*代表当前的分支
(base) sun@sun-virtual-machine:~/Workspace/qemu$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/block
remotes/origin/master
remotes/origin/stable-0.10
remotes/origin/stable-0.11
remotes/origin/stable-0.12
remotes/origin/stable-0.13
remotes/origin/stable-0.14
remotes/origin/stable-0.15
remotes/origin/stable-1.0
remotes/origin/stable-1.1
remotes/origin/stable-1.2
remotes/origin/stable-1.3
remotes/origin/stable-1.4
remotes/origin/stable-1.5
remotes/origin/stable-1.6
remotes/origin/stable-1.7
remotes/origin/stable-2.0
remotes/origin/stable-2.1
remotes/origin/stable-2.10
remotes/origin/stable-2.11
remotes/origin/stable-2.12
remotes/origin/stable-2.2
remotes/origin/stable-2.3
remotes/origin/stable-2.4
remotes/origin/stable-2.5
remotes/origin/stable-2.6
remotes/origin/stable-2.7
remotes/origin/stable-2.8
remotes/origin/stable-2.9
remotes/origin/stable-3.0
remotes/origin/stable-3.1
remotes/origin/stable-4.0
remotes/origin/stable-4.1
remotes/origin/stable-4.2
remotes/origin/stable-5.0
remotes/origin/stable-6.0
remotes/origin/stable-6.1
remotes/origin/stable-7.2
remotes/origin/stable-8.0
remotes/origin/stable-8.1
remotes/origin/stable-8.2
remotes/origin/stable-9.0
remotes/origin/staging
remotes/origin/staging-7.2
remotes/origin/staging-8.0
remotes/origin/staging-8.1
remotes/origin/staging-8.2
remotes/origin/staging-9.0
4、执行git checkout -b 远程某个分支,拉取指定某个分支
git checkout remotes/origin/stable-6.0
5、拉取该分支最新代码
git pull
五、管道的使用
- less 显示较少的内容 objdump -d a.out | less
- more 显示较多的内容 objdump -d a.out | more
- wc -lc 显示文件有多少行 objdump -d a.out | wc -lc