linux命令
ls --help
查看linux命令自带的帮助信息
ls man
查看linux的使用手册
tab键
打出命令的前几个字母时,按tab键,系统会自动补全命令
文件管理操作
ls
显示指定目录下所有的文件和文件夹
ls -a
显示指定目录下所有子目录与文件,包含隐藏文件
说明:
“.”代表当前目录
“..”代表上一级目录
以“.”开头的文件名,表示该文件为隐藏文件,必须使用-a才可以查看
ls -l 或 ll
以列表的方式显示文件的详细信息
ls -h
配合-l以人性化的方式显示文件大小
ls *
查询所有的文件,相当于ls
ls t*
查询以t开头的所有文件
ls *html
查询以html结尾的所有文件
ls ?.txt
查询只有一个字符,且以.txt结尾的文件
注意:
“?”只代表一个字符
ls [abc]
匹配a/b/c中的任意一个字母
ls [a-z]
匹配任意小写字母
ls [a-z]*
查找以任意小写字母开头的文件
ls a-z
查找名为a-z的文件,而不是任意字母
ls \*a
查找以名为*a的文件,当*?不在[]内使用时,需要用\进行转义
pwd
显示当前的工作目录
cd 绝对路径/相对路径
切换工作目录
cd
无论当前位置在哪,都会切换到用户的主目录(/home/用户名)
cd ~
切换到当前用户的主目录
cd .
切换到当前目录
cd ..
切换当上级目录
cd -
进入上次所在的目录
ls > test.txt
输出重定向,将>前命令执行的结果,重新写入>后的文件中,如果文件不存在,则创建;存在,则覆盖原来文件中的内容
ls >> test.txt
输出重定向,将>>前命令执行的结果,写入>>后的文件中,如果文件不存在,则创建;存在,则在原来文件中的内容后追加写入
cat test.txt
查看文件中的内容
cat a.txt b.txt > c.txt
将a.txt和b.txt中的文本写入c.txt文件中
head test.txt
查看多行文本的内容,默认显示前十行
head -n test.txt
查看多行文本的内容,显示前n行
tail test.txt
查看多行文本内容,默认显示后十行
tail -n test.txt
查看多行文本内容,显示后n行
less test.txt
查看全部文本,enter键下一行,空格键下一页,pageup/pagedown键翻页
more test.txt
分屏显示,空格键显示下一页,q键退出
wc test.txt
显示文件中文本的行数,字节数,文件名信息
|
管道,一个命令的输出可以通过管道作为另一个命令的输入
clear
清除终端上的显示
mkdir abc
在当前目录下创建目录
mkdir a/b/c/abc -p
在 a 目录下的 b 下的 c 创建 abc 目录
touch a.txt
创建普通文件
rmdir
删除目录,删除的目录必须为空
rm
删除文件,删除的文件不能恢复
rm -f
强制删除
rm -r
递归删除目录下的文件
rm -rf /home *
强制删除home目录下的所有文件
cp 文件名 目标目录
将给出的文件或目录复制到另一个文件或目录中
参数:
-a 递归复制目录,保留文件的原有属性 -f 已经存在的目标文件而不提示 -i 在覆盖目标文件之前将给出用户提示确认 -r 若给出的源文件是目录文件,则递归复制该目录下的所有子目录和文 件,目标文件必须为一个目录名 -v 显示拷贝的进度
mv 文件 目标目录
移动文件或目录
参数:
-f 禁止交互式操作,如果覆盖不给出提示 -i 确认交互式操作,如果会覆盖,则给出提示信息,是否覆盖 -v 显示移动进度
mv 文件名 文件名
重命名
ln
建立链接文件,linux链接文件类似于windows下的快捷方式
ln -s 源文件 链接文件
软链接,不占磁盘空间,源文件删除,则链接文件失效。如果源文件和链接文件不在同一目录下时,源文件必须使用绝对路径,不能使用相对路径
ln 源文件 链接文件
硬链接,只能链接普通文件,不能链接目录。俩文件占用同样大小的磁盘空间,即使删除了源文件,链接文件内容依然存在
grep [参数] 搜索内容 文件名
文本搜索,对文本文件进行模式查找,如果匹配到,grep打印包含模式的所有行
参数:
-v 显示不包含匹配文本的所有行 -n 显示匹配行及行号 -i 忽略大小写
常用:
ps -aux | grep nginx
查找相关的进程
find
查找文件
find ./ -name test.txt 查找当前目录下所有名为test.txt的文件 find ./ -name '*.txt' 查找当前目录下所有后缀名为.txt的文件 find ./ -name '[a-z]*' 查找当前目录下所有以小写字母开头的文件 find /tmp -size 2M 查找/tmp目录下大小等于2M的文件 find /tmp -size +2M 查找/tmp目录下大于2M的文件 find ./ -size +4K -size -5M 查找当前目录下大于4K小于5M的文件 find ./ -perm 0777 查找当前目录下权限为777的文件或目录
which ls
查看命令的位置
tar [参数] 打包文件名 文件
压缩,解压文件
-c 生成档案文件,创建打包文件 -v 列出归档解档的详细过程,显示进度 -f 指定档案名称,f后一定是.tar文件 -t 列出档案中包含的文件 -x 解档文件
常用的搭配
tar -cvf file.tar *.txt
将所有txt文件打包到file.tar文件中
tar -xvf file.tar
解包文件file.tar
gzip
tar与gzip命令结合使用,对文件进行打包,压缩。tar只打包文件,不进行压缩,用gzip压缩tar打包后的文件,其扩展名为.tar.gz
gzip [选项] 待解压文件
解压
gzip [选项] 被压缩文件 压缩后文件名
压缩
gzip -r 1.tar 1.tar.gz
压缩所有子目录
gzip -d 1.tar.gz
解压
结合tar使用(在tar命名中增加一个(-z)选项,可以调用gzip的压缩功能)
tar -cvzf 1.tar.gz *
压缩所有文件
tar -xvzf 1.tar.gz
解压到当前目录
tar -xvzf 1.tar.gz -C /tmp
解压到指定目录下
gedit
Linux环境下的文本编辑器,类似Windows下的写字板程序
vim编辑命令
打开文件
vim 文件名
编辑文件,如果文件不存在则先打开,当关闭保存时,自动创建文件
vim test.txt +5
打开文件,将光标移动到第4行,如果文件不存在,则没有效果
vim test.txt +
打开文件,将光标移动到最后一行,文件不存在,无效
进入命令模式
说明:
打开文件,即进入命令模式;按ESC,无论在什么模式下,按ESC都
可以进入命令模式
移动光标
命令 | 说明 |
---|---|
方向键 | 移动光标 |
G | 光标定位到末行行首 |
$ | 光标定位到该行行尾 |
^ | 光标定位到该行行首 |
gg | 光标定位到第一行行首 |
ngg | 光标定位到第n行行首 |
M | 光标移动到中间行 |
L | 光标移动到屏幕最后一行行首 |
w | 向后一次移动一个字 |
b | 向前一次移动一个字 |
ctrl+d/ctrl+u | 向下/上翻半屏 |
ctrl+f/ctrl+b | 向下/上翻一屏 |
h、j、k、l | 上下左右移动光标 |
删除命令
命令 | 说明 |
---|---|
x | 删除光标后一个字符 |
X | 删除光标前一个字符 |
dd | 删除光标所在行 |
ndd | 删除n行 |
d0 | 删除光标前本行所有内容 |
dw | 删除光标开始位置的字 |
撤销命令
命令 | 说明 |
---|---|
u | 一步一步撤销 |
ctrl+r | 反撤销 |
. | 重复上一次操作的命令 |
文本行移动
命令 | 说明ss |
---|---|
shift+>> | 文本行右移 |
shift+<< | 文本行左移 |
复制剪切粘贴
命令 | 说明 |
---|---|
yy | 复制当前行 |
nyy | 复制n行 |
p | 在光标所在下一行,粘贴 |
dd | 剪切 |
p | 在光标所在下一行,粘贴 |
输入模式
进入输入模式
按ESC后按a
在光标之后开始输入
末行模式
按ESC后按shift+冒号
进入末行模式
命令 | 说明 |
---|---|
n | 光标跳转到第n行 |
w | 保存文件 |
wq | 保存并退出文件 |
x | 保存并退出文件 |
q! | 强制退出 |
/ | 正向查找,按n查找下一个,/sun |
? | 反向查找,按n查看上一个,?sun |
s/sunck/kaige | 将光标所在行的第一个sunck替换为kaige |
s/sunck/kaige/g | 将光标所在行的全部sunck替换成kaige |
n,s/sunck/kaige | 将指定行的第一个sunck替换成kaige |
n,s/sunck/kaige/g | 将指定行的所有sunck替换成kaige |
%s/sunck/kaige | 将每一行的第一个sunck替换成kaige |
%s/sunck/kaige/g | 将每一行的所有sunck替换成kaige |
set nu | 显示行号 |
set nonu | 取消显示行号 |
转换关系
注意:
输入模式要想转换成末行模式,必须通过命令模式进行互相转换
其他模式间可以进行互相转换
非法关闭
当非法关闭正在编辑的文件的时候,再次打开文件会有提示信息
解决:
-
enter进入文件
-
保存上次写的文件 vim -r 1.txt
-
将产生的交换文件删除掉 rm .1.txt.swp
用户权限管理
概述
在unix/linux系统中,不推荐直接使用root账号登录系统,所以每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的访问权限
whoami
查看当前系统当前账号的用户名
可以通过cat /etc/passwd查看系统用户信息
who
查看当前所有登录系统的用户信息
选项 | 说明 |
---|---|
-m或am l | 只显示运行who命令的用户名,登录终端和登录时间 |
-q或--count | 只显示用户的登录账号和登录用户的数量 |
-u或--heading | 只显示列标题 |
exit
-
如果是图形界面,退出当前终端
-
如果是使用ssh远程登录,退出登录账号
-
如果是切换后的登录用户,退出则返回上一个登录账号
useradd 或 adduser [参数] 新建用户账号
向unix或linux中添加用户账号
参数 | 说明 |
---|---|
-d | 指定用户登录系统的主目录,如果不使用该参数,则自动在/home目录下建立与用户名同名的目录为主目录 |
-m | 自动建立目录 |
-g | 指定组名称 |
passwd
在unix或linux中,超级管理员使用passwd命令为普通用户设置密码;用户也可以是用passwd为自己修改密码
userdel
删除用户(只有root用户可以)
userdel sunck
删除sunck用户,但不会自动删除用户的主目录
userdel -r sunck
删除sunck用户,同时删除用户的主目录
su
切换用户
注意:
su后面可以加“-”,“su”和“su -”命令不同于,“su -”切换到对应的用户时,会将当前工作的目录自动转换到切换后的用户的主目录
cat /etc/group
查看有哪些用户组
groupadd
新建组账号
groupdel
删除组账号
usermod -g 用户组 用户名
修改用户所在的组
groups sunck
查看用户在哪些组
为普通用户添加root权限
说明:
普通用户,无法使用root的一些权限,也不能使用sudo,需要为用户添加root权限
操作
-
sudo usermod -a -G admin 用户名
-
sudo usermod -a -G sudo 用户名
-
vim /etc/sudoers
添加权限
光标在root ALL=(ALL:ALL) ALL上,按yyp复制,改为
sunck all=(ALL:all)
-
进入末行模式,wq! 强制保存退出
chmod
修改文件权限
- 不具有权限,数字代号0
r 读取权限,数字代号4
w 写入权限,数字代号2
x 执行权限,数字代号1
例:
chmod 751 file
说明:
文字所有者:读、写、执行权限
同组用户:读、执行权限
其它用户:执行权限
系统的管理
ps
查看进程的信息
选项
-a 显示终端上的所有进程,包括其他用户的进程 -u 显示进程的详细状态 -x 显示没有控制终端的进程 -w 显示加宽,以便显示更多的信息 -r 只显示正在运行的进程
常用
ps -aux | grep 进程关键字
查看相关运行的进程
top
动态显进程,可以在使用top命令时加上-d来指定显示信息更新的时间间隔
按键说明
按键 | 说明 |
---|---|
M | 根据内存使用来排序 |
P | 根据CPU占有率来排序 |
T | 根据进程运行时间的长短来排序 |
U | 根据后面输入的用户名来筛选进程 |
K | 根据后面输入的PID来杀死进程 |
q | 退出 |
h | 获取帮助 |
kill
终止进程
kill -9 pid
强制终止某pid的程序
reboot
重新启动操作系统
shutdown -r now
重启系统,并提示
shutdown -h now
立即关机,now相当于时间为0的状态
shutdown -h 20:25
系统在今天20:25的时候关机
shutdown -h +10
系统再过十分钟后自动关机
init 0
关机
init 6
重启
ifconfig
显示或修改网卡信息,查linux中的ip常用方式
ping
测试远程主机的连通性
apt-get install
下载
sudo apt-get update
更新源
阿里云虚拟环境的配置
mkvirtualenv 虚拟环境名称
此虚拟环境与系统环境相同
mkvirtualenv --python=/usr/bin/python3 虚拟环境名称
创建python3的环境
rmvirtualenv 虚拟环境名称
删除虚拟环境
workon 虚拟环境名称
进入虚拟环境
deactivate
退出当前虚拟环境
注意:
所有的虚拟环境,都位于/home/.virtualenv目录下
可以进入虚拟环境后,安装相关的软件,与系统环境不会发生冲突
Nginx的相关命令
sudo /usr/local/nginx/sbin/nginx
启动Nginx服务
sudo /usr/local/nginx/sbin/nginx -s stop
关闭Nginx服务
sudo /usr/local/nginx/sbin/nginx -s reload
重新加载配置,用于修改配置后
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
指定配置文件
netstat -ano | grep 80
查看80端口占用情况
sudo fuser -k 80/tcp
关闭占用80端口的程序,常用kill方法强行关闭80端口程序
linux下Git 的安装使用命令
注册github账号
安装
sudo apt-get install git
配置
git config --global user-name "git注册用户名" git config --global user-email "git注册邮箱"
生成秘钥
ssh-keygen -t rsa -C "git注册邮箱" cat /.ssh/id_rsa.pub //查询公钥,复制公钥,不包括最后的邮箱
在GitHub上添加公钥
-
登录GitHub官网
-
进入setting设置
-
添加秘钥
-
在黑屏终端中测试秘钥是否通过
ssh -T git@github.com
注意:
当网页中的秘钥标记变为绿色时,表示秘钥通过,可以使用
创建远程连接
-
在网页中点击start a project,开始创建
-
选中Initialize
关联远程仓库
git remote add origin 远程仓库SSH地址
远程仓库SSH地址:
1.进入远程仓库
2.点击clone or download
3.点击use SSH
4.网址右侧复制
克隆远程库
git clone 远程仓库SSH地址
推送本地库内容到远程库
git push origin master
拉取远程库内容到本地库
git pull origin master
删除关联
git remote rm origin
Git 的相关操作命令
Git的所有命令都是在库中执行
git add .
将当前目录下的所有文件都添加到仓库中,也可以值添加某个文件
git commit -m "注释信息"
把文件提交到仓库
注意:
每次修改库里文件的时候,都需要执行这两个命令
git status
查看当前仓库的状态
git diff
查看库中文件修改的内容
git log
显示从近到远的提交日志
git log --pretty=oneline
单行显示日志的commit和注释内容
git reset --hard HEAD^ / HEAD^^ / HEAD~100 / 具体版本号
版本回退,回退到上一版本 / 上上版本 / 上100个版本 / 具体版本
git reflog
记录每一次命令,返回上一个命令
git checkout -- fileName
撤销命令,也就是让fileName文件回到最后一次git commit或git add的时状态
Git中分支的管理
说明:
创建一个属于自己的分支,别人看不到,还继续在原来的分支上正常工作,而我们在自己的分支上干活,想提交就提交,知道开发完毕后,再一次性合并到原来的分支上,这样既安全,又不影响别人工作
git branch 分支名
创建分支
git checkout 分支名
切换分支
git checkout -b 分支
创建分支,并进入该分支
git branch
列出所有分支,当前使用的分支前加*
git merge dev
把dev分支的结果合并到mater分支中
git log --graph
查看分支合并图
git branch -d 分支名
删除分支
git push origin :分支名
git push origin --delete 分支名
删除远程分支
多人协作项目
推送分支
git push origin master
git push origin dev
抓取分支
git check -b dev origin/dev
从远程库clone时,默认只能看到mater库;想在dev的分支上开发,就必须创建origin的dev分支到本地
工作模式
-
可以试图使用 git push origin branch-name 推送自己的修改
-
如果推送失败,则因为远程分支比你本地的更新,需要先用git pull合并
-
如果合并有冲突,则解决冲突,并在本地提交
-
解决冲突并提交后,在使用git push origin branch-name推送
-
如果git pull提示"no tracking information",则说明本地分支和远程分支的可连接没有创建,用命令git branch --set-upstream branch-name origin/branch-name
标签的管理
说明:
当发布一个版本时,我们通常现在版本库中打一个标签(tag),这样就可以唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把这个打标签的历史版本取出来,所以,标签也是版本的一个快照
git tag 标签名
打标签
git tag
查看所有标签
git tag 标签名 commitID
指定commit id打标签
git tag -a 标签名 -m "标签信息"
指定标签信息
git checkout 标签名
切换到指定标签
git show 标签名
查看说明文字
git tag -d 标签名
删除本地标签
git push origin :refs/tags/标签名
删除远程标签
git push origin 标签名
推送指定标签到远程
git push origin --tags
一次推送全部尚未推送到远程的本地标签