导图社区 Linux常用基本指令
快速掌握linux常用操作,包含tmux、git、vim、linux等基本操作,欢迎大家学习
编辑于2020-06-09 10:33:25Linux常用基本指令
1. 辅助
显示日期
date
显示日历
cal
简单计算器
bc
预设为整数
scale=number(小数点位)
关机
shutdown
-h 20:20
-h +10
-r now
立刻重启
-h now
立刻关机
查看配置
df -h
查看文件系统当前使用情况
top
查看linux系统运行进程与系统资源
nvidia-smi
-l
显卡
lscpu
cpu
sudo service stop/start lightdm
open/close gui
ifconfig
查看ip
内存个数
htop
两台电脑交互
1.服务器跑代码
ssh huizhang@10.42.17.12<服务器ip>
传东西
scp
远程到本地
scp huizhang@10.42.17.39<本机ip>:/dataset/xx.py .
scp -r huizhang@10.42.17.39:/dataset/ /data/
本地连接远程服务器
ssh Hui_Zhang@10.42.11.72
2. 热键
Tab
命令补全
ctrl+c
停掉当前程序
ctrl+d
键盘输入结束
exit
3. 文件操作
man
man -f man
数据同步写入磁盘
sync
改变文件所属群组
chgrp
改变文件拥有者
chown
sudo chown huizhang:huizhang xxx
改变文件权限
chmod
-r/R 递归持续变更
rwx
chmod ugo+rwx file.txt
u-user
g-group
o-other
x-exec
u/g/o/a(all)
+/-/=(set)
chmod u=rwx,go=rx .bashrc
目录操作
变换目录
cd
..
上级目录
-
回到刚刚目录
../
显示当前目录
pwd
-P
完整目录
${pwd}/xx/xx
建立新目录
mkdir
-m
配置权限
-p
所需目录递归建立
删除空目录
rmdir
-p
连同上层空的目录一起删除
显示文件
ls
-a
全部
-d
仅列出目录本身
-S
以File容量大小排序
-t
时间排序
-l
查看权限/多信息
所有者/所属组/其他人
u/g/o
修改时间
大小:字节
q权限
r/w/x
d目录,l链接
-h
文件大小(人性化)
列出文件数目
(不包含子目录)
ls -l|grep '^-'|wc -l
ls -l
grep
'^d'
表示目录
'^-'
表示文件
wc -l
统计文件输出信息行数,一个目录/文件一行
包含子目录
ls -lR|grep '^-'|wc -l
文件夹数目
ls -l|grep '^d'|wc -l
显示目录或文件大小
du
-d 1 -h
以k/m显示文件大小
-d 1 超过1层不显示
-a
显示目录种文件大小
复制文件或目录
cp
-a
= -pdr
-i
若目标文件存在,覆盖时询问动作进行
-p
连同文件属性一并复制
-r
递归持续复制
用于目录
删除文件或目录
rm
-f
force
-i
互动,删除时询问是否动作
-r
递归
通配符*
rm -i hello*
删除全部开头hello文件
移动文件/目录
mv
-f
-i
已存在时,会询问是否覆盖
-u
目标已存在,且source较新,才更新
取得路径的文件名与目录名
dirname
basename
显示子目录
tree
. -L 1
2
3
内容操作
第一行显示文件内容
cat
-n
打印出行号,空白也打印
-b
空白不打印
cat xx.py | grep 'xx:'
列出xx内容
最后一行开始显示
tac
显示时,顺带输出行号
nl
一页一页显示文件内容
more
可以向前翻页
less
只看头几行
head
只看尾几行
tail
二进制方式读取文件
od
修改文件时间或新建文件
touch
链接
ln
-s <原文件> <目标文件>
创建软链接
类似快捷方式
生成链接文件
文件大小-只是符号链接
权限3rwx
箭头指向源文件
硬链接
相对于cp -p,文件同步更新
源文件丢失,依然可以访问
通过i节点识别
ls -i
不能跨分区
不能针对目录使用
文件属性操作
文件预设权限
umask
u=rwx
g=rx
o=rx
配置文件隐藏属性
chattr
+
—
=
设定一定,且仅有后面接的参数
a
文件只能增加数据,不能删除和修改数据,root设定
i
文件不能被删除,改名,设定连接,写入,新增
root
显示文件属性
lsattr
文件类型
file
查找操作
查找执行命令位置
which
寻找特定文件
whereis
locate
-i
忽略大小写
-r
后面加正规表示法显示方式
find
/ -name file1
从/开始进入根目录文件系统搜索文件和目录
/ -user user
/home/user1 -name \*.bin
4. 系统相关
切换执行等级
init
进程
kill 进程
htop
f9
sudo kill -9 id
挂载一个文件系统
mount
umount
5. Bash
基本指令
read
6. 软件操作
软件卸载
sudo apt-get autoremove --purge xx
--purge
干净删除
7. 其他工具
Tmux
终端复用神器
快捷键
ctrl + b
会话
s
list all session
$
rename
窗口
c
creat new session
w
list all windows
n
behind win
p
before win
f
find win
,
rename win
&
close win
常用命令
启动新会话
tmux [new -s session_name -n window_name]
恢复会话
tmux at [-t sess_name]
列出所有会话
tmux ls
关闭会话
tmux kill-session -t sess_name
关闭所有会话
tmux ls | grep : | cut -d. -f1 | awk '{print substr($1,0,length($1)-1)} | xargs kill
8. 小技巧
多个命令连续执行
连续不中断执行
mkdir test;mkdir test;rmdir test;
出错停止后面指令
mkdir test && mkdir test && xx
一次正确就停止
mkdir test || XX ||
9. 压缩和读取文件
gzip
zcat
tar
压缩
tar -jcv -f finename.tar.bz2
查询
解压缩
tar -jxv -f filename.tar.bz2 -C
tar xf file.tar -C /dir/
解压多个文件到指定文件夹
for tar in *.tar;
do mkdir ${tar/.tar//};
tar xvf $tar -C ${tar/.tar//};
done
zip
解压
unzip
-f
update ori_file
-n
不覆盖源文件
-o
覆盖源文件
10. Vim
Command mode
i 进入输入mode
: 输入命令
se nu 行号
set nonu
ZZ 档案未改动直接离开,改动保存离开
查找
/word 光标下寻找word字符
?word 光标上寻找该字符
n 重复前一个搜索动作
N反向搜索
:n1,n2s/word1(^)/word2/g
删除
x删除光标字符
dd 删除整行
替换
r
替换单个字符
R
替换多个字符
撤销
u
重复上次操作
.
补全
ctrl + D
查看可能补全
Insert mode
ESC退出
Last line mode
q退出
q!强制退出不储存档案
w保存
W!强制保存只读文件
光标移动
h
左
l
右
k
上
j
下
行首
0
行尾
$
gg
文件起始
G
文件末尾
其他
vimdiff xx.py xxx.py
比较异同
复制粘贴
startline:endliney
p
11. Git应用

创建版本库
配置SSH key
打开本地git bash,生成ssh公钥和私钥对
ssh-key -t rsa -C "xxx@xxx.com"
打开~/.ssh/id_rsa.pub文件
打开gitlab,add ssh key
本地配置多个ssh key
1.为公司生成一对密钥ssh key
ssh-keygen -t rsa -C 'main.com' -f ~/.ssh/gitlab-rsa
2.为github生成一对密钥
ssh-keygen -t rsa -C 'mail.com' -f ~/.ssh/github-rsa
3.在~/.ssh下新建config文件,配置不同host使用不同ssh key
# gitlab Host gitlab.com HostName gitlab.com PreferredAuthentications publickey IdentityFile ~/.ssh/gitlab_id-rsa # github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/github_id-rsa # 配置文件参数 # Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件 # HostName : 要登录主机的主机名 # User : 登录名 # IdentityFile : 指明上面User对应的identityFile路径
4.分别在gitlab\github上添加生成的公钥
git clone <url>
克隆远程版本库
git init
初始化本地版本库
git config --list
显示当前的Git配置
git remote set-url origin <new-url>
设置远端repo
修改和提交
git status
查看状态
git diff
查看变更内容
git add
跟踪所有改动过的内容
-A
git add <file>
跟踪指定文件
untrack->track
git mv <old> <new>
文件改名
git rm <file>
删除文件
git rm --cached <file>
停止跟踪文件但不删除
track->untrack
git checkout -- file
撤销修改内容
git commit -m "commit message"
提交所有更新过文件
git commit --amend
修改最后一次提交
查看提交历史
git log -p <file>
查看指定文件的提交历史
git blame <file>
以列表形式查看指定文件的提交历史
git show
查看代码更改
检查
git diff
查看所有本地文件改动
可加文件名
git reflog
显示本地代码库HEAD的更改日志,适合查看丢失工作
撤销
git reset --hard HEAD
撤销工作目录中所有提交文件的修改内容
git reset --hard HEAD^
git reset --hard HEAD~1
回退到上个版本
git reset --HEAd^ --soft
回退到上个commit,不删除之前的修改
git reset --hard <commit-version>
指定到某版本
git checkout HEAD <file>
撤销指定的未提交文件的修改内容
git revert <commit>
撤销指定的提交
git clean -n
删除本地工作目录中的未跟踪文件
-n试运行,不会删除
-f 实际删除
-d 删除为跟踪目录
分支与标签
git branch
显示所有本地分支
git checkout <branch/tag>
切换到指定分支或标签
git checkout -b <branch>
创建并切换分支
git branch <new-branch>
创建新分支
git branch -D <branch>
删除本地分支
git branch --delete <branch>
删除远程分支
git tag
列出所有本地标签
git tag <tagname>
基于最新提交创建标签
git tag -d <tagname>
删除标签
合并和衍合
git merge <branch>
合并指定分支到当前分支
master操作
git rebase <branch>

衍合指定分支到当前分支
用于把一个分支的修改合并到当前分支
branch 操作
git rebase -i
整理合并 commit
merge和rebase区别

远程操作
git remote -v
查看远程版本库信息
git remote show <remote>
查看指定远程版本库信息
git remote add <remote> <url>
添加远程版本库
git fetch <remote>
从远程库获取代码
git pull <remote> <branch>
下载代码并快速合并
git push --tags
上传所有标签
git push <remote> <branch/tag-name>
上传代码并快速合并
git push -u origin <branchName>
bug分支
Git中,分支是很强大的。每个bug可以通过一个临时分支修复,修复完成后,合并分支,然后将临时分支删除掉
git stash
隐藏当前工作现场
git stash list
工作现场
git stash apply
回复工作现场,stash内容不删除
git stash drop
删除stash内容
git stash pop
恢复并删除
相关介绍

master
默认开发分支
Head
默认开发分支
origin
默认远程版本库
Head^
Head的父提交
git submodule
添加
add 仓库地址 当前工程路径
删除
.gitmodules
git rm -cache
下载的工程带有submodule
update --init --recursive
父模块更新
子模块update
git pull
其他
.gitignore
应用实例
01dev开发
00dev:commit
01master:pull
02dev:rebase
03master:merge
04master:push
12. Docker
Docker
架构
Images
Client
Host主机
Registry
Container
基本操作
container使用
创建container
用image创建
nvidia-docker run --name <contain-name> --shm-size 8g(shared memory) -v /home/~/:/<dic>/(mount dir) -it <imageID> bash
tensorboard
用完就删
docker run -v xx:xx -p 6006:6006 -d --rm <imageID>
打开container
docker start <container id/tag>
docker exec -it <> bash
docker ps -a
images使用
images
显示本地所有images
docker images
下载image
docker pull image_name
显示镜像历史
docker history image_name
create image
docker build -t image_name DockerfilePath
save image to file
docker save image_name -o file.tar
load image tar
docker load -i file.tar
container连接
docker ps
-l
最近一次启动
-a
all container
docker top cid
进程信息
docker logs cid
log
-f cid
real-time
docker diff cid
Dockerfile
RUN
COPY
source->target
CMD
启动
ENV
ARG
参数
EXPOSE
神明端口
USER