Linux常用命令

小技巧

ctrl + shift + = 放大终端窗口的字体显示
ctrl + - 缩小终端窗口的字体显示
一部分参考了网上的一些文章

内部命令也称shell内嵌命令,这些命令是写在bash源码的builtins里面的,由shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中,不需要临时去磁盘加载命令。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。

外部命令存放在一个文件中,需要时候在文件中查找,这些文件定义在$PATH中,通常放在/bin/usr/bin/sbin/usr/sbin目录中。

我们可以通过enable命令来查看内部命令

[root@localhost ~]# enable
enable .
enable :
enable [
enable alias
enable bg
enable bind
enable break
enable builtin
enable caller
enable cd
enable command
enable compgen
enable complete
enable compopt
enable continue
enable declare
enable dirs
enable disown
enable echo
enable enable
enable eval
enable exec
enable exit
enable export
enable false
enable fc
enable fg
enable getopts
enable hash
enable help
enable history
enable jobs
enable kill
enable let
enable local
enable logout
enable mapfile
enable popd
enable printf
enable pushd
enable pwd
enable read
enable readarray
enable readonly
enable return
enable set
enable shift
enable shopt
enable source
enable suspend
enable test
enable times
enable trap
enable true
enable type
enable typeset
enable ulimit
enable umask
enable unalias
enable unset
enable wait

帮助命令

help

获取shell内置命令的帮助信息,不能用于外部命令.

help [-dms] [pattern...]

例子:

一、用于查看shell内建命令的简要信息,帮助信息中显示有该命令的简要说明以及一些参数的使用以及说明。

[root@localhost ~]# help 
GNU bash, version 4.4.19(1)-release (x86_64-redhat-linux-gnu)
These shell commands are defined internally.  Type `help' to see this list.
Type `help name' to find out more about the function `name'.
Use `info bash' to find out more about the shell in general.
Use `man -k' or `info' to find out more about commands not in this list

二、外部命令的 help

ls --help

man

man 命令,它是 Manual pages 的缩写,它是 Linux 系统中在线软件文档的一种普遍的形式,其内容包括计算机程序(包括库和系统调用)、正式的标准和惯例,抽象的概念等。获取帮助信息,没有内部命令与外部命令的区分。

man [OPTION...] [SECTION] PAGE...

例子:

man man 


man 1 ls # 如要查看相应区段的内容,就在 man 后面加上相应区段的数字即可 

info

如果你感觉man 还是不够, 那么你可以使用info,通过info可以获取到更加详细的信息。

info [OPTION]... [MENU-ITEM...]

例子

info ls 

文件目录

cd

用于更改当前目录

cd -      #返回长层目录
cd ..     #返回上层目录
cd 回车    #返回主目录
cd /      #根目录
cd ~      #回到自己的家目录

ls

ls 用于 列出相关目录下的所有目录文件

格式: ls [选项] [目录名]

-a 列出包括.a开头的隐藏文件的所有文件
-A 通-a, 担不列出"."和".."
-l 列出文件的详情信息
-c 根据ctime排序显示
-t 根据修改时间排序
--color[=WHEN] 用色彩辨别文件类型 WHEN可以是 'never', 'always', 'auto'其中之一
白色: 表示普通文件
蓝色: 表示目录
绿色: 表示可执行文件
红色: 表示压缩文件
浅蓝色: 链接文件
红色闪烁: 表示连接文件有问题
黄色: 表示设备文件
灰色: 表示其他文件

pwd

查看当前所属路径

mkdri

创建目录

格式: mkdir[选项] 目录...

参数

-p 递归创建目录, 若父目录不存在则依次创建
-m 自定义创建目录的权限, eg: mkdir -m 777 hehe
-v 显示创建目录详情

例子

mkdir -p /home/zhaoming/www 

rmdir

删除空目录

参数

-v  显示执行过程
-p  若自父母删除后父目录为空则一并删除

例子

rmdir -p /home/zhaoming/www

touch

创建空文件或者更新文件时间

格式: touch [选项] 文件

参数

-a 只修改存取时间
-m 只修改变动时间
-r eg: touch -r a b ,使b的时间和a相同
-t 指定特定的时间 eg: touch -t 201211142234.50 log.log
-t time [[CC]YY]MMDDhhmm[.SS], C:年前两位

例子

touch index.html

cp

将源文件复制到目标文件,或者将多个源文件复制到目标目录

格式: cp [选项]源文件或目录

参数

-r -R 递归复制该目录以及子目录内容
-p 连同档案属性一起复制
-f 不询问而强制复制
-s 生成快捷方式
-a 将档案的所有特性都以复制

例子

cp -r test/ newdir # 将当前目录下的test文件夹复制到新的newdir下

mv

移动或重命名文件

格式: mv [选项] 源文件或目录

参数

-b 覆盖前做备份
-f 如不询问而强制覆盖
-i 如存在咨询问是否覆盖
-u 较新才覆盖
-t 将多个源文件移动到同意目录下, 文件参数在后

例子

mv oldFilename.txt newFileName.txt # 将文件oldFileName.txt 更名为 newFileName.txt
mv fileName.txt /home/zhaoming/www # 将文件fileName.txt 移动到/www/zhaoming/www 

注意

如果目录存在,则该命令执行移动操作。

如果目录不存在,则该命令执行修改操作。

rm

删除文件

格式: rm [选项] 文件

参数

-r 删除文件
-f 删除不提示
-i 删除提示
-v 详细显示进行步骤

例子

rm -rf dirName # 递归删除目录下的所有文件

所以这里知道rm -rf /* 的危害了吧

rm -r * # 删除当前目录下的所有文件以及目录

注意

文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。

cat

查看文件内容

格式: cat[选项][文件]...

参数

-n 或 --number   # 编号文件内容再输入
-E   # 在结束行提示$
-b 或 --number-nonblank # 和 -n 相似,只不过对于空白行不编号。 

例子

cat -number test.txt

我最常用的

cat err.log | tail -n 20  # 查看err.log的最后20行

cat err.log | head -n 20 # 查看err.log 前20行

cat err.log | tail -n +20 # 从第20行开始显示(包含第20行)后面的所有行:

cat err.log | head -n -20 # 从倒数第20行开始显示(不包含倒数第20行)之前的所有行

cat err.log | head -n 500 | tail -n +100 
cat err.log | tail -n +100 | head -n 401
sed -n '100,500p' err.log # 这三个都是 显示100行到500行

echo

显示一行文本, 用于字符串的输出

参数

-n 输出后不换行
-e 遇到转义字符特殊处理

例子

echo 'he\nhe'      # 显示 he\nhe
echo -e 'he\nhe'   # 显示he{换行了} he
echo 111 > 1.txt   # 可以将创建1.txt内容为111
echo "\"It is echo\"" # "It is echo"
echo $PWD          # / 输出变量
echo -e "OK! \n"   # ok! 换行
echo `date`        # 显示命令内容  Tue Oct 13 19:48:24 CST 2020

>>

重定向

> 列表的内容写入到文件中(覆盖源文件)

>>列表的内容追加到文件末尾

例子

[root@localhost]# ll > 1.txt
[root@localhost]# cat 1.txt 
total 0
-rw-r--r--. 1 root root 0 Oct 13 20:00 1.txt
-rw-r--r--. 1 root root 0 Oct 13 20:00 index.txt
ls -l >> a.txt

tac

反向显示, 查看文件内容,倒序

格式 tac [选项] fineName

例子

[root@localhost]# touch test.txt
[root@localhost]# vim test.txt 
[root@localhost]# cat test.txt 
123
456
[root@localhost]# tac test.txt 
456
123

more

按页查看文章内容, 从前向后读取文件, 因此在启动时就加载整个文件

参数

+n 从第n行开始显示
-n 每次查看n行数据
+/String 搜寻String字符串位置, 从其前两行开始查看
-c 清屏在显示
-p 换页时清屏

操作

空白键 (space):代表向下翻一页;

Enter:代表向下翻『一行』;

q:代表立刻离开 more ,不再显示该文件内容。

Ctrl+F 向下滚动一屏

Ctrl+B 返回上一屏

= 输出当前行的行号

:f 输出文件名和当前行的行号

实例

more test.txt

less

可前后移动地逐屏查看文章内容, 在查看前不会加载整个文件

参数

-m  # 显示类似于more命令的百分比
-N  # 显示行号
/   # 字符串: 向下搜索"字符串"的功能
?   # 字符串: 向上搜索"字符串"的功能
n   # 重复前一个搜索 (于 / 或 ? 有关)
N   # 反向重复前一个搜索(与 / 或 ? 有关)
b   # 向后翻一页
d   # 向后翻半页

操作

空白键      # 向下翻动一页;

[pagedown] # 向下翻动一页;

[pageup]   # 向上翻动一页;

/字串       # 向下搜寻『字串』的功能;n:向下查找;N:向上查找;

?字串       # 向上搜寻『字串』的功能;n:向上查找;N:向下查找;

q          # 离开 less 这个程序

head

显示档案开头, 默认开头10行

格式: hand [参数] ... [文件] ...

参数

-v          # 显示文件名
-c number   # 显示前number子字符, 若number为负数, 则显示除最后number个字符的所有内容
-number /n (+)number   # 显示前number行内容
-n number # 若number为负数, 只显示除最后number行数据的所有内容

实例

head -n 1 test.txt # 查看test.txt文件第一行

tail

显示文件结尾内容

格式: tail [必要参数][选择参数][文件]

参数

-v    # 显示详情的处理信息
-q    # 不显示处理信息
-num/-n (-)num  #显示最后num行内容
-n +num  # 从第num行开始显示后面的数据
-c # 显示最后c个字符
-f # 循环读取 

实例

tail -n 1 test.txt # 查看test.txt文件的最后一行

运维

whereis

定位可执行文件,源代码文件.帮助文件在文件系统中为位置

格式: whereis [bms][BMS 目录名 -f] 文件名

参数

-b # 定位可执行文件
-m # 定位帮助文件
-s # 定位源代码文件
-u # 搜索默认路径下除可执行文件源文件 帮助文件以外的其他文件
-B # 指定搜索可执行文件的路径
-M # 指定搜索帮助文件的路径
-S # 指定搜索源代码文件的路径

例子

whereis vim

which

可执行文件名称 查看可执行文件的位置, 在PATH变量指定的路径中查看系统命令是否存在及其位置, 查看外部命令的磁盘路径

例子

[root@localhost]# which java 
/usr/bin/java
[root@localhost]# which ls
alias ls='ls --color=auto'
    /usr/bin/ls

locate

通过搜寻数据库快速搜寻档案

参数

-r    # 使用正规运算式寻找的条件
-b, --basename  # 仅匹配路径名的基本名称
-c, --count     # 只输出找到的数量
-d, --database DBPATH
# 使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
-e, --existing # 仅打印当前现有文件的条目
-1 # 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。

-0, --null # 在输出上带有NUL的单独条目
-S, --statistics # 不搜索条目,打印有关每个数据库的统计信息
-q # 安静模式,不会显示任何错误讯息。
-P, --nofollow, -H # 检查文件存在时不要遵循尾随的符号链接
-l, --limit, -n LIMIT # 将输出(或计数)限制为LIMIT个条目
-n #  至多显示 n个输出。
-m, --mmap # 被忽略,为了向后兼容
-r, --regexp REGEXP # 使用基本正则表达式
--regex # 使用扩展正则表达式
-q, --quiet # 安静模式,不会显示任何错误讯息
-s, --stdio # 被忽略,为了向后兼容
-o # 指定资料库存的名称。
-h, --help # 显示帮助
-i, --ignore-case # 忽略大小写
-V, --version # 显示版本信息

history

显示操作历史和记录列表

例子

[root@localhost]# history 
    1  ifconfig
    2  clear
    3 ......
    ........

ps

查看系统中素有的进程

参数

-a     # 查看所有进程
-u     # 显示所有用户的所有进程
-x     # 显示没有终端的进程

例子

ps -aux     # 查看系统所有的进程
ps -aux | grep nginx # 查看nginx相关的进程
ps -ef  | grep xxxx  # 查看xxx进程父子进程的关系

作用

如果想查看进程的CPU占用率和内存占用率,可以使用aux;

如果想查看进程的父进程ID可以使用ef;

解释

[root@localhost ~]# ps -ef | grep nginx
root      8002     1  0 9月03 ?       00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf

USER:该进程是由哪个用户产生的

PID:进程的ID号

%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;

%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;

VSZ:该进程占用虚拟内存的大小,单位KB;

RSS:该进程占用实际物理内存的大小,单位KB;

TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。

STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台

START:该进程的启动时间

TIME:该进程占用CPU的运算时间,注意不是系统时间

COMMAND:产生此进程的命令名

ps -ef

UID:用户ID

PID:进程ID

PPID:父进程ID

C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高

STIME:进程启动的时间

TTY:完整的终端名称

TIME:CPU时间

CMD:启动进程所用的命令和参数

top

查看系统基本状态

参数

-d   # 秒数:指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令:
-i   # 使top不显示任何闲置或者僵死进程。
-p   # 通过指定监控进程ID来仅仅监控某个进程的状态。
-s   # 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。

操作选项

P   # 以CPU使用率排序,默认就是此项
M   # 以内存的使用率排序
N   # 以PID排序
q   # 退出top

解释

ps命令运行截图

第一行信息为任务队列信息

内容 说明
20:38:42 系统当前时间
up 7:11 系统的运行时间
1 users 当前登录了一个用户
load average: 0.00, 0.00, 0.00 系统在之前1分钟,5分钟,15分钟的平均负载。一般认为小于1时,负载较小。如果大于1,系统已经超出负荷。

第二行为进程信息

Tasks: 253 total 系统中的进程总数
1 running 正在运行的进程数
252 sleeping 睡眠的进程
0 stopped 正在停止的进程
0 zombie 僵尸进程。如果不是0,需要手工检 查僵尸进程

第三行为CPU信息

Cpu(s): 2.0%us 用户模式占用的CPU百分比
0.3%sy 系统模式占用的CPU百分比
0.0%ni 改变过优先级的用户进程占用的CPU百分比
97.7%id 空闲CPU的CPU百分比
0.0%wa 等待输入/输出的进程的占用CPU百分比
0.0%hi 硬中断请求服务占用的CPU百分比
0.1%si 软中断请求服务占用的CPU百分比
0.0%st st(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比。

第四行为物理内存信息

Mem: 798.1 total 物理内存的总量,单位MiB
543.7M used 已经使用的物理内存数量
56.6M free 空闲的物理内存数量
199.7M buffers 作为缓冲的内存数量

第五行为交换分区(swap)信息

Swap: 1024.0M total 交换分区(虚拟内存)的总大小
503.8M used 已经使用的交互分区的大小
520.2M free 空闲交换分区的大小
117.9M cached 作为缓存的交互分区的大小

pstree

显示进程树

格式

pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]

参数

-p   # 显示进程PID
-u   # 显示进程的所有所属用户

例子

pstree -u

ps -p

kill

杀死进程 | 终止进程

强迫进程停止执行

kill -9 pid[进程号]

例子

kill -9 xxxx # 根据进程ip

kill firefox # 根据进程名

netstat

查看该进程网络信息&查看端口号占用情况

参数

-an  # 按一定顺序排列输出
-p   # 表示显示那个进程在调用
-nltp # 查看tcp协议进程端口号

例子

netstat –anp|grep 端口号  
# (功能描述:此命令用来显示整个系统目前的网络情况。例如目前的连接、数据包传递数据、或是路由表内容)

netstat -nlp  | grep 端口号    
# (功能描述:查看网络端口号占用情况)

netstat -anp | grep 1024

netstat -napo |grep "php-fpm" | wc -l   # 查看当前fastcgi进程个数

lsof

lsof -i tcp:80

du

命令用于显示目录或文件的大小

参数

-h  # 以人类可读的方式显示
-a  # 显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小
-s  # 显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小
-c  # 显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和
--apparent-size  # 显示目录或文件自身的大小
-l   # 统计硬链接占用磁盘空间的大小
-L   # 统计符号链接所指向的文件占用的磁盘空间大小

例子

du -sh   # 查看当前目录总共占的容量。而不单独列出各子项占用的容量 
du -lh --max-depth=1  # 查看当前目录下一级子文件和子目录占用的磁盘容量
du -sh * | sort -n    # 统计当前文件夹(目录)大小,并按文件大小排序
du -sk filename       # 查看指定文件大小

tree

查看文件目录

参数

-a #  显示所有文件和目录。
-A #  使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C #  在文件和目录清单加上色彩,便于区分各种类型。
-d #  显示目录名称而非内容。
-D #  列出文件或目录的更改时间。
-f #  在每个文件或目录之前,显示完整的相对路径名称。
-F #  在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g #  列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i #  不以阶梯状列出文件或目录名称。
-L #  level 限制目录显示层级。
-l #  如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n #  不在文件和目录清单加上色彩。
-N #  直接列出文件和目录名称,包括控制字符。
-p #  列出权限标示。
-P #  <范本样式> 只显示符合范本样式的文件或目录名称。
-q #  用"?"号取代控制字符,列出文件和目录名称。
-s #  列出文件或目录大小。
-t #  用文件和目录的更改时间排序。
-u #  列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x #  将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外

例子

tree   # 以树状图列出当前目录结构 (如果文件目录嵌套过多的话不要使用,不方便查看)

tree -C  # 颜色显示

tree  -f  # 显示文件全路径

tree -L 2 # 只显示两层

tree -P *.html  # 只显示HTML文件

tree -F  # 显示目录后面的\;显示可执行文件*;功能类似ls -F

find

在文件树中查找文件, 并作出响应的处理

格式:find [path][option][action]

参数

选项与参数:
1. 与时间有关的选项: 共有 -atime, -ctime 与 -mtime 和 -atime, -ctime与-mtime 以-mtime说明
-mtime n: n为数字,意义为在n天之前的[一天内]被改动过的文件档案
   +n: 列出n天前(不含n天本身) 被改动过的内容的档案名
   -n: 列出在n天之内(含n天本身)被改动过内容的档案名
-never file: file为一个存在的档案, 列出比file还要新的档案名
2. 与使用者或组名有关的参数:
-uid n: n为数字, 这个数字使用的账号 ID,亦即 UID
-gid n: n为数字, 这个数字是组名 亦即 GID
-user name: name为使用账号名称! eg: admin
-group name: name为组名: eg: users
-nouser: 寻找档案的拥有者不存在 /etc/passwd
-nogroup: 勋在档案的拥有者不存在与 /etc/group 的档案
3. 与档案权限及名称有关的参数:
-name filename: 搜寻文件名 filename的档案
-size [+|-]SIZE: 搜寻比SIZE还要大[+]或小[-]的档案, 这个SIZE的规则有:
c: 代表byte
k: 代表 1024bytes, eg: -size +50k #查找大于50kb
-type TYPE: 搜寻档案的类型为TYPE的, 类型主要有:
一般正规档案(f)
装置档案(b, c)
目录(d)
连结构 (l)
socket (s)
FIFO (p)
-perm mode: 搜寻档案权限[刚好等于] mode的档案, 这个mode为类似chomd的属性, eg: -rwsr-xr-x 的属性为4755
-perm -mode: 搜寻档案权限[必须要囊括 mode的权限]的档案, 
eg:
我们要搜寻 -rwxr--r-- 即:0744的档案 使用-perm -0744, 当一个档案的权限为 -rwsr-xr-x,即: 4755时, 也会被列出来, 因为-rwsr-xr-x的属性已经囊括了-rwxr--r--的属性了
-perm +mode: 搜寻档案权限[包含一mode的权限]的档案
eg: 搜寻-rwxr-xr-x 即 -prem +755时, 但一个文件属性为 -rw--------也会被列出来, 因为-rw---的属性存在
4.额外可进行的动作
-exec command: command为其他指令,-exec 后面可在接额外的指令来处理搜寻到的结果
-print: 将结果打印到屏幕上, 这个动作是预动作
eg:
find / -prem +7000 -exec ls -l {} \:额外指令以exec开头, 以\:结尾{}替代前面找到的内容
| xargs 
-i 默认的前面输出用{}代替
eg: find -name'*.log' | xargs -i mv {} test

常用例子

按照文件名:

find /home/ -name xxx.txt # 在home目录下查找文件名为xxx.txt的文件

按照拥有者:

find /opt/ -user zhaoming # 在opt目录下, 查找用户名称为zhaoming的文件

按照文件大小

find /home -size +204800 # 在home目录下查找文件大于200M的文件 (+n 大于 | -n 小于 | n 等于)

我最为常用的:

find /www/wwwroot/xxxx/ -name '*.*' | xargs grep "abcd"
# 在/www/wwwroot/xxxx/ 目录下查找 文件包含 "abcd"的文件

日期

date

  • 1.显示当前时间
[root@localhost ~]# date
2020年 10月 12日 星期一 12:56:14 CST # 或者是英文的

[root@localhost ~]# date +%Y
2020   # 显示当前年份

[root@localhost ~]# date +%m
10     # 显示当前月份

[root@localhost ~]# date +%Y-%m-%d
2020-10-12   # 显示当前年月日的各种格式 
[root@localhost ~]# date +%Y/%m/%d
2020/10/12

[root@wh2_119_96_222_116 ~]# date "+%Y-%m-%d %H:%M:%S"
2020-10-12 13:23:02  # 显示当前的显示年月日时分秒
  • 2.显示非当前时间
[root@localhost ~]# date -d yesterday +%Y-%m-%d
2020-10-11   # 显示昨天当下时间 并格式化 或者使用下面的命令。
[root@localhost ~]# date -d '1 days ago' +%Y-%m-%d 

[root@localhost ~]# date -d next-day  +%Y-%m-%d
2020-10-13  # 显示明天的当下时间并格式化

[root@localhost ~]# date -d 'next monday' +%Y-%m-%d
2020-10-19  # 显示下星期一的日期
  • 3.设置日期
date -s "xxxx-xx-xx xx:xx:xx" 

格式

date -s 字符串时间

在设置时间后我们可以将其写入到BIOS,避免重启失效

hwclock -w # 强制把系统时间写入到CMOS

在计算机领域,CMOS常指保存计算机基本启动信息(如日期、时间、启动设置等)的芯片。有时人们会把CMOS和BIOS混称,其实CMOS是主板上的一块可读写的并行或串行FLASH芯片,是用来保存BIOS的硬件配置和用户对某些参数的设定。

cal

  • 1.显示本月日历
[root@localhost ~]# cal
      十月 2020     
日 一 二 三 四 五 六
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
  • 2.显示某一年的日历
[root@localhost ~]# cal 2019
                               2019                               

        一月                   二月                   三月        
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
       1  2  3  4  5                   1  2                   1  2
 6  7  8  9 10 11 12    3  4  5  6  7  8  9    3  4  5  6  7  8  9
13 14 15 16 17 18 19   10 11 12 13 14 15 16   10 11 12 13 14 15 16
20 21 22 23 24 25 26   17 18 19 20 21 22 23   17 18 19 20 21 22 23
27 28 29 30 31         24 25 26 27 28         24 25 26 27 28 29 30
                                              31
........
  • 3.显示系统前一个月,当前月,下个月的日历
[root@localhost ~]# cal -3
      九月 2020             十月 2020            十一月 2020    
日 一 二 三 四 五 六  日 一 二 三 四 五 六  日 一 二 三 四 五 六
       1  2  3  4  5               1  2  3   1  2  3  4  5  6  7
 6  7  8  9 10 11 12   4  5  6  7  8  9 10   8  9 10 11 12 13 14
13 14 15 16 17 18 19  11 12 13 14 15 16 17  15 16 17 18 19 20 21
20 21 22 23 24 25 26  18 19 20 21 22 23 24  22 23 24 25 26 27 28
27 28 29 30           25 26 27 28 29 30 31  29 30

打包压缩

  • 1.gzip命令用来压缩文件
-a:使用ASCII文字模式;
-d:解开压缩文件;
-f:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接;
-h:在线帮助;
-l:列出压缩文件的相关信息;
-L:显示版本与版权信息;
-n:压缩文件时,不保存原来的文件名称及时间戳记;
-N:压缩文件时,保存原来的文件名称及时间戳记;
-q:不显示警告信息;
-r:递归处理,将指定目录下的所有文件及子目录一并处理;
-S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串;
-t:测试压缩文件是否正确无误;
-v:显示指令执行过程;
-V:显示版本信息
-<压缩效率>:压缩效率是一个介于1~9的数值,预设值为“6”,指定愈大的数值,压缩效率就会愈高;
--best:此参数的效果和指定“-9”参数相同;
--fast:此参数的效果和指定“-1”参数相同。

实例

gzip -rv test # 把test文件夹下的所有都变成*.gz
  • 2.gunzip命令,gunzip是个使用广泛的解压缩程序.

以上两个命令: 只能压缩文件不能压缩目录, 并且不保留原文件.

  • 3.zip/unzip
zip + 参数 + xxxx.zip + 将要压缩的文件或者目录
# -r 压缩目录
  • 4.tar[朱选项+辅选项] 文件或者多个目录, 多个目录或档案打包,压缩成一个大档案
主选项: 
-c 建立打包档案, 可匹配 -v来查看过程中被打包的文档名[filename]
-t 查看打包档案的内容含有那些档名
辅选项:
    -j 透过bzip2的支持进行压缩/解压缩, 此时档名最好为*.tar.gz
    -z 透过gzip的支持进行压缩/解压: 此时档名最好为*.tar.gz
    -v 在压缩过程中, 将正在处理的文件名显示出来
    -f filename -f后面要立刻处理的档名
    -C 目录 这个选项在解压压缩, 若要在特定目录解压缩, 可以使用这个选项
    --exclude FILE: 在压缩打包过程中忽略某文件 eg: tar --exclude /home/zenghao -zcvf myfile.tar.gz /home/*/etc
    -p 保留备份数据的原本权限与属性, 常用于备份(-c) 重要压缩的档案或目录名称
    -P 保留绝对路径, 即允许备份数据中含有根目录存在之意
    压缩: tar -jcvf filename.tar.bz2 要被压缩的档案或者目录名称
    查询: tar -jtvf filename.tar.bz2 
    解压缩: tar -jxvf filename.tar.bz2 -C 欲解压缩的目录

实例

tar -xvf test.tar /home/zhaoming/www # 解压到 www下
tar -cvf test.tar test # 将test文件夹压缩为 test.tar

tar -zcvf test.tar.gz test.txt # 将test.txt 压缩
tar -zxvf test.tar.gz /home/zhaoming/www # 解压

tar -jcvf test.tar.bz2 test.txt # 压缩
tar -jxvf test.tar.bz2 /home/zhaoming/ww 解压

yum

  • 1.概述

在Linux上使用源码安装的方式安装有时非常的麻烦, 使用yum可以简化安装过程

  • 2.基本语法
yum [options] [command] [package ...]

选项

-y  #对所有提问都回答“yes”

参数

install  # 安装rpm软件包
update   # 更新rpm软件包
check-update # 检查是否有可用的更新软件包
remove # 删除指定的rpm软件包
list # 显示软件包信息
clean # 清理yum过期缓存
deplist # 显示yum软件包的所有依赖关系

实例

yum install -y   # 安装指定软件并确认安装

yum remove -y   # 删除指定软件并确认删除

yum list # 列出所有可安装的软件清单命令

yum deplist httpd # 列出一个包所有依赖的包

yum check-update # 列出所有可更新的软件清单命令

yum update  # 更新所有软件命令

yum update  # 仅更新指定的软件命令

yum search  # 查找软件包 命令

yum clean # 清除缓存目录下的软件包及旧的headers

换源

国内源有很多,常见的有阿里源,网易源,清华源等

但是网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错。

将yum源设置为163 yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到

  • 1.将默认yum文件备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  • 2.下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前请做好相应备份)
wget http://mirrors.163.com/.help/CentOS8-Base-163.repo
mv CentOS8-Base-163.repo CentOS-Base.repo
  • 3.生成缓存
yum clean all
yum makecache
  • 4.测试
yum update -y  # 更新yum

rpm

  • 1.概述

RPM(RedHat Package Manager),Rethat软件包管理工具,类似windows里面的setup.exe是Linux这系列操作系统里面的打包安装工具,它虽然是RedHat的标志,但理念是通用的。

格式:

Apache-1.3.23-11.i386.rpm 
    - "apache"  软件名称
    - "1.3.23-11"  软件的版本号,主版本和此版本
    - "i386" 是软件所运行的硬件平台
    - "rpm" 文件扩展名,代表RPM包
  • 2.查询命令
rpm -qa # 查询所安装的所有rpm软件包

rpm –qa | grep rpm # 由于软件包比较多,一般都会采取过滤
  • 3.安装命令
rpm -ivh RPM包全名

参数介绍

-i = install    # 安装
-v = verbose    # 显示详细信息
-h = hash       # 进度条
--nodeps        # 不检测依赖进度
  • 4.卸载命令
rpm -e RPM软件包  # 一般的常规卸载
rpm -e --nodeps RPM软件包  # 如果该RPM包的安装依赖其他包,即使其它包没安装,也强制卸载。

ln软连接

基本用法

Linux ln命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。

当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。

Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。

软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式

软链接可以 跨文件系统 ,硬链接不可以

软链接可以对一个不存在的文件名进行链接

软链接可以对目录进行链接

硬链接,以文件副本的形式存在。但不占用实际空间。

不允许给目录创建硬链接

硬链接只有在同一个文件系统中才能创建

格式

ln [options] [source/dir] [dest/dir]

参数

-s   # 软连接(符号链接)
-b   # 删除,覆盖以前建立的链接
-d   # 允许超级用户制作目录的硬链接
-f   # 强制执行
-i   # 交互模式, 文件存在则提示用户是否覆盖
-n   # 把符号链接视为一般目录
-v   # 显示详细的处理过程

实例

ln -s /usr/local/nodejs/bin/npm /usr/local/bin/
ln -s /usr/local/nodejs/bin/node /usr/local/bin/

上面的示例是我们通过软件的方式使用node,为/usr/local/nodejs/bin/npm和node目录创建软件链接,如果这两个目录丢失了,软连接将会失效。

注意

cd不加参数进入的是软连接的地址

cd [软连接]

cd加参数-P进入的则是实际的物理地址

cd -P [软连接]

用户管理

  • 1.添加用户

格式

useradd [选项] [userName]

例子

useradd usera    # 添加用户usera

useradd -g groupa usera # 添加用户并指定用户组

useradd -r usera  # 添加系统用户
  • 2.删除用户

格式

userdel [选项] [userName]

例子

userdel -r usera # 删除userbdc用户以及与此用户相关的所有文件

-r 删除用户的同时,删除与用户相关的所有文件

  • 3.判断用户是否存在

格式

id [选项]   [userName]

例子

id usera # 判断用户usera 是否存在
  • 4.修改用户

格式

usermod [选项] [userName]

例子

usermod -g root usera # 修改usera用户为root用户组
  • 5.切换用户

格式

su [选项] [userName]

例子

su usera 

切换用户,只能获得用户的执行权限,不能获得环境变量

su - usera

切换到用户并获得该用户的环境变量及执行权限

  • 6.查看登录用户信息
cat /etc/passwd    #  查看创建了哪些组

查看自身用户名称

whoami

显示登陆用户的用户名

who am i

显示有哪些用户登录到了本台机器上

who
  • 7.sudo

修改配置文件/etc/sudoers


## Allow root to run any commands anywhere
root  ALL=(ALL)   ALL
userbdc  ALL=(ALL)   ALL或 NOPASSWD:ALL(不需要输入密码)

关机重启

关机

格式

shutdown [选项] [时间]

shutdown 命令其实也是可以 安全 关闭 或者 重新启动系统

参数

-r   # 重新启动

提示

如果不指定选项, 默认表示1分钟之后关闭电脑

例子

shutdown -r now # 重新启动操作系统,其中 now 表示现在

shutdown now # 立刻关机,其中 now 表示现在

shutdown 20:25 # 系统在今天的 20:25 会关机

shutdown +10 # 系统再过十分钟后自动关机

shutdown -c # 取消之前指定的关机计划

重启

若系统的 runlevel 为 0 或 6 ,则重新开机,否则以 shutdown 指令(加上 -r 参数)来取代

格式

reboot [-n] [-w] [-d] [-f] [-i]

参数

-n # 在重开机前不做将记忆体资料写回硬盘的动作
-w # 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
-d # 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
-f # 强迫重开机,不呼叫 shutdown 这个指令
-i # 在重开机之前先把所有网络相关的装置先停止

例子

reboot # 立即重启

你可能感兴趣的:(Linux常用命令)