linux下常用的命令大全

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 取消显示行号

转换关系

注意:

​ 输入模式要想转换成末行模式,必须通过命令模式进行互相转换

​ 其他模式间可以进行互相转换

非法关闭

当非法关闭正在编辑的文件的时候,再次打开文件会有提示信息

解决:

  1. enter进入文件

  2. 保存上次写的文件 vim -r 1.txt

  3. 将产生的交换文件删除掉 rm .1.txt.swp

用户权限管理

概述

在unix/linux系统中,不推荐直接使用root账号登录系统,所以每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的访问权限

whoami

查看当前系统当前账号的用户名

可以通过cat /etc/passwd查看系统用户信息

who

查看当前所有登录系统的用户信息

选项 说明
-m或am l 只显示运行who命令的用户名,登录终端和登录时间
-q或--count 只显示用户的登录账号和登录用户的数量
-u或--heading 只显示列标题

exit

  1. 如果是图形界面,退出当前终端

  2. 如果是使用ssh远程登录,退出登录账号

  3. 如果是切换后的登录用户,退出则返回上一个登录账号

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权限

操作

  1. sudo usermod -a -G admin 用户名

  2. sudo usermod -a -G sudo 用户名

  3. vim /etc/sudoers

    添加权限

    光标在root ALL=(ALL:ALL) ALL上,按yyp复制,改为

    sunck all=(ALL:all)

  4. 进入末行模式,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账号

https://gitub.com

安装

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上添加公钥

  1. 登录GitHub官网

  2. 进入setting设置

  3. 添加秘钥

  4. 在黑屏终端中测试秘钥是否通过

    ssh -T [email protected]

注意:

​ 当网页中的秘钥标记变为绿色时,表示秘钥通过,可以使用

创建远程连接

  1. 在网页中点击start a project,开始创建

  2. 选中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分支到本地

工作模式

  1. 可以试图使用 git push origin branch-name 推送自己的修改

  2. 如果推送失败,则因为远程分支比你本地的更新,需要先用git pull合并

  3. 如果合并有冲突,则解决冲突,并在本地提交

  4. 解决冲突并提交后,在使用git push origin branch-name推送

  5. 如果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

一次推送全部尚未推送到远程的本地标签

发布了23 篇原创文章 · 获赞 4 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Misaki_root/article/details/83588066