linux 常用命令
文件目录
" / " :根目录
" ~ " :用户主目录的缩写。例如当前用户为hello,那么" ~ "展开来就是:/Users/hello
" . " :当前目录
".." :父目录
基本命令
man
Linux命令就是man命令
,该命令可以显示指定命令的用法和描述
。比如你想知道ls
命令的用法和选项,可以在终端执行“man ls”
语法: man <command name>
man ls
touch,cat和less命令
touch 命令可以在Linux系统中 创建大小为0 的 任意类型文件
cat 命令用来查看文件的内容,不支持键盘上下键翻页
less 命令也可以让你浏览文件,less 命令非常快,并且支持 上下键 查看文件的 开头和末尾
more 命令和它类似,只是 more 命令只能用 enter 键实现文件的 向前翻页,不支持回退
touch <filename> 在当前目录下创建 <filename> 文件
cat <filename>
less <filename>
sort
sort 命令用来对文件内容进行排序
test.txt
1 mike level intermediate jan
10 lucy level beginer mar
45 Dave level expert dec
4 dennis start beginner jul
7 Megan employee trainee feb
58 Mathew Head CEO nov
sort -k2 test.txt 对第二列排序
按数字排序 -h
sort -h test.txt
1 mike level intermediate jan
4 dennis start beginner jul
7 Megan employee trainee feb
10 lucy level beginer mar
45 Dave level expert dec
58 Mathew Head CEO nov
消除重复的行 -u
sort -h -r test.txt
58 Mathew Head CEO nov
45 Dave level expert dec
10 lucy level beginer mar
7 Megan employee trainee feb
4 dennis start beginner jul
1 mike level intermediate jan
Uniq
过滤文件中的重复行
root@devopscube:~# uniq test.txt
1 mike level intermediate jan
10 lucy level beginer mar
45 Dave level expert dec
4 dennis start beginner jul
7 Megan employee trainee feb
58 Mathew Head CEO nov
cut
列或者分隔符提取文件中的指定部分
列出文件中某列的全部内容 -c
cut -c1-2 test.txt 提取第1、2列的全部内容
1
10
45
4
7
58
提取指定的字符串
cut -d' ' -f2 test.txt 提取names列
mike
lucy
Dave
dennis
Megan
Mathew
tar
-cf 压缩
-xf 解压缩
将test.txt文件打包
root@devopscube:~# tar -cf test.tar test.txt
root@devopscube:~# ls
test.tar test.txt
“-C”选项将刚才打包好的test.tar文件解压缩至“demo”目录
root@devopscube:~# tar -xf test.tar -C /root/demo/
root@devopscube:~# cd demo/
root@devopscube:~/demo# ls
test.txt
diff
找出2个文件的不同点
root@devopscube:~# diff test.txt test1.txt
7c7
< 59 sdfsd
---
> 59 sdfsd CTO dec
chmod
改变文件的读/写/执行权限
4 - read permission
2 - write permission
1 - execute permission
0 - no permission
chmod 755 test.txt 给test.txt文件赋最高的权限
cd:跳转到目录
技巧:输入目录时,tab键补全名称
cd /Users/apple/Desktop/ 跳转到指定目录
cd / 表示跳转到根目录。
cd- 回到上一个目录
cd ~ 表示跳转到用户主目录。
cd ~apple 表示跳转到用户apple的主目录。
cd .. 表示跳转到上级目录。(cd和..之间的空格不能漏)
ls:列出当前目录下的子目录和文件名称
ls 参数 目录名
1 $ ls
2 Desktop Downloads Movies Pictures build
3 Documents Library Music Public log.txt
参数
-w 显示中文,-l 详细信息, -a 包括隐藏文件
4 ls -ah
pwd:显示当前目录的路径
1 $ cd ~
2 $ pwd
3 /Users/apple
4 $ cd ./Desktop/
5 $ pwd
6 /Users/apple/Desktop
clear:清空当前输入
实质上是屏幕滚动
history:查看输入历史记录
在Terminal输入命令时,可以使用上下方向键查看之前输入的命令(和windows的cmd相同)。另外,可以用history查看输入的完整历史
1 600 ls
2 601 cd Public/
3 602 ls
4 603 cd /
5 604 ls
6 605 cd ..
7 606 ls
8 607 cd /
9 608 ls
10 609 history
11 610 history
mkdir:创建目录
mkdir 目录名
例:在驱动目录下建一个备份目录
backup mkdir /System/Library/Extensions/backup
在桌面上建一个备份目录
backup mkdir /User/用户名/Desktop/backup
backup mkdir ~/Desktop/backup
cp:拷贝文件
cp 参数 源文件 目标文件
例:想把桌面的Natit.kext 拷贝到驱动目录中
cp -R /User/用户名/Desktop/Natit.kext /System/Library/Extensions
参数R表示对目录进行递归操作,kext在图形界面下看起来是个文件,实际上是个文件夹。
把驱动目录下的所有文件备份到桌面
backup
cp -R /System/Library/Extensions/* /User/用户名/Desktop/backup
rm:删除文件
rm 参数 文件
例:想删除驱动的缓存
rm -rf /System/Library/Extensions.kextcache rm -rf /System/Library/Extensions.mkext
参数-rf 表示递归和强制,千万要小心使用,如果执行了 rm -rf / 你的系统就全没了
mv:移动文件
mv 文件 目标路径
例:想把AppleHDA.Kext 移到桌面
mv /System/Library/Extensions/AppleHDA.kext /User/用户名/Desktop
想把AppleHDA.Kext 移到备份目录中
mv /System/Library/Extensions/AppleHDA.kext /System/Library/Extensions/backup
nano:文本编辑
nano 文件名
例:编辑natit Info.plist
nano /System/Library/Extensions/Natit.kext/Info.plist
目录操作
mkdir 新建目录 mkdir dirname
rmdir 删除目录 rmdir dirname
mvdir 移动或者重命名目录 mvdir dir1 dir2
cd 切换目录 cd dirname
pwd 查看目录 pwd
ls 查看当前目录内容 ls -la 详细信息,隐藏文件
文件操作
cp 复制文件或目录 cp file1 file2
rm 删除文件或目录 rm filename
mv 改变文件名或所在目录 mv file1 file2
find 使用匹配表达式查找文件 find .-name "*.c" -print
file 显示文件类型 file filename
diff 比较并显示两个文件的差异 diff file1 file2
uniq 去掉文件中的重复行 uniq file1 file2
wc 统计文件的字符数、词数和行数 wc filename
nl 给文件加行号 nl file1 > file2
unzip 文件名 解压缩jar包等,当mac不能使用原装解压文件解压时,可以使用unzip解压
文件查看
cat 显示文件全部内容
head 显示文件最初几行 head -20 filename
tail 显示文件最后几行 tail -20 filename
动态追踪文件修改
tail -f 等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止
tail -F 等同于--follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
tailf 等同于tail -f -n 10(貌似tail -f或-F默认也是打印最后10行,然后追踪文件),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电
tail -n +10 test.log 查询10行之后的所有日志;
tail -fn 10 test.log 循环实时查看最后1000行记录(最常用的) -fn 相当于 -f -n
head -n 10 test.log 查询日志文件中的头10行日志;
head -n -10 test.log 查询日志文件除了最后10行的其他所有日志;
从键盘创建一个文件
$cat > filename
将几个文件合并为一个文件
$cat file1 file2 > file 只能创建新文件,不能编辑已有文件
将一个日志文件的内容追加到另外一个
$cat -n textfile1 >> textfile2
> 意思是创建/覆盖,>> 是追加
Ctrl f 向下滚动一屏
空格键 向下滚动一屏
Ctrl b 返回上一屏
= 输出当前行的行号
v 调用vi编辑器
! 命令 调用Shell,并执行命令
q 退出 more
less log.log
shift + G 命令到文件尾部 然后输入 ?加上你要搜索的关键字例如 ?1213
按 n 向上查找关键字
shift+n 反向查找关键字
less与more类似,使用less可以随意浏览文件,而more仅能向前移动,不能向后移动
文件编辑
vi 打开文件,如果文件不存在就创建 vi aaa.text
:q 退出文件,编辑后没有保存不能退出
:w 保存
:wq 保存退出
:w! 强制保存,在root用户下即使文本只读也可以强制保存
:q! 强制退出,所有改动不生效
:wq! 强制保存并退出
:set nu 显示行号
:set nonu 隐藏行号
esc 由编辑模式进入一般模式
a i o 由一般模式进入编辑模式
小写i 在光标所在行位置停止不动开始写入内容
大写I 在光标所在行行首开始写入内容
小写a 在光标所在行当前字符后开始写入内容
大写A 在光标所在行行尾开始写入内容
小写o 在光标所在行下一行开始写入内容
大写O 在光标所在行上一行开始写入内容
dd 剪切一行
5dd 剪切光标下的5行
p 粘贴
yy 复制
5yy 复制5行
u 撤销上次操作
ctrl + r 恢复操作
gg 光标定位到第一行
shift + gg 光标定位到最后一行
3shift + gg 光标定位到第三行
u 撤销
ctrl + r 恢复
vim 中 /{要匹配的字符串} 快速查找
n 或 N 进行上一个或下一个的匹配
进程操作
ps 显示进程当前状态 ps u
显示和java相关的进程
ps -ef | gerp java -e 显示所有程序 f 显示UID,PPIP,C与STIME栏位 | 是管道命令 是指ps命令与grep同时执行
查看端口所在线程 lsof -i:8080
或者 sudo lsof -i tcp:8080
kill 终止进程 kill -9 30142
kill 发送SIGTERM(15)信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出。
kill -9 发送SIGKILL信号给进程,告诉进程,你被终结了,请立刻退出,TERM(或数字9)表示“无条件终止”,强制杀死该进程;
时间操作
data 显示系统当前日期和时间
其他操作
clear 清除屏幕或窗口内容 clear
who 列出当前系统所有用户 who
whoami 显示当前正在操作的用户 whoami
du 查看磁盘使用情况 du -k subdir
ping 查看网站访问情况 ping www.github.com
ctrl + z 退出执行中的终端程序
history 查看历史输入的命令
exit 退出当前窗口正在运行的内容,退出当前窗口
管理员权限
sudo 管理员权限 sudo gem install iStats 安装温度插件
其他
Linux大文件怎么查某一行的内容
head -n 40 filename 获取前40行
管道 -n 1 获取最后一行,也就拿到了第40行的内容
head -n 40 2017_08_28.log | tail -n 1
sed -n '行号 p' filename 打印指定行号的内容
sed -n '行号开始,行号结束 p' filename 打印某个范围内的内容
sed -n '5926 p' 2.sql
sed -n '5926,5930 p' 3.sql
Linux下查找固定时间内修改过的文件
find 路径 -name ‘文件名’ -mtime 0
查找最近24小时内修改过的文件:
find html/ -mtime 0
查找最近24~48小时之间修改过的文件:
find html/ -mtime 1
查找最近30分钟修改过的.php文件:
find html/ -name '*.php' -mmin -30
查找最近24小时内修改过的.php文件:
find html/ -name '*.php' -mtime 0
find /home -atime 1 查1天之内被存取过的文件
find /home -mmin 60 在/home下查60分钟前改动过的文件
find /home -amin 30 查最近30分钟前被存取过的文件
find -name april* 在当前目录下查找以april开始的文件
find -name ap* -o -name may* 查找以ap或may开头的文件
find /mnt -name tom.txt -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find /mnt -name t.txt ! -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
find /home -newer tmp.txt 在/home下查更新时间比tmp.txt近的文件或目录
find /home -anewer tmp.txt 在/home下查存取时间比tmp.txt近的文件或目录
find /home -used -2 列出文件或目录被改动过之后,在2日内被存取过的文件或目录
find /home -user cnscn 列出/home目录内属于用户cnscn的文件或目录
find /home -uid +501 列出/home目录内用户的识别码大于501的文件或目录
find /home -group cnscn 列出/home内组为cnscn的文件或目录
find /home -gid 501 列出/home内组id为501的文件或目录
find /home -nouser 列出/home内不属于本地用户的文件或目录
find /home -nogroup 列出/home内不属于本地组的文件或目录
find /home -name tmp.txt -maxdepth 4 列出/home内的tmp.txt 查时深度最多为3层
find /home -name tmp.txt -mindepth 3 从第2层开始查
find /home -empty 查找大小为0的文件或空目录
find /home -size +512k 查大于512k的文件
find /home -size -512k 查小于512k的文件
find /home -links +2 查硬连接数大于2的文件或目录
find /home -perm 0700 查权限为700的文件或目录
find /tmp -name tmp.txt -exec cat {} \;
find /tmp -name tmp.txt -ok rm {} \;
find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于 groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / -user fred #查找在系统中属于FRED这个用户的文件