ls

list 的缩写,可以查看 linux 文件夹包含的文件、文件权限、目录、文件夹等信息。

  • ls -a:列出目录所有文件,包含以。开始的隐藏文件。

  • ls -A:列出除。及。. 的其它文件。

  • ls -l:除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。

pwd

  • pwd:查看当前路径。
  • pwd -P:查看软链接的实际路径。

mkdir

用于创建文件夹。

  • mkdir newfolder:在当前目录创建名字为 newfolder 的文件夹。
  • mkdir -p /tmp/test/t1/t:在 tmp 目录下创建路径为 test/t1/t 的目录,系统会自动建立那些不存在的目录。

rm

删除一个目录中的一个或多个文件或目录。

  • rm -i *.log:删除任何。log 文件,删除前逐一询问确认。
  • rm -rf test:递归删除 test 子目录及其子目录中所有档案,并且不用一一确认。
  • rm -- -f:删除以 -f 开头的文件。

rmdir

用来删除空目录,删除时必须具有目标目录父目录的写权限。

  • rmdir -p parent/child/child11:递归删除空目录,如果子目录被删除后 parent 变成空目录,则顺便一并删除。

mv

用来移动或修改文件名,参数为目录时移动文件,否则重命名文件。

  • mv test.log test1.txt:将文件 test.log 重命名为 test1.txt。

  • mv llog1.txt log2.txt log3.txt /test3:将文件 log1.txt,log2.txt,log3.txt 移动到根的 test3 目录中。

  • mv -i log1.txt log2.txt:将文件 file1 改名为 file2,如果 file2 已经存在,则询问是否覆。

  • mv * ../:移动当前文件夹下的所有文件到上一级目录。

cp

将源文件复制至目标文件,或将多个源文件复制至目标目录。

  • cp -i:提示出现文件的覆盖。

  • cp -r:复制目录及目录内所有项目。

  • cp -a:复制的文件与原文件时间一样。

  • cp -ai a.txt test:复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖。

  • cp -s a.txt link_a.txt:为 a.txt 建议一个链接(快捷方式)。

cat

主要用来显示文件内容、创建新文件和合并文件。

  • cat -b:对非空输出行号。

  • cat -n:输出所有行号。

  • cat test.log:创建 test.log 文件。

  • cat -n log2012.log log2013.log:把 log2012.log 的文件内容加上行号后添加到 log2013.log。

  • cat -b log2012.log log2013.log log.log:把 log2012.log 和 log2013.log 的文件内容加上行号后添加到 log.log。

显示文件的开头几行,默认显示文件的前 10 行。

  • head -n:行数,最后 n 行使用负数。

  • head -c:字节数。

  • head -n 10 1.log:显示 1.log 文件中前 20 行。

  • head -c 20 log2014.log:显示 1.log 文件前 20 个字节。

  • head -n -10 t.log:显示 t.log 最后 10 行。

tail

用于显示指定文件末尾内容,不指定文件时,使用输入信息进行处理,常用查看日志文件。

  • tail -f:循环读取,常用于查看递增的日志文件。

  • tail -n:行数。

例如循环读取递增的文本内容:

  1. ping 127.0.0.1 > ping.log &:保存日志。

  2. tail -f ping.log:查看日志的最新内容。

which

在 PATH 中搜索某个系统命令的位置,并返回第一个搜索结果。使用 which 命令可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

  • which ls:查看 ls 命令是否存在,执行哪个。

  • which cd:显示 cd 是内建命令。

whereis

whereis 命令只能用于程序名的搜索,whereis 及 locate 都是基于系统内建的数据库进行搜索,因此效率很高,而 find 则是遍历硬盘查找文件。

  • whereis python:返回所有相关的文件。

  • whereis -b python:搜索二进制可执行文件。

  • whereis -m python:搜索说明帮助文件。

  • whereis -s python:搜索源代码文件。

  • whereis -u python:搜索默认路径下以上文件之外的其它文件。

find

用于查找文件,可以配合使用正则表达式。

  • find ./ -name '*.log':在当前目录查找 以。log 结尾的文件。

  • find / -name filename.txt:查找/目录下的 filename.txt 文件。

chmod

用于修改 linux 系统文件或目录的访问权限。有两种用法:一种是包含字母和操作符表达式的文字设定法,另一种是包含数字的数字设定法。

字符使用格式

chmod [可选项] <mode> file

可选项为-R,表示以递归的方式对目前目录下的所有档案与子目录进行相同的权限变更。

mode 是权限设定字串,格式为[ugoa][+-=][rwxX]。u 表示该档案的拥有者,g 表示同一群组,o 表示其他组,a 表示所有用户。+ 表示增加权限,- 表示取消权限,= 表示唯一设定权限。r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

  • chmod ugo+r a.conf && chmod a+r a.conf:设置所有用户可读取文件 a.conf。
  • chmod u+rwx c.sh:设置 c.sh 只有拥有者可以读写及执行。
  • chmod a+r,ug+w,o-w a.conf b.xml:设置文件 a.conf 与 b.xml 权限为拥有者与所属的群组可读写,其它组可读不可写。
  • chmod -R a+rw *:设置当前目录下的所有档案与子目录皆设为任何人可读写。

数字权限使用格式

chmod <abc> file

a、b、c 各为一个数字,分别代表 User、Group、及 Other 的权限。

  • chmod 777 file:设置所有人可以读写及执行。
  • chmod 600 file:设置拥有者可读写,其他人不可读写执行。

tar

用来压缩和解压文件。文件系统中,打包和压缩是不同的。打包是将一大堆文件或目录变成一个总的文件,压缩是将一个大的文件通过一些压缩算法变成一个小文件。

tar 本身只具有打包功能,而压缩及解压是调用其它的程序完成的。

  • tar -c:建立新的压缩文件。
  • tar -f:指定压缩文件。
  • tar -x:从压缩包中抽取文件。
  • tar -z:支持 gzip 压缩。
  • tar -v:显示操作过程。
  • tar -xvzf test.tar.gz:解压 test.tar.gz 文件。
  • tar -zcvf test.tar.gz ./:压缩当前文件夹为 test.tar.gz。

df

通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据 OS 的规则释放掉已经删除的文件, df记录的是通过文件系统获取到的文件的大小。

dfdu不同的地方是计算大小时会加上还没有释放的已删除文件,更加精确。

  • df -a:全部文件系统列表。

  • df -h:易读模式显示信息。

  • df -l:显示本地磁盘使用情况。

du

通过搜索文件然后计算每个文件的大小累加得到空间的大小信息。du能看到的文件只是一些当前存在的,没有被删除的,计算的大小就是当前存在的所有文件大小的累加和。

  • du -s:只显示总和的大小。

  • du logxxx.log:显示指定文件的所占空间,如果文件为多个则分别显示。

  • du -a scf/:显示文件夹内文件夹和文件的大小。

  • du -h scf/:以易读方式显示文件夹内及子文件夹大小。

  • du -c test/ scf/:显示几个文件或目录各自占用磁盘空间的大小,并统计它们的总和。

ln

为文件在其他位置建立一个同步的链接,同步指的是文件或者路径一处修改了所有的链接都会跟着做相同的修改。链接可以减少磁盘的占用,分为软链接和硬链接。

软链接:

  • 以路径的形式存在,类似于 windows 中的快捷方式。
  • 可以跨文件系统,可以对目录创建,可以对不存在的文件名链接。

硬链接:

  • 以文件副本的形式存在,但不占用实际空间。
  • 不可以给目录创建,不可以跨文件系统。

用法:

  • ln -b:删除、覆盖以前建立的链接。

  • ln -sv source.log link.log:给文件创建软链接,并显示操作信息。

  • ln -v source.log link1.log:给文件创建硬链接,并显示操作信息。

  • ln -sv /opt/soft/test/test3 /opt/soft/test/test5:给目录创建软链接。

grep

grep 在一个或多个文件中搜索字符串或者正则表达式模版,模板后的所有字符串被看作文件名,搜索的结果被送到标准输出,不影响原文件内容。

  • ps -ef | grep java:查看 java 有关进程。

ps

用来查看进程的状态。

  • ps -ef:显示当前所有进程及进程间关系。
  • ps -ef | grep java:查看 java 有关进程。
  • `ps -ef | head -5’:列出前五的进程。
image-20221103001431513

其中的参数含义:

  • UID:用户 ID。
  • PID:进程 ID。
  • PPID:父进程号。
  • C:CPU 的占用率。
  • STIME:进程的启动时间。
  • TTY:登入者的终端机位置。
  • TIME:进程执行起到现在总的 CPU 占用时间。
  • CMD:启动这个进程的命令。

top

显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU 占用率等

  • top -p pid:显示指定 pid 的信息。

  • top -n:前 n 行信息。

kill

  • kill -9 19979:终止线程号位 19979 的线程。

free

显示系统内存使用情况,包括物理内存、交互区内存 (swap) 和内核缓冲区内存。

  • free -t:显示内存总和的使用信息。

  • free -s:周期显示内存使用信息。

  • free -b/-k/-m/-g:使用不同的单位显示内存使用情况。

参考

  1. Linux 常用命令学习
  2. Linux du 命令和 df 命令区别
  3. Linux 常用命令 - ps 命令详解(重点)
  4. 面试中常见的 20 个 Linux 命令