Linux实用命令
关于Linux中单双引号的区别:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 双引号里可以有变量,双引号里可以出现转义字符
- 反引号param=`date`,命令替换,将命令的标准输出赋值给变量,同$(date)
命令返回值
- 0 :执行成功(即正常执行,并返回预期结果)
- 非0 :执行失败
- $? 代表上一个命令执行后的退出状态,也代表调用函数的返回值
- echo $? 查看返回值
ls |
列出当前目录下所有文件 |
find |
在指定目录下查找文件 |
|||
-l |
详细文件信息 |
-name |
文件名 |
|||
-t |
修改时间排序 |
-iname |
文件名,忽略大小写 |
|||
-r |
逆序排列 |
-type |
d 文件夹、f 文件 |
|||
-h |
可读的文件大小格式 |
常用用法 |
find . -name "abc" |
|||
-a |
显示隐藏文件 |
|||||
常用用法 |
ls -ltr |
|||||
locate |
查找符合条件的文件(查数据库) |
updatedb |
更新locate命令所必需的数据库文件 |
|||
-b |
只查找文件夹 |
-v |
显示执行的详细过程 |
|||
-i |
忽略大小写(默认不忽略) |
常用用法 |
updatedb -v | less |
|||
注意事项 |
如果存在的文件查不到,updatedb |
|||||
常用用法 |
locate abc aab (支持多关键词) |
|||||
chmod |
更改文件权限(读r 写w 执行x) |
chown |
更改文件拥有者 |
|||
777 |
rwx(r4 w2 x1)拥有者、群组、其他 |
-R |
子目录同样生效 |
|||
-R |
子目录同样生效 |
user:group |
使用者:群组 |
|||
常用用法 |
chmod 777 test |
常用用法 |
chown runoob:users file1.txt |
|||
diff |
比较文件差异 |
ln |
创建文件同步链接,默认硬链接(自动同步的文件) |
|||
-y |
并列方式展示 |
-s |
创建软链接(快捷方式) |
|||
-W |
指定宽度(并列方式有效) |
常用用法 |
ln -s a.txt b.txt |
|||
常用用法 |
diff a.txt b.txt -yW 50 |
|||||
less |
浏览文件 |
vi/vim |
编辑文件 |
|||
常用用法 |
less a.txt |
常用用法 |
vim a.txt |
|||
mv |
移动文件 / 文件重命名 |
scp |
远程文件拷贝(双向) |
|||
-f |
覆盖同名文件时不提示 |
-p |
保留原文件的时间和权限等 |
|||
常用用法 |
mv aaa bbb |
-r |
递归复制整个目录,默认是不能复制文件夹的 |
|||
常用用法 |
scp root@192.168.1.10:/root/a.txt /tmp/a.txt |
|||||
rm |
删除文件,默认是不能删除目录 |
cp |
拷贝文件,默认不能拷贝目录 |
|||
-r |
递归删除目录内的文件,删除目录 |
-r |
递归拷贝目录内的文件,拷贝目录 |
|||
-f |
从不询问是否删除 |
-f |
从不询问是否覆盖文件 |
|||
-v |
显示删除详情 |
-p |
保留原文件的时间和权限等(常用) |
|||
常用用法 |
rm -rf test |
常用用法 |
cp aaa.txt bbb.txt |
|||
tee |
把数据打印到屏幕和文件中,类似> |
touch |
刷新文件的时间属性,文件不存在则创建 |
|||
-a |
追加到文件中,类似>> |
常用用法 |
touch aa.txt |
|||
常用用法 |
echo abc | tee aa.log |
|||||
read |
标准输入(控制台输入),默认回车结束 |
grep |
文件内查找字符串 / 筛选 |
|||
-a |
输入数组,空格分割 |
-i |
忽略大小写,默认是不忽略 |
|||
-d |
设置结束符 |
-n |
显示行号 |
|||
-p |
输入前显示内容 |
-r |
递归子目录查找 |
|||
-n |
限制输入长度 |
-w |
全词匹配 |
|||
-s |
输入时不显示,像输密码那样 |
常用用法 |
find . -name "*.java" | xargs grep "main" --color |
|||
常用用法 |
read str |
grep "main" * |
||||
sed |
操作文件,增删改查(脚本常用) |
expr |
将表达式的值打印到控制台 |
|||
-e |
可以指定多个命令 |
计算 |
expr $arg1 + $arg2(中间的空格是必需的,不加空格是字符串) |
|||
-f |
指定命令文件 |
字符串匹配 |
expr match "abcd" ".*bcd",只能从头匹配,返回匹配长度 |
|||
-n |
取消默认控制台输出,与p一起使用可打印指定内容 |
字符串长度 |
expr length "awefwe",返回长度 |
|||
-i |
输出到原文件,静默执行(修改原文件的意思) |
字符串截取 |
expr substr "abscw" 2 3,返回bsc,下标从1开始 |
|||
常用用法 |
sed 's/old/new/gi' test.txt |
字符查找 |
expr index "abcd" "dc",返回3,只能单个字符,哪个字符先出现 |
|||
变量赋值 |
param=`expr $arg1 + $arg2` (``将标准输出赋值给变量) |
|||||
let |
定义整型变量 |
ftp |
连接FTP |
|||
let |
let sum=age+3,不能有空格,变量不用加$,同declare -i |
ftp ip |
连接ftp服务器 |
|||
let |
let "sum = age + 3",同上,有空格需要加引号 |
ls |
查看当前目录下的文件列表 |
|||
不用let |
sum=age+num,默认字符串操作,sum值为"age+num'字符串 |
pwd |
查看当前目录的路径 |
|||
cd |
切换目录 |
|||||
get a.txt |
下载文件到当前目录(执行ftp ip的目录),自动覆盖 |
|||||
put a.txt b.txt |
上传文件,自动覆盖 |
|||||
delete a.txt |
删除文件 |
|||||
less a.txt |
查看文件,同linux的less |
|||||
? |
查看各种ftp命令 |
|||||
df |
显示文件系统的磁盘使用情况 |
du |
显示文件夹所占空间大小 |
|||
-h |
可读的文件大小格式 |
-h |
可读的文件大小格式 |
|||
-a |
显示所有文件系统 |
常用用法 |
du -h 或者 du -h /tmp/zzj |
|||
常用用法 |
df -h |
|||||
mkdir |
创建文件夹 |
pwd |
显示当前目录的绝对路径 |
|||
-p |
父目录自动创建,用于创建多层文件夹 |
常用用法 |
pwd |
|||
常用用法 |
mkir -p /tmp/abc/ddd/test |
|||||
stat |
查看文件属性(创建时间、修改时间、权限修改时间等) |
tree |
以树状图列出目录的内容,包括子目录里的文件 |
|||
常用用法 |
stat test.txt |
-A |
绘图字符显示树状图(推荐) |
|||
-a |
显示隐藏文件 |
|||||
-C |
文件类型着色,便于区分 |
|||||
-f |
显示完整文件路径 |
|||||
常用用法 |
tree -AC test |
|||||
telnet |
查看某个端口是否可以访问 |
ifconfig |
显示或设置网络设备 |
|||
常用用法 |
telnet 192.168.1.2 8080 |
常用用法 |
ifconfig eth0 down 关闭eth0网卡 |
|||
ifconfig eth0 up 启动eth0网卡 |
||||||
ifconfig eth0 192.168.1.12 修改ip |
||||||
netstat |
显示网络状态 |
lsof |
列出当前系统打开的文件 |
|||
-a |
显示所有 |
-i |
指定端口筛选程序 |
|||
-n |
域名转换为IP |
常用用法 |
lsof -i:8080 查看8080端口程序 |
|||
-p |
显示进程PID / 进程名 |
linux环境下的任何事物都以文件的形式存在,例如:进程、网络连接等等都可以列出来 |
||||
常用用法 |
netstat -anp | grep ":8080" 查看8080端口程序 |
lsof | grep vim | grep .swp 能查看当前正在编辑的文件和vim进程 |
||||
端口不是独立存在的,它是依附于进程的。某个进程开启,那么它对应的端口就开启了,进程关闭,则该端口也就关闭了。而不要纯粹的理解为关闭掉某个端口,不过可以禁用某个端口 |
||||||
wall |
广播消息给所有在线用户(who命令可查看) |
which |
查看命令的绝对路径 |
|||
常用用法 |
wall hello |
常用用法 |
which ls |
|||
man |
查看命令的说明手册 |
ping |
检测主机的连通性 |
|||
常用用法 |
man ls |
常用用法 |
ping 192.168.1.1 |
|||
who |
查看当前活跃连接 |
write |
发送消息给指定在线用户(who命令可查看) |
|||
常用用法 |
who /var/log/wtmp 查看历史连接 |
常用用法 |
write root pts/1 |
|||
useradd |
创建用户 |
userdel |
删除用户 |
|||
-m |
创建用户主目录,默认在home目录下创建 |
-r |
删除用户主目录 |
|||
-M |
不创建用户主目录 |
常用用法 |
userdel -r testuser |
|||
-d path |
指定目录为用户主目录 |
|||||
-g |
创建时指定用户群组 |
|||||
常用用法 |
useradd testuser |
|||||
date |
显示当前时间 |
finger |
查看用户信息 |
|||
-d str |
显示指定字符串所描述的时间,而非当前时间 |
常用用法 |
finger root |
|||
-s str |
将系统时间设为字符串中指定的时间 |
less /etc/passwd 能查看所有用户 |
||||
-r file |
显示指定文件的最后修改时间 |
less /etc/group 查看所有用户群组 |
||||
常用用法 |
date |
|||||
sleep |
等待指定时间(s秒 m分钟 h小时 d天,不加单位默认秒) |
|||||
常用用法 |
sleep 5s |
|||||
groupadd |
创建用户群组 |
groupdel |
删除用户群组(只能删除空群组) |
|||
常用用法 |
groupadd testgroup |
常用用法 |
groupdel testgroup |
|||
groupmod |
修改用户群组 |
usermod |
修改用户 |
|||
-A user |
groupmod -A user testgroup 将用户加入群组 |
-g group |
usermod -g testgroup testuser 将用户加入群组 |
|||
-R user |
groupmod -D user testgroup 将用户移除群组 |
-d path |
修改用户主目录 |
|||
-g gid |
groupmod -g 1234 testgroup 修改群组的gid |
-u uid |
usermod -u 123 testuser 修改用户的uid |
|||
id |
查看用户的uid(用户唯一标识)、gid、所属群组 |
kill |
关闭进程 |
|||
常用用法 |
id testuser |
-KILL |
强制杀死进程 |
|||
-9 |
彻底杀死进程 |
|||||
常用用法 |
kill -9 PID |
|||||
last |
查看当前活跃连接和历史连接(类似who) |
logname |
显示当前登录的用户名 |
|||
常用用法 |
last |
常用用法 |
logname |
|||
ps |
显示瞬间进程的状态 |
top |
显示实时进程的状态 |
|||
-e |
显示所有进程 |
-d 3 |
刷新周期,默认3秒 |
|||
-f |
显示全格式列表 |
常用用法 |
top |
|||
常用用法 |
ps -ef 显示所有瞬间进程信息 |
|||||
shutdown |
关机 |
sudo |
使用root用户执行命令(需要配置/etc/sudoers设置权限) |
|||
-r |
立刻重启(推荐) |
常用用法 |
sudo test.sh 使用root执行脚本(需要输入当前用户密码) |
|||
-h |
立刻关机 |
与su区别 |
su root test.sh 也是使用root执行脚本(需要输入root密码) |
|||
-k |
提示关机,但不会关机 |
|||||
常用用法 |
shutdown -r now |
|||||
su |
切换用户 |
w |
查看自己当前的连接 |
|||
su root ./test.sh 使用指定用户执行脚本 |
常用用法 |
w |
||||
su -c ./test.sh root 使用指定用户执行命令或脚本 |
||||||
常用用法 |
su - oracle |
|||||
clear |
清屏 |
alias |
设置命令的别名(/etc/profile配置永久生效) |
|||
常用用法 |
clear |
unalias lt 取消别名 |
||||
alias 列出所有设置的别名 |
||||||
常用用法 |
alias lt='ls -ltr' |
|||||
source |
在当前shell中执行文件中的命令 |
crontab |
定时任务(后台执行) |
|||
source test.sh 在当前shell中执行脚本 |
-l |
列出当前用户定时任务 |
||||
sh test.sh 创建子shell执行脚本,普通变量不会被带到父shell |
-r |
删除当前用户所有定时任务 |
||||
常用用法 |
source /etc/profile 使修改立即生效 |
-e |
编辑定时任务* * * * * date (分.时.日.月.星期)每分钟执行一次date命令 |
|||
常用用法 |
crontab -l |
|||||
declare |
定义变量 |
set |
显示所有变量和方法,同declare |
|||
declare |
显示所有变量和方法,同set |
常用用法 |
set |
|||
-f |
显示函数 |
|||||
-r |
声明只读变量,只允许声明时赋值 |
|||||
-x |
声明环境变量,同export |
|||||
-i |
声明整数型变量,同let |
|||||
-a |
声明数组 arr=("ab" "cc" [5]="ww") |
|||||
常用用法 |
declare test=abc |
|||||
type |
查看命令的类型 |
eval |
执行字符串命令 |
|||
alias 别名 |
常用用法 |
eval "test args1 args2" 例如调用函数,test为函数 |
||||
keyword 关键字 |
||||||
shell 保留字 |
||||||
function 函数 |
||||||
builtin 内建命令 |
||||||
常用用法 |
type if |
|||||
export |
定义环境变量 |
rpm |
RPM软件包管理工具 |
|||
常用用法 |
export testparam=value |
-i |
显示套件的相关信息 |
|||
export 显示环境变量,同env |
-v |
显示指令执行过程 |
||||
-h |
显示安装进度 |
|||||
--force |
忽略报错,强制安装 |
|||||
常用用法 |
rpm -ivh packageName 安装软件包 |
|||||
passwd |
设置用户密码 |
time |
测量指令执行消耗的时间 |
|||
常用用法 |
passwd testuser |
常用用法 |
time cd /tmp |
|||
env |
显示环境变量,同export |
unset |
删除环境变量 |
|||
常用用法 |
env |
常用用法 |
unset test |
|||
chkconfig |
显示系统服务 |
service |
管理系统服务 |
|||
chkconfig iptables on/off 开关防火墙,重启生效 |
常用用法 |
service iptables stop/start/statu 开关防火墙,立即生效 |
||||
常用用法 |
chkconfig |
|||||
gzip |
压缩gz文件(不能压缩目录,不保留原文件) |
gunzip |
解压gz文件 |
|||
-c |
将压缩后文件输出到控制台,保留原文件 |
-c |
不解压情况下cat压缩包中的文件,同zcat |
|||
gzip test.txt 变成test.txt.gz文件,不保留原文件 |
gunzip test.txt.gz 变成test.txt文件,不保留压缩文件 |
|||||
常用用法 |
gzip -c test.txt > test.txt.gz |
常用用法 |
gunzip -c test.txt.gz > test.txt |
|||
zip |
压缩zip文件(jar包也适用) |
unzip |
解压zip文件(jar包也适用) |
|||
-r |
压缩文件夹 zip -r test.zip /tmp/zzj |
常用用法 |
unzip test.zip |
|||
常用用法 |
zip test.zip ab.java 如果zip包存在,则更新zip包 |
unzip test.jar META-INF/maven/* 解压指定文件或文件夹 |
||||
unzip -p test.jar META-INF/MANIFEST.MF 不解压cat压缩包里面的文件 |
||||||
zipinfo |
查看zip文件内容(vim也可以查看) |
tar |
压缩解压tar文件(可保留软链接文件) |
|||
常用用法 |
zipinfo test.zip |
-c |
压缩 |
|||
-x |
解压 |
|||||
-t |
查看tar文件内容(vim也可以查看) |
|||||
-z |
使用gzip或gunzip处理 |
|||||
-v |
显示执行过程 |
|||||
-f |
指定压缩或解压文件 |
|||||
常用用法 |
tar -cvzf test.tar.gz /tmp/zzj |
|||||
tar -xvzf test.tar.gz |
||||||
bc |
用于数学运算, |
tail |
查看文件结尾 |
|||
直接执行bc,就是一个计算器,输入数学表达式运算 |
-f |
不断刷新 |
||||
常用用法 |
echo 'scale=2; (2.777 - 1.4744) / 1' | bc 保留两位小数,输出1.30 |
-n |
指定显示行数 |
|||
echo '5 != 3' | bc 数字比较,输出1 |
常用用法 |
tail -f test.log |
||||
xargs |
从标准输入构建和执行命令行 |
yum |
自动下载rpm并安装 |
|||
一般和管道一起使用,"|"符号表示管道 |
常用用法 |
yum install packageName |
||||
管道:将上一条命令的标准输出,传递给下一条命令 |
yum remove packageName |
|||||
例如:find . -name "*.java" | grep "main",从文件名中grep |
||||||
例如:echo "test.txt" | less,显示字符串 |
||||||
管道加上xargs:将上一条命令的结果转换成标准输入,传递给下一条命令 |
||||||
例如:find . -name "*.java" | xargs grep "main",从文件内容中grep |
||||||
例如:echo "test.txt" | xargs less,显示文件内容 |
||||||
wc |
统计行数/字数/字节数 |
jar |
javaJDK带的命令,效果同zip命令,参数用法同tar命令;打jar包zip包都可 |
|||
常用用法 |
wc test.txt |
常用用法 |
jar -cvfM test.zip /tmp/zzj,-M表示不生成META-INF/MANIFEST.MF |
|||
ls -l | wc |
jar -xvf test.zip 解压到当前目录 |
|||||
Ctrl+z |
将正在执行的命令放到后台,并且暂停。同时得到一个后台命令的编号 |
jobs |
状态 |
查看后台命令列表,只能看同一个shell窗口的 |
||
Terminated | 停止,使用kill杀掉进程对应的状态 | |||||
Running | 正在运行 | |||||
Stopped | 暂停,Ctrl+z对应的状态 | |||||
Done | 完成,使用jobs命令查看一次后记录消息 | |||||
fg |
将后台命令调至前台执行,如果是Stopped状态则变成Running状态 |
bg | 将后台Stopped的命令置成Running状态 | |||
常用用法 |
fg 15,数字对应后台命令编号 |
常用用法 | bg 15,数字对应后台命令编号。可结合Ctrl+z使用,放到后台暂停再bg。 | |||
后台命令调至前台后,只能通过Ctrl+z再次放到后台,再bg继续执行 |
(普通命令后加 & 可直接后台执行,如:sh execute.sh &,同时得到后台命令编号和进程PID。后台命令可fg调到前台停止,也可以kill杀掉进程) |
|||||
wait | 进入阻塞状态,等待同一个shell窗口的所有后台命令执行完毕 | |||||
PID | 等待同一个shell窗口的指定后台命令执行完毕,不能跨shell窗口 | |||||