Linux目录结构及常用命令

Linux目录结构

常用命令

cd(change directory)

用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。

  • cd /root/Docements # 切换到目录/root/Docements
  • cd ./path # 切换到当前目录下的path目录中,“.”表示当前目录
  • cd ../path # 切换到上层目录中的path目录中,“..”表示上一层目录

ls(list directory contents)

用于显示指定工作目录下之内容(列出目前工作目录所含的文件及子目录)。

  • ls -l                    # 以长格式显示当前目录中的文件和目录(L的小写)
  • ls -a                    # 显示当前目录中的所有文件和目录,包括隐藏文件
  • ls -lh                   # 以人类可读的方式显示当前目录中的文件和目录大小
  • ls -t                    # 按照修改时间排序显示当前目录中的文件和目录
  • ls -R                    # 递归显示当前目录中的所有文件和子目录
  • ls -l /etc/passwd        # 显示/etc/passwd文件的详细信息

grep(global regular expression)

用于查找文件里符合条件的字符串或正则表达式。该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。

grep [-acinv] [–color=auto] ‘查找字符串’ filename

  • -a :将binary文件以text文件的方式查找数据
  • -c :计算找到‘查找字符串’的次数
  • -i :忽略大小写的区别,即把大小写视为相同
  • -v :反向选择,即显示出没有‘查找字符串’内容的那一行
# 例如:
# 取出文件/etc/man.config中包含MANPATH的行,并把找到的关键字加上颜色
grep --color=auto 'MANPATH' /etc/man.config
# 把ls -l的输出中包含字母file(不区分大小写)的内容输出
ls -l | grep -i file

find

用于在指定目录下查找文件和目录,可以使用不同的选项来过滤和限制查找的结果。

find [路径] [匹配条件] [动作]

# 与时间有关的参数:
-mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;
-mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;
-mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;
-newer file : 列出比file还要新的文件名
# 例如:
find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件

# 与用户或用户组名有关的参数:
-user name : 列出文件所有者为name的文件
-group name : 列出文件所属用户组为name的文件
-uid n : 列出文件所有者为用户ID为n的文件
-gid n : 列出文件所属用户组为用户组ID为n的文件
# 例如:
find /home/ljianhui -user ljianhui # 在目录/home/ljianhui中找出所有者为ljianhui的文件

# 与文件权限及名称有关的参数:
-name filename :找出文件名为filename的文件
-size [+-]SIZE :找出比SIZE还要大(+)或小(-)的文件
-tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b、c)、
目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p);
-perm mode :查找文件权限刚好等于mode的文件,mode用数字表示,如0755;
-perm -mode :查找文件权限必须要全部包括mode权限的文件,mode用数字表示
-perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示
# 例如:
find / -name passwd # 查找文件名为passwd的文件
find . -perm 0755 # 查找当前目录中文件权限的0755的文件
find . -size +12k # 查找当前目录中大于12KB的文件,注意c表示byte

cp(copy)

用于复制文件或目录。

cp [选项] 源文件 目标文件

  • -a :将文件的特性一起复制
  • -p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份
  • -i :若目标文件已经存在时,在覆盖时会先询问操作的进行
  • -r :递归持续复制,用于目录的复制行为
  • -u :目标文件与源文件有差异时才会复制
cp -a file1 file2 #连同文件的所有特性把文件file1复制成文件file2
cp file1 file2 file3 dir #把文件file1、file2、file3复制到目录dir中

mv(move)

用来为文件或目录改名、或将文件或目录移入其它位置。

  • -f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
  • -i :若目标文件已经存在,就会询问是否覆盖
  • -u :若目标文件已经存在,且比目标文件新,才会更新
# 将源文件名 source_file 改为目标文件名 dest_file
mv source_file(文件) dest_file(文件)

# 将文件 source_file 移动到目标目录 dest_directory 中
mv source_file(文件) dest_directory(目录)

# 目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;
# 目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory;
mv source_directory(目录) dest_directory(目录)

rm(remove)

用于删除一个文件或者目录。

  • -f :就是force的意思,忽略不存在的文件,不会出现警告消息
  • -i :互动模式,在删除前会询问用户是否操作
  • -r :递归删除,最常用于目录删除,它是一个非常危险的参数
rm -i file # 删除文件file,在删除之前会询问是否进行该操作
rm -fr dir # 强制删除目录dir中的所有文件

ps(process status)

用于显示当前进程的状态,类似于 windows 的任务管理器。

  • -A :所有的进程均显示出来
  • -a :不与terminal有关的所有进程
  • -u :有效用户的相关进程
  • -x :一般与a参数一起使用,可列出较完整的信息
  • -l :较长,较详细地将PID的信息列出
  • -e:显示所有进程,而不仅仅是当前用户的进程。
  • -f:以完整的格式显示进程信息,包括进程的用户、PID、PPID(父进程的PID)、CPU 占用率、内存占用等。
ps aux # 查看系统所有的进程数据
ps ax # 查看不与terminal有关的所有进程
ps -lA # 查看系统所有的进程数据
ps axjf # 查看连同一部分进程树状态

# 查找指定进程格式
# ps -ef:显示系统中所有进程的详细信息。
# |:管道符号,将 ps -ef 命令的输出作为输入传递给下一个命令。
# grep php:在上一个命令的输出中使用 grep 进行模式匹配,只显示包含 "php" 的行。
ps -ef | grep 进程关键字
ps -ef | grep php

kill

用于删除执行中的程序或工作。该命令用于向某个工作(%jobnumber)或者是某个PID(数字)传送一个信号,它通常与ps和jobs命令一起使用。

kill -signal PID

  • 最前面的数字为信号的代号,使用时可以用代号代替相应的信号。
  • 1:SIGHUP,启动被终止的进程
  • 2:SIGINT,相当于输入ctrl+c,中断一个程序的进行
  • 9:SIGKILL,强制中断一个进程的进行
  • 15:SIGTERM,以正常的结束进程方式来终止进程
  • 17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行
# 以正常的结束进程方式来终于第一个后台工作,可用jobs命令查看后台中的第一个工作进程
kill -SIGTERM %1
# 重新改动进程ID为PID的进程,PID可用ps命令通过管道命令加上grep命令进行筛选获得
kill -SIGHUP PID

cat(concatenate)

用于查看文本文件的内容,后接要查看的文件名,通常可用管道与more和less一起使用,从而可以一页页地查看数据。

cat text | less # 查看text文件中的内容
# 注:这条命令也可以使用less text来代替
# less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。

chown(change owner)

用于设置文件所有者和文件关联组的命令。Linux/Unix 是多人多工操作系统,所有的文件皆有拥有者。利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID,组可以是组名或者组 ID,文件是以空格分开的要改变权限的文件列表,支持通配符。

注:chown 需要超级用户 root 的权限才能执行此命令。只有超级用户和属于组的文件所有者才能变更文件关联组。普通用户如需要设置关联组可能需要使用 chgrp 命令。

chown [-cfhvR] [–help] [–version] user[:group] file…

  • user : 新的文件拥有者的使用者 ID
  • group : 新的文件拥有者的使用者组(group)
  • -c : 显示更改的部分的信息
  • -f : 忽略错误信息
  • -h :修复符号链接
  • -v : 显示详细的处理信息
  • -R : 处理指定目录以及其子目录下的所有文件
  • –help : 显示辅助说明
  • –version : 显示版本
# 把 /var/run/httpd.pid 的所有者设置 root:
chown root /var/run/httpd.pid
# 将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :
chown runoob:runoobgroup file1.txt
# 将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:
chown -R runoob:runoobgroup *
# 把 /home/runoob 的关联组设置为 512 (关联组ID),不改变所有者:
chown :512 /home/runoob

chmod(change mode)

用于控制用户对文件的权限的命令。

Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。

只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式)、符号模式指定文件的权限。同时,chmod还可以使用u(user)、g(group)、o(other)、a(all)和+(加入)、-(删除)、=(设置)跟rwx搭配来对文件的权限进行更改。

chmod [-cfvR] [–help] [–version] mode file…

chmod 755 file # 把file的文件权限改变为-rxwr-xr-x
chmod g+w file # 向file的文件权限中加入用户组可写权限
# 对目录docs和其子目录层次结构中的所有文件给用户增加读权限,而对用户组和其他用户删除读权限
chmod -R u+r,go-r docs

鸣谢

初窥Linux 之 我最常用的20条命令_常用linux命令-CSDN博客
Linux 命令大全 | 菜鸟教程