Linux常见基础命令
本文通过Xshell终端来获取Linux环境.
目录
1 连接是否成功
2 Linux常用命令
2.1 ls
2.2 cd
2.3 pwd
2.4 touch cat echo
2.5 vim
2.6 mkdir
2.7 rm
2.8 cp
2.9 mv
2.10 tail
2.11 grep
2.12 ps
2.13 netstat
3 程序部署常用命令
1 连接是否成功
当你登陆上云服务器上后, 会出现以下情形
2 Linux常用命令
2.1 ls
语法:ls [选项] [⽬录或⽂件]
功能:(list)对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信 息.
常用选项:
-a 列出⽬录下的所有⽂件,包括以.开头的隐含⽂件。
-d 将⽬录象⽂件⼀样显⽰,⽽不是显⽰其下的⽂件。如:ls ‒d指定⽬录
-k 以k字节的形式表⽰⽂件的⼤⼩。ls ‒alk指定⽂件
-l 列出⽂件的详细信息。
-r 对⽬录反向排序。
-t 以时间排序。
-R 列出所有⼦⽬录下的⽂件。(递归)
这里注意, 如果你的机器是新的, ls命令过后可能你不会看到东西, 这不代表没有命令没有成功, 而是你的机器的home目录啥都没有.
ls 后面也可以跟上一个指定的目录.列出指定的目录下有哪些内容.
Linux上一定会有 / 这个目录. 就称为"根目录",就相当于windows的"此电脑".
通常情况下, 我们使用ls -l 的情况更多, 这个命令可以详细地列出目录下的内容. 通常也用 ll 来简写.
2.2 cd
cd : change directory 切换目录
cd 切换到目录的名称, 这个目录可以是绝对路径, 也可以是相对路径.
输入路径的时候, 可以不用全部敲出来, 用tab补齐也是可以的.
⼏个特殊的⽬录:
• /称为根⽬录
• .称为当前⽬录
• ..称为当前⽬录的上级⽬录
2.3 pwd
如果说, 你cd了很多次, 找不到自己在哪了.
pwd就可以查看到当前位置的绝对路径.
2.4 touch cat echo
touch 创建文件
touch 文件名
一般来说, 用户的操作都是在主目录中进行的. 系统目录最好不要乱搞. 也就是不要在 / 目录中进行操作.
此时这个文件是空着的, 没有内容, 所以使用cat就没读出来内容.
cat 读取文件
语法:cat [选项] [⽂件]
功能:查看⽬标⽂件的内容
常⽤选项:
• -n对输出的所有⾏编号
echo 内容 > 文件名
现在往上面那个文件中写入内容.
2.5 vim
通过上述的操作来读写一些简单的文件还好, 如果是读取一些复杂的文件, 或者是文件更长的文件, 就不太合适了.
使用vim完成针对文件进行更细颗粒度的编辑, 也就是一个文本编辑器, Linux上自带文本编辑器.
vim这个程序是非常复杂的, 不过作为普通的程序员, 懂得它其中的三个操作就可以了.
1. 打开文件 2. 保存退出 3.编辑文件
1. 打开文件 vim 文件名
2. 保存退出
先输入: 再按wq 就可以退出了.
3. 编辑文件
插入模式下, 输入的内容就是编辑的内容了, 就不是命令了.
那怎么退出插入模式呢? 按esc键就可以了.
退出时,分以下情况:
①⽂件未修改: 输⼊ :q ,再按下回⻋,即可退出
②⽂件修改并保存: 使⽤ :wq 同时执⾏保存和退出.
③⽂件修改,但不希望保存: 使⽤ :wq! 进⾏强制退出
再次打开文件, 可以看到刚刚写的内容已经保存了.
2.6 mkdir
make directory 创建目录
不能创建多层目录
但是加入选项就可以
常⽤选项:
•-p,--parents 可以是⼀个路径名称。此时若路径中的某些⽬录尚不存在,加上此选项后,系统将⾃动 建⽴好那些尚不存在的⽬录,即⼀次可以建⽴多级⽬录
# 递归建⽴多个⽬录
mkdir –p test/test1
2.7 rm
remove 删除
语法:rm [-f-i-r-v] [dirName/dir]
功能:删除⽂件或⽬录
常⽤选项:
• -f 即使⽂件属性为只读(即写保护),亦直接删除
• -i 删除前逐⼀询问确认
• -r 删除⽬录及其下所有⽂件
可以删除目录, 也可以删除文件
单独的rm只可以删除文件, 而不可以删除目录, 如果需要删除目录, 则要配合 -r 命令来完成.
千万不要运⾏ rm -rf / ,尤其是在公司的⽣产服务器上.
2.8 cp
copy 复制
语法:cp [选项] 源⽂件或⽬录 ⽬标⽂件或⽬录
功能: 复制⽂件或⽬录
cp指令⽤于复制⽂件或⽬录,如同时指定两个以上的⽂件或⽬录,且最后的⽬的地是⼀个已经存 在的⽬录,则它会把前⾯指定的所有⽂件或⽬录复制到此⽬录中。若同时指定多个⽂件或⽬录,⽽最后的⽬的地并⾮⼀个已存在的⽬录,则会出现错误信息.
常⽤选项:
•-f或--force强⾏复制⽂件或⽬录,不论⽬的⽂件或⽬录是否已经存在
•-i或--interactive 覆盖⽂件之前先询问⽤⼾
•-r递归处理,将指定⽬录下的⽂件与⼦⽬录⼀并处理。若源⽂件或⽬录的形态,不属于⽬录或符号 链接,则⼀律视为普通⽂件处理
•-R或--recursive递归处理,将指定⽬录下的⽂件及⼦⽬录⼀并处理
cp hello.txt world.txt
可以看到hello.txt中的内容被复制到了world.txt中了.
2.9 mv
move 移动
mv既可以起到移动的作用, 也可以起到重命名的效果.
语法: mv [选项] 源⽂件或⽬录 ⽬标⽂件或⽬录
功能:
1. 视mv命令中第⼆个参数类型的不同(是⽬标⽂件还是⽬标⽬录),mv命令将⽂件重命名或将其移 ⾄⼀个新的⽬录中。
2. 当第⼆个参数类型是⽂件时,mv命令完成⽂件重命名,此时,源⽂件只能有⼀个(也可以是源⽬ 录名),它将所给的源⽂件或⽬录重命名为给定的⽬标⽂件名。
3. 当第⼆个参数是已存在的⽬录名称时,源⽂件或⽬录参数可以有多个,mv命令将各参数指定的源⽂件均移⾄⽬标⽬录中。
常⽤选项
•-f:force强制的意思,如果⽬标⽂件已经存在,不会询问⽽直接覆盖
•-i:若⽬标⽂件(destination)已经存在时,就会询问是否覆盖!
mv既可以起到移动的效果, 也可以起到重命名的效果.
2.10 tail
语法:tail [必要参数][选择参数] [⽂件]
功能:⽤于显⽰指定⽂件末尾内容,不指定⽂件时,作为输⼊信息进⾏处理。常⽤查看⽇志⽂件。 选项:
• -f 循环读取
• -n 显⽰⾏数
tail -10 test1.txt
2.11 grep
语法:grep[参数]...[⽂件]...
功能:⽤于查找⽂件中是否包含指定字符串, 并显⽰对应的⾏. 字符串搜索/匹配命令.
选项:
•-n显⽰的⾏数
•-w全字匹配. 要求整个单词都完全相同的结果才能匹配出来,⽽不仅仅是⼀个单词的⼀部分.
•-r递归查找. 可以搜索多级⽬录下的所有⽂件.
•--color ⾼亮查找到的结果
•--include 指定查找某些⽂件
•--exclude 指定排除某些⽂件
grep "hello" Hello.java
2.12 ps
语法:ps [参数]...
功能:⽤于查看当前系统上运⾏的进程
选项:
• a显⽰⼀个终端的所有进程
• u以⽤⼾为主的格式来显⽰程序状况
• x显⽰所有程序,不⽌是会话中的进程
• e显⽰所有进程,包括系统守护进程
• f显⽰完整格式输出
ps aux # 显⽰系统上所有的进程
ps aux | grep " 进程名 "
ps aux | grep " 进程 id"
2.13 netstat
语法:netstat[参数]...
功能:查看系统上的⽹络状态.
选项:
•-a显⽰所有正在或不在侦听的套接字
•-n显⽰数字形式地址⽽不是去解析主机、端⼝或⽤⼾名
•-p显⽰套接字所属进程的PID和名称
netstat -anp
netstat -anp | grep " 进程名"
netstat -anp | grep " 端⼝号"
管道
管道是⼀种古⽼的"进程间通信"⽅式.在Linux指令中可以使⽤ | 作为管道标记. 意思是将前⼀个指令标准输出的内容,作为第⼆个指令的标准输⼊内容.
ps -ef|grep "java"
ps -ef|head -10
tail -f log.txt|grep "Exception"
3 程序部署常用命令
接下来介绍在云服务器上部署项目时, 常用的一些命令, 我们在启动项目时.
通过java -jar 启动项目, 可是当我们断开云服务器的连接后, 就发现自己的项目网站就不能访问了.
这个时候就要满足后台运行程序了.
使用nohup命令, 记得&号一定不要丢.
跟踪日志
tail -f spring-blog.log
如果此时项目正常, 那么正常的日志, 我们是不需要看的, 我们要看的只有异常日志.所以接下来就要过滤日志了.
过滤日志
tail -f spring-blog.log | grep "Exception"
tail -f spring-blog.log | grep "ERROR"
查找进程
杀掉进程