1. 最普通的命令
最普通、简单的命令,平时肯定用过很多,但是有些非常有用,但平时不多用的,本次列出来,如下:
命令 | 示例 | 作用 | 示例 |
---|---|---|---|
ls | ls ls -a ls -A ls -r ls -t ls -l ls -h |
查看文件夹内目录、文件等 包括隐藏文件 除 . 以及 .. 外的所有文件 反序排列 按时间倒序排练 查看包括权限、所有者、大小等详情 文件大小显示成B、K、M、G等易读文件 注意,命令可简写使用,如:ls -l -a,或者 ls -la |
|
cd | cd /dir | 进入某个目录 | |
mkdir | mkdir test test2 mkdir -p test1/test2/test3 |
创建一个或多个文件夹 创建多个文件夹 |
|
cp | cp test.log ./test/test.log cp -i test.log ./test/test.log cp -r ./test ./test2 |
复制文件 -i,如果有同名,则提示是否覆盖 复制文件夹 |
|
mv | mv test.log test2.log mv test.log test2.log ./test |
重命名 一个或多个文件移动到文件夹内 |
|
rm | rm *.log rm -r -f -i ./test |
删除文件 删除目录,-f表示强制删除,-i表示是否询问 |
|
vim | vim test.log | 编辑一个文件,具体进入vim之后命令,有很多 | |
pwd | pwd | 查看当前路径 | |
date | date | 查看当前时间 |
scp
linux系统下基于ssh登陆进行安全的远程文件拷贝命令:secure cp
本地复制到远程
scp /home/xxx/test.txt [email protected]:/home/root/test2.txt:本地单文件复制到远程,带远程用户名,回车后需要输入密码指定文件名字
scp /home/xxx/test.txt 172.18.140.109:/home/root/test.txt:本地单文件复制到远程,不带用户名,回车后需要输入用户名、密码,指定文件名字
scp -r /home/xxx/test/ [email protected]:/home/root/:-r 参数,本地文件夹复制到远程
远程复制到本地
scp [email protected]:/home/root/test.txt /home/xxx/:远程单文件复制到本地
scp -r [email protected]:/home/root/ /home/xxx/test/:-r参数,远程文件复制到本地
cal
终端上显示日历
cal:显示当前月份
cal 2019:只有一个参数,则为年,显示某年12个月的日历,与cal -y 2019 一样
cal 2 2019:两个参数,为月、年,显示某年某月的日历
cal -3:3为固定数,显示前一月、当月、后一月日历
cal -j:显示为当年的第几天
cal -y:显示某年的日历
zip
压缩文件为zip包
- -r:压缩文件,-r表示递归处理子文件(夹)
zip -r test.zip ./test
- -q :表示不显示执行过程信息
zip -r -q test.zip ./test
unzip
解压zip文件
- unzip:解压文件
unzip test.zip
- unzip -q:表示不显示执行过程信息
unzip -q test.zip
- unzip -l:不解压,只查看压缩文件包括哪些文件
不解压,只查看压缩文件包括哪些文件
which、whereis
查看命令位置
- which ls
查看可执行文件的位置,其实是查看的PATH中指定路径中搜索某个命令位置
- whereis ls
用于程序名的搜索
history
查看命令历史记录
history:列出所有执行操作记录
history -c:清除命令执行操作历史记录
history 10:列出最近的10条记录,等同:history | tail -10
netstat|lsof
查看端口号
netstat
-a:all,显示所有连接端口
-n:不进行dns解析
-p:显示进程标识符、程序名称
-l:只显示listen状态套接字
netstat -anp:列出所有端口,一般配合grep使用,如:netstat -anp | grep 8080
lsof:list open files
-
-i:列出所有网络连接
- lsof -i :8080
-i tcp:所有tcp网络连接信息
lsof -i tcp:8080
-i udp:所有udp网络连接信息
kill
操作进程
kill
-l:列出所有信号名称,顺序从1~n
kill -9 pid:强行终止进程
kill -KILL pid:同上
chmod
设置文件(夹)读写等权限
权限代号:
r:读,数字4表示
w:写,数字2
x:可执行,数字1
权限范围:
u:当前用户,所有者
g:当前群组
o:其他用户或群组
a:所有用户
命令:
chmod a+r test.txt:增加权限,针对文件,所有用户、可读
chmod o+x -R /test/:增加权限,针对目录,其他用户或群组、可执行权限
chmod 755 test.txt:设置权限,当前用户读+写+可执行,当前群组读+可执行,其他人读+可执行,7代表4+2+1,5代表4+1
chown
改变文件(夹)用户权限
chown guanliyuan:staff test.txt:改变文件权限为某用户,guanliyuan:staff 为 用户:群组
chown -R xxx /test/:改变文件夹权限为某用户
cat
查看或创建文件
cat test.txt:终端显示整个文件内容
cat test1.txt test2.txt:显示多个文件内容
cat -n test.txt:终端显示整个文件内容,带行号
cat > newtest.txt:创建一个新文件
cat test1.txt test2.txt > newtest.txt:多个文件合并为一个新文件
more
查看文件,类似cat,more会一页一页的显示,会加载整个文件,more查看后操作:
空格键:下一页
b键:上一页
=:显示当前行号、进度等
q:退出more
more text.txt:查看文件,下翻一次一屏
more +10 test.txt:从第十行开始查看文件
more -10 text.txt:查看文件,下翻一次10行
less
查看文件,与more类似,可以查看很大的文件,功能强大,加载部分文件,less查看文件后操作,与vim操作类似:
/字符串:向下搜索字符串
?字符串:向上搜索字符串
n:重复前一个搜索
N:反方向重复前一个搜索
u:向上滚动半屏
d:向下滚动半屏
q:退出less
less test.txt:查看某文件
-i:搜索时,忽略大小写
-N:显示每行的行号
-m:显示百分比
number:跳转到下面number行处
head
查看文件头内容,默认显示10行
head test.txt
-n:显示开头多少行,如:head -n 50 test.txt
tail
查看文件末尾内容,默认显示10行,一般用于查看log
tail test.txt
-f:循环读取,多用于查看一直递增的日志文件
-n:显示末尾多少行,如:tail -n 50 test.txt
-f应用:
ping 127.0.0.1 > ping.log &:ping一个地址,然后把输出放到一个ping.log文件中,&表示后台运行
tail -f ping.log:会看到递增的ping输出文件的内容
tail -n 5 test.txt:查看最后5行
tail -n +5 test.txt:从正数第5行开始查看,一直到结尾
tail -n +10 test.txt | head -n 3:输出test.txt文件的第10~13这三行
head -n 13 test.txt | tail -n 3:同上,输出test.txt文件的第10~13这三行
du
查看文件(夹)大小,默认显示当前目录所有文件以及文件夹内所有文件的大小
-k:以KB为单位显示
-m:以MB为单位显示
-g:以GB为单位显示
-h:文件大小显示成B、K、M、G等易读文件
-s:仅显示当前文件夹总和
如:du -h,或者 du -h /test/
如果只想查看当前文件夹下所有文件大小,不递归查看文件夹内的文件,可以如下:
du -h --max-depth=1(mac:du -h -d 1)
ln
对文件(夹)建立一个同步链接(软链接、硬链接),可以减少磁盘空间,软链接类似与windows的快捷方式,硬链接相当于一个副本,但是他们都与宿主源文件是同步的,即修改任意一个,其他的都会同步生效
ln test.txt test_hard.txt:建立一个硬链接
ln -s test.txt test_soft.txt:建立一个软链接
crontab
linux 定时服务,分两类:
系统任务调度:系统周期性执行的工作,如写缓存数据到硬盘、清理日志,存储在 /etc/crontab 中
用户任务调度:用户自定义的,定期执行的工作,存储在 /var/spool/cron/xxx 中
常用方法:
crontab -u:设定某个用户的crontab服务
crontab -e:编辑某个用户的crontab,不指定则为当前用户
crontab -l:查看某个用户的crontab,不指定则为当前用户
crontab -r:删除某个用户的crontab,不指定则为当前用户
内容,举例:
00 17 * * * /Users/xxx/xxx.sh >> /Users/xxx/xxx.log
分析:
前面的 00 17 * * * 表示执行时间,一共5位:分、时、日、月、周,上面表示每天下午5点执行
中间的 /Users/xxx/xxx.sh 为定时执行的命令
后面的 >> /Users/xxx/xxx.log 指打印执行的日志到 xxx.log 中,可以没有
举例:
5,15 * 10 * * /xxx/node app.js:每月10号的,每小时的第5、15分钟,执行命令
00 14-16 */2 * * command:每隔2天的,14、15、16点执行command命令
wc
非厕所WC。。。word count,统计文件中行数、字数、字节数等
wc -l test.txt:统计文件中行数
wc -m test.txt:统计文件中字符数
wc -c test.txt:统计文件中字节数
ls | wc -l:查看当前文件夹中有多少个文件(夹)
管道符 |
- 管道符:|
管道符在linux命令中大量使用,作用是:前一个的输出,可用当做下一个的输入,如:
echo 'foo' | cat,输出:foo
管道符前面是输出 ’foo',管道符后面 cat 接受输入,输入是之前的输出 'foo',所以运行结果是 foo。
举例:当前文件夹内有很多文件,想找出以'node_'开头的文件夹有哪些:
ls -l | grep node_
ls -l 会输出当前所有文件夹,grep接收之前的输入,然后过滤出 'node_'。
- xargs:通过管道接收字符串,接收到的字符串默认以空白分割成多个参数,传递给后面的命令,作为后面命令的参数。
echo 'foo' | xargs cat,输出:cat: foo: No such file or directory
此时,通过xargs,cat接收到的参数是 foo,把 foo理解成一个文件,所以报错找不到foo这个文件,其实就是执行:cat foo。
echo 'test.txt' | xargs cat,相当于:cat test.txt
xargs参数:
-
-d:以什么来分割,默认是空白分割
- echo '1@2@3@4' | xargs -d '@' echo:输出:1 2 3 4
-p:此时,不会马上执行命令,会询问是否执行,y执行,n不执行
echo 'test.txt' | xargs -p cat
-n:每次传递几个参数给后面的命令
echo 'test.txt' | xargs -n 3 echo:如果test.txt有10行,则会先打印3行,然后再打印之后的3行,直到最后全部打印完
find
在指定目录查找文件
find path -option
-name:指定文件名字进行查找
-path:指定查找的path路径
-size:查找指定大小的文件
-cmin -n:查找过去 n 分钟内被修改过的文件
-ctime -n:查找过去 n 天内被修改过的文件
举例:
find . -name '*.js':查找当前目录下的js文件
find . -ctime -3:查找过去3天内被修改过的文件
find ./test -size 0:查找大小为0的文件
find ./test -name '*.js' | xargs grep 'window':查找 ./test目录中包含"window"字符串的文件。
ps
process status,查看当前进程运行状态
-a:显示终端下所有进程
-e:显示环境变量
-f:显示进程之间关系
-aux:显示所有包含其它使用的进程
-ef:显示所有进程环境变量及进程间关系
ps -aux | grep 'node' / ps -ef | grep 'node':查看node进程
grep
grep:侧重单纯文本匹配、搜索
awk:侧重对匹配到的文本进行格式化
sed:侧重匹配到的文本进行编辑
强大的文本搜索功能,支持正则表达式搜索
-A
:显示匹配字符串的后n行 grep -A3 'test' test.txt
-B
:显示匹配字符串的前n行 grep -B2 'test' test.txt
-C
:显示匹配字符串的前、后n行 grep -C2 '^te' test.txt
-c:计算符合匹配字符串的列数
grep -c 'test' test.txt
-R:递归查找
grep -R 'test' ./:当前目录下递归查找文件中包含'test‘字符串的文件
grep -cR 'test' /test/
-i:匹配字符串时,忽略大小写
grep -iR 'test' ./
-l:只列出符合字符串的文件名称
grep -lR 'test' ./
-n:显示匹配字符串所在文件中的行数
grep -nR 'test' ./
-s:不显示错误信息
grep -sR 'test' ./
awk*
对文本进行逐行处理的一种语言或者工具,主要用以格式化文本
命令:awk [options] 'pattern{action}' file
awk -F : '{print}' test.txt:以冒号为分隔符
awk '{print 2}' test.txt:打印第一列、第二列,每列之间默认用空白分割
awk '/^abc/{print}' test.txt:正则匹配’abc'开头的行,打印匹配的行
内置变量:
FS:输入域分隔符,默认是空白
NF:当前行($0)拥有字段总数
NR:目前处理的第几行
OFS:输出域分隔符
使用:
awk -v FS=":" '{print}' test.txt:以冒号为分隔符,类似 -F
awk '{print NF $0}' test.txt:每行打印出字段总数,以及整行数据
awk '{print NR $0}' test.txt:每行打印出当前行数,以及整行数据
awk -v OFS="#" '{print }' test.txt:打印出的输出,不再以空格分割,而是以#号分割
举例:
文件内容如下:
[2018-08-23 16:29:56] [src/log_metrics.cpp:34] WARN - can't find metrics type: conn_selectors
[2018-08-23 16:29:56] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
[2018-08-23 16:29:56] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
[2018-10-17 15:29:31] [src/log_metrics.cpp:34] WARN - can't find metrics type: conn_selectors
[2018-10-17 15:29:31] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
[2018-10-17 15:29:31] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
[2018-10-17 15:29:32] [src/log_metrics.cpp:34] WARN - can't find metrics type: conn_selectors
[2018-10-17 15:29:32] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
[2018-10-17 15:29:32] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
[2018-11-27 10:15:05] [src/log_metrics.cpp:34] WARN - can't find metrics type: conn_selectors
[2018-11-27 10:15:06] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
[2018-11-27 10:15:06] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
[2019-04-09 15:34:19] [src/log_metrics.cpp:34] WARN - can't find metrics type: conn_selectors
[2019-04-09 15:34:19] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
[2019-04-09 15:34:19] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
只想列出来 10:15分的日志内容:awk '/10:15/{print}' warn.log
➜ awk awk '/10:15/{print}' warn.log
[2018-11-27 10:15:05] [src/log_metrics.cpp:34] WARN - can't find metrics type: conn_selectors
[2018-11-27 10:15:06] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
[2018-11-27 10:15:06] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
只想列出前面时间,以及后面的报错原因:awk '{print 2,7,9,$10}' warn.log
➜ awk awk '{print $1,$2,$6,$7,$8,$9,$10}' warn.log
[2018-08-23 16:29:56] can't find metrics type: conn_selectors
[2018-08-23 16:29:56] can't find metrics type: thrift_flume_conns
[2018-08-23 16:29:56] can't find metrics type: thrift_flume_conns
[2018-10-17 15:29:31] can't find metrics type: conn_selectors
[2018-10-17 15:29:31] can't find metrics type: thrift_flume_conns
[2018-10-17 15:29:31] can't find metrics type: thrift_flume_conns
[2018-10-17 15:29:32] can't find metrics type: conn_selectors
[2018-10-17 15:29:32] can't find metrics type: thrift_flume_conns
[2018-10-17 15:29:32] can't find metrics type: thrift_flume_conns
[2018-11-27 10:15:05] can't find metrics type: conn_selectors
[2018-11-27 10:15:06] can't find metrics type: thrift_flume_conns
[2018-11-27 10:15:06] can't find metrics type: thrift_flume_conns
[2019-04-09 15:34:19] can't find metrics type: conn_selectors
[2019-04-09 15:34:19] can't find metrics type: thrift_flume_conns
[2019-04-09 15:34:19] can't find metrics type: thrift_flume_conns
输如想以WARN来分割,以tab来当分割:awk -v FS='WARN' -v OFS='\t' '{print 2}' warn.log
➜ awk awk -v FS='WARN' -v OFS='\t' '{print $1, $2}' warn.log
[2018-08-23 16:29:56] [src/log_metrics.cpp:34] - can't find metrics type: conn_selectors
[2018-08-23 16:29:56] [src/log_metrics.cpp:34] - can't find metrics type: thrift_flume_conns
[2018-08-23 16:29:56] [src/log_metrics.cpp:34] - can't find metrics type: thrift_flume_conns
[2018-10-17 15:29:31] [src/log_metrics.cpp:34] - can't find metrics type: conn_selectors
[2018-10-17 15:29:31] [src/log_metrics.cpp:34] - can't find metrics type: thrift_flume_conns
[2018-10-17 15:29:31] [src/log_metrics.cpp:34] - can't find metrics type: thrift_flume_conns
[2018-10-17 15:29:32] [src/log_metrics.cpp:34] - can't find metrics type: conn_selectors
[2018-10-17 15:29:32] [src/log_metrics.cpp:34] - can't find metrics type: thrift_flume_conns
[2018-10-17 15:29:32] [src/log_metrics.cpp:34] - can't find metrics type: thrift_flume_conns
[2018-11-27 10:15:05] [src/log_metrics.cpp:34] - can't find metrics type: conn_selectors
[2018-11-27 10:15:06] [src/log_metrics.cpp:34] - can't find metrics type: thrift_flume_conns
[2018-11-27 10:15:06] [src/log_metrics.cpp:34] - can't find metrics type: thrift_flume_conns
[2019-04-09 15:34:19] [src/log_metrics.cpp:34] - can't find metrics type: conn_selectors
[2019-04-09 15:34:19] [src/log_metrics.cpp:34] - can't find metrics type: thrift_flume_conns
[2019-04-09 15:34:19] [src/log_metrics.cpp:34] - can't find metrics type: thrift_flume_conns
sed*
一种流编辑器,主要用以数据处理,匹配一行后,数据放在缓冲区,然后进行sed操作,然后再输出屏幕,直到租后一行。
-n:使用安静模式,只输出匹配的行
-e:多项编辑
-i:写入文件,修改文件内容
命令:
a:新增字符串,会在匹配的下一行出现
c:替换字符串,替换匹配的行,为其他字符串
d:删除某行
i:插入字符串,会在匹配的上一行插入字符串
p:打印匹配的行
s:取代,一般配合正则使用
使用:
sed -n '5p' test.txt:输出第五行
sed -n '$p' test.txt:输出最后一行
sed -n '3,5p' test.txt:输出3~5行
sed -n '10,$' test.txt:输出第10~最后一行
sed -n '/test/p' test.txt:输出匹配‘test’的行
sed -n '/test1/,/test2/p' test.txt:输出匹配字符串test1~test2之间的所有行
sed -n -e '/^test1/p' -e '/^test2/p' ttt.txt:输出开头匹配test1或者test2的行
sed -n '/$/p' test.txt:字符的行
sed '2d' test.txt:删除第2行
sed '3,5d' test.txt:删除3~5行
sed '3,5c xxx' test.txt:第3~5行替换为xxx
sed -i '/test/d' test.txt:修改文件,匹配到test字符串的行,删除
sed -n '2,3p' ttt.txt | sed 's/test1/test2/g':把2~3行的test1字符串,替换为test2字符串
举例:
warn.log文件内容:
1 [2018-08-23 16:29:56] [src/log_metrics.cpp:34] WARN - can't find metrics type: conn_selectors
2 [2018-08-23 16:29:56] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
3 [2018-08-23 16:29:56] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
4 [2018-10-17 15:29:31] [src/log_metrics.cpp:34] WARN - can't find metrics type: conn_selectors
5 [2018-10-17 15:29:31] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
6 [2018-10-17 15:29:31] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
7 [2018-10-17 15:29:32] [src/log_metrics.cpp:34] WARN - can't find metrics type: conn_selectors
8 [2018-10-17 15:29:32] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
9 [2018-10-17 15:29:32] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
10 [2018-11-27 10:15:05] [src/log_metrics.cpp:34] WARN - can't find metrics type: conn_selectors
11 [2018-11-27 10:15:06] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
12 [2018-11-27 10:15:06] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
13 [2019-04-09 15:34:19] [src/log_metrics.cpp:34] WARN - can't find metrics type: conn_selectors
14 [2019-04-09 15:34:19] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
15 [2019-04-09 15:34:19] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
➜ sed sed -n '5p' warn.log
5 [2018-10-17 15:29:31] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
➜ sed sed -n '3,5p' warn.log
3 [2018-08-23 16:29:56] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
4 [2018-10-17 15:29:31] [src/log_metrics.cpp:34] WARN - can't find metrics type: conn_selectors
5 [2018-10-17 15:29:31] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
➜ sed sed -n '/10:15/p' warn.log
10 [2018-11-27 10:15:05] [src/log_metrics.cpp:34] WARN - can't find metrics type: conn_selectors
11 [2018-11-27 10:15:06] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
12 [2018-11-27 10:15:06] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
➜ sed sed '3,10d' warn.log
1 [2018-08-23 16:29:56] [src/log_metrics.cpp:34] WARN - can't find metrics type: conn_selectors
2 [2018-08-23 16:29:56] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
11 [2018-11-27 10:15:06] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
12 [2018-11-27 10:15:06] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
13 [2019-04-09 15:34:19] [src/log_metrics.cpp:34] WARN - can't find metrics type: conn_selectors
14 [2019-04-09 15:34:19] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
15 [2019-04-09 15:34:19] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
➜ sed sed -n '2,5p' warn.log| sed 's/2018/8888/g'
2 [8888-08-23 16:29:56] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
3 [8888-08-23 16:29:56] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns
4 [8888-10-17 15:29:31] [src/log_metrics.cpp:34] WARN - can't find metrics type: conn_selectors
5 [8888-10-17 15:29:31] [src/log_metrics.cpp:34] WARN - can't find metrics type: thrift_flume_conns