Linux Ubuntu常用命令集合

万能命令

遇到不懂的命令:man 命令语句

常用命令

生成文件夹:mkdir test 当前目录生成test文件夹;mkdir -p d/e/f 生成递归目录
复制拷贝:cp 文件名 路径 cp hello.csv ./python/ml 把当前目录的hello.csv拷贝到当前目的python文件夹里的ml文件夹里。
剪切移动:mv 文件名 路径。mv hello.csv ./python 把当前目录的hello.csv剪切到当前目的python文件夹里
删除文件夹: rm -rf code 将会删除code目录以及其下所有文件、文件夹。(注意一定要加 -r,不然很麻烦)
删除文件: rm -f 001.cpp

查看文件在哪儿: whereis 文件
权限设置:sudo chmod 777 文件名 # 顺序rwx
查找搜索:find ;grep 正则表达式 [grep选项] # [grep选项]: -r 对目录下递归查询所有子目录; -n 显示它在文件中的相对行号; -i 比较字符时忽略大小写的区别

find path -option [-print] [-exec -ok command] {} \  # eg. sudo find ~ -name "t*" -print
# grep 'test' d* # 显示所有以d开头的文件中,包含test的行
# ls -l | grep '^a' # 只显示以a开头的行 

终端操作快捷键

Ctrl+Alt+T 打开终端
Tab 自动补全
Ctrl+a 光标移动到开始位置
Ctrl+e 光标移动到最末尾
Ctrl+k 删除此处至末尾的所有内容
Ctrl+u 删除此处至开始的所有内容
Ctrl+d 关闭终端
Ctrl+c 终止进程/命令
Shift+上或下 终端上下滚动
Shift+PgUp/PgDn 终端上下翻页滚动

控制台切换

不同控制台间切换
Ctrl + ALT + ← Ctrl + ALT + →

指定控制台切换
Ctrl + ALT + Fn(n:1~7)

控制台下滚屏
SHIFT + pageUp/pageDown

控制台抓图
#setterm -dump n(n:1~7)

文件/文件夹管理

ls 列出当前目录文件(不包括隐含文件)
cd … 回当前目录的上一级目录
cd - 回上一次所在的目录
cd ~ 或 cd 回当前用户的宿主目录
mkdir 目录名:创建一个目录
rmdir 空目录名: 删除一个空目录
rm -rf 非空目录名: 删除一个非空目录下的一切
rm 文件名 文件名:删除一个文件或多个文件

mv 路经/文件 /路经/文件:移动相对路经下的文件到绝对路经下
mv 文件名 新名称:在当前目录下改名
find 路经 -name “字符串” :查找路经所在范围内满足字符串匹配的文件和目录

查看文件内容

  • cat file1 从第一个字节开始正向查看文件的内容
  • vi file 打开并浏览文件

文本内容处理

  • grep str /tmp/test 在文件 ‘/tmp/test’ 中查找 “str”
  • vi file 编辑文件
  • gedit 文件名 打开该文件

Vi / VIM

  • vi file 编辑文件
    i 进入编辑文本模式; iIaAoO都是输入模式;rR取代模式。
    Esc 退出编辑文本模式;
    :w 保存当前修改;
    :q 不保存退出vi;
    :wq 保存当前修改并退出vi
    w filename: 另存为新文件;n1,n2,w filename:将n1,n2的内容储存成filename文档。
    r filename:在编辑的数据中,读入另一个档案的数据,加入游标所在行的后面。
    !command:例如!ls /home:即可在vi中查看/home底下以ls输出的档案信息。

  • 代码中批量添加注释

批量注释: ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的I 进入行首插入模式,输入注释符号// 或#,然后连按两下esc; 10,20s/^/#/g 或者 10,20s#^#//#g
取消注释:选中注释符号,按dd,ESC保存退出;10,20s#^//##g 或者 10,20s/#//g

  • 删除 d

x: 向后删除一个字符
X:向前删除一个字符
nx(n为数字):连续向后删除n个字符
dd:删除一整行
ndd(n为数字):删除向下n行
d1G:删除光标所在到第一行的所有数据
dG:删除光标所在到最后一行的所有数据
d$:删除游标所在处,到:该行的最后一个字符
d0:删除游标所在处,到:该行的最前面一个字符

  • 复制 y

yy:复制游标所在的那一行
nyy:复制光标所在向下n行
其他同理

  • 粘贴 p

p:将已复制的数据在光标下一行贴上
P: 贴在游标上一行

  • 其他操作

u:复原前一个动作
ctrl + r:重复上一个动作

  • 搜索

/aword:向光标之下,搜索名称为aword的字符串
?aword:向光标之上,搜索名称为aword的字符串
n: 重复前一个操作
N:【反向】重复前一个操作

  • 替换

n1,n2s/word1/word2/g:n1,n2为数字,代表行数,寻找word1并取代为word2;
1,$s/word1/word2/g或% s / w o r d 1 / w o r d 2 / g : 从 第 一 行 到 最 后 一 行 , 寻 找 w o r d 1 并 取 代 为 w o r d 2 ; ‘ 1 , s/word1/word2/g:从第一行到最后一行,寻找word1并取代为word2; `1, s/word1/word2/gword1word21,s/word1/word2/gc`或%$s/word1/word2/gc:从第一行到最后一行,寻找word1并取代为word2,并逐个确认是否替换。

在这里插入图片描述

打包/解压

  • tar [-cxtzjvfpPN] 文件 目录/文件

-c 创建包
–x 解开包
-v 显示命令过程
–z 代表压缩包gzip
-N 比后面接的日期(yyyy/mm/dd)还要新的,才会打包进新建的文件中
–exclude FILE 压缩的过程中,不要将FILE打包

tar –cvf benet.tar /home/benet 把/home/benet目录打包
tar –zcvf benet.tar.gz /mnt 把目录打包并压缩
tar –zxvf benet.tar.gz 压缩包的文件解压恢复
tar –jxvf benet.tar.bz2 解压缩

共享文件夹/和windows sftp连接

windows代码自动更新到Linux远端,通过:sftp
虚拟机和宿主机,通过:共享文件夹

apt命令命令

apt-cache search package 搜索包
apt-cache show package 获取包的相关信息,如说明、大小、版本等

sudo apt-get install package 安装包
sudo apt-get install package - - reinstall 重新安装包
sudo apt-get -f install 修复安装”-f = –fix-missing”

sudo apt-get update 更新源
sudo apt-get upgrade 更新已安装的包

sudo apt-get remove package 删除包
sudo apt-get remove package - - purge 删除包,包括删除配置文件等
sudo apt-get clean && sudo apt-get autoclean 清理无用的包
sudo apt-get clean 清理所有软件缓存(即缓存在/var/cache/apt/archives目录里的deb包)

系统管理的命令

chown chown root /home: 把/home的属主改成root用户
cat /etc/issue :查看ubuntu版本
sudo ethtool eth0 :查看网卡状态
cat /proc/cpuinfo 查看cpu信息
sudo fdisk -l 查看磁盘信息
df -h 查看硬盘剩余空间
free -m 查看当前的内存使用情况
ps -A 查看当前有哪些进程
kill 进程号(就是ps -A中的第一列的数字)或者 killall 进程名( 杀死一个进程)
kill -9 进程号 强制杀死一个进程

reboot Init 6 重启LINUX系统
Halt Init 0 Shutdown –h now 关闭LINUX系统

配置默认Java使用哪个
#sudo update-alternatives –config java
~表示当前用户目录。如:用户root登录则目录为/root ,用户jack登录则为/home/jack
/表示根目录。如:root下为 /,jack下也是/
只有root用户的命令提示符是#,其他用户的命令提示符都为$

PATH环境变量

  • ehco $PATH 查看当前环境变量
  • export PATH=$PATH:/home/ubuntu 临时设置环境变量,当前会话有效
  • ~/.bashrc 在文件最末添加命令设置环境变量,然后重启shell,永久有效。设置环境变量仍是用命令 export PATH=$PATH:/home/ubuntu

Linux Shell 编程 echo

安装sudo apt install dos2unix # convert file to Unix format
然后再执行命令 dos2unix ./2-variable.sh

#!/bin/bash
echo -e "hello,world\n"

命令行执行 ./hello.sh
更改文件权限 chmod +x ./hello.sh

单行注释: #
多行注释: :<<EOF 多行 EOF

变量定义 $var

变量的定义和使用:

# 变量的定义和使用,定义时不加空格
my_name=qiyue
echo "1. $my_name"
# 另一种定义方式,建议使用
course="linux start"
echo 2. ${course}
# 只读变量
readonly course
course ="liunx kernel" # 因为是只读,所以不能再赋值
echo "3. ${course}"
# 删除变量
unset my_name
echo "4. ${my_name}"

环境变量,即全局变量:
env 显示所有的全局变量,例如查找自定义的环境变量 env | grep MY_NAME
export导出 eg. export MY_NAME='guixue
source and .引用

特殊变量:
在这里插入图片描述

基本运算

expr 求值操作

# 加法 expr
a=11
b=5
val=`expr $a + $b`
echo "$a + $b = $val"
# 另一种数值运算 $[var]
val=$[a-b]
echo "$a - $b = $val

关系运算

-eq 相等
-ne 不相等
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于

布尔与逻辑运算,逻辑运算用[[ ]] 两个方括号

!= 非运算 [!false]
-o 或运算
-a 与运算
&& 逻辑与
|| 逻辑或
== 相等(数字)
!= 不等(数字)

文件测试运算

-d 是否为目录
-f 是否为普通文件
-r, -w, -x 是否可读
-w, -x 可写,可执行
-s 文件是否为空
-e 文件是否存在

举例:

file=$0
echo "文件是:$file"
if [ -f $file ]
then 
    echo "为普通文件";
fi

字符串

单引号:原样输出,变量无效
双引号:可以包含变量,推荐用双引号

${#str} :字符串长度
s t r : 1 : 3 : 字 符 串 从 第 一 个 字 符 开 始 , 截 取 3 个 查 找 子 串 : m a t c h e d = ‘ e x p r i n d e x " {str:1:3} :字符串从第一个字符开始,截取3个 查找子串:matched = `expr index " str:1:3:3matched=exprindex"str" wo`

字符串运算符

= 字符串是否相等
!= 字符串是否不相等
-z 字符串长度是否0
-n 字符串长度是否不为0
$ 字符串是否为空,例如 [ $a ]

数组

设置/读取
读取数组所有元素 @,例如 arr[@]
定义,例如 arr=(aa bb cc “hello world”)

分支

if then elif then else fi
case esac

status=1
case $status in 
	0) echo "todo"
	;;
	1) echo "doing"
	;;
	2) echo "done"
	;;
esac

循环

  • for in do done
  • while do done
  • util do done
  • break 跳出循环

函数

function myfunc()
{
	echo "这是shell函数"
}

函数传参和返回值:

function add()
{
	local ret=$(($1+$2))
	return $ret
}

add 5 8

常用命令(有待丰富,重要)

printf
date
cut 截取 下标从1开始, echo guiue|cut -c2-3
根据date获取random

# 产生一个2位的随机数
answer=$(date +%s%N | cut -c16-17)

文本处理三剑客:
grep 查找
sed 编辑
awk 报告

ping 探测本地网络

Linux Curl 命令

curl是一个非常实用的、用来与服务器之间传输数据的工具;curl设计为无用户交互下完成工作。经常需要用到curl命令在线上机器中去测试接口,尤其是一些内外网接口、判断线上接口信息等,需要用到curl命令直接测试页面或接口返回值。

curl命令语法curl [options] [URL...]

常用的curl命令参数及作用:

  • curl url 获取页面内容或接口响应

  • curl -I url 获取请求页面或接口的请求头信息,不含响应内容

  • curl -i url 获取请求页面或接口的请求头信息和响应内容

  • curl -d "params" url 使用-d发送带参数的请求(默认是post方式提交)
    示例:curl -d “cb=cb_1540200657317&cid=afbe8fd3d73448c9&interfaceCode=b5018a28d5f8609f&pid=92b01a8207f5c404” https://act.vip.iqiyi.com/api/process.action

  • -X/--request 指定什么命令

  • curl -X POST --header "Content-Type:application/json" --data ‘{}’ url 使用post模拟json格式请求接口

举例:

curl -X POST --header "Content-Type:application/json"  --data "{{\"backTime\":\"2019-03-28 00:00:00\",\"name\":\"Amy\"}"  127.0.0.1:8088/user/getAllUserInfo  

POST 指定请求方式
–header 指定请求头部信息
–data 指定json请求体数据内容

命令中的常用参数:

  • --data-urlencode DATA HTTP POST data url encoded (H)

其他curl命令:

  • curl -H Head_infos url 自定义Header头信息
    示例:curl -H “User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36” -H “Referer:http://www.iqiyi.com” http://vip.iqiyi.com

  • curl -L url 跟踪链接url重定向,有些页面或接口被重定向,直接使用curl url会返回

  • curl -O url 下载指定资源文件到当前目录中

其他:

  • \ curl命令转义符号

  • curl -h help,获取curl命令及其用法描述

Linux开发

配置c/c++编译环境 sudo apt install build-essential ,查看哪些包被build-essential依赖用命令 apt depends biuld-essential
gcc用法 编译 生成 .out 文件

make & Makefile 编译链接

make是一个命令工具,是一个解释Makefile中指令的命令工具。
make 编译
make install 安装编译好的源码包

Makefile的规则:

<target>:<prereuisites>
[tab]<commands>(任意的shell命令)

Makefile使用Bash语法
模式匹配 通配符%:
“%.o:%.c" 简写为”.c.o"目标
调用变量时需要放在 $()中,例如 echo $(var)
调用shell变量,需要在美元符号前,再加一个美元符号,否则被转义 echo $$HOME

gdb : the GNU Project Debugger
开始调试之前,必须用程序中的调试信息编译要调试的程序。

Linux 网络服务

enp0s3:en代表以太网卡,p0s3代表PCI接口的物理位置为(0,3),其中横坐标代表bus,纵坐标代表slot。
sudo apt install net-tools
ifconfig 可查看enp0s3,有IP地址,mac地址(ether)等

ping命令

  • ping localhost : 侦测网卡安装或配置有问题 127.0.0.1 本机有问题
  • ping 网关: 侦测局域网中的网关或路由器是否正常, ip route show 可查看网关
  • ping dns server : dns解析是否可解析 more /etc/resolv.conf 查看dns配置
  • ping 远程地址 : 与外部的连接是否正常

mtr 网络侦测工具 例如 mtr baidu.com
traceroute 访问对端主机走的所有路径 sudo apt install traceroute 命令 traceroute www.baidu.com

ip命令

ip addr show 查看网卡信息
sudo ip link set enp0s3 up / down 启用/禁用网卡
为网卡分配地址 sudo ip addr add 192.168.0.50/255.255.255.0 dev enp0s3, sudo ip addr del 192.168.0.10/24 dev enp0s3
查看路由 ip route
添加静态路由 sudo ip route add 172.16.32.32 via 192.168.0.150/24 dev enp0s3
删除路由 sudo ip route del 192.168.0.150/24

查看arp记录(mac地址)ip neigh

curl/wget (http客户端,开发测试常用)

curl:
安装 sudo apt install curl
使用 curl www.baidu.com

wget 使用 wget www.baidu.com 直接保存为index.html 查看 vi index.html

netstat 查看网络连接状态及相关信息

即告诉用户哪些网络连接正在运作。
列出所有端口 netstat -a
列出所有 tcp/udp netstat -at | -au
显示进程id和名称 netstat -p (常用)
显示路由信息 netstat -r
显示左右监听连接 netstat -tnl

网络安全

ssh协议远程登录

windows需先安装ssh客户端。
window中的操作:

ssh 用户名@IP地址

linux中的命令

  • sudo apt-get install openssh-server
  • sudo ps -e | grep ssh # 搜索当前进程里是否有ssh,有sshd,说明ssh服务已经启动
  • sudo service ssh start # 启动
  • sudo gedit /etc/ssh/sshd_config # ssh配置文件

ssh server安全配置:

  • 修改默认端口号sudo vim /etc/ssh/sshd_config Port 2222 PubkeyAuthentication yes
  • 启动pub key

客户端配置 Pub key:(实现免密登录)

产生:ssh-keygen -t rsa
上传:ssh-copy-id -i <xxx.pub> user@server
配置:vim ~/.ssh/config
Host start
	HostName <linux-vm-ip>
	User guixue
	PreferredAuthentications publickey
	identityfile ~/.ssh/linux_start
	Port 2222

Linux防火墙

安装 sudo apt install ufw
查看状态和配置 sudo ufw status
开启 sudo ufw enable
关闭 sudo ufw disable

常用配置
允许ssh:ufw allow ssh
预设全部阻挡 ufw default deny
允许来自192.168.1.2上所有连线 ufw allow from 192.168.1.2
允许来自192.168.2.*的所有22端口连线 ufw allow from 192.168.2.1/2 to any port 22

图形化防火墙 sudo apt install gufw
打开图形化防火墙 sudo gufw

安全自检命令 nmap sudo apt install nmap
nmap localhost 查看端口打开情况

网站制作四大件 LNMP:Linux+Nginx+MySQL+PHP

修改source.list为国内的源

sudo apt install nginx php7.2-cli php-fpm mysql-server mysql-client phpmyadmin wordpress

Nginx

Nginx:HTTP服务器,负载均衡
Nginx安装与启动:
安装 sudo apt install nginx
开启 sudo nginx &
重新加载配置 sudo nginx -s reload
停止 sudo nginx -s stop
测试nginx是否成功:打开浏览器,输入 localhost 或者 127.0.0.1

新增新站点:
新增sites配置 /etc/nginx/sites-enabled/test.confcode test.conf
新增站点目录 /var/www/test
新增站点首页 /var/www/test/index.html ; sudo touch index.html ;code index.html 然后输入 !+回车显示基本html代码
测试:localhost:8088

# test.conf具体内容
server{
	listen 8088;
	server_name_;
	root /var/www/test;
	index index.html;
	
	location / {
		try_files $uri $uri/ =404;
	}
	# 测试php,nginx配置中加入	
	location ~ .php${
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}
}

然后需要输入 sudo nginx -s reload,再再浏览器中输入 127.0.0.1:8088

安装tree(树形展示目录结构): sudo apt install tree
code .即打开当前目录(图形化的方式)

PHP

安装 sudo apt install php7.2-cli
验证安装结果 php -v

安装 php-fpm:
PHP-FPM是一个多进程的Fast CGI服务,很高效很稳定
安装 sudo apt install php-fpm
测试 sudo php-fpm7.2 -t
命令:
状态 sudo service php7.2-fpm status
启动/停止 sudo service php7.2-fpm start/stop

设置conf 端口 listen = 127.0.0.1:9000
sudo touch info.php

<?php

phpinfo();

?>

MySQL

MySQL server/client 安装 sudo apt-get install mysql-server mysql-client
测试安装是否成功 sudo netstat -tap | grep mysql

获取临时用户名和密码 sudo cat /etc/mysql/debian.cnf; mysql -uUSERNAME -p
登录,设置密码

update mysql.user set authentication_string=password('123456')where user='root' and Host = 'localhost';

use mysql;
update user set plugin="mysql_native_password";
flush privileges;
// exit 后重新登陆即可

mysql 的管理工具:
CLI:mysql-client
Web:phpMyAdmin(常用)管理数据库
安装程序:Sequel Pro,Navicat

phpMyAdmin 浏览器管理数据库

安装 sudo apt install phpmyadmin
安装的目录 /usr/share/phpmyadmin
sudo vim /etc/hosts 设置 127.0.0.1 phpadmin.io
配置 phpMyAdmin
/etc/nginx/sites-enabled/phpadmin.conf 设置

server{
	listen 80;
	server_name phpadmin.io;
	
	root /usr/share/phpadmin;
	index index.php index.html;
	
	location ~ .php${
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}
}

在php中使用mysql:
MySQLi php使用mysql的驱动

<?php

$servername = "localhost";
$username = "root";
$password = "123456";

//创建连接
$conn = new mysqli($servername,$username,$password);

//检测连接
if ($conn->connect_error){
	die("连接失败:".$conn->connect_error);
}
echo "连接成功";
?>

执行php php db.php

参考文章:
Linux curl命令详解
Ubuntu常用命令大全
孟宁老师github linux start

建议阅读:
《图解TCP/IP》
《图解HTTP》
互联网协议入门
网页制作三剑客,四剑客
nodejs,golang 写web server
html语言
http协议入门
PHP轻松入门教程
wsgi
网页

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值