新手必须要掌握的Linux命令

准备学习下大数据,查了下大数据的学习步骤,首先进行Linux的学习。Linx日常开发中还是经常使用到的,不过也没有系统的去学习过,毕竟公司也有运维,也就偷懒了。本来是根据刘遄老是的Linux就该这么学,做的阅读笔记。如果对这本书有兴趣,可以在https://www.linuxprobe.com/docs/LinuxProbe.pdf 在线阅读,当然为了表示支持,我自己也还是买了本实体书,哈哈ヾノ≧∀≦)o


Linux 常见的命令格式

命令名称 [命令参数] [命令对象]

注意,命令名称、命令参数、命令对象用空格键分割开

执行查看帮助命令:man

在才学习Linx的时候,我们会有很多时候对各种命令的用法并不是特别熟悉,我们可以度娘,google,有时候还有另一种选择,就是看linux给我们提供的帮助命令去看各种命令的用法。

例如现在我不清楚man灵力怎么使用,那么我可以通过man man 来查看man命令的帮助信息

新手必须要掌握的Linux命令_第1张图片
image.png

我这里的是中文帮助文档,有的出来会是英文的,可以设置,如果系统有中文帮助文档

man命令的常用按键和用途
按键 用途
空格键 下一页
Page Down 下一页
Page up 上一页
/ 从上至下搜索某个关键字,并高亮,例如 /man
? 从下至上搜索某个关键字,并高亮,例如 /man
n 定位到下一个搜索到的关键词,在“/”搜索模式下
N 定位到上一个搜索到的关键词,在“/”搜索模式下
q 退出帮助文档

帮助文档的信息一般都会很多,很长,我们在阅读的时候需要了解帮助文档的结构

man 命令帮助文档结构
结构名称 代表意义
NAME 命令名称
SYNOPSIS 参数的大致使用方法
DESCRIPTION 参数说明
EXAMPLES 演示(附带简单说明)
OVERVIEW 概述
DEFAULTS 默认的功能
OPTIONS 具体的可用选项(带介绍)
ENVIRONMENT 环境变量
FILES 用到的文件
SEE ALSO 相关的资料
HISTORY 维护历史与联系方式

不过个人感觉我们遇到命令忘记具体怎么用了第一反应还是会度娘或者google吧。

常用的系统工作命令

echo命令

echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串,例如我们可以通过shell脚本把实体文件的内容读出来打印到屏幕上。

命令格式:

echo [字符串 | $变量]

例1 输出字符串在屏幕:

[root@localhost ~]# echo sysout test
sysout test
[root@localhost ~]#

例2 输出变量值在屏幕
这里的变量为$SHELL 是已经存在的变量,如果是shell脚本中,也可以输出自定义的变量

[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]#

date 时间命令

在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数,也就是我们常说的时间戳毫秒数,所以在输出需要阅读的时间的时候,我们需要用date命令格式化时间。

命令格式:

date [选项] [+指定的格式]

选项参数

-d<字符串>:显示字符串所指的日期与时间,字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间,字符串前后必须加上双引号;
-u:显示GMT;
--help:在线帮助;
--version:显示版本信息

参数

%H 小时,24小时制(00~23)
%I 小时,12小时制(01~12)
%k 小时,24小时制(0~23)
%l 小时,12小时制(1~12)
%M 分钟(00~59)
%p 显示出AM或PM
%r 显示时间,12小时制(hh:mm:ss %p)
%s 从1970年1月1日00:00:00到目前经历的秒数
%S 显示秒(00~59)
%T 显示时间,24小时制(hh:mm:ss)
%X 显示时间的格式(%H:%M:%S)
%Z 显示时区,日期域(CST)
%a 星期的简称(Sun~Sat)
%A 星期的全称(Sunday~Saturday)
%h,%b 月的简称(Jan~Dec)
%B 月的全称(January~December)
%c 日期和时间(Tue Nov 20 14:12:58 2012)
%d 一个月的第几天(01~31)
%x,%D 日期(mm/dd/yy)
%j 一年的第几天(001~366)
%m 月份(01~12)
%w 一个星期的第几天(0代表星期天)
%W 一年的第几个星期(00~53,星期一为第一天)
%y 年的最后两个数字(1999则是99)
%t 跳格[Tab键]

例1 按照默认格式查看输出当前系统时间

[root@localhost ~]# date
2018年 09月 28日 星期五 23:01:06 CST
[root@localhost ~]#

例2 按照“年-月-日 时:分:秒”的个格式查看当前系统时间

[root@localhost ~]# date "+%Y-%m-%d %H:%M:%S"
2018-09-28 23:01:28
[root@localhost ~]#

例3 显示当前天数是当年的第几天,这个实际可以用作备份的时候做区分,数字越大,月靠近当前时间,备份越新

[root@localhost ~]# date "+%j"
271
[root@localhost ~]#

date命令还可以用来手工设置时间

date -s                       //设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523              //设置成20120523,这样会把具体时间设置成空00:00:00
date -s 01:01:01              //设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23"  //这样可以设置全部时间
date -s "01:01:01 20120523"    //这样可以设置全部时间
date -s "2012-05-23 01:01:01"  //这样可以设置全部时间
date -s "20120523 01:01:01"    //这样可以设置全部时间

设置完时间后我们还需要写入bios,避免重启失效

hwclock -w

扩展一下,有时候我们手工设置的时间并不准确,这个时候我们可以设置互联网时间,使用ntpdate

ntpdate命令:
ntpdate -u 210.72.145.44 :网络时间同步命令

注意:若不加上-u参数, 会出现以下提示:no server suitable for synchronization found
-u:从man ntpdate中可以看出-u参数可以越过防火墙与主机同步;
210.72.145.44:中国国家授时中心的官方服务器。

ntp常用服务器:
中国国家授时中心:210.72.145.44
NTP服务器(上海) :ntp.api.bz
美国:time.nist.gov 
复旦:ntp.fudan.edu.cn 
微软公司授时主机(美国) :time.windows.com 
台警大授时中心(台湾):asia.pool.ntp.org

经测试中国国家授时中心与NTP上海服务器可以正常同步时间,注意需要加上-u参数!

reboot 命令

reboot命令用于重启linux系统


image.png

poweroff 命令

poweroff 会发送一个 ACPI 信号来通知系统关机

扩展一下,其实现在的系统poweroff,shutdown hait其实没有明显的区别了

# shutdown         ### 关机命令,需要root权限
# shutdown now
# shutdown 13:20  
# shutdown -p now  ### 关闭机器
# shutdown -H now  ### 停止机器      
# shutdown -r11:35 ### 在 11:35am 重启机器

# halt             ### 停止机器
# halt -p          ### 关闭机器
# halt --reboot    ### 重启机器

wget 命令

wget命令用来从指定的URL下载文件。
命令格式:

wget [参数] 下载地址
wget 命令的参数及作用
参数 作用
-b 后台下载模式
-P 下载到指定目录
-t 最大尝试次数
-c 端点续传
-p 下载页面内所有资源,包括图片、视频等
-r 递归下载
-a<日志文件>:在指定的日志文件中记录资料的执行过程;
-A<后缀名>:指定要下载文件的后缀名,多个后缀名之间使用逗号进行分隔;
-b:进行后台的方式运行wget;
-B<连接地址>:设置参考的连接地址的基地地址;
-c:继续执行上次终端的任务;
-C<标志>:设置服务器数据块功能标志on为激活,off为关闭,默认值为on;
-d:调试模式运行指令;
-D<域名列表>:设置顺着的域名列表,域名之间用“,”分隔;
-e<指令>:作为文件“.wgetrc”中的一部分执行指定的指令;
-h:显示指令帮助信息;
-i<文件>:从指定文件获取要下载的URL地址;
-l<目录列表>:设置顺着的目录列表,多个目录用“,”分隔;
-L:仅顺着关联的连接;
-r:递归下载方式;
-nc:文件存在时,下载文件不覆盖原有文件;
-nv:下载时只显示更新和出错信息,不显示指令的详细执行过程;
-q:不显示指令执行过程;
-nh:不查询主机名称;
-v:显示详细执行过程;
-V:显示版本信息;
--passive-ftp:使用被动模式PASV连接FTP服务器;
--follow-ftp:从HTML文件中下载FTP连接文件。

例1 下载Linux就该这么学的PDF

wget http://www.linuxprobe.com/docs/LinuxProbe.pdf

这里如果没有指定下载的目录,就会下载到当前目录


新手必须要掌握的Linux命令_第2张图片
image.png

ps 命令

ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序
命令格式:

ps [参数]

参数有很多,不过我们一般用得最多的就是ps -efps -aux
两个输出略有不同,aux要详细一些,还会显示进程状态,根据实际情况使用。

这里的 -ef 是命令系统的两个短格式参数,需要注意的是长格式参数不能合并,短格式参数可以合并,只需要保留 一个-就可以了。

在Linux中进程状态有5种,运行、中断、不可中断、僵死、停止,具体含义如下:

  • R(运行):进程正在运行或在运行队列中等待
  • S(中断):进程处于休眠中,当某个条件形成或收到信号后,运行
  • D(不可中断):进程不响应异步信号,即使是使用kill命令也无法杀死
  • Z(僵死):进程已经终止,但是进程描述符还在,知道父类进程调用wait4()系统函数后将进程释放
  • T(停止):进程收到停止信号后停止运行
D      //无法中断的休眠状态(通常 IO 的进程);
R      //正在运行可中在队列中可过行的;
S      //处于休眠状态;
T      //停止或被追踪;
W      //进入内存交换 (从内核2.6开始无效);
X      //死掉的进程 (基本很少见);
Z      //僵尸进程;
<      //优先级高的进程
N      //优先级较低的进程
L      //有些页被锁进内存;
s      //进程的领导者(在它之下有子进程);
l      //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads);
+      //位于后台的进程组;

ps -ef

新手必须要掌握的Linux命令_第3张图片
image.png

UID     //用户ID、但输出的是用户名
PID     //进程的ID
PPID    //父进程ID
C       //进程占用CPU的百分比
STIME   //进程启动到现在的时间
TTY     //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
CMD     //命令的名称和参数

ps aux

新手必须要掌握的Linux命令_第4张图片
image.png

USER      //用户名
%CPU      //进程占用的CPU百分比
%MEM      //占用内存的百分比
VSZ       //该进程使用的虚拟內存量(KB)
RSS       //该进程占用的固定內存量(KB)(驻留中页的数量)
STAT      //进程的状态
START     //该进程被触发启动时间
TIME      //该进程实际使用CPU运行的时间

top 命令

top命令相当于windows中的任务管理器


新手必须要掌握的Linux命令_第5张图片
image.png
  • 第一行:系统时间,运行时间,登录用户数,系统负载(三个数分表代表1分钟,5分钟,15分钟内的平均值,值越小,负载越低)
  • 第二行:进程总数,运行中的线程数,睡眠的进程数,停止的进程数,僵死的进程数
  • 第三行:用户占用资源百分比,系统内核占用资源百分比,改变过优先级的进程资源百分比,空闲的资源百分比。(我们比较关心的就是空闲资源百分比,也就是99.8 id 这个参数,表示有99.8%的CPU资源处于空闲状态)
  • 第四行:物理总内存量,空闲内存量,使用内存量,作为内核缓存的内存量
  • 第五行:虚拟内存量,虚拟内存空闲量,虚拟内存使用量,已经被提前加载的内存量

pidof 命令

pidof命令用于查询某个进程的进程号,进程号是唯一的,所有可以用PID来区分不同的进程,
命令格式:

pidof [参数] [服务名称]

参数:

-s:仅返回一个进程号;
-c:仅显示具有相同“root”目录的进程;
-x:显示由脚本开启的进程;
-o:指定不显示的进程ID。

例1返回的ftp服务的进程号

[root@localhost ~]# pidof vsftpd
1033
[root@localhost ~]#

不过我们一般不这么查询进程,因为现实的信息不全,如果有多个相同服务的进程,我们并不知道具体的路径,这个时候我们一般会用前文提到的ps -ef 或者ps aux 加上管道符和grep 条件
例如我们现在要查询ftp进程

新手必须要掌握的Linux命令_第6张图片
image.png

我们可以看到返回的PID都是一样的,而且我们还多了些信息可以更准确的判断。

kill 命令

kill命令用于终止系统进程,根据pid来杀死进程
命令格式:

kill [参数] [pid]

为了保证无条件终止进程,我们一般会带参数kill -9 无条件杀死进程

killall 命令

killall命令也是用户杀死进程,不过不是根据PID,是根据进程名进行杀死,会杀死同名的所有进程。
命令格式:

killall [参数] [进程名]

ifconfig 命令

ifconfig命令用于查看网卡配置和网络状态等信息
命令格式:

ifconfig [网络设备] [参数]

uname 命令

uname命令用于返回系统的内核与系统版本信息,一那么会用uname -a查看完整信息

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]#

如果要查看当前版本的详细信息可以进入/etc/redhat-release 查看

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@localhost ~]#

uptime 命令

uptime命令用于查看系统负载信息

[root@localhost ~]# uptime
 23:11:31 up  1:26,  2 users,  load average: 0.00, 0.01, 0.05
[root@localhost ~]#

显示内容分别为系统时间,系统运行时间,连接的终端数,负载信息(1分钟,5分钟,15分钟内压力情况,负载值越低越好,尽量不要长期超过1,现网不要超过5)

free 命令

free 用于显示当前系统中内存的使用量信息
命令格式:

free [-h]
[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        179M        1.4G        9.0M        229M        1.4G
Swap:          2.0G          0B        2.0G
[root@localhost ~]#

表头分别表示,内存总量,使用量,空闲可用量,进程共享内存量,缓存的内存量

who 命令

who 用于查看当前登入主机的用户终端信息。
命令格式:

who [参数]
[root@localhost ~]# who -H
名称   线路       时间           备注
root     tty1         2018-10-03 19:14
root     pts/0        2018-10-03 19:14 (192.168.101.116)
[root@localhost ~]#

last 命令

last命令用于查看日志中记录的用户登录信息
命令格式:

last [参数]
root@localhost ~]# last
root     pts/0        192.168.101.116  Wed Oct  3 19:14   still logged in
root     tty1                          Wed Oct  3 19:14   still logged in

history 命令

history命令用于显示执行过的命令,并且可以根据!行号重新执行。
下面就是显示15条历史记录,并根据行号重新执行

[root@localhost ~]# history 15
  641  shutdown -h now
  642  free -h
  643  who
  644  who -H
  645  last
  646  clear
  647  history 10
  648  last
  649  history
  650  history 15
  651  ! 643
  652  who
  653  clear
  654  history15
  655  history 15
[root@localhost ~]# !652
who
root     tty1         2018-10-03 19:14
root     pts/0        2018-10-03 19:14 (192.168.101.116)
[root@localhost ~]#

如果要清空当前用户的历史记录,可以用history -c

sosreport 命令

sosreport 命令用于收集系统配置及架构信息并输出诊断文。
命令格式:

sosreport

pwd 命令

pwd命令用户显示用户当前目录
命令格式:

pwd [选项]
[root@localhost ~]# pwd
/root
[root@localhost ~]#

cd 命令

cd 命令为切换工作目录的命令
命令格式:

cd [目录名称]

出了cd 切换目录,还可以cd -返回上一次所处目录,cd.. 返回上一级目录,cd ~ 返回当前用户的根目录

[root@localhost etc]# cd /home/vsftpd/
[root@localhost vsftpd]# cd ..
[root@localhost home]# cd -
/home/vsftpd
[root@localhost vsftpd]# cd ~
[root@localhost ~]#

ls 命令

ls命令用于显示目录中的文件信息
命令格式:

ls [选项] [文件]

ls 命令的 -a 参数可以查看当前目录下的所有文件(包含隐藏文件),-1 参数可以查看文件大小,属性等信息,所有我们一般组合使用

[root@localhost test]# ls -al
总用量 19636
drwxr-xr-x. 2 ftpuser ftp        28 9月  25 23:37 .
drwxr-xr-x. 3 ftpuser ftp        18 6月  23 16:32 ..
-rw-r--r--. 1 root    root 20105266 6月  10 14:24 LinuxProbe.pdf
[root@localhost test]#

cat 命令

cat 命令用于查看内容较少的纯文本文件,cat -n 可以显示行号
命令格式:

cat [选项] [文件]
[root@localhost ~]# cat -n anaconda-ks.cfg
     1  #version=DEVEL
     2  # System authorization information
     3  auth --enableshadow --passalgo=sha512
     4  # Use CDROM installation media
     5  cdrom
     ...... 省略 ......

more 命令

cat命令是在屏幕上快速翻滚,一直到底部,如果文本太长,应该使用more 命令,可以翻页查看,按q退出

[root@localhost ~]# more -10 anaconda-ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
--More--(16%)

head 命令

head命令用于查看纯文本文件的前N行
命令格式

head [选项] [文件]

例1:查看文本的前10行

[root@localhost ~]# head -n 10 anaconda-ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
[root@localhost ~]#

tail 命令

tail命令用于查看纯文本文件的后N行或者持续刷新内容
命令格式:

tail [选项] [文件名]

例1:查看日志文件最后20行

[root@localhost log]# tail -n 20 messages
Oct  5 21:58:36 localhost systemd: Time has been changed
Oct  5 21:58:37 localhost chronyd[619]: Forward time jump detected!
Oct  5 21:58:37 localhost chronyd[619]: Can't synchronise: no selectable sources
Oct  5 22:00:01 localhost systemd: Started Session 27 of user root.
Oct  5 22:00:01 localhost systemd: Starting Session 27 of user root.
Oct  5 22:00:49 localhost chronyd[619]: Selected source 85.199.214.101
...... 省略 ......

例2:持续输出日志

[root@localhost log]# tail -f messages
Oct  5 22:02:14 localhost chronyd[619]: Selected source 5.103.139.163
Oct  5 22:02:55 localhost chronyd[619]: Selected source 85.199.214.100
Oct  5 22:10:01 localhost systemd: Started Session 29 of user root.
...... 省略 ......

tr 命令

tr命令用于替换文本中的字符,一般是配合cat命令和管道符一起使用
命令格式:

tr [原始字符串] [替换后的字符串]

例1:把文本的小写字母全部替换为大写字母

[root@localhost test]# cat text.txt
sfalk
fadfjoiw
ksjfo
fdsddffffffffffffffffsfalj
[root@localhost test]# cat text.txt | tr [a-z] [A-Z]
SFALK
FADFJOIW
KSJFO
FDSDDFFFFFFFFFFFFFFFFSFALJ
[root@localhost test]# cat text.txt
sfalk
fadfjoiw
ksjfo
fdsddffffffffffffffffsfalj
[root@localhost test]#

这里需要注意,这么替换只是输出的新的字符串替换了,原始文件里的内容并没有替换

wc 命令

wc命令用于统计文件的行数,字数,字节数
命令格式:

wc [参数] 文件
参数
-l: 只显示行数
-w: 只显示单词数
-c: 只显示字节数
[root@localhost test]# wc -lwc text.txt
 4  4 48 text.txt
[root@localhost test]# wc -l text.txt
4 text.txt
[root@localhost test]# wc -w text.txt
4 text.txt
[root@localhost test]# wc -c text.txt
48 text.txt
[root@localhost test]# wc text.txt
 4  4 48 text.txt
[root@localhost test]#

stat 命令

stat 命令用于查看文件的具体存储信息和时间等信息,
命令格式:

stat 文件名称
[root@localhost test]# stat text.txt
  文件:"text.txt"
  大小:48         块:8          IO 块:4096   普通文件
设备:803h/2051d   Inode:51529453    硬链接:1
权限:(0644/-rw-r--r--)  Uid:( 1001/ ftpuser)   Gid:(   50/     ftp)
环境:system_u:object_r:user_home_t:s0
最近访问:2018-10-05 22:47:33.236049862 +0800
最近更改:2018-10-05 22:47:28.126584747 +0800
最近改动:2018-10-05 22:47:28.130585118 +0800
创建时间:-
[root@localhost test]#

cut 命令

cut 命令用于提取有规律的表格类似的文本文件的指定内容
命令格式:

cut [参数] 文本

参数
-b:仅显示行中指定直接范围的内容;
-c:仅显示行中指定范围的字符;
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;
-n:与“-b”选项连用,不分割多字节字符;
--complement:补足被选择的字节、字符或字段;
--out-delimiter=<字段分隔符>:指定输出内容是的字段分割符;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。

例1:提取文本第2列的内容

[root@localhost test]# cat table
no1|no1-1|no1-2
no2|no2-1|no2-2
no3|no3-1|no3-2
no4|no4-1|no4-2
no5|no5-1|no5-2[root@localhost test]# cut -d\| -f1 table
no1
no2
no3
no4
no5
[root@localhost test]#

这里因为文件的| 分隔符为管道符,所以用 \ 进行转义

diff 命令

diff命令用于比较多个文件的差异,--brief参数可以确认两个文件是否相同,-c 参数可以详细展示文本之间的差异

[root@localhost test]# cat table
no1|no1-1|no1-2
no2|no2-1|no2-2
no3|no3-1|no3-2
no4|no4-1|no4-2
no5|no5-1|no5-2[root@localhost test]# cat table-c
no1|no1-1|no1-2
no2|no2-1|no2-2
no3|no3-1|no3-2
no4|no4-1-c|no4-2
no5|no5-1|no5-2[root@localhost test]# diff table table-c
4c4
< no4|no4-1|no4-2
---
> no4|no4-1-c|no4-2
[root@localhost test]# diff --brief table table-c
文件 table 和 table-c 不同
[root@localhost test]# diff -c table table-c
*** table   2018-10-05 23:29:18.774393927 +0800
--- table-c 2018-10-05 23:40:56.965393057 +0800
***************
*** 1,5 ****
  no1|no1-1|no1-2
  no2|no2-1|no2-2
  no3|no3-1|no3-2
! no4|no4-1|no4-2
  no5|no5-1|no5-2
\ 文件尾没有 newline 字符
--- 1,5 ----
  no1|no1-1|no1-2
  no2|no2-1|no2-2
  no3|no3-1|no3-2
! no4|no4-1-c|no4-2
  no5|no5-1|no5-2
\ 文件尾没有 newline 字符
[root@localhost test]#

touch 命令

touch命令用于创建空白文件或者设置文件时间
命令格式:

touch [选项] [文件]

选项:

-a:或--time=atime或--time=access或--time=use  只更改存取时间;
-c:或--no-create  不建立任何文件;
-d:<时间日期> 使用指定的日期时间,而非现在的时间;
-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
-m:或--time=mtime或--time=modify  只更该变动时间;
-r:<参考文件或目录>  把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
-t:<日期时间>  使用指定的日期时间,而非现在的时间;
--help:在线帮助;
--version:显示版本信息。

例1:创建一个空白文件,并修改其时间属性

[root@localhost test]# ls
table  table-c
[root@localhost test]# touch text
[root@localhost test]# stat text
  文件:"text"
  大小:0          块:0          IO 块:4096   普通空文件
设备:803h/2051d   Inode:51103711    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:user_home_t:s0
最近访问:2018-10-07 17:55:20.901853419 +0800
最近更改:2018-10-07 17:55:20.901853419 +0800
最近改动:2018-10-07 17:55:20.901853419 +0800
创建时间:-
[root@localhost test]# touch -d "2018-10-07 18:01" text
[root@localhost test]# stat text
  文件:"text"
  大小:0          块:0          IO 块:4096   普通空文件
设备:803h/2051d   Inode:51103711    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:user_home_t:s0
最近访问:2018-10-07 18:01:00.000000000 +0800
最近更改:2018-10-07 18:01:00.000000000 +0800
最近改动:2018-10-07 17:56:12.921950703 +0800
创建时间:-
[root@localhost test]#

mkdir 命令

mkdir命令用于创建文件夹,-p 参数用户创建多级文件夹
命令格式:

mkdir [选项] 文件夹 
[root@localhost test]# ls
table  table-c  text
[root@localhost test]# mkdir folder
[root@localhost test]# ls
folder  table  table-c  text
[root@localhost test]# cd folder/
[root@localhost folder]# mkdir -p a/b
[root@localhost folder]# ls
a
[root@localhost folder]# cd a
[root@localhost a]# ls
b

cp 命令

cp命令用于复制文件
命令格式:

cp [选项] 源文件 目标文件

选项

-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。

mv 命令

mv 命令用于剪切或重命名文件/文件夹,可以单个,也可以批量
命令格式:

mv [选项] 源文件 [目标路径|目标文件名]
[root@localhost test]# ls
folder  table  table-c  text
[root@localhost test]#  mv text textNew
[root@localhost test]# ls
folder  table  table-c  textNew
[root@localhost test]# mv textNew folder/textNew2
[root@localhost test]# ls
folder  table  table-c
[root@localhost test]# cd  folder/
[root@localhost folder]# ls
a  textNew2
[root@localhost folder]#

rm 命令

rm 命令用于删除文件,我们一般删除用rm -rf xxx 其中f表示强制删除,r表示文件夹递归删除
命令格式:

rm [选项] 文件
[root@localhost test]# ls
folder  table  table-c
[root@localhost test]# rm -rf folder
[root@localhost test]# ls
table  table-c
[root@localhost test]#

dd 命令

dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换,具体感觉比较复杂,可以自行google

注意:指定数字的地方若以下列字符结尾则乘以相应的数字:b=512;c=1;k=1024;w=2
参数:
1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
3. ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
    obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
    bs=bytes:同时设置读入/输出的块大小为bytes个字节。
4. cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
5. skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
6. seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
7. count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
8. conv=conversion:用指定的参数转换文件。
    ascii:转换ebcdic为ascii
     ebcdic:转换ascii为ebcdic
    ibm:转换ascii为alternate ebcdic
    block:把每一行转换为长度为cbs,不足部分用空格填充
    unblock:使每一行的长度都为cbs,不足部分用空格填充
    lcase:把大写字符转换为小写字符
    ucase:把小写字符转换为大写字符
    swab:交换输入的每对字节
     noerror:出错时不停止
     notrunc:不截短输出文件
    sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

file 命令

file 命令用于查看文件类型,也就是我们说的文件格式,在linux种,文本,目录,设置这些都是文件

[root@localhost test]# ls
table  table-c
[root@localhost test]# file table
table: ASCII text
[root@localhost test]# cd ..
[root@localhost file]# file test/
test/: directory
[root@localhost file]#

tar 命令

tar 命令用于对文件进行打包压缩或解压,在linux上主要使用的是.tar 或.tar.gz 或.tar.bz2 格式,所有我们可以用tar命令
命令格式:

tar [选项] [文件]

-c 参数用于创建压缩文件, -x 参数用于解压文件, 因此这两个参数不能同时使用。
其次,-z 参数指定使用 Gzip 格式来压缩或解压文件,-j 参数指定使用 bzip2 格式来压缩或解压文件。一般用tar -czvf 压缩文件,用tar -xzvf 解压文件。

[root@localhost file]# tar czvf test.tar.gz test
test/
test/table
test/table-c
[root@localhost file]# ls
test  test.tar.gz
[root@localhost file]# tar -tf test.tar.gz
test/
test/table
test/table-c
[root@localhost file]# mkdir test2
[root@localhost file]# tar -xzvf test.tar.gz -C  test2
test/
test/table
test/table-c
[root@localhost file]# ls
test  test2  test.tar.gz
[root@localhost file]# cd test2
[root@localhost test2]# ls
test
[root@localhost test2]# cd test/
[root@localhost test]# ls
table  table-c
[root@localhost test]#

grep 命令

grep命令是文本搜索匹配工具,参数特别多,最常用的为 -n 新手搜索到的信息的行号,-v反选信息

[root@localhost test]# cat table
no1|no1-1|no1-2
no2|no2-1|no2-2
no3|no3-1|no3-2
no4|no4-1|no4-2
no5|no5-1|no5-2[root@localhost test]# grep no1-2 table
no1|no1-1|no1-2
[root@localhost test]# grep -n no1-2 table
1:no1|no1-1|no1-2
[root@localhost test]# grep -v no1-2 table
no2|no2-1|no2-2
no3|no3-1|no3-2
no4|no4-1|no4-2
no5|no5-1|no5-2
[root@localhost test]#

find 命令

find 命令用于安置指定条件查询文件,除了查找还可以使用-exec 执行后续操作,例如复制
命令格式:

find [查找路径] 寻找条件 操作
寻找条件:
-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-daystart:从本日开始计算时间;
-depth:从指定目录下最深层的子目录开始查找;
-expty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-false:将find指令的回传值皆设为False;
-fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;
-follow:排除符号连接;
-fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;
-fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;
-fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;
-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;
-gid<群组识别码>:查找符合指定之群组识别码的文件或目录;
-group<群组名称>:查找符合指定之群组名称的文件或目录;
-help或——help:在线帮助;
-ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;
-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;
-inum:查找符合指定的inode编号的文件或目录;
-ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;
-iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;
-links<连接数目>:查找符合指定的硬连接数目的文件或目录;
-iname<范本样式>:指定字符串作为寻找符号连接的范本样式;
-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
-maxdepth<目录层级>:设置最大目录层级;
-mindepth<目录层级>:设置最小目录层级;
-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
-mount:此参数的效果和指定“-xdev”相同;
-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-nogroup:找出不属于本地主机群组识别码的文件或目录;
-noleaf:不去考虑目录至少需拥有两个硬连接存在;
-nouser:找出不属于本地主机用户识别码的文件或目录;
-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;
-path<范本样式>:指定字符串作为寻找目录的范本样式;
-perm<权限数值>:查找符合指定的权限数值的文件或目录;
-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;
-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
-prune:不寻找字符串作为寻找文件或目录的范本样式;
-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-size<文件大小>:查找符合指定的文件大小的文件;
-true:将find指令的回传值皆设为True;
-typ<文件类型>:只寻找符合指定的文件类型的文件;
-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
-version或——version:显示版本信息;
-xdev:将范围局限在先行的文件系统中;
-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。

例1:查找table文件,名复制到a文件中,需要注意,-exec{} \; 结尾是 \;

[root@localhost test]# mkdir a
[root@localhost test]# ls
a  table  table-c
[root@localhost test]# find /home/vsftpd/java/file/test -name "table" -exec cp -a {} a/ \;
[root@localhost test]# cd a/
[root@localhost a]# ls
table
[root@localhost a]# cd ..
[root@localhost test]# ls
a  table  table-c

你可能感兴趣的:(新手必须要掌握的Linux命令)