当前位置 博文首页 > A minor:【项目杂记】Linux 最常用命令大全(Ubuntu)
首先放上一张包含了Linux核心命令的脑图:
下面的文章再对重点命令和上图没列出的命令进行单独讲解。
下面是 Linux 主要的文件目录:
/root:系统管理员的主文件夹
/home:用户主目录(自行创建的用户的用户目录就在该文件夹下)
/usr/local:用户自行安装的软件
/opt:放置第三方的软件
/etc:配置文件
/dev:任何设备与接口都以文件形式存放在此目录
/bin:单用户维护模式下还能够被操作的命令
/boot:开机所需文件——内核,开机菜单及所需配置文件等
/tmp:任何人均可使用的“共享”临时目录
/var:主要存放经常变化的文件,如日志
1.读(cat/more/less/head/tail)
pwd // 当前位置
ls // 当前目录下所有文件(夹)
ls -l // 以列的形式显示
ls -a // 当前目录下所有文件夹,包含.(点)开头的隐藏文件
ls -F // 以"/"形式显示文件夹,比如 usr/ etc/
ls -R // 递归展示子目录,相当于可以显示当前路径内的所有子文件
ls -r // 倒序展示,,默认的顺序是(a,b,c,d)正序的
cat [选项].. [文件] // 读一个文件
cat -n // 查看并显示行号
cat >b<<EOF // 以覆盖的形式向文件(b)写入,写入EOF时结束(注:1.如果文件不存在会创建,2.该命令可用来清空文件)
cat a > b // 用文件a的内容覆盖文件b的内容
cat a >> b // 将文件a的内容追加到文件b后面
more a.txt // 分页读,一次性加载完
less a.txt // 分页度,逐页加载,适合读大文件
cat a.txt | more // 只读,-n行号,more分页
head (-n 5) a.txt // 首读,默认10
tail(-n 5) (-f) a.log // 尾读,默认 10,-f 实时更新
PS:这张图片出自这篇博客。
2.写(vim/echo/>/>>)
vim:
yy / 5yy: // 复制5行
p: // 粘贴
dd: // 删除
G/gg: // 首/尾
a: // 撤销
/~~: // 查找~(n下一个,N上一个)
set nu: // 行号
echo // 打印到控制台
> // 重定向:覆盖,可配合所有读操作(ls /a > a.txt)
>> // 重定向:追加
3.执行
sh a.sh // 前台执行,也可以(./)
nohup command>out.file 2>&1 & // 后台执行
// nohup: no hang up 不挂起
// 2>&1: 标准错误与标准输出合并,合并到out.file
// &: 后台运行
ps -ef|grep 关键字|awk '{print %2}'|xargs kill -9 // 查找,进程号,并关闭
1.增(mkdir/touch)
mkdir a // 创建目录a
mkdir -p a/b // 创建级联目录a/b,-p多级目录
touch a.txt // 创建空文件
2.删(rm)
rm a.txt // 删除a.txt
rm -r a/ // 删除目录a
rm -f a.txt // -f强制删除
3.改(mv/cp/解压)
mv a.txt /root // 移动到指定目录
mv a.txt b.txt // 同一目录下的移动表示重命名
mv a/ /root/b // 移动a目录到b目录(注:如果b目录不存在,则会在移动时创建,最终的结果是a目录所有内容进入b目录)
cp a.txt /root // 拷贝文件到指定目录
cp -r a/ /root // 拷贝 a 文件夹到 /root 目录
tar -zcvf a.tar.gz a.txt b.txt // 打包成tar.gz,将当前目录下的a.txt,b.txt打包成a.tar.gz
tar -zxvf a.tar.gz // 解压tar.gz
zip a.txt // 打包成a.zip
zip -r a.zip /a // 将a目录打包成a.zip
unzip (-d /a) a.zip // 解压zip,-d指定解压目录
gzip a.txt // 打包成a.gzip
gunzip a.gzip // 解压a.gzip
4.查(find/locate/grep/history)
find /a -name a.txt // 在/a目录下按名查找(注:还可以采用通配符,比如*.conf、redis*)
find . -user a // 在当前目录下按user查找
find /a -size +20M // 在/a目录下按文件大小查找
updatedb // 创建locate库
locate a.txt // 寻找指定文件,快
grep // 管道连接符
histroy (5) // 查看历史指令,5只显示近5个
!178 // 执行178号历史了命令
apt-get 相当于Ubuntu的软件管家,而CentOS的软件管家是yum
apt-get update // 更新源
apt-get install (--reinstall) a // 安装,--reinstall重新安装
apt-get remove (--purage) a // 卸载,--purage包括配置文件
apt-get pgrade a // 更新已安装
apt-get source a // 下载源码包
apt-cache search a // 搜索安装包
apt-cache show a // 获取包相关信息
// 配置环境变量,
export JAVA_HOME=/root/jdk-XXX_linux-x64
export PATH=$JAVA_HOME/bin:$PATH // 命令行使用export只在当前会话有效,退出命令行后就失效
source .bashrc // 可以通过编辑.bashrc实现永久配置
另外,关于系统环境变量的配置,比如 jdk,maven,git,可以通过以下方式(以配置jdk为例)
1.首先打开编辑环境变量的文件(注:在用第一次配置时该文件为空)
vim ~/.bash_profile
2.然后输入要配置的环境
export JAVA_HOME=$/usr/local/java/jdk1.8.0_211
export PATH=$PATH:$JAVA_HOME/bin
注:1)export 命令的意思是导入
2)mac 的 jdk 默认地址是 Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
3)建议不要直接配置 PATH 而是先配置 JAVA_HOME,因为在开发时可能会用到 JAVA_HOME
3.使配置的环境变量生效
source ~/.bash_profile
4.检查jdk环境是否配置成功
java -version
5.另外,上述配置只是当前会话有效,所以,为了它在整个系统设生效,我们还需(注:这里只用配置一次)
vim ~/.zshrc
在最后加上一句
source ~/.bash_profile
然后使该配置生效
source ~/.zshrc
systemctl status ~ // 查看指定程序状态
systemctl enable/disable ~ // 自启
systemctl start/restart/stop ~ // 开始/停止/重启
ufw stauts // 防火墙状态
ufw enable/disable // 防火墙开关
ufw allow 22 (from ip) // 开放端口,from指定ip
ufw deny smtp // 禁止的服务
两点注意:
- Centos 等系统的防火墙是 iptables
- 如果没有 systemctl 命令,可以用 service 命令,但格式变为 service iptables stop/status。
ps
-a:显示当前终端所有进程信息
-u:以用户格式显示
-x:显示后台运行参数
-e:所有进程
-f:全格式
-T:显示现行终端机下的所有进程
pstree // 进程树
kill (-9) a // 杀死指定进程,一般要指定杀死级别(默认15)
killall // 全部杀死
netstat -tlpn // 查看网络状态
-t:显示TCP传输协议的连线状态
-l:显示监控中的服务器的Socket
-p:显示正在使用Socket的程序识别码和程序名称
-n:显示网络硬件外围设备的符号连接名称
top // 查看cpu状态
// 定时任务相关
crontab [-u username] [-l|-e|-r]
-u :只有 root 才能进行这个任务,亦即帮其他使用者创建/移除 crontab 工作排程;
-e :编辑 crontab 的工作内容
-l :查阅 crontab 的工作内容
-r :移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑
shutdown (-h now/1) // 关机,-h定时关闭(现在/1min)
halt // 立即关机
reboot // 重启
sync // 数据同步
设置运行级别
磁盘操作
useradd a // 创建用户
-m:创建用户目录(注:如果不-m,则不会创建在/home下创建用户目录)
-d /home/abc : 自行指定用户主目录(注:如果此目录不存在,就需要加上-m参数,表示创建该目录(abc),并指定它为(a)用户目录)
-g abc :加入指定用户组(注:用户创建后默认自为一组,比如此时用户a的组为a)
passwd a // 设置密码(注:之后会弹出提示--输入新的 UNIX 密码)
userdel (-r) a // 删除用户,-r删掉用户目录
id 用户名 // 查看指定用户,包括uid和gid(组)
usermod -g 用户组 用户名 // 更改用户组
usermod -d 目录 用户名 // 更改用户登录目录(注:默认是自己的用户目录(/home/~),root 用户是 /root)
su -xf a // 用户切换,exit退出,高(root)->低(普通用户)不用密码
sudo // 以root身份执行
注:Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
groupadd 用户组 // 创建用户组
groupdel 用户组 // 删除用户组
chown (-r) 用户名 文件名 // 更改文件所有者
chgrp (-r) 组名 文件名 // 更改文件所属用户组
chmod u=rwx,g=rx,o=r 文件名 // 更改文件权限 u=所有者,g=同组,o=other
chmod 7 5 1 文件名 // r=4,w=2,x=1
常用命令基本就这些,文末再放个参考链接 …
cs