Linux命令行操作基础练习
linux是支持多国语言的,terminal在默认的情况下,无法支持以中文编码输出数据的.这个时候,我们就得将支持语系改为英文,才能以英文显示出正确的讯息
1,显示目前所支持的语系
[dmtsai@study ~]$ locale LANG=zh_TW.utf8 # 语言语系的输出 LC_CTYPE="zh_TW.utf8" # 下面为许多信息的输出使用的特别语系 LC_NUMERIC=zh_TW.UTF-8 LC_TIME=zh_TW.UTF-8 # 时间方面的语系数据 LC_COLLATE="zh_TW.utf8"
LC_ALL= # 全部的数据同步更新的设置值
2,修改语系为英文语系
$ LANG=en_US.utf-8 $ export LC_ALL=en_US.utf-8 # LANG 只与输出讯息有关,若需要更改其他不同的信息,要同步更新 LC_ALL才行
显示日期与时间的指令: date
显示日历的指令: cal
简单好用的计算机: bc
[dmtsai@study ~]$ date
Fri May 29 14:32:01 CST 2015
date的格式化输出
$ date +%Y/%m/%d 2018/07/08 $ date +%H:%M 18:14
显示日历的指令: cal
[dmtsai@study ~]$ cal May 2015 Su Mo Tu We Th Fr Sa 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
cal 2015 会显示正年的日历
cal [month] [year] 查看某年某月的月历
计算机: bc
[dmtsai@study ~]$ bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. _ <==这个时候,光标会停留在这里等待你的输入
[dmtsai@study ~]$ bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 1+2+3+4 <==只有加法时 107-8+3 210*52 520 10%3 <==计算“余数” 110^2 100 10/100 <==这个最奇怪!不是应该是 0.1 吗? 0quit <==离开 bc 这个计算器
bc默认仅输出整数,如果要输出小数点下位数,那么就必须要执行scale=number,那个number就是小数点的位数
scale=3 <==没错!就是这里!! 1/3 .333 340/2349 .144 quit
几个重要的热键[Tab], [ctrl]-c, [ctrl] - d
[Tab]: 命令补全功能与文件补齐,双击[Tab]会显示可以操作的命令
在这一版的 CentOS 7.x 当中,由于多了一个名为 bash_completion 的软件,这个软件会主动的去侦测“各个指令可以下达的选项与参
数”等行为, 因此,那个“文件补齐”的功能可能会变成“选项、参数补齐”的功能,不一定会主动补齐文件名了喔
[ctrl]-c: 终止正在执行的命令
[ctrl]-d: 离开命令,代替exit
[shift]+{[pageup]|[pagedown]} : 翻页
Linux系统的线上求助man page与info page
指令的 --help求助说明
[dmtsai@study ~]# date --help Usage: date [OPTION]... [+FORMAT] # 这里有基本语法 or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] # 这是设置时间的语法 Display the current time in the given FORMAT, or set the system date. # 下面是主要的选项说明 Mandatory arguments to long options are mandatory for short options too. -d, --date=STRING display time described by STRING, not 'now' -f, --file=DATEFILE like --date once for each line of DATEFILE ....(中间省略).... -u, --utc, --universal print or set Coordinated Universal Time (UTC) --help 显示此求助说明并离开 --version 显示版本信息并离开 # 下面则是重要的格式 (FORMAT) 的主要项目 FORMAT controls the output. Interpreted sequences are: %% a literal % %a locale's abbreviated weekday name (e.g., Sun) %A locale's full weekday name (e.g., Sunday) ....(中间省略).... # 下面是几个重要的范例 (Example) Examples: Convert seconds since the epoch (1970-01-01 UTC) to a date $ date --date='@2147483647' ....(下面省略)....
man page
[dmtsai@study ~]$ LANG="en_US.utf8" # 还记得这个咚咚的用意吧?前面提过了,是为了“语系”的需要啊!下达过一次即可! [dmtsai@study ~]$ man date DATE(1) User Commands DATE(1) # 请注意上面这个括号内的数字 NAME <==这个指令的完整全名,如下所示为date且说明简单用途为设置与显示日期/时间 date - print or set the system date and time SYNOPSIS <==这个指令的基本语法如下所示 date [OPTION]... [+FORMAT] <==第一种单纯显示的用法 date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] <==这种可以设置系统时间的用法 DESCRIPTION <==详细说明刚刚语法谈到的选项与参数的用法 Display the current time in the given FORMAT, or set the system date. Mandatory arguments to long options are mandatory for short options too. -d, --date=STRING <==左边-d为短选项名称,右边--date为完整选项名称 display time described by STRING, not 'now' -f, --file=DATEFILE like --date once for each line of DATEFILE -I[TIMESPEC], --iso-8601[=TIMESPEC] output date/time in ISO 8601 format. TIMESPEC='date' for date only (the default), 'hours', 'minutes', 'seconds', or 'ns' for date and time to the indicated precision. ....(中间省略).... # 找到了!下面就是格式化输出的详细数据! FORMAT controls the output. Interpreted sequences are: %% a literal % %a locale's abbreviated weekday name (e.g., Sun) %A locale's full weekday name (e.g., Sunday) ....(中间省略).... ENVIRONMENT <==与这个指令相关的环境参数有如下的说明 TZ Specifies the timezone, unless overridden by command line parameters. If neither is specified, the setting from /etc/localtime is used. EXAMPLES <==一堆可用的范本 Convert seconds since the epoch (1970-01-01 UTC) to a date $ date --date='@2147483647' ....(中间省略).... DATE STRING <==上面曾提到的 --date 的格式说明! The --date=STRING is a mostly free format human readable date string such as "Sun, 29 Feb 2004 16:21:42 -0800" or "2004-02-29 16:21:42" or even "next Thursday". A date string may contain items indicating calendar date, time of day, time zone, day of AUTHOR <==这个指令的作者啦! Written by David MacKenzie. COPYRIGHT <==受到著作权法的保护!用的就是 GPL 了! Copyright © 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WAR‐ RANTY, to the extent permitted by law. SEE ALSO <==这个重要,你还可以从哪里查到与date相关的说明文档之意 The full documentation for date is maintained as a Texinfo manual. If the info and date programs are properly installed at your site, the command info coreutils 'date invocation' should give you access to the complete manual. GNU coreutils 8.22 June 2014 DATE(1)
代号的不同含义
代号 | 代表内容 |
1* | 使用者在shell环境中可以操作的指令或可可执行文件 |
2 | 系统核心可调用的函数与工具等 |
3 | 一些常用的函数(function)与函数库(library),大部分为c的函数库(libc) |
4 | 设备文件的说明 |
5* | 配置文件或者是某些文件的格式 |
6 | 游戏 |
7 | 惯例与协定等,例如Linux文件系统,网络协定,asciicode等等说明 |
8* | 系统管理员可用的管理指令 |
9 | 跟kernel有关的文件 |
NAME : 简短的指令,数据名称说明
SYNOPSIS : 简短的指令下达语法(syntax)简介
DESCRIPTION : 较为完整的说明,这部分最好仔细看看
OPTIONS : 针对SYNOPSIS部分中,有例举的所有可用的选项说明
COMMANDS : 当这个程序(软件)在执行的时候,可以再次程序(软件)中下达命令
FILFES : 这个程序或数据所是用或参数或连接到的某个文件
SEE ALSO : 可以参考的,跟这个指令或数据有相关的其他说明
EXAMPLE : 一些可以参考的范例
输入/可以开始输入搜索字串
按键 | 进行工作 |
空白键 | 向下翻一页 |
[pgDn] | 一行一行的 |
[pgUp] | 同上 |
[Home] | 第一页 |
[end] | 最后一页 |
/string | 向下搜寻string这个字符串 |
?string | 向上搜索string这个字符串 |
n,N | 继续下一个或者反向查询 |
q | 退出page |
搜索特定指令/文件的manpage说明文档
man -f man
获取更多的man相关的信息
man -k man
获取有man这个关键字的所有
其他有用的文件(document)
目录: /usr/share/doc
数据同步写入磁盘: sync
su - 切换用户
shutdown 关机的一些参数
[root@study ~]# /sbin/shutdown [-krhc] [时间] [警告讯息] 选项与参数: -k : 不要真的关机,只是发送警告讯息出去! -r : 在将系统的服务停掉之后就重新开机(常用) -h : 将系统的服务停掉后,立即关机。 (常用) -c : 取消已经在进行的 shutdown 指令内容。 时间 : 指定系统关机的时间!时间的范例下面会说明。若没有这个项目,则默认 1 分钟后自动进行。
[root@study ~]# shutdown -h now 立刻关机,其中 now 相当于时间为 0 的状态 [root@study ~]# shutdown -h 20:25 系统在今天的 20:25 分会关机,若在21:25才下达此指令,则隔天才关机 [root@study ~]# shutdown -h +10 系统再过十分钟后自动关机 [root@study ~]# shutdown -r now 系统立刻重新开机 [root@study ~]# shutdown -r +30 'The system will reboot' 再过三十分钟系统会重新开机,并显示后面的讯息给所有在线上的使用者 [root@study ~]# shutdown -k now 'This system will reboot' 仅发出警告信件的参数!系统并不会关机啦!吓唬人!
重新开机,关机: reboot,halt,poweroff
上面的halt,poweroff,reboot,shutdown等都是调用这个systemctl指令
systemctl [指令]
halt : 进入系统停止的模式,屏幕可能会保留一些讯息
poweroff : 进入系统关机模式.直接关机没有提供电力
reboot : 直接重新开机
suspend : 进入休眠模式
wget命令
wget命令用于在终端中下载网络文件,格式为“wget [参数] 下载地址”。
如果您没有Linux系统的管理经验,当前只需了解一下wget命令的参数以及作用,然后看一下下面的演示实验即可,切记不要急于求成。后面章节将逐步讲解Linux系统的配置管理方法,可以等您掌握了网卡的配置方法后再来进行这个实验操作。表2-5所示为wget命令的参数以及参数的作用。
Linux的文件权限与目录配置
-b 后台下载 -p 下载到指定目录 -t 最大的尝试次数 -c 断电续传 -P 下载页面内所有资源,包括图片,视频等 -r 递归下载
ps命令
查看系统中的进程状态
-a 显示所有进程 -u 用户以及其他详细信息 -x 显示没有控制终端的进程
Linux系统中时刻运行着许多进程,如果能够合理地管理它们,则可以优化系统的性能。在Linux系统中,有5种常见的进程状态,分别为运行、中断、不可中断、僵死与停止,其各自含义如下所示。
R(运行):进程正在运行或在运行队列中等待。
S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该 状态。
D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。
Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。
T(停止):进程收到停止信号后停止运行。
top命令
动态的监视进程活动与系统负载等信息,格式为top
第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如“97.1 id”意味着有97.1%的CPU处理器资源处于空闲。
第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
pidof命令
查询某个指定服务进程的PID,格式为pidof [参数] [服务名称]
kill命令
终止某个指定PID的服务进程
killall命令
终止某个指定服务所对应的全部服务
系统状态检测命令
ifconfig命令
获取网卡配置与网络状态信息
uname命令
查看系统内核与系统版本等信息
一般与-a参数完成查看当前内核名称,主机名,内核发行版本,节点名,系统时间,硬件名称,硬件平台,处理器类型以及操作系统名称等信息
uptime命令
查看系统傅在信息
free命令
显示系统中内存的使用量信息, free -h
who命令
查看当前登入主机的用户终端信息
last命令
查看系统登陆记录
history命令
显示历史执行过的命令,格式为history -c
sosreport命令
收集系统配置及架构信息并输出诊断文档
工作目录切换命令
pwd命令
显示用户当前所处的工作的目录
cd命令
切换文件路径
ls命令 ls -al
查看命令
文本文件编辑命令
cat命令
参看纯文本文件 -n显示行数
more命令
查看纯文本文件,(内容较多)
head命令
显示纯文本文档的前N行
tail命令
纯文本文档的后N行或持续刷新内容
tr命令
替换文件中的字符 cat test | tr [原字符] [目标字符]
wc命令
统计指定文本的行数,字数,字节数,格式为 wc [参数] 文本
-l 只显示行数 -w 只显示单词书 -c 只显示字节数
start命令
查看文件存储信息和时间等信息
cut命令
按"列"提取文本字符,格式为 cut [参数] 文本
diff命令
比较多个文件的差异
文件目录管理命令
touch命令
创建空白文件或设置文件的时间
mkdir命令
创建空白的目录
cp命令
复制文件或目录, cp[选项] 源文件 目标文件
如果目标文件是目录,则会把源文件复制到该目录中;
如果目标文件也是普通文件,则会询问是否要覆盖它;
如果目标文件不存在,则执行正常的复制操作。
-p 保留源文件的属性 -d 若对象为链接文件,则保留该连接文件的属性 -r 递归持续复制 -i 若文件存在则询问是否覆盖 -a 相当于-pdr
mv命令
剪切文件或将文件重命名
rm命令
删除文件或目录
rm命令用于删除文件或目录,格式为“rm [选项] 文件”。
在Linux系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复的确认信息,可在rm命令后跟上-f参数来强制删除。另外,想要删除一个目录,需要在rm命令后面一个-r参数才可以,否则删除不掉。
dd命令
按照指定大小和个数的数据块来复制文件或转换文件
file命令
查看文件类型
tar命令
tar命令用于打开文件进行打包压缩或解压
-c 创建压缩文件 -x 解开压缩文件 -t 查看压缩包内有哪些文件 -z 有Gzip压缩或解压 -j 用bzip2压缩或解压 -v 显示压缩或解压的过程 -f 目标文件名 -P 保留原始的权限与属性 -p 使用绝对的路径来压缩 -C 指定解压的目录
grep命令
用于关键词搜索,并显示匹配的结果
-b 将可执行文件(binary)当作文件(text)来搜索 -c 仅显示找到的行数 -i 忽略大小写 -n 显示行号 -v 反向选择-仅列出没有"关键词"的行
find命令 find [查找路径] 寻找条件 操作
按照指定条件来查找文件
-name 匹配名称 -perm 匹配权限(mode为完全匹配,-mode为包含即可) -user 匹配所有者 -group 匹配所有组 -mtime -n +n 匹配修改内容的时间(-n指n天以内,+n指n天以前) -atime -n +n 匹配访问文件的时间(-n指n天以内,+n指n天以前) -ctime -n +n 匹配修改文件权限的时间(-n指n天以内,+n指n天以前) -nouser 匹配无所有者的文件 -nogroup 匹配无所有组的文件 -newer f1 !f2 匹配比文件f1新但比f2旧的文件 --type b/d/c/p/l/f 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件) -size 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件) -prune 忽略某个目录 -exec …… {}\; 后面可跟用于进一步处理搜索结果的命令(下文会有演示)
-iname 不区分大小写
loacte命令
locate命令要比find快得多,原因在于它不搜索,原因在于它不搜索具体目录,而是所有一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用loacte命令查不到最新变动过的文件,为了避免这种情况,可以再使用locate之前,显示用updatedb命令,手动更新数据库
locate 命令的使用实例: $locate /etc/sh 搜索etc目录下所有sh开头的文件 $locate ~/m 搜索用户主目录下,所有m开头的文件 $locate -i ~/m 搜索用户主目录下,所有以m开头的文件,并且忽略大小写.
whereis
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b), man说明文件(参数-m)和源文件(参数-s).如果省略参数,则返回所有信息
whereis命令的使用实例
$whereis grep
which
which命令的作用是,再PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果,也就是说,使用which命令,就可以看到某个系统命令是否存在,以执行的到底是哪一个位置命令.
which命令的使用:
$which grep
yum命令
yum repolist all 列出所有仓库 yum list all 列出仓库中所有的软件 yum info 软件名称 查看软件包信息 yum install 软件名称 安装软件包 yum reinstall 软件名称 重新安装软件包 yum update 软件名称 升级软件包 yum clean all 移除软件包 yum check-update 检查可更新的软件包 yum grouplist 查看系统中已经按安装的软件包组 yum groupinstall 软件包组 安装指定的软件包组 yum groupremove 软件包组 移除指定的软件包组 yum groupinfo 软件包组 查询指定的软件包组信息
systemd初始化进程
RHEL 7 系统选择 systemd 初始化进程服务已经是一个既定事实,因此也没有 了“运行级别”这个概念,Linux 系统在启动时要进行大量的初始化工作,比如挂载文件系统 和交换分区、启动各类进程服务等,这些都可以看作是一个一个的单元(Unit),systemd 用目 标(target)代替了 System V init 中运行级别的概念,这两者的区别如下
systemd 与 system V init 的区别以及作用
运行级别 systemd目标名称 作用 0 runleve10.target, poweroff.target 关机 1 runlevel1.target, rescue.target 单用户模式 2 runlevel2.target, multi-user.target 等同于级别3 3 runlevel3.target, multi-user.target 多用户的文本界面 4 runlevel4.target, multi-user.target 等同于等级3 5 runlevel5.target, graphical.target 多用户的图形界面 6 runlevel6.target, reboot.target 重启 emergency emergency.target 紧急shell
修改系统默认的运行级别
init 3
如果想将系统默认的运行目标修改为"多用户, 无图形"模式,可直接用ln命令把多用户模式目标文件连接到/etc/systemd/system/目录:
# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
systemctl 管理服务的启动,重启,停止,重载,查看状态等常用命令
systemctl start foo.service 启动服务 systemctl restart foo.service 重启服务 systemctl stop foo.service 停止服务 systemctl reload foo.service 重新加载配置文件(不执行服务) systemctl status foo.service 查看服务状态
systemctl设置服务开机启动,不启动,查看各级别下服务启动状态等常用命令
systemctl enable foo.service 开机自动启动 systemctl disable foo.service 开机不自动启动 systemctl is-enabled foo.service 查看特定服务是否为开机自动启动 systemctl list-unit-files --type=service 查看各个级别下服务的启动与禁用情况
网络相关的命令
write 给用户发送消息 ctrl+D保存发送
wall write all 发送所有信息
ping -c 指定发送次数
ifconfig interface configure 查看当前网络
eth0 本机的真实网卡
lo 回环网卡
mail 查看发送的电子邮件
last 统计用户登陆时间
netstart 显示网络相关信息
-t tcp协议
-u udp协议
-l 监听
-r 路由(网关)
-n 显示ip地址和端口号
范例:
netstat -tlun 查看本机监听的端口
netstat -an 查看本机所有的网络连接
netstat -rn 查看本机路由表
setup 配置网络
挂在命令
mount mount -t 文件系统 设备文件名挂在点
mount -t iso9660 /dev/sr0/mnt/cdrom
关机命令
shutdown -r now/可以指定时间(推荐使用)
-c 取消前一个关机命令
-h 关机
-r 重启