必掌握!史上超全 linux 常用基础命令(不含 shell)

一些小知识

  • shell

    一个外壳,也就是 os 与用户之间的桥梁,充当命令解释器,流行的命令解释器有 tcsh shell,csh shell,ksh shell 还有最出名的 bash shell

  • bash

    是一个 GNU 项目编写的 unix shell,也就是 linux 的 shell,其实就是一种命令行解释器,bash 是 shell 的一种,大多数 linux 发行版默认的 shell 就是 bash,除了 bash shell,还有 c shell 等

  • GNU

    全名是 GNU’s Not Unix! 的递归写法,原本是一个自由软件项目项目为了做出 GNU 操作系统,但是不幸的是 GNU 操作系统并未真正完成,因为其内核 Hurd 尚未开发成功,其多半使用了 Linux 内核替代。当前 Linux 操作系统含有 Linux 核心和其他自由软件项目中的 GNU 组件和软件,它们被叫做 GNU/Linux。

    那 GCC 具体开发了啥呢?最常见的比如说我们的 bash shell 工具,我们的 GCC 工具

  • Linux 和 Unix 区别

    Unix 1969年贝尔实验室开发出来,Linux 1991 年芬兰大学生开发出来,Linux 类 Unix,但其源代码不源自任何 Unix 版本,仅仅是一个开源版的模仿 unix 的系统,但是有趣的一点是 Linux 社区开发者中有许多都是 Unix 开发者,系统的相似就不言而喻了。Unix 起初是开源的,后来才以授权方式闭源,后来 BSD 成为了 Unix 的一个开源模仿实现,Linux 也成为了 unix 的开源模仿实现,但是 Linux 发展更好,

  • 环境变量

    linux 环境变量用 : 隔开,windows 中是用 ; 隔开的

  • linux 中的文件与权限

    [d] 表示目录,[-] 表示文件,[l] 表示链接文档,[b] 表示可随机存取装置,[c] 表示一次性读取装置,如键盘鼠标。如常见权限的时候有 drwx–x--x,r:4,w:2,x:1

一些小技巧

  • 输入路径时候,tab 可以自动补全路径

  • 输出命令后,按两下 tab 键,可以查看所有命令

  • 查看环境变量

    # 环境变量中配了哪些
    echo $PATH
    
  • history 查看之前执行了哪些命令

    # 查看之前所有执行的命令
    histroy
    # 查看上三条
    history 3
    # 清空 history 中命令历史记录
    history -c
    
  • sync 同步化写入磁盘

    # 常在关机时上使用,用来把数据同步化写入磁盘
    sync
    
  • type 命令

    # 可以查看命令来源
    type [命令]
    
  • man 命令

    # Manual 手册,查询 linux 中命令详细介绍和使用辅助命令输入
    man [命令]
    

===== 单词 =====

常见 Options 全称

小写 options

# all 所有
-a
# directory 目录,domain name 域名
-d
# fource 强制,filename 文件名
-f
# halt 关停
-h
# inquiry 询问,install 安装
-i
# keep 保持
-k
# list 列出,listen 监听,login-shell 登陆核的方式
-l
# mode 模式
-m
# line number 行号,internet protocol 即 ip 地址
-n
# parents 父节点
-p
# query 查询
-q
# recur 递归,reboot 重启,remove 移除
-r
# tcp 一种连接方式
-t
# update 更新,udp 一种连接方式,user 用户
-u
# version 版本,verbose 冗长信息
-v 
# yes 过程中 yes
-y

大写 options

# Path 路径
-P

常用 CMNDs 全称

# Concatenate 连结
cat
# Change Mode 改变模式
chmod
# Change Owner 改变属主
chown
# Copy 复制
cp
# Network Interfaces Configuring 网络接口配置
ifconfig
# List 列出
ls
# Make Directory 新建目录
mkdir
# Move 移动
mv
# Network Status 网络状态
netstat
# Password 修改密码
passwd
# Print Working Directory 打印工作目录
pwd
# Remove 移除文件或者目录
rm
# Remove Directory 删除目录
rmdir
# Red Hat Package Manager 红帽软件包管理器
rpm
# Switch User 切换用户
su
# Switch User Do 切换用户执行
sudo
# Tape Archive 磁带档案卷
tar
# User's Mask 用户的面具
umask
# Unix Name 系统名称
uname
# User Add 添加用户
useradd
# User Delete 删除用户
userdel
# User Modify 用户修改
usermod
# Who 谁
w
# Yellow dog Updater, Modified 黄狗软件管理器
yum

===== 系统 =====

服务器开关机相关

# 系统服务停掉之后重启 -r
shutdown -r now

# 系统服务停掉之后等待 3min 关机 -h
shutdown -h +3

# 系统服务停掉之后 8:30 关机,并把警告发给所有在线用户
shutdown -h 8:30 '8:30 会关机哦'

# 系统只发警告不关机 -k
shutdown -k now '仅发警告给各个用户,不关机

# 重启
reboot

环境变量配置相关

# 检查环境变量配了哪些
echo $PATH
# 查看 java 可执行文件路径
which java
# 查看含 java 名字文件路径
whereis java
# 在这里配置 java 环境变量
vi /etc/profile
# 更新
source /etc/profile
# 查看配置好的环境变量
echo $JAVA_HOME

系统服务相关知识

# Unix Name获取系统本身信息,默认显示当前操作系统
uname

# 查看服务于端口的映射关系
cat /etc/services

# 服务启动
service xxx start

# 服务重启
service xxx restart

# 服务停止
service xxx stop

# 查看系统上所有服务的运行状态
service --status-all

# System Control 系统控制,其兼容了 service,启动 redis
systemctl start redis

# 查看服务进程状态
ps aux

# 查包含父进程的子进程
ps -ef

# 清空屏幕
clear

# 退出
exit

===== 权限 =====

rwx 权限相关知识

  • rwx其中 r 代表 4,w 代表 2,x 代表 1

  • -rwxr-xr-x解读

    用 1 3 3 3 的形式拆开来看- rwx r-x r-x

    • -表示是文件而不是目录文件
    • rwx表示文件所有者有可读可写可执行的权限
    • r-x表示文件的组的权限是可读和可执行的权限
    • r-x表示其他用户具有可读和可执行的权限
  • 若一个文件目录上一层中没有可读权限,即使里面文件中有可读权限,也是读不到,非要上面文件目录中全支持可读权限才行

  • 文件中不同操作所需要的权限

    • 目录中需要能够使用命令至少需要 --x 可执行权限
    • 目录中想利用 ls 查看目录中文件名,至少需要 r-x 权限
    • 目录中想要 cat 查看某个文件内容,文件至少具有 r-- 权限,目录至少具有 --x 权限
    • 某一个目录中修改一个文件,文件至少需要 rw- 权限,目录至少需要 --x 权限
    • 某一目录可创建文件,目录至少要有 -wx 权限
    • 某一个目录下的文件可执行,目录至少有 r-x 权限,文件至少有 --x 权限
  • umask 文件默认权限

    文件创建时是有默认权限的,默认权限一般是-rw-rw-rw也就是 666

    # User's Mask 显示当前默认被拿掉的权限,显示 0022,看后三位,当前没有被拿掉权限,group 拿掉写权限,others 拿掉写权限,所以默认权限 [rwx] [r-x] [r-x]
    umask
    
  • chmod 和 chown 区别和使用

    # Change Mode 改变模式(u 表示用户,g 表示组,o 表示其他组,a 表示 ugo 所有),给该用户的此文件加上 wx 权限
    chmod u+wx xxx.txt
    
    # 设置组权限是 r--
    chmod g=r-- xxx.txt
    
    # 以数字形式加权 -r--r--r--
    chmod 444 xxx.txt
    
    # Change Owner 改变属主,用来更改某个目录或文件的用户名和用户组
    chown [options] [替换成的用户名]:[替换成的用户组] [文件路径]
    
    # 改变属主,R 可以处理指定目录以及目录下所有文件,这样使得 /xxx/yyy 下文件具有 root 的权限了
    chown -R root:root /xxx/yyy
    

涉及用户相关命令

su -su切换 root 更彻底

sudo命令的执行流程是:当用户执行 sudo 先去/etc/sudoers中查找该用户是否具有执行sudo的权限,若有权限,让用户用自己的密码确认,然后便可执行sudo后的命令。两次执行 sudo 超过 5 min 才要求重新输入一次本用户密码,这是为了保证当前是同一个人在使用

# Switch User 切换用户(使用 non-login shell 方式切换 root,这种方式切换不够彻底,很多原本变量不是依据 root,而是依据原用户)
su
# 使用 login-shell 方式切换 root,建议使用这种方式,切换彻底
su -
# 仅执行一个 root 命令
su - -c
# 切换用户账号(login-shell 方式)
su -l username

# Switch User Do 可以不输入新切换用户的密码即可执行,但是必须是 /etc/sudoers 内的用户才能执行 sudo,下面表示以 username 的身份执行命令
sudo -u username [command]

# User Add 添加用户
useradd [username]

# Password 密码,修改用户密码
passwd [username]

# User Delete 删除用户
userdel -r [username]

# 查询当前登录系统使用的用户
whoami

# 查询当前登录系统使用的用户,显示详细
who am i

# 查看目前系统上的其他用户
who

# Who 谁,查看目前系统上的其他用户,显示详细
w

# 用户,只显示目前哪些用户登录了
users

配置可支持 sudo

想要一些账号也可以执行sudo命令,可以使用visudo去修改/etc/sudoers,不建议使用vi这是因为 sudoers 中是有语法的,使用visudo编辑完,系统会自动检验语法

想要单独设置某一用户可以执行 sudo,需进行如下设置

# Visual editor (Improved) Switch User Do 此命令会调出 /etc/sudoers 文件调出来进行修改
visudo

# 若想让 abcnull 用户可 sudo 执行 root 的所有命令,则在 visudo 之后的 root ALL=(ALL) ALL 这一行下添加如下
# abcnull 表示用户,第一个 ALL 表示来源主机,第二个 ALL 表示此账号可切换成什么身份来执行后续命令,第三个 ALL 表示可执行什么命令
abcnull ALL= (ALL) ALL

想要以用户组的形式设置可执行 sudo,此 sudo 还是要输入当前用户密码,需进行如下设置

# 此命令会调出 /etc/sudoers 文件调出来进行修改
visudo

# 可以找到 %wheel ALL=(ALL) ALL 这一行,这里 %wheel 表示用户组,wheel 相当于 linux 中的管理员组了

# 将 abcnull 加入到 wheel 组中,任何加入到此组的用户豆浆支持 sudo 了
usermod -a -G wheel prol

想要以用户组的形式设置可执行 sudo,不需要输入当前用户密码,需进行如下设置

# 此命令会调出 /etc/sudoers 文件调出来进行修改
visudo

# 可以找到 # %wheel ALL=(ALL) ALL NOPASSWD: ALL 这一行,这里 %wheel 表示用户组,wheel 相当于 linux 中的管理员组了,删除掉 #  即可

# 将 abcnull 加入到 wheel 组中,任何加入到此组的用户豆浆支持 sudo 了
usermod -a -G wheel prol

想让某用户只能执行部分系统任务

# 此命令会调出 /etc/sudoers 文件调出来进行修改
visudo

# 添加用户具有 sudo 执行权限并且设置用户只能执行指定命令,和这个 root 表示 sudo 是切换成什么用户执行,命令需要限制参数
# ! 表示不可执行
# 命令用 , 号隔开
abcnull ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bing/passwd root

想让很多用户执行系统部分任务,写太多的命令路径怎么办,太麻烦了,可以使用别名的方式

# 此命令会调出 /etc/sudoers 文件调出来进行修改
visudo

# 自己写一行用户别名
User_Alias MYUSER = abcnull1, abcnull2, abcnull3, abcnull4

# 为指定别名的用户分配指定的命令
Cmnd_Alias MYUSERCMND = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bing/passwd root

# 然后再进行用户别名的设置 sudo 可执行哪些命令
MYUSER ALL=(root) MYUSERCMND

sudo 用自己密码一次性转化为 su - 的 root 用户

# 此命令会调出 /etc/sudoers 文件调出来进行修改
visudo

# 通过 sudo 输入自己密码而不是 root 密码转化为 root
abcnull ALL=(root) /bin/su -

===== 网络 =====

常用网络相关命令

# 直接显示主机名
hostname

# d 显示机器所属域名,f 显示完整主机名和域名,i 显示机器 ip
hostname -dfi

# Packet Internet Grope 因特网包探索器,用来确认网络连接是顺畅的和查看连接速度信息
ping baidu.com

# Network Interfaces Configuring 网络接口配置,查看系统拥有的所有网络接口
ifconfig -a

# 查看指定网络接口
ifconfig [指定网络接口]

# 激活指定网卡
ifconfig [指定网卡] up

# 关闭指定网卡
ifconfig [指定网卡] down

# Netstat Status 网络状态,tcp/ip 的网络监控工具,a 输出所有 socket 连接,包括正在监听的
netstat -a

# 列出监听的服务状态
netstat -l

# 显示 tcp 连接情况
netstat -t

# 显示 udp 连接情况
netstat -u

# 显示 PID 号
netstat -p

# 以 ip 代替名字显示
netstat -n

===== 目录 =====

目录表示基本知识

对于文件准确性,绝对路径比相对路径好

# 表示此目录
.
# 表示上一层目录
..
# 表示前一个工作目录
-
# 表示目前用户身份所在的主文件夹
~
# 表示 account 这个用户的主文件夹
~account

常用目录相关命令

# Change Directory 切换目录
cd

# Print Working Directory 打印工作目录
pwd
# 显示当前路径,而是用非连接路径
pwd -P
# 显示当前路径
pwd

# Make Directory 新建目录(加 p 可创建多层)
mkdir -p /test1/test2
# 创建目录并分配目录权限(r:4 w:2 x:1,711 表示 rwx--x--x)
mkdir -m 711 test

# Remove Directory 删除目录(加 p 表示连同上层空文件一起删掉)
rmdir -p test2

# List 列出当前目录下文件名
ls
# 详细的列出当前目录下所有文件信息(包括文件权限)
ls -l
# 列出全部文件,包括隐藏文件(开头为 .)
ls -a
# 列出目录本身,而不是露出目录内的文件数据
ls -d

===== 文件 =====

文件移动相关命令

# Copy 复制文件或者目录(复制 a 到 tmp 下并改名 A,i 表示重名时候会询问)
cp -i /a /tmp/A
# 递归持续复制,用于目录复制
cp -r
# 连同文件属性也一同复制过去,而非使用默认属性(备份常用)
cp -p
# 支持文件属性复制,递归复制,时间复制,复制连结文件本身而非档案本身(备份常用)
cp -a

# Remove 移除文件或者目录
rm
# 强制移除文件
rm -f
# 移除文件前会询问
rm -i
# 递归删除(极其危险的命令!)
rm -r

# Move 移动文件或者目录或者更名
mv
# 强制不询问
mv -f
# 移动时询问
mv -i
# 重命名
mv test1 test2

# Touch 修改文档时间或者创建空文档,下面是创建空文档
touch test

文件内容相关命令

# Concatenate 连结,直接查看一个文档内容,-n 打印行号
cat -n /etc/profile

# More 可翻页查看(space:向下翻页,enter:向下滚动一行,/:搜索,q:退出,b:回翻支队文件有用)
more /etc/profile

# Less 可翻页查看,它比 more 弹性更好(space:向下翻页,pagedown:向下翻页,pageup:向上翻页,/:向下查询,?:向上查询,q:退出)
less /etc/profile

# File 查询文件类型
file /etc/profile

文件查找相关命令

# Which 寻找可执行文件
which java

# Whereis 文件名查找
whereis java

# Locate 文件部分名称定位
locate jav

# Find 查找跟时间有关的被修改的文件
find [path] [option] [action]

文件解压相关命令

# Tape Archive 压缩文件或目录变成 xxx.tar.bz2
tar -jcv -f xxx.tar.bz2 [需要被压缩的文件或者目录]

# 查询
tar -jtv -f xxx.tar.bz2

# 解压缩 xxx.tar.bz2 到指定目录目录
tar -jxv -f xxx.tar.bz2 -C [解压缩后存放的目录]

===== 安装 =====

RPM 软件包管理器

如果把 wget 叫做迅雷磁力链接下载器,那么 yum 可以说叫做迅雷应用商店,RPM 就会叫做迅雷应用软件包安装工具

  • dpkg

    此机制最早由 Debian Linux 社区开发出来

    Debian 及其派生,B2D,Ubuntu

  • RPM

    此机制最早由 Ret Hat 公司开发出来

    Fedora,CentOS,SuSE

    RPM 安装只能安装先下载到本机的 RPM 包进行安装,yum 是在线形式进行软件包安装下载

# Red Hat Package Manager 安装,i 表示安装,v 表示显示更详细的安装信息,h 表示安装时候显示安装进度条
rpm -ivh xxx.rpm

# 查询某个软件是否安装
rpm -q xxx

# 查询所有已安装的软件
rpm -qa

yum 应用软件商城

如果把 wget 叫做迅雷磁力链接下载器,那么 yum 可以说叫做迅雷应用商店,RPM 就会叫做迅雷应用软件包安装工具

基于 RPM 包管理,但能从指定源服务器中下载 RPM 包并进行安装,可自动处理依赖关系

# Yellow dog Updater, Modified 列出所有已安装和还可以安装的软件
yum list

# 列出可供本机升级的软件
yun updates

# 列出 xxx 名字的软件
yum list xxx

# 安装,y 表示过程中都是 yes
yum -y install xxx

# 移除
yum remove xxx
发布了124 篇原创文章 · 获赞 40 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/abcnull/article/details/103843808