因为先前做的是Android App开发,开发环境一直用的Windows或者Mac系统。做过App的同学应该知道,编译,打包apk等操作,Android Studio中已集成的工具(gradle等)都能搞定,非常方便。从去年开始接触Android系统开发,开发环境也更换为了Ubuntu系统,在linux平台进行各种操作,不管是办公等基本操作还是对Android源码的编译等,自然是通过命令来完成了。所以,首先学习一下linux命令,实在是个当务之急的事了。现在把当初基础学习时,总结的一些常用指令贴出来,以供需要的人和自己查阅。
切换工作目录:cd
格式:cd 绝对路径/相对路径
cd .. cd ../.. 回到上级目录/上上级目录, 以此类推
cd ~ Home目录
cd - 进入上次所在的目录
列出目录内容:ls
ls -a -l -h -alh
-a 显示指定目录下所有子目录和文件,包括隐藏文件
-l 以列表方式显示文件的详细信息
-h 配合-l以人性化的方式显示文件大小
打开目录:nautilus
格式:nautilus 路径
当前所在目录:nautilus .
显示当前目录路径:pwd
自动补全:Tab键
查看帮助文档
1. 命令 --help eg: ls --help 一般linux命令自带的帮助信息
2. man linux提供的一个手册,包含了绝大多数的命令、函数使用说明
手册分成许多章节(section),使用man时,可以指定不同的章节来浏览。
eg: man ls; man 2 printf
查看历史命令: history
列出输入过哪些命令
ls过滤:
通配符: * 文件名中所有字符,? 文件名中一个字符
ls *.a ls 1?3.py
ls 1[1234]3.py ls 1[1-4]3.py
[abc]匹配a,b,c中的任意一个 [a-f]匹配从a到f范围内的任意一个字符
ls [a-f]* 找到从a到f范围内的任意一个字符开头的文件
\ 如果要使通配符作为普通字符使用,可以在前加上转义字符。
ls \*.a 转义字符 就是只要文件名为 *.a的文件
输出重定向命令:
linux允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中
ls > text.txt 覆盖
ls >> text.txt 追加
cat text.txt 仅仅显示文件内容
more 分屏显示 (用的不多)
管道:|
一个命令的输出可以通过管道作为另一个命令的输入。
ls -alh | more
清屏:clear
创建文件:touch
创建目录:mkdir
通过mkdir命令可以创建一个新的目录。参数 -p 可递归创建目录
mkdir test
mkdir a/b/c -p
删除目录:rmdir
可使用rmdir命令删除一个目录。必须离开目录,并且目录必须为空目录,不然提示删除失败。
删除文件:rm
可使用rm命令删除文件或目录。文件删除后不能恢复。为防止文件误删,可以在rm后使用-i参数以逐个确认要删的文件。
-i 以进行交互式方式执行
-r 强制删除,忽略不存在的文件,无需提示。
-f 递归的删除目录下的内容,删除文件夹时,必须加此参数
eg:rm -rf 文件路径
软链接和硬链接:
建立链接文件:ln
linux下的链接文件相当于windows下的快捷方式。
链接文件分为软链接和硬链接。
软链接:软链接不占用磁盘空间,源文件删除则软链接失效。
硬链接:硬链接只能链接普通文件,不能链接目录。
使用格式:软链接为 有-s参数
ln 源文件 链接文件
ln -s 源文件 链接文件
硬链接文件,两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在。
查看或者合并文件内容:cat
cat 1.txt 2.txt > 3.txt
文件搜索命令:grep (常用)
一般格式: grep [-选项] "搜索内容串" 文件名
常用选项说明:
-v 显示不包含匹配文本的所有行(相当于取反)
-n 显示匹配行及行号
-i 忽略大小写
-r 逐层遍历目录查找
--include 指定匹配的文件类型
eg:在当前目录及所有子目录查找所有java文件中查找blue,并输出到指定文件
grep -r "blue" . --include "*.java" > ../blue.txt
grep 搜索内容串可以是正则表达式。
grep 常用正则表达式:
^a 行首,搜以a开头的行 grep -n "^a" 1.txt
ke$ 行尾,搜以ke结尾的行 grep -n "ke$" 1.txt
[Hh]ello, 匹配[]里一系列字符中的一个
查找文件命令:find
find命令通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。
find ./ -name text.sh 查找当前目录下所有名为test.sh的文件
find ./ -name "*.sh"
find ./ -name "[A-Z]*"
find /tmp -size 2M 查找/tmp目录下等于2M的文件
find /tmp -size +2M find /tmp -size -2M
find ./ -prem 0777 查找当前目录下权限为777的文件或目录
拷贝文件:cp
常用选项说明:
-a 通常在复制目录时使用, 保持文件原有属性
-f 已经存在的目标文件而不提升
-i 交互式复制,在覆盖目标文件之前将给出提示要求用户确认
-r 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须是一个目录名 (常用)
-v 显示拷贝进度
eg:cp -ivr vim_ configure/ code/ 把文件夹vim_ configure 拷贝到code目录里
移动:mv
此命令相当于windows系统中的剪切-粘贴
tip:重命名一个文件也为此命令,eg:mv 1.txt 1.1.txt
查看命令位置:which (用的不多)
which ls
是否是超级管理员:
查看终端首行: $ 普通用户 #超级管理员
进入超级管理员: sudo -s
归档管理(打包):tar
把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据
使用格式 tar [参数] 打包文件名 文件
tip: tar命令很特殊,其参数前面可以使用“-” ,也可以不使用
常用参数:
-c 生成档案文件,创建打包文件
-v 列出归档解档的详细过程,显示进度
-f 指出档案文件名称,f后面一定是.tar文件,所以必须放选项最后
-t 列出档案中包含的文件
-x 解开档案文件
注意:除了f要放在参数最后,其它参数顺序任意
tar -cvf test.tar 1.txt 2.txt 3.txt
tar -xvf test.tar
文件压缩解压缩:gzip
用gzip压缩tar打包后的文件 ,扩展名一般用xxxx.tar.gz
使用格式一般如下:
gzip [选项] 被压缩文件
常用选项 :
-r 压缩所有子目录
-d 解压
gzip -r test.tar test.tar.gz
gzip -d test.tar.gz
tar命令没有压缩功能,它只是一个打包命令,在tar命令中增加一个选项(-z)可以调用gzip实现一个压缩的功能。实现一个先打包后压缩的过程。
tar -vczf 压缩包包名 文件1 文件2.....
tar -zxvf 压缩包包名 (解压缩,常用命令)
-C 解压到指定目录
文件压缩解压缩 bzip2
用法和gzip一样,后缀名为 tar.bz2 。增加一个选项(-j)可以调用bzip2实现一个压缩的功能
文件压缩解压缩:zip unzip
通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。
压缩文件: zip [-r] 目标文件(没有扩展名) 源文件
解压文件: unzip -d 解压后目录文件 压缩文件
zip myzip *.*
unzip -d test myzip.zip
系统相关命令:
<1> 查看当前日历: cal
<2> 显示或设置时间 : date
<3> 查看进程信息: ps 常用 ps -aux
ps命令可以查看进程的详细状况,常用选项(可以不加“-”)如下:
-a 显示终端上的所有进程,包括其他用户的进程。
-u 显示进程的详细状态
-x
-w
-r 只显示正在运行的进程
与管道命令和搜索命令配合使用:ps -aux | grep "java"
查看手机进程:adb shell ps | grep "fmradio"
<4> 动态显示进程 top
<5> 终止进程 kill kill -9 进程号
<6> 关机重启:reboot 、shutdown 、init
reboot 重启操作系统
shutdown -r now 重启操作系统,shutdown会给别的用户提示
shutdown -h now 立刻关机
shutdown -h 20:25 系统在今天20:25会关机
shutdown -h +10 系统再过10分钟自动关机
init 0 关机
init 6 重启
<7> 检测磁盘空间:df
df命令用于检测文件系统的磁盘空间占用和空余情况,可以显示文件系统对节点和磁盘块的使用情况。
df -lh 查看硬盘情况
<8> 检测当前目录所占磁盘空间:du
du命令用于统计目录或文件所占磁盘空间的大小,执行结果与df类似,du更侧重于磁盘的使用状况。
du命令的使用格式:du [选项] 目录或文件名
du -a du -alh 当前目录空间占用情况
sudo du -s /home
<9> 查看或配置网卡信息:ifconfig
<10> 测试远程主机连通性:ping