Linux常用命令汇总(不定时更新)

Linux常用命令

文件基本属性

d目录 –文件 l链接 b块设备 c字符设备
owner/group/others rwx 可读可写可执行 421

chgrp 更改文件属组

chgrp [-R] 属组名 文件名

chown 更改文件所有者,也可同时更改所属组

chown [–R] 所有者 文件名
chown [-R] 所有者:属组名 文件名

-R 递归(recursive)的持续变更
e.g. chown root:root install.log
更改install.log所有者为root,所属组为root

chmod 更改文件9个属性

chmod [-R] xyz 文件名
chmod [-R] u=rwx,g=rwx,o=rwx 文件名

ugoa ±= rwx
e.g. chmod 764 .bashrc 更改.bashrc 权限为-rwxrw-r–
chmod u=rwx,g=rx,o=r test1 test1的权限改为-rwxr-xr–
chmod a-x * 对当前目录下的所有文件,对所有用户都去掉可执行权限

umask 默认权限控制

umask对于新建文件与目录的默认权限很有关系。
文件默认权限是666,目录默认权限是777.
umaskumask -S
比如umask是0022,我们只看后三位,也就是022.这表示剔除g和o的w权限。
设置umask只需umask 002就设置为剔除o的w权限。

用户和用户组管理

用户账号管理

useradd [-cdmgGsu] 用户名
# comment注释性描述 directory指定用户主目录 m创建主目录
# g用户组 G附加组 s用户的登录shell u用户号

useradd –d /home/sam -m sam
创建一个用户sam, 其主目录为/home/sam
useradd -s /bin/sh -g group –G adm,root gem
创建一个用户gem, 该用户的登录shell是/bin/sh; 属于group用户组【主】,也属于adm和root用户组。

userdel [-r] 用户名 # -r 把主目录一同删除

userdel -r sam 删除用户sam在系统文件1中的记录,同时删除用户的主目录。

usermod [-cdmgGsu] 用户名 # 选项等同于useradd

usermod -s /bin/ksh -d /home/z –g developer sam
修改用户sam的登录shell为/bin/ksh, 主目录为/home/z, 用户组为developer.

passwd 用户口令管理

超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。

passwd [-ludf] 用户名
# lock锁定账号 unlock解锁 delete删除口令 force强制下次登录修改
# 默认用户名,修改当前用户的口令

id

id [用户名]
查看特定用户名的用户ID(UID)和所属组ID(GID)

用户组管理

groupadd 选项 用户组 # -g GID 指定新用户组的组标识号(GID)
groupdel 用户组
groupmod 选项 用户组
newgrp root #一个用户同时属于多个用户组,那么用户可以在用户组之间切换

groupmod –g 10000 -n group3 group2
将组group2的标识号改为10000,组名修改为group3。

文件与目录管理

可以使用man命令查看各命令的使用文档 e.g.man cp

ls 列出目录和文件名list files

ls -a列出所有文件,包括隐藏文件
ls -l长数据串列出,等同ll
ls -h数据大小显示为KB或MB等,h human人性化
ls -ltr 从旧到新,长格式排序。 t 修改时间 排序;r 逆序。

cd 切换目录change directory

cd [相对路径或绝对路径]

pwd 显示当前目录print work directory

pwd [-P] # -P :显示出确实的路径,而非使用链接 (link) 路径。
# physical 物理的

mkdir 创建新目录make directory

mkdir [-mp] 目录名称
# m 同chmod的m ; p parent父目录

mkdir -p test1/test2/test3/test4 直接创建test1/test2/test3/test4
mkdir -m 711 test2 权限为rwx–x–x

cp 复制 copy file

cp 来源档(source) 目标档(destination)

cp -i ~/.bashrc /tmp/bashrc 询问是否覆盖
cp -a source dest 相当于-pdr 保留原属性、保留链接属性、递归持续复制
链接
cp -l bashrc bashrc_hlink 实体链接(硬链接)
cp -s bashrc bashrc_slink 符号链接(软链接)
ll可看出具体是哪种链接。

scp 远程复制

scp 在本地和远程计算机之间安全地复制文件
scp /path/to/local/file.txt user@remote_host:/path/to/remote/directory/
将 file.txt 从本地计算机的 /path/to/local/ 目录复制到远程计算机的 /path/to/remote/directory/ 目录。
user 为远程计算机上的用户名,remote_host 为远程计算机的地址。
scp -r user@remote_host:/path/to/remote/directory/ /path/to/local/directory/ 从远程递归复制目录到本地

rz sz 上传 下载

进入指定目录,rz; 覆盖上传 rz -y
sz 下载,后面跟上文件绝对路径
CRT常用

rm 删除 remove

rmdir 仅能删除空的目录,所以只看rm即可。
rm -i 删前询问
rm -rf 递归,强制

mv 移动或重命名

mv [-fiu] source destination
# force inquire update

tee 查看数据 同时将其保存到文件中

从标准输入读取数据,并将其同时写入到标准输出和一个或多个文件中。
echo "Hello, World!" | tee output.txt 将字符串 “Hello, World!” 写入到 output.txt 文件中,并且也会在终端上显示这个字符串。
echo "New line" | tee -a existing.txt 将 “New line” 追加到 existing.txt 文件末尾,而不覆盖文件现有内容。
echo "Data" | tee -i file.txt 在写入 file.txt 时会忽略中断信号(如 Ctrl+C),直到所有数据都被写入。

stat

stat hello.txt可以查看该文件的inode信息,目录也可以这么看。
包括文件的权限、所有者、大小、创建时间、修改时间等

file

file hello.txt
观察文件类型(ASCII,data,binary)

Linux 文件内容查看

cat head tail 等,更常用的还是vim.

Linux vi/vim

命令模式(Command Mode)及 命令行模式(Command-Line Mode)

i 切换到输入模式
:wq! 保存 退出 强制
u 撤销 Ctrl+r 重做上一次撤销的动作

a插入模式 x删除当前光标所在字符 r取代模式
o下插新行 O上插新行
dd删除当前行 yy复制当前行
p粘贴到光标下方 P粘贴到光标上方

:w tmp.txt 5 将第5行写入到tmp.txt

输入模式(Insert Mode)

正常敲字;ESC 切回命令模式。

vi/vim 按键说明

Ctrl+f Page Down 向下移动一页
Ctrl+b Page Up 向上移动一页
0 Home 移动到该行最前面字符处
$ End 移动到该行最后面字符处
G 移动到本文件最后一行
gg移动到本文件最初一行

查找 替换

/ 向下查 ;? 向上查
n 下一个 ;N 上一个

:n1,n2s/word1/word2/g 
# 在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串改为word2 

:100,200s/vbird/VBIRD/g 在100到200行中查找“vbird”并替换为“VBIRD”

更多参见sed命令

vim 环境的变更

:set nu    # 显示行号
:set nonu  # 取消行号
:set encoding # 查看当前编码格式 
# :set encoding=utf8    或终端输入 LANG="en_US.UTF-8" 或 ~/.bashrc 文件

查找

如果查找可执行文件(指令),使用which命令;
如果需要根据多个条件(如文件名、大小、时间、权限等)搜索文件,则使用 find 命令;
只在系统中某些特定目录下找文件,用whereis;
如果需要在大量文件中快速搜索文件名,则使用 locate 命令;
如果需要在文件中搜索字符串,则使用 grep 命令。

which 查指令

which ls查找ls命令所在目录,-a选项是查找所有的目录。
which命令是从PATH中查找到,默认返回第一个。

find 多条件查找文件和目录

find 命令可以在指定的目录下递归查找匹配的文件或目录。
它的使用方式非常灵活,可以根据多个条件来搜索,比如文件名、大小、修改时间、权限等等。但由于在硬盘查,比较慢。
find /home -name '*.txt' -size +1M
在 /home 目录下搜索所有文件名以 .txt 结尾且大小超过 1MB 的文件。

whereis 某些特定目录下找文件

whereis -l列出从哪些目录查。
whereis ifconfig查ifconfig命令所在的目录。
-b只查二进制文件,-m只在帮助手册中查,-s只查source源文件,-u只查其他文件。

locate 更快的查文件名

locate 命令则需要先建立索引,以便更快速地搜索文件。
一般情况下,locate 命令比 find 命令更快,尤其是当需要搜索的文件数量很大时。
find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。
updatedb手工升级数据库; 默认情况下 updatedb 每天执行一次
locate 命令只能按照文件名进行搜索,无法根据其他条件来筛选文件。
locate file.txt可以快速地搜索出系统中所有名字为 file.txt 的文件。
locate -i ~/r忽略大小写搜索当前用户目录下所有以 r 开头的文件
locate只要查询关键字在文件名中就可以。

grep 在文件中查找行

在文件中搜索指定的字符串,并返回匹配的行。
只需要指定要搜索的字符串和文件路径即可。
grep "pattern" file.txt 可以在 file.txt 文件中搜索 pattern 字符串。
grep –e "正则表达式" 文件名-e 查找字段正则表达式
grep -l "example" *-l 查找文件名正则表达式
grep –i "被查找的字符串" 文件名-i 不区分大小写
grep -c "被查找的字符串" 文件名-c 显示行数
grep –v "被查找的字符串" 文件名-v 查找不匹配指定字符串的行

grep只能直接搜索常规的文本文件,而zgrep还可以直接搜索压缩过的文件。

文本处理 awk sed wc

awk

强大的文本处理工具,主要用于模式扫描和文本/数据提取。
以行为单位读取文本,根据用户提供的模式执行相应的动作。
awk和grep配合,一般从匹配的行 获取指定的第几列的数据。

awk '{ print }' file.txt 打印 file.txt 文件中的每一行
awk '{ print $2 }' file.txt 打印每一行的第二个字段(默认以空格或制表符分割)
awk -F: '{ print $1 }' /etc/passwd 以冒号为分隔符,打印 /etc/passwd 文件中的用户名
awk '{ sum += $1 } END { print sum }' file.txt 计算文件中第一列的总和
awk '$1 > 10 { print $1 }' file.txt 打印第一列值大于 10 的行
awk '{ print NR, $0 }' file.txt 打印行号和内容
awk '{ print NF }' file.txt 打印每一行的字段数

使用awk脚本处理文件
awk -f script.awk file.txt

# script.awk  
{  
    if ($1 > 10) {  
        print $1, $2  
    }  
}

sed 流编辑器

对文本进行替换、删除、插入等操作,适合用于批量处理文本文件中的内容。

sed [选项] [脚本] [文件]

sed -i 's/old/new/g' file.txt
选项 i 使 sed 修改文件;s替换,old改为new,g全局,对file.txt

sed -i '$a # This is a test' regular_express.txt
$代表的是最后一行,而 a 的动作是追加,该文件最后新增 # This is a test!

sed '/pattern/d' file.txt
d 删除,删除 file.txt 文件中包含 pattern 的行
sed '/pattern/i new_line' file.txt
i 插入,在 file.txt 文件中包含 pattern 的行之前插入一行 new_line

wc 统计个数

wc filename输出三个数字,分别代表文件中的行数、单词数和字节数
wc -l filename只会输出文件中的行数(-c字节数 -m字符数 -w单词计数)
wc testfile testfile_1 testfile_2 统计三个文件的信息

为了统计行数,很多会用管道符,后面加上wc -l

打包 压缩

tar

tar默认只是打包不压缩,参数-z打包后进行gzip压缩,参数-j打包后进行bzip2压缩。

tar -cvf -xvf -zcvf -zxvf
# c create打包 v verbose显示过程
# f file指定文件 z gzip压缩 x extract还原

tar -zcvf test.tar.gz ./test 得到test.tar.gz备份文件
tar -zxvf file.tar.gz 解压gz, 或gzip -d xxx.gz

zip

zip -q -r html.zip /home/html
将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip
-q 不显示指令执行过程 -r 递归处理
unzip file.zip -d /path/to/destinationzip的解压

磁盘管理

df 磁盘空间占用情况 disk free

df [-ahikHTm] [目录或文件名]
# a all ; h human ; i inode
# k kB ; H M=1000K代替M=1024k ; T type ;m MB

df -h将系统内所有的文件系统列出来,容量结果以易读的容量格式显示
df -aT将系统内的所有特殊文件格式及名称都列出来
df -h /etc将 /etc 底下的可用的磁盘容量以易读的容量格式显示

du 磁盘空间使用量 disk used

du [-ahskm] 文件或目录名称 #s 仅显示指定目录或文件的总大小,而不显示其子目录

du -h --max-depth=1 /root/logs 限制显示深度为一级
du -sh * 列出当前目录下所有文件和子目录的总大小 并以人类可读方式显示。
直接输入 du 没有加任何选项时,则 du 会分析当前所在目录里的子目录所占用的硬盘空间。
与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。

fdisk用于磁盘分区

fdisk [-l] 装置名称 # -l :输出后面接的装置所有的分区内容。
# 若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。

磁盘挂载与卸除

Linux下,mount挂载的作用,就是将一个设备(通常是存储设备)挂接到一个已存在的目录上。访问这个目录就是访问该存储设备。

mount /dev/sdb1 ~/Share/ 把新硬盘的区sdb1挂载到工作目录的~/Share/文件夹下
umount /dev/sdb1 卸载/dev/sdb1

内存

free

查看系统内存使用情况。
free -h
第一行:显示物理内存的总量、已使用量、空闲量和缓冲区/缓存量。
第二行:显示交换空间的总量、已使用量和空闲量。

进程

ps

ps -ef 全部进程,全格式
USER:进程的用户名;
PID:进程的 ID;
PPID:父进程的 ID;
C:进程的 CPU 占用率;
STIME:进程的启动时间;
TTY:进程所属的终端(如果有);
TIME:进程的 CPU 时间;
CMD:进程的命令行。

top 实时性能监控工具

查看系统状态和进程信息。实时显示CPU占用率 内存占用率 进程列表等。

1系统总体信息:这部分显示了当前的系统时间、已运行时间、登录用户数量、平均负载(1min,5min,15min)等信息。
2任务(进程)信息:这是 top 命令的主要部分,它列出了当前正在运行的进程。这些进程按照 CPU 使用率进行排序,默认情况下是降序排列。每行显示的信息包括进程ID(PID)、用户、CPU使用率、内存使用率、虚拟内存使用情况、常驻内存使用情况、进程状态、命令名等。
3CPU状态:这部分显示了CPU的使用情况,包括用户空间使用率、系统使用率、空闲率、等待IO的百分比等。
4内存状态:这里显示了系统的总内存、已用内存、空闲内存、缓存和缓冲区的使用情况。

下半部分以进程为维度显示资源的占用情况。
PID:进程 ID。
USER:进程所有者。
PR:进程优先级 NI:NICE 值,NICE 值越小,优先级越高。
VIRT:使用的虚拟内存大小,单位 KB。
RES:当前使用的内存大小,单位 KB。
SHR:使用的共享内存的大小,单位 KB。
S:进程状态。
%CPU:更新时间间隔内进程所使用的 CPU 时间的百分比。
%MEM:更新时间间隔内进程所使用的内存的百分比。
TIME+:进程使用的 CPU 时间,精确到 0.01s。
COMMAND:进程名称。

q退出top,1切换单核模式,p按CPU使用率排序,m按内存使用率排序。
系统负载:过去一段时间,平均有几个进程(线程)争强时间片。理想情况下,略低于CPU核数。

uptime

用于显示系统的当前运行时间以及系统的平均负载。

13:42:07 up 1 day, 2:30,  1 user,  load average: 0.05, 0.10, 0.15
# 当前时间 已运行时间 一个用户,平均负载(1,5,15min)

网络

curl

curl 是一个在命令行下工作的文件传输工具,它支持文件的上传和下载。以下是一些 curl 的示例用法:
curl https://www.example.com 将从 https://www.example.com 下载内容并显示在终端上。
curl -X POST -d "param1=value1, param2=value2" https://www.example.com/post
https://www.example.com/post 发送一个 POST 请求,其中 param1 和 是要发送的参数。

netstat 网络统计

netstat -anptul # all number PID TCP UDP listen监听

netstat -ntlp正在监听的 TCP 端口和与之关联的进程

网络连通性

telnet IP PORT
ping IP

nohup nc -lk 端口 & 模拟启动端口并运行在后台
nohup 的名字来自 “no hang up” 的缩写,它最初是为了防止远程会话挂断时命令被终止而设计的。

其他

date 日期与时间 date +"%Y-%m-%d %H:%M:%S"
cal 日历 cal [month] [year]
bc 计算器 scale=3,小数保留三位;quit退出echo "scale=N;100/3"|bc

开关机

  • exit 登出
  • sync将数据同步写入硬盘
  • shutdown 关机
  • reboot 重启
  • poweroff 断电
  • halt 停机,待机

热键

  • Tab 补全
  • Ctrl+c 中断目前程序
  • Ctrl+z 挂起当前程序(fg带回前台运行)
  • Ctrl+d 相当于exit

特殊符号

  • ; 分号,连续指令的下达;可以在一行写入多重指令,依序执行。
  • | 管道符,上一个指令的输出 作为 下一个指令的输入。

  1. 主要是/etc/passwd, /etc/shadow, /etc/group等。 ↩︎

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值