Linux | 常用指令(基础)

39 阅读4分钟

请添加图片描述

linux常用命令

终端之前 win 用的 cmder ,后面换mac用的 iterm2 + zsh 。都还不错。

总结一些平常会用到的命令。


基础命令

mkdir <folder> #新建文件夹(当前目录)
touch <file> #新建文件(当前目录)

echo 'hello txt'> hello.txt # 创建文件hello.txt,并写入内容: hello txt

vim <file> #编辑文件

ls #查看当前目录的所有文件
ls -al #查看当前目录的的权限
ls -l [file #查看文件字节数
ls -lh [file] #查看文件大小(实际大小)

du -h # 查看文件大小及目录分布(查看的是占用的block大小)
du -sh <foldername> # 查看文件夹大小, -h 以人类可读的格式(如 1.2G、512M)显示
du -h -d 1 | sort -hr # 当前目录所有子文件夹的大小并按大小排序


tree <file> #查看文件属性目录 mac可展示二级目录, win需要 追加 /f 递归显示二级目录
tree <?file> # 树形展开文件, 不写file 展开当前目录
tree -I ”<ignore-file>“ <file> # 树形展开文件 忽略文件
tree -L <level> <file> # 树形展开到 level 层

rm <file> 删除文件
rm <folder>/*.suffix #删除某个文件夹下后罪名为suffix
rm -rf <folder> #删除文件夹,-rf需要在前面(不然mac iterm 抛错,之前window好像不在意顺序)

cd <file-path> #进入某个文件夹

cd ../<file-path> #进入上级某个文件夹

cd ~/<file-path> #全局查找文件

vi <file> #编辑文件
sudo vi <file> #编辑文件,但是使用管理员去权限

df -h #查看,内存占用情况

mv <file> <target-path> # 移动文件到目标路径

ll # 查看当前文件目录下文件所有者及大小

open . # 以文件夹打开当前目录
code . # vscode 打开当前目录

find . -name 'node' #查找 node的文件夹

find <dir> -type f | wc -l # 统计文件数量

统计文件夹文件数量

直接统计

find <dir> -type f | wc -l

分组统计

# 统计文件数量 (linux/macOS/Git Bash)
find <dir> -type f | wc -l

#-------------------------------------------------------------------------

# 按文件类型分组(Linux / macOS / Git Bash)
find <dir> -type f | sed -n 's/.*\.\([^.]*\)$/\1/p' | sort | uniq -c

# 按文件夹分组(Linux / macOS / Git Bash)
for d in <dir>/*/; do
  echo -n "$(basename "$d"): "
  find "$d" -type f | wc -l
done

#-------------------------------------------------------------------------

# 按文件类型分组(Windows PowerShell)
$Root = "C:\path\to\dir"
Get-ChildItem -Path $Root -Recurse -File | Group-Object Extension |
Select-Object Name, Count | Sort-Object Name


# 按文件夹分组(Windows PowerShell)
Get-ChildItem "C:\path\to\dir" -Directory | ForEach-Object {
  $count = Get-ChildItem $_.FullName -Recurse -File | Measure-Object | Select -ExpandProperty Count
  [PSCustomObject]@{ Folder = $_.Name; FileCount = $count }
}

#-------------------------------------------------------------------------

# 按文件类型分组-输出优化版(Linux/macOS(bash))
find <dir> -type f \
  | sed -n 's/.*\.\([^.]*\)$/\1/p' \
  | sort \
  | uniq -c \
  | awk '{print $2 " (" $1 ")"}'

# 按子文件夹分组-输出优化版(Linux/macOS(bash))
for d in <dir>/*/; do
  count=$(find "$d" -type f | wc -l)
  echo "$(basename "$d") ($count)"
done

#-------------------------------------------------------------------------

# 按文件类型分组-输出优化版(Windows PowerShell)
Get-ChildItem -Path "C:\path\to\dir" -Recurse -File |
Group-Object Extension |
Sort-Object Name |
ForEach-Object {
  "{0} ({1})" -f $_.Name, $_.Count
}

# 按子文件夹分组-输出优化版(Windows PowerShell)
Get-ChildItem "C:\path\to\dir" -Directory |
ForEach-Object {
  $count = (Get-ChildItem $_.FullName -Recurse -File).Count
  "{0} ({1})" -f $_.Name, $count
}

其它

文件授权(chomd)

在Unix和类Unix系统中,chmod命令用于更改文件或目录的权限。基本用法是:

chmod mode file

这里,mode是用数字或符号表示的权限模式,file是要修改权限的文件或目录。

  1. 数字模式:数字模式允许你以数字形式指定权限。每个数字代表一组权限,分别是文件所有者的权限、与文件所有者同一组的用户的权限、其他用户的权限。每组权限的值是用三位二进制数表示的,分别对应于读取、写入和执行权限。例如,chmod 755 file.txt将文件 file.txt 的权限设置为所有者具有读、写和执行权限,而其他用户只有读和执行权限。

  2. 符号模式:符号模式更加灵活,允许你通过符号来表示权限的添加、删除或设置。符号模式的格式如下:

chmod [ugoa...][[+-=][rwxXstugo...]...][, ...] file...

其中:

  • u 表示文件所有者(User)
  • g 表示与文件所有者同组的用户(Group)
  • o 表示其他用户(Others)
  • a 表示所有用户(All)

rwxXst 分别代表读、写、执行、若有设置 SUID/SGID 位、设置粘滞位。用 + 表示添加权限,- 表示移除权限,= 表示设置权限。例如,chmod u+x file.txt 将给文件所有者添加执行权限。

这些只是 chmod 命令的基础用法,更多高级用法和选项可以在命令的文档中找到。

关于文件编辑

i : 进入编辑。

编辑完成,esc 退出编辑模式,输入 :q 不保存退出,:wq 保存退出, :w! 强制更改。

在非编辑模式时(按 i 之前/ esc之后),d d 删除(光标所在)当前行,p 粘贴至(光标所在)下一行。

根据域名查IP

dig <domain-name>
# 或者
nslookup <domain-name>