Linux 常用命令 常用选项

Linux命令太多眼花缭乱的,在这整理一下我觉着最基础常用的命令及其选项。
// 文中还有几个”传送门“,后续会”打通“

一般语法形式:命令 [选项] (s) 参数(s)

本文中形式:命令 [选项] (s) 参数(s) 指令解释 // 每条最后的汉字部分都是解释,前面的可能会有缺省

首先是这几个命令用法

1.help [命令] 详细帮助信息
help -d 输出每个主题的简短描述
help -m 以伪 man 手册的格式显示使用方法

2.man [命令] 查看相应的手册
man -w [名称] 查看对应手册位置

3.指令 --help

大部分命令可以在这三种方法中找的帮助信息,在其中一种方法里没有找到就找另外两种方法,再没有就百度

poweroff 关闭系统

shutdown 关闭或重启系统
 直接看例子:
 shutdown -r now 立即重启系统
 shutdown -r 02:11 2点11重启系统
 shutdown -h now 立即关闭系统
 shutdown -h +45 45分钟后关闭系统
 shutdown -c 取消运行shutdown

halt 关闭系统 (和poweroff区别就是halt不会断电,在虚拟机里试试就看出来了)

reboot 重启

init 切换系统运行级别
 init 0 关闭系统
 init 6 重启系统

vi [选项] [文件]

vim

vi vim详细看这:

pwd 显示当前路径

cd [路径] 更改工作路径 // change directory

ls 列出当前目录下所有子目录和文件信息
 -C 多列输出,纵向排序
 -R 递归列出遇到的子目录
 -a (all) 列出所有文件,包括以 “.” 开头的隐含文件
 -A 显示除 “.” 和 “…” 外的所有文件。
 -c 使用“状态改变时间”代替“文件修改时间”为依据来排序(使用“ -t ”选项时)或列出(使用“ -l ”选项时)。
 -u 使用最近访问时间代替最近修改时间为依据来排序(使用 “ -t ”选项时)或列出(使用“ -l ”选项时)。
 -r 逆序排列。
 -t 按时间信息排序。
 -1 单列输出。
 -l 除每个文件名外,增加显示文件类型、权限、硬链接数、所有者名、组名、大小(byte)、及时间信息(如未指明是其它时间即指修改时间)。对于6个月以上的文件或超出未来1时的文件,时间信息中的时分将被年代取代。
 dir ( 也被安装为命令 d ) 等同于“ ls -C ”;即,文件缺省是多列输出,纵向排序。
 vdir ( 也被安装为命令 v ) 等同于“ ls -l ”;即,文件缺省是按长格式输出。

dir 和 ls作用一样, 用ls输出的有颜色,试试就看出来了

dirs 显示当前目录
例:

[root@localhost eclipse-workspace]# dirs
~/eclipse-workspace

dirname 名称 输出去除尾部’/'字符部分的名称
 dirname /usr/bin/ -> /usr
 dirname dir1/str dir2/str -> dir1 dir2
 dirname stdio.h -> .

basename [选项] 名称 [后缀] // 去除前面的部分
 basename /usr/bin/sort -> sort
 basename include/stdio.h .h -> stdio
 basename -s .h include/stdio.h -> stdio
 basename -a any/str1 any/str2 -> str1 str2 (必须有-a 和dirname多个参数的情况区别)

touch [选项] 文件名 创建文件
 -c, --no-create 不创建文件如果不存在的话
touch [选项] 文件名 修改时间
 -a 修改文件的访问时间atime
 -m 修改文件修改时间mtime
 -r file 将参照文件file相应的时间戳记的数值作为指定文件时间戳记的新值( use this file’s times instead of current time)
 -t [[CC]YY]MMDDhhmm[.ss] 用[[CC]YY]MMDDhhmm[.ss]将当前时间改为指定时间
  // [[CC]YY]MMDDhhmm[.ss]从左至右分别是月份,日期,小时,分钟,可选的世纪和年,以及可选的秒
 -d, --date=字符串 使用指定字符串表示时间而非当前时间
 (-d, --date=time 使用时间值 time 代替指定文件的戳记值.可以包含月份 名,时区名以及`am’和 `pm’等等)

mkdir 目录名 创建目录 默认权限755
 -m 设置权限
 -p 创建多级目录
 (-p, --parents 为所给出的目录建立丢失了的父目录)

rmdir 删除空目录。如果[目录]由多个路径名组成,从最后一个路径名开始依次删除,如果所给出的目录不为空,则报错,删除非空目录可以用rm -r
 -p [目录] 递归删除空目录,当子目录删除后其父目录为空时,父目录一并被删除(如果你在某上一级目录中执行的操作的话,你在的这一级空目录不会被删除,递归到这停止)

cp 源文件|目录 目标文件|目录 复制文件或目录
 Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
 -r -R (recursive)递归复制
 -l (link)不复制只链接文件 硬链接
 -f, --force 在覆盖目标文件前不给提示要求用户确认
 -i,–interactive(交互的,互动的) 在覆盖目标文件前给出提示要求确认

install 复制文件和设置属性
 install 和cp差不多 但比cp还多一个-m选项
 -m, --mode=模式 自行设置权限模式(像chmod)
 例:install -m 744 a.txt /opt

mv 源文件|目录 目标文件|目录 改名,移动
 Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
 源可以有多个 [root@localhost opt]# mv a.txt b.txt module
 -f, --force 覆盖前不询问
​ -i, --interactive 覆盖前询问
​ -n, --no-clobber 不覆盖已存在文件
​ 如果指定了-i、-f、-n 中的多个,仅最后一个生效。
 -u, --update move only when the SOURCE file is newer than the destination file or when the destination file is missing

rm 删除文件或目录
 -f, --force ignore nonexistent files and arguments, never prompt
 -i prompt before every removal
 -r, -R, --recursive remove directories and their contents recursively
 这类比前面的选项就好了

file du tree ln 直接上使用的例子:

​ file 文件名 查询文件类型

​ du 文件|目录(s) 查看文件目录磁盘占用量
​ du 查看当前目录的磁盘占用量

​ tree 目录 以树状图逐级列出目录的内容
​ tree 当前目录的树状图

​ ln 源文件 链接文件 创建硬链接
​ ln -s 源文件 链接文件 创建软链接 (符号链接)

stat 显示文件或文件系统状态
 stat [选项] 文件|目录
 -f 显示文件或目录所在文件系统的状态信息
 -t 简明形式显示
 例:

[root@localhost spark-local]# stat README.md
文件:"README.md"
大小:4488       块:16         IO 块:4096   普通文件
设备:802h/2050d Inode:6419561     硬链接:1
权限:(0644/-rw-r--r--)  Uid:( 1000/   a2416)   Gid:( 1000/   a2416)
环境:unconfined_u:object_r:usr_t:s0
最近访问:2021-10-18 23:06:59.978664827 +0800
最近更改:2020-06-06 21:34:17.000000000 +0800
最近改动:2021-10-10 19:09:47.293271005 +0800
创建时间:- 

scp 安全复制(远程文件复制程序)
 usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 … [[user@]host2:]file2 这用法看这很乱,看下面的例子。
  -r 递归复制整个目录。
 例:scp -r /opt/module/jdk a2416@192.168.1.111:/opt/module
 // a2416是用户名,目标主机上的用户,192.168.1.111是目标主机
 这个例子是是将本主机的文件jdk传给192.168.1.111。scp还可以将其他主机的文件传给自己,或将其他主机的文件传给其他主机,就和cp命令类似,就是在写参数地址时要加上用户和主机,有权限就行。

还有个rcp 没用过

rsync (remote sync)是一个文件传输程序,能够有效的远程更新
(sync是一个将缓冲文件写入磁盘中的命令。如果学Hadoop或spark或其他的需要同步文件等操作的,会做一个集群分发脚本xsync)
 -v, --verbose 显示复制过程
 -a,–archive 存档模式; = -rlptgoD // 下面是rlptgoD 一个-a选项就够用了
 -r, --recursive recurse into directories 递归复制
 -l, --links copy symlinks as symlinks 将符号链接复制为符号链接
 -p, --perms preserve permissions 保留权限
 -t, --times preserve modification times 保留修改时间
 -g, --group preserve group 保留组
 -o, --owner preserve owner (super-user only) 保留所有者(仅限超级用户)
 -D same as --devices --specials 保留设备信息
 例:rsync -av hadoop-3.1.3/ a2416@hadoop103:/opt/module/hadoop-3.1.3/

cat [选项]… [文件]… // 只读
 -b, --number-nonblank 对非空输出行编号
 -E, --show-ends 在每行结束处显示"$"
 -n, --number 对输出的所有行编号
 -s, --squeeze-blank 不输出多行空行 (多行空格替换为一行空格)

more 分页显示文本文件

less 回卷显示文本文件

more less 区别用法详细看这:

head 显示文件前若干行 默认10行
 -n K 显示前K行
 -n -K 显示除了最后K行以外的所有内容
 -c K 显示前K字节
 -v 显示文件头

tail 显示文件最后若干行 默认10行
 使用方法类比head

grep 查找符合条件的字符串
 grep [选项]… 查找模式 [文件]…
 -i, --ignore-case 忽略大小写
 -n, --line-number 输出的同时打印行号
 -H, --with-filename 为每一匹配项打印文件名
 例:grep -n ‘ss’ a.txt 在a.txt文件中搜索匹配‘ss’字符串并加上行号
   gerp ‘ss’ a* .txt 查找所有以a开头的txt文件里的’ss‘字符串
   history | grep ls 查找历史命令中的ls命令(history命令和 管道符| 下面写)

find 列出所有符合条件的文件
 基础用法:
 find 文件名
 不基础用法:
 find --help 值得你拥有(使用find时选项很重要,需要详细了解的可以去看help命令文档)

cal 显示日历信息 了解了解练着玩玩,还挺好玩的
 用法:cal [选项] [[[日] 月] 年]
 选项:
 -1, --one 只显示当前月份(默认)
 -3, --three 显示上个月、当月和下个月
 -s, --sunday 周日作为一周第一天
 -m, --monday 周一用为一周第一天
 -j, --julian 输出儒略日(儒略日是一种不记年·月,只记日的历法)
 -y, --year 输出整年

date 超级用户可以显示和设置系统日期和时间 一般用户可以显示日期和时间
 -d, --date=STRING display time described by STRING, not ‘now’ 显示字符串时间
 -r, --reference=文件  显示文件指定文件的最后修改时间
 -s, --set=STRING set time described by STRING 设置时间
date 显示日期和时间
 date +‘%m’ 显示月份 // 指定格式输出 显示时间是可以使用时间域
 date “+%Y-%m-%d %H:%M:%S”(功能描述:显示年月日时分秒)
 date -s 20201103 设置日期为2020年11月03日

clockdiff 主机之间测量时钟差
 例:

[root@localhost ~]# clockdiff 192.168.219.100
..
host=192.168.219.100 rtt=562(280)ms/0ms delta=18ms/18ms Tue Oct 19 22:03:18 2021

sleep 暂停指定时间
 'm’表示分钟,'h’表示小时,'d’表示天。给定两个或多个参数,暂停时间为参数值的和。
 例:sleep 20 暂停20秒
   sleep 2h 暂停2小时

> 输出重定向 : 会将原来的文件的内容覆盖

>> 追加: 不会覆盖原来文件的内容,而是追加到文件的尾部。
 例: history>a.txt cal>>a.txt

| 管道符
 “|”左边命令的输出就会作为“|”右边命令的输入,此命令可连续使用,第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。
 例:

[root@localhost ~]# ls | grep b  
b.txt
b.txt.zip

例子中ls命令列出当前目录下文件和目录通过管道符传给grep命令进行筛选查找名称包括’b’的文件或目录

xargs(英文全拼: eXtended ARGuments)xargs 作用有很多,详细去看Linux xargs 命令和这xargs 命令教程
 在这只说它的一个作用,将左侧命令的输出作为右边命令的参数(对我现在刚入门的水平来说,我觉着这个命令简直了,真的很有用)
 例:

[root@localhost a]# find *c*
abc.txt
c
ffc
[root@localhost a]# find *c* | xargs rm -rf 

找到所有包含’c’的文件或文件夹全部删掉

source 在当前shell环境中从指定文件读入和执行命令
 例:source /etc/profile

history 查看命令历史记录
 -c 删除所有条目从而清空历史列表。
 例:history 查看所有历史命令
   history 10 查看最近10条命令
   history -c 清空命令历史记录

fc 从历史列表中列出或者重新编辑并执行命令
 -l  列出行而不编辑
 -n 列举时省略行号
 -r 反转行的顺序(最新行在前)

fc 详细看这:Linux_fc命令用法_-s选项

alias 定义或显示别名
 用法:alias 别名=命令
 例:alias lsl=‘ls -l’ 定义别名ok // 可以看看自己的已定义的别名,里面可能有个alias ll=‘ls -l --color=auto’
(修改根目录下的.bashrc文件可以永久定义别名)
   alias 查看所有已定义的别名

unalias 取消别名
 例:unalias lsl

export 显示或设置环境变量
 -n 删除指定的环境变量
 -p 列出所有的环境变量
 例:export -p 列出所有环境变量
   export NIHAO=2 设置环境变量NIHAO的值为2
   export -n NIHAO 删除环境变量NIHAO
 // 一开始学Linux时配置环境变量时,比如jdk,都会用到export,打开profile文件,然后加入 export PATH="$PATH:/opt/jdk/bin"

set 显示和设置shell变量
 set A 10

unset 删除变量或函数
 unset A

以上三个命令在shell编程时常用

env 查看和设置环境变量

passwd 给用户指定或者修改密码
 -d 删除用户密码
 例:passwd lala 给lala设置密码
   passwd -d lala 删除lala的密码

useradd 创建用户 // 创建的用户是锁定的,需要用passwd设置密码后使用
 还有个adduser 和它用法一样
 例:useradd lala 创建一个lala用户 // 打开/home 然后会看到一个叫lala的文件夹

usermod 修改用户
 -g, --gid GROUP 强制使用 GROUP 为新主组
 例:user -g mm lala 将lala修改到mm组

userdel 删除用户
 -r, --remove 删除主目录和邮件池
 -f, --force 强制删除

groupadd 创建组群
 例:groupadd mm 新建mm组

groupmod 修改组群

groupdel 删除组

gpasswd 设置组密码或向组中添加或删除用户

以上都是useradd、usermod、groupadd、groupmod、gpasswd的基础用法

用户和组的操作详细看这:

groups 显示指定用户的组

id 显示用户的uid gid 选项有-u -G -g
 例:

[root@localhost home]# id lala
uid=1008(lala) gid=1008(lala) 组=1008(lala)

su 切换其他用户
 例:su lala 切换到lala用户

sudo 以另一个用户执行命令
 菜鸟教程是这么说的:Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
 也就是说临时赋予当前用户root权限
 比如我们现在不是超级用户,需要编辑某个只有root才有权限编辑的文件,就可以使用sudo,比如:
 sudo vim profile

w 详细查询已登录当前计算机的用户
who 显示已登录当前计算机的用户的简单信息
whoami 显示与当前的有效 用户ID相关联的用户名
logname 显示当前用户的登录名称
users 用单独的一行显示出当前登录的用户
last 显示近期用户登录情况
lastb 列出登录系统失败的用户信息
lastlog 查看用户上次登录的时间

chmod 改变文件和目录的访问权限
 -R, --recursive 递归改变目录及其所有子目录的文件的权限
 例:chmod -R 744 a 递归改变文件夹a的权限

权限操作详细看这:

chown 更改文件和目录的用户所有者和组所有者
 -R 递归将下级的所有文件和目录一起更改
 例: chown -R lala a 将文件夹及其下级目录的用户所有者改为lala
   chown .lala a 将文件a的组改为lala
   chown :lala a 将文件a的组改为lala

chgrp 更改文件或目录的所属组
 例:chgrp lala a

getfacl 查看文件的ACL
 例:

[root@localhost ~]# getfacl a
# file: a
# owner: lala
# group: lala
user::rwx
group::r--
other::r--

还有setfaclchacl命令,–help 值得你拥有

lsattr -a -R -v 可以执行试试

接下来是几个压缩和解压缩命令

tar 将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件。
 例:tar 常用的两种:
   tar -zcvf a.tar.gz a1.txt 将a1.txt压缩为a.tar.gz
   tar -zxvf a.tar.gz [目录] 将a.tar.gz解压到[目录]下(缺省目录的话就是解压到当前目录;a.tar.gz文件可以通过 目录/a.tar.gz确定,不一定是在a.tar.gz的父目录下解压,啊,应该不用我说吧,多嘴了)

gzip 压缩或解压缩gzip文件
 例:gzip b.txt 压缩b.txt文件
   gzip -d b.txt.gz 解压b.txt.gz文件

gunzip 解药gzip文件
 例:gunzip b.txt.gz

zip 压缩zip文件
 例:zip b.txt.zip b.txt 将文件b.txt压缩为b.txt.zip

unzip 解压缩zip文件
 例:unzip b.txt.zip 解压b.txt.zip文件

压缩解压,查看压缩文件等更多操作看这:

rpm RedHat Package Manager(RedHat 软件包管理工具)
 例:rpm -i XXX.rpm 安装XXX.rpm

yum 管理器
 例:yum install XXX 安装XXX

rpm yum详细看这

Ubuntu用的是apt

ps 报告当前进程的快照。显示有关选择活动进程的信息。如果你想要重复更新选择和显示的信息,使用top代替。
 常用形式:ps -aux

top 显示Linux进程。top程序提供了一个运行系统的动态实时视图。 它可以显示系统摘要信息,以及当前由Linux内核管理的进程或线程列表。 显示的系统摘要信息的类型以及为进程显示的信息的类型、顺序和大小都是用户可配置的,并且该配置可以在重启时保持不变。

kill 终止进程 通过进程号杀死进程
 -9 强制终止
 例:kill -9 1000

killall 通过进程名称杀死进程
 -u 杀死指定用户的进程
 例:killall 进程名
   killall -u lala 杀死用户lala的进程

ntsysv 配置服务在系统启动时自启

chkconfig 为系统服务更新和查询运行级别信息

用法:chkconfig [--list] [--type <type>] [name]
     chkconfig --add <name>
     chkconfig --del <name>
     chkconfig --override <name>
     chkconfig [--level <levels>] [--type <type>] <name> <on|off|reset|resetpriorities>

​ 例:chkconfig --list 查看不同运行级别下个服务开机启动情况
​ centos7里chkconfig有变动,在这就不深究了,可以执行下面的
​ systemctl list-unit-files 列出 systemd 服务
​ systemctl list-dependencies [target] 查看在具体 target 启用的服务

service 运行System V init脚本
 选项: --status-all 查看系统中所有服务现在的运行状态
 start 启动服务
 stop 停止服务
 restart 重启服务
 status 查看状态
 reload 重新载入服务配置
 例:service iptables start 启动防火墙
 注意:centos7中 service和iptables都有所变动,centos7中使用 systemctl 和 firewalld

firewalld具体看这:

systemctl 查询或发送控制命令到systemd管理器。
 例:systemctl restart firewalld 重启防火墙

crontab 针对个人用户维护crontab文件
 -e edit user’s crontab 编辑用户的crontab
 -l list user’s crontab 列出用户的crontab
 -r delete user’s crontab 删除用户的crontab

crontab具体操作看这

ifconfig 显示和配置网络接口

ifdown <设备名> 关闭网络接口
 例:ifdown ens33

ifup 开启网络接口
 例:ifup ens33

ping 测试与目标计算机中间的连通性
 例:ping www.baidu.com
   ping 192.168.1.100

mtr 进行网络诊断
 例:mtr 192.168.1.100

netstat 查看系统网络情况
 常用选项例子:netstat -anp | more
        netstat -tulnp

netstat详细看这:

ip 显示/操作路由、设备、策略路由和隧道
 例:ip address 查看网卡协议地址
   ip address show ens33 查看网卡ens33

setup 文本模式系统配置工具

nmap详细看这:

ssh 远程登录主机

还有一些试着玩玩的命令:

lsmod 显示内核中模块的状态

lscpu 显示CPU信息

nproc 显示当前进程可用CPU数

lspci 显示所有PCI设备

lsscsi 显示SCSI设备

lsusb 显示USB设备

dmidecode 查看服务器型号,主板序列号,系统系列号,内存信息等

arch 显示计算机主机的体系结构

sestatus 查看当前SELinux状态

lsblk 显示块设备

time ls /root 查看执行ls /root命令的资源使用时间

uptime 显示系统已经运行的时间

ipcs 提供IPC设备信息

ssh-keygen 创建ssh密钥

sshagent 存储用于公钥验证的私钥

ssh-add 添加RSA或DSA身份的认证代理

ssh-keyscan 收集主机公钥

echo 在显示器上显示文字

printf 格式打印数据

clear 清屏 快捷键Ctrl+L 也行

type 显示命令类型

mysql -uroot -p 登录mysql数据库

hostname 显示或修改计算机主机名

本文除参考命令帮助文档外,还参考了《Linux命令应用大词典》於岳编著

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

臭屁虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值