本篇文章主要适用0基础的读者,内容会比较通俗易懂,也会有详细的图解教程,以及运行后的返回结果。我本人在系统性的学习linux系统之前,几乎可以说是0基础,仅仅会使用ssh远程连接linux,执行指令。但是对于指令的具体内容也是完全不懂的。故本文的目标是尽最大可能的去解决一些新手在学习中的常见但是又不容易被发现的错误。很多时候遇到的问题其实是很简单的,但是由于不知道如何去解决,问题过于简单,但自己又无法解决,相信读者肯定有过这种体会,因为问题难以解决,故迫不得已放弃学习。网络上有这样一句话,学习编程语言最难的就是基础环境的搭建,也就是设置环境变量。故《从入门到精通》很多人把重点放在了精通上,但我觉得最重要的是入门。——一个切身体会过的入门coder。
本文的内容分为两大部分,Linux系统和Linux命令两大部分,读者不必从头观看。只需要选择自己想要学习的部分即可。
在正式学习linux命令之前,我们必须再次了解一下linux 的目录系统。尽管在第一个章节中已经了解了linux的系统目录,但是侧重点在于系统根目录下各文件夹的具体含义。那么什么是根目录呢?这个问题值得说明。
/
,根目录是最顶级的目录了/
,而windows中每个盘符都是一个跟目录。可以理解为Linux的目录是一个数型结构,而Windows中是一个森林。/
来表示yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum [options] [command] [package ...]
实例 1
安装 pam-devel
[root@www ~]# yum install pam-devel
Setting up Install Process
Parsing package install arguments
Resolving Dependencies <==先检查软件的属性相依问题
--> Running transaction check
---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be updated
--> Processing Dependency: pam = 0.99.6.2-4.el5 for package: pam-devel
--> Running transaction check
---> Package pam.i386 0:0.99.6.2-4.el5 set to be updated
filelists.xml.gz 100% |=========================| 1.6 MB 00:05
filelists.xml.gz 100% |=========================| 138 kB 00:00
-> Finished Dependency Resolution
……(省略)
实例 2
移除 pam-devel
[root@www ~]# yum remove pam-devel
Setting up Remove Process
Resolving Dependencies <==同样的,先解决属性相依的问题
--> Running transaction check
---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be erased
--> Finished Dependency ResolutionDependencies Resolved=============================================================================Package Arch Version Repository Size
=============================================================================
Removing:pam-devel i386 0.99.6.2-4.el5 installed 495 kTransaction Summary
=============================================================================
Install 0 Package(s)
Update 0 Package(s)
Remove 1 Package(s) <==还好,并没有属性相依的问题,单纯移除一个软件Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running TransactionErasing : pam-devel ######################### [1/1]Removed: pam-devel.i386 0:0.99.6.2-4.el5
Complete!
实例 3
利用 yum 的功能,找出以 pam 为开头的软件名称有哪些?
[root@www ~]# yum list pam*
Installed Packages
pam.i386 0.99.6.2-3.27.el5 installed
pam_ccreds.i386 3-5 installed
pam_krb5.i386 2.2.14-1 installed
pam_passwdqc.i386 1.0.2-1.2.2 installed
pam_pkcs11.i386 0.5.3-23 installed
pam_smb.i386 1.1.7-7.2.1 installed
Available Packages <==底下则是『可升级』的或『未安装』的
pam.i386 0.99.6.2-4.el5 base
pam-devel.i386 0.99.6.2-4.el5 base
pam_krb5.i386 2.2.14-10 base
网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错。
将yum源设置为163 yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到。
首先备份/etc/yum.repos.d/CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前请做好相应备份)
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS6-Base-163.repo CentOS-Base.repo
运行以下命令生成缓存
yum clean all
yum makecache
除了网易之外,国内还有其他不错的 yum 源,比如中科大和搜狐。
中科大的 yum 源,安装方法查看:https://lug.ustc.edu.cn/wiki/mirrors/help/centos
sohu 的 yum 源安装方法查看: http://mirrors.sohu.com/help/centos.html
apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。
apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
apt 命令执行需要超级管理员权限(root)。
apt [options] [command] [package ...]
列出所有可更新的软件清单命令:sudo apt update
升级软件包:sudo apt upgrade
列出可更新的软件包及版本信息:apt list --upgradeable
升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade
安装指定的软件命令:sudo apt install
安装多个软件包:sudo apt install
更新指定的软件命令:sudo apt update
显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show
删除软件包命令:sudo apt remove
清理不再使用的依赖和库文件: sudo apt autoremove
移除软件包及配置文件: sudo apt purge
查找软件包命令: sudo apt search
列出所有已安装的包:apt list --installed
列出所有已安装的包的版本信息:apt list --all-versions
实例
查看一些可更新的包:
sudo apt update
升级安装包:
sudo apt upgrade
在某些时候,需要进行确认安装。在交互式输入字母 Y 即可开始升级。
可以将以下两个命令组合起来,一键升级:
sudo apt update && sudo apt upgrade -y
安装 mplayer 包:
sudo apt install mplayer
这个指令我们在前面也已经接触到了,相信大家都能够了解其的功能。这里做系统性的讲解。
功能:列出文件夹信息
语法:ls [-l -h -a] [参数]
隐藏文件、文件夹,在Linux中以
.
开头的,均是隐藏的。默认不显示出来,需要-a
选项才可查看到。
ll命令的功能是显示指定文件或目录的详细属性信息,实际它不是一个真实存在的命令文件,而是”ls -l --color=auto“的别名而已。ll命令可以默认列出当前目录内文件的详细属性信息,包含权限、所属、修改时间以及容量占用大小等等信息。
**语法格式:**ll [参数] 文件
常用参数:
-a | 列出目录下的所有文件(含隐藏文件) |
---|---|
-A | 显示除 “.”和“…”外的所有文件 |
-k | 以字节的形式表示文件的大小 |
-h | 以更易读的容量单位显示文件大小 |
-s | 在每个文件名后输出该文件的大小 |
-N | 不限制文件长度 |
-t | 以文件上次被修改的时间排序 |
-u | 以文件上次被访问的时间排序 |
功能:展示当前工作目录
语法:pwd
功能:切换工作目录
语法:cd [目标目录]
参数:目标目录,要切换去的地方,不提供默认切换到当前登录用户HOME目录
每一个用户在Linux系统中都有自己的专属工作目录,称之为HOME目录。
/home/用户名
如:/home/codermast/root
在登录系统以后,默认直接进入登录用户home目录。在使用codermast账户登录后,默认进入到的是/home/codermast目录
相对路径,非/
开头的称之为相对路径
相对路径表示以当前目录
作为起点,去描述路径,如test/a.txt
,表示当前工作目录内的test文件夹内的a.txt文件
绝对路径,以/
开头的称之为绝对路径
绝对路径从根
开始描述路径
这里和url中的相对地址和绝对地址是类似的。
.
,表示当前,比如./a.txt,表示当前文件夹内的a.txt
文件..
,表示上级目录,比如../
表示上级目录,../../
表示上级的上级目录~
,表示用户的HOME目录,比如cd ~
,即可切回用户HOME目录可以看作是make directory的缩写
功能:创建文件夹
语法:mkdir [-p] 参数
功能:创建文件
语法:touch 参数
功能:查看文件内容
语法:cat 参数
功能:查看文件,可以支持翻页查看
语法:more 参数
空格
键翻页q
退出查看功能:复制文件、文件夹
语法:cp [-r] 参数1 参数2
示例:
功能:移动文件、文件夹
语法:mv 参数1 参数2
功能:删除文件、文件夹
语法:rm [-r -f] 参数...参数
rm命令很危险,一定要注意,特别是切换到root用户的时候。千万不要使用rm -rf在根目录下。
功能:查看命令的程序本体文件路径
语法:which 参数
功能:搜索文件
语法1按文件名搜索:find 路径 -name 参数
*
test表示搜索任意以test结尾的文件功能:过滤关键字
语法:grep [-n] 关键字 文件路径
参数文件路径,可以作为管道符的输入
功能:统计
语法:wc [-c -m -l -w] 文件路径
参数文件路径,可作为管道符的输入
写法:|
功能:将符号左边的结果,作为符号右边的输入
示例:
cat a.txt | grep itheima
,将cat a.txt的结果,作为grep命令的输入,用来过滤itheima
关键字
可以支持嵌套:
cat a.txt | grep itheima | grep itcast
功能:输出内容
语法:echo 参数
功能:被两个反引号包围的内容,会作为命令执行
示例:
功能:查看文件尾部内容
语法:tail [-f] 参数
功能:查看文件头部内容
语法:head [-n] 参数
功能:将符号左边的结果,输出到右边指定的文件中去
>
,表示覆盖输出>>
,表示追加输出功能:控制系统服务的启动关闭等
语法:systemctl start | stop | restart | disable | enable | status 服务名
功能:创建文件、文件夹软链接(快捷方式)
语法:ln -s 参数1 参数2
语法:date [-d] [+格式化字符串]
修改时区为中国时区
sudo rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
功能:同步时间
安装:yum install -y ntp
启动管理:systemctl start | stop | restart | status | disable | enable ntpd
手动校准时间:ntpdate -u ntp.aliyun.com
格式:a.b.c.d
特殊IP:
查看ip:ifconfig
功能:Linux系统的名称
查看:hostname
设置:hostnamectl set-hostname 主机名
功能:查看进程信息
语法:ps -ef
,查看全部进程信息,可以搭配grep做过滤:ps -ef | grep xxx
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
参数说明:
使用 kill -l 命令列出所有可用信号。
最常用的信号是:
在使用nmap指令之前,我们需要先安装nmap,centos中执行
sudo yum install nmap
,需要管理员权限。
功能:查看端口的占用情况
语法:nmap ip地址
例如:nmap 127.0.0.1
功能:查看端口占用
用法:netstat -anp | grep xxx
测试网络是否联通
语法:ping [-c num] 参数
wegt是非交互式的文件下载器,可以在命令行内直接从互联网上下载文件。
语法:wegt [-b] url
选项:-b 可选,后台下载,会将日志自动写入到当前工作目录的wegt-log
文件
参数:url,下载链接
查看后台下载:可以使用tail命令查看后台下载进度,tail -f wget-log
注意:无论文件是否下载成功,只要下载了部分的文件,就一定会生成下载的残留文件,需要及时清理这些下载未完成不可用的文件。
curl可以发送http网络请求,可用于:下载文件、获取信息等
语法:curl [-o] url
功能:实时查看主机运行状态
语法:top
,查看基础信息
参数说明:
交互模式中,可以使用快捷键:
查看磁盘占用情况
语法:df [-h]
选项:-h,以更加人性化的单位显示
查看CPU、磁盘的相关信息
iostat [-x] [num1] [num2]
查看网络统计
sar -n DEV num1 num2
45.环境变量
.bashrc
文件/etc/profile
记录了执行程序的搜索路径
可以将自定义路径加入PATH内,实现自定义命令在任意地方均可执行的效果
可以取出指定的环境变量的值
语法:$变量名
示例:
echo $PATH
,输出PATH环境变量的值
echo ${PATH}ABC
,输出PATH环境变量的值以及ABC
如果变量名和其它内容混淆在一起,可以使用${}
tar类型
语法:tar -zcvf 压缩包 被压缩1...被压缩2...被压缩N
-z表示使用gzip,可以不写
zip类型
zip [-r] 参数1 参数2 参数N
tar类型
tar -zxvf 被解压的文件 -C 要解压去的地方
zip类型
unzip [-d] 参数
切换用户
su [-] [用户]
50.sudo命令
语法:sudo 其他命令
功能:
可以让一条普通命令带有root权限
需要以root用户执行visudo命令,增加配置方法可以让普通用户有sudo命令的权限。
在visudo中配置以后,可以让指定用户,无需密码使用sudo
修改文件、文件夹权限
语法:chmod [-R] 权限 参数
权限,要设置的权限,比如755,表示:rwxr-xr-x
权限值 | 含义 | 表示 |
---|---|---|
0 | 无任何权限 | — |
1 | 仅有x权限 | –x |
2 | 仅有w权限 | -w- |
3 | 有w和x权限 | -wx |
4 | 仅有r权限 | r– |
5 | 有r和x权限 | r-x |
6 | 有r和w权限 | rw- |
7 | 有全部权限 | rwx |
权限值:r=4,w=2,x=1
修改文件、文件夹所属用户、组
chown [-R] [用户][:][用户组] 文件或文件夹
以下命令需要root用户执行
groupadd 用户组名
groupdel 用户组名
以下命令需要root用户执行
useradd [-g] [-d] 用户名
/home/用户名
userdel [-r] 用户名
id [用户名]
usermod -aG 用户组 用户名
将指定用户加入指定用户组getenv group
,查看系统全部的用户组
getenv passwd
,查看系统全部的用户
查看系统全部的环境变量
env
以上就是我们经常使用的一些指令,其余指令并不经常使用,配合linux指令文档即可。
可以通过:命令 --help
查看命令的帮助手册
可以通过:man 命令
查看某命令的详细手册
可以在命令行内查看指令的帮助文档。