日常必备的16条Linux命令
工作之后接触到了Linux系统,起初是Centos系统,后来慢慢地变成了Ubuntu。最后因为换电脑的缘故,又用上了MacOS,所以基本上每天都在和各种命令打交道。本文记录的是自己平时常用的16条Linux命令。
命令1:pwd
pwd显示当前的工作路径,查看位置所在。
Peter提醒你:时刻都要搞清楚自己的位置!
命令2:ls
ls命令十分常用,ls指的是list,查看文件或者目录的命令。添加参数后常用为:
- ls : 查看目录中全部的文件
- ls -l : 显示文件和目录中的全部信息
- ls -a : 列出全部文件,包含隐藏文件,其中a表示为all
- ls -R : 连同子目录中的文件全部列出,相当于是递归列出全部内容,也就是说该目录下的所有文件的都会被显示出来
- ls [0-9]: 显示包含数字的文件名和目录名
命令3:cp
cp就是copy复制的意思,用于复制文件,该命令还可以将多个文件一次性复制到同一个目录下
- cp -a:将文件的特性一起进行复制
- cp -p:连同文件的属性一起进行复制,和上面的-a参数相似,常用作备份
- cp -i :如果目标文件存在,则在覆盖之前先进行询问
- cp -r:递归持续的复制
- cp -u:目标文件和源文件存在差异的时候才会进行复制
命令4:mv
mv就是move移动的含义,用于移动文件、目录或者更改文件名
- mv -f:f是指force,覆盖之前不会进行询问
- mv -i:覆盖之前进行询问
- mv -u:目标文件比源文件新的时候,才会进行更新
mv oldFileName newFileName -- 重命名
mv hello.txt /home/peter -- 移动位置
mv /dir1 /dir2 -- 将目录dir1移动到目录dir2中,前提是dir2已经存在,若不存在则改名
mv /dir1/* . -- 将dir1下面的全部文件(*代表全部)移动到当前目录下
命令5:rm
rm就是指remove的含义,用于删除文件或者目录
- rm -f:强制删除内容,不会出现任何警告内容
- rm -i:互动模式,在删除之前进行询问是否删除
- rm -r:递归删除,最常用于删除某个目录下的全部内容
⚠️:这个命令要谨慎操作!!!
⚠️:这个命令要谨慎操作!!!
⚠️:这个命令要谨慎操作!!!
命令6:cd
cd命令指的是change directory,切换路径的意思。它的参数是我们想要切换的目录的路径,可以是相对路径,也可以是绝对路径。
自己常用的几个切换路径的命令:
- cd /home/user:切换到"/home/user"目录下
- cd:切换到个人主目录
- cd …:返回上一级目录
- cd …/…:返回上两级目录
- cd -:返回上次所在的目录
- cd ~:退回到用户的家目录
需要注意的是,根目录的父目录是自身
特殊符号 | 作 用 |
---|---|
~ | 代表当前登录用户的主目录 |
~用户名 | 表示切换至指定用户的主目录 |
- | 代表上次所在目录 |
. | 代表当前目录 |
… | 代表上级目录 |
命令7:mkdir
mkdir指的是make directory的意思,也就是创建目录。如果目录存在,则会报错。
代码语言:javascript复制mkdir test # 创建空白的test目录
mkdir -p test/a/b/c/d # 使用-p参数来递归地创建多个层级目录
命令8:touch
touch命令是用来创建空白文件或者设置文件的时间。
创建文件很简单:
代码语言:javascript复制touch test.py # 创建test.py的文件
设置文件的时间主要是体现在:
- 设置文件内容的修改时间:mtime
- 文件权限或者属性的更改时间:ctime
- 文件的读取时间:atime
对应的参数为:
参数 | 作用 |
---|---|
-a | 仅修改“读取时间”atime |
-m | 仅修改“修改时间”mtime |
-d | 同时修改二者 |
命令9:cat
cat命令主要是用来查看文件的内容,后面跟上我们的文件名即可。通常可以用管道符和命令more或者less进行连用。常用的参数选项:
- cat filename:查看文件的全部内容
- cat -n filename :将文件的行数全部显示出来,包含空行
- cat -b filename:和-n类似,只是不显示空行
- cat -s filename:当遇到有连续两行以上的空白行,就代换为一行的空白行
- cat -E:在每行的结尾显示
$
命令10:more
more命令的功能和cat命令是类似的,只不过是常用来显示一个长文件,它是以全屏的方式按照分页的方式显示内容。cat命令是整个文件的内容显示在屏幕上,more命令是以分页的方式来显示的。常用的操作:空白键space跳到下一页,b键则返回上一页。
常用的参数为:
- n :从第n开始显示文件内容
- -n :屏幕只显示n行数
- -s:将连续的空行显示为一行
- -u:将文件内容中的下划线去掉
- -c:不进行滚屏操作。每次刷新这个屏幕
- -l:忽略
Ctrl l
换页字符 - /pattern:在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
配合该命令的常用操作:
- Enter n:向下翻动n行,默认是1行,可自定义
- Ctrl F:向下滚动一屏
- 空格键:向下滚动一屏
- Ctrl B:返回上一屏
- V:调用vim编辑器
- q:推出more命令
more 3 test.py # 从第3行开始显示
more -20 test.py # 屏幕只显示20行
more /hello test.py # 查询文件中第1次出现hello的位置
more -c -5 file # 每5行显示一次,而且在显示之前先清屏
如果某个目录下文件过多,我们可以使用more命令来进行分页显示:
代码语言:javascript复制ls -l | more -5 # 输出当前目录下的全部文件,并且每页显示5个文件信息
还有其他的显示文件行数的命令:less、head、tail、tac
代码语言:javascript复制tac file # 从最后一行开始显示行号
head -n 4 file # 查看文件的前4行
tail -n 8 file # 查看文件的最后8行
tail -n 500 file # 从第500行开始显示,即只显示500行以后的
cat file | head -n 200 | tail -n 100 # 显示100-300行的
cat file | tail -n 200 | head -n 100 # 从第200行开始,显示100行(即200-299行)
命令11:ps
ps命令是用来查看系统中的进程所在的状态
- ps -a:查看所有的进程(包含其他用户的进程)
- ps -u:查看用户及其他信息
- ps -x:显示没有控制终端的进程
Linux系统中进程的5种常见状态(来自书籍:《Linux就该这么学》)
- R:运行,进程正在运行或者在队列中等待
- S:中断,进程处于休眠状态中。当接受到某个条件后,即可脱离该状态
- D:不可中断,在这种状态下即使kill命令也无法将其中断
- Z:僵死,进程已经终止,但是进程描述符依然存在。若父进程调用wait()系统函数后将进程释放
- T:停止,进行收到停止信号后停止运行
命令12:top
top命令是用来动态地监控进程活动或者系统负载等信息的,它的功能可以看做是Windows系统中的“Windows任务管理器”。
查询进程的端口号:
代码语言:javascript复制netstat -tunlp | grep 端口号
命令13:pidof
该命令是用来查询某个指定的服务进程第pid值
代码语言:javascript复制pidof sshd # 查看sshd服务的进程pid值
命令14:kill、killall
kill用于终止某个指定pid号的服务进程
代码语言:javascript复制kill 2165 # 杀死pid为2165的服务
killall用来终止某个指定名称的服务所对应的全部进程,参数为进程名称
代码语言:javascript复制pidof httpd # 查询httpd服务的全部进程
killall httpd # 终止http服务的全部进程
命令15:ifconfig
ifconfig命令主要是用来获取网卡配置和系统的网络状态等信息,主要信息为:
- 网卡名称
- inet参数后面的IP地址
- MAC地址
- RX、TX的接收和发送数据等信息
命令16:history
history命令主要是用来查看我们敲过的历史命令。
代码语言:javascript复制history # 查看全部历史命令
history 10 # 查看最近的10条命令
history可以与grep、tail配合使用进行条件过滤来查找我们需要的命令:
代码语言:javascript复制history | grep dnf # 和dnf相关的命令
history | tail -n 3 # 末尾3条命令
清除历史命令:
代码语言:javascript复制history -d 100 # 清除第100条
history -c # 全部清除掉
Linux、Unix和MacOS的关系
- Unix 是由贝尔实验室开发的多用户、多任务操作系统
- Linux是一类Unix操作系统的统称。比如:Centos、Ubuntu、Debian等普遍认为,Linux是一套自由使用和自由传播的类unix系统。
- MacOS是苹果的专用系统,也是基于Unix内核的图形化操作系统
如果用通俗的话来表示三者的关系:Unix就像是父亲,Linux和MacOS就像是两兄弟
这也验证了为什么会从Linux系统无缝衔接到MacOS上来,因为它们之间的很多命令是通用的。