基础命令
linux只有一个顶级目录/
ls命令
功能:列出文件夹信息
语法: ls [-l -h -a] [参数]
参数:被查看的文件夹,不提供参数,表示查看当前工作目录
-l,以列表形式查看
-h,配合-l,以更加人性化的方式显示文件大小
-a,显示隐藏文件在Linux中以 . 开头的,均是隐藏的。
默认不显示出来,需要 -a 选项才可查看到。
pwd命令
功能:展示当前工作目录
语法: pwd
每一个用户在Linux系统中都有自己的专属工作目录,称之为HOME目录。
普通用户的HOME目录,默认在: /home/用户名
root用户的HOME目录,在: /root
相对路径、绝对路径
相对路径, 非 / 开头的称之为相对路径
相对路径表示以 当前目录 作为起点,去描述路径,如 test/a.txt ,表示当前工作目录内的test文件夹内的a.txt文件绝对路径, 以 / 开头的称之为绝对路径
绝对路径从 根 开始描述路径
特殊路径符
. ,表示当前,比如./a.txt,表示当前文件夹内的 a.txt 文件
.. ,表示上级目录,比如 ../ 表示上级目录, ../../ 表示上级的上级目录
~ ,表示用户的HOME目录,比如 cd ~ ,即可切回用户HOME目录
mkdir命令
功能:创建文件夹
语法: mkdir [-p] 参数
参数:被创建文件夹的路径
选项:-p,可选,表示创建前置路径(如果想一次性创建多个不存在的前置路径,可以通过mkdir -p 文件路径)
touch命令
功能:创建文件
语法: touch 参数
参数:被创建的文件路径
cat命令
功能:查看文件内容
语法: cat 参数
参数:被查看的文件路径
more命令
功能:查看文件,可以支持翻页查看
语法: more 参数
参数:被查看的文件路径
在查看过程中:
空格 键翻页
q 退出查看
cp命令
功能:复制文件、文件夹
语法: cp [-r] 参数1 参数2
参数1,被复制的
参数2,要复制去的地方
选项:-r,可选,复制文件夹使用,可以递归使用
示例:
cp a.txt b.txt,复制当前目录下a.txt为b.txt
cp a.txt test/,复制当前目录a.txt到test文件夹内
cp -r test test2,复制文件夹test到当前文件夹内为test2存在
mv命令
功能:移动文件、文件夹
语法: mv 参数1 参数2
参数1:被移动的
参数2:要移动去的地方,参数2如果不存在,则会进行改名(参数1为文件,参数2是不存在的文件,移动过去就成了新文件)
rm命令
功能:删除文件、文件夹
语法: rm [-r -f] 参数...参数
参数:支持多个,每一个表示被删除的,空格进行分隔
选项:-r,删除文件夹使用
选项:-f,强制删除,不会给出确认提示,一般root用户会用到
rm命令支持通配符 *,用来做模糊匹配
符号* 表示通配符,即匹配任意内容(包含空),示例:
test*,表示匹配任何以test开头的内容
*test,表示匹配任何以test结尾的内容
*test*,表示匹配任何包含test的内容
which命令
功能:查看命令的程序本体文件路径
语法: which 参数
参数:被查看的命令
find命令
功能:搜索文件
语法1按文件名搜索: find 路径 -name 参数
路径,搜索的起始路径
参数,搜索的关键字,支持通配符*, 比如: * test表示搜索任意以test结尾的文件
grep命令
功能:过滤关键字
语法: grep [-n] 关键字 文件路径选项-n,可选,表示在结果中显示匹配的行的行号。
参数,关键字,必填,表示过滤的关键字,带有空格或其它特殊符号,建议使
用””将关键字包围起来
参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口
wc命令
功能:统计
语法: wc [-c -m -l -w] 文件路径
选项,-c,统计bytes数量
选项,-m,统计字符数量
选项,-l,统计行数
选项,-w,统计单词数量
参数,文件路径,被统计的文件,可作为内容输入端口参数文件路径,可作为管道符的输入
管道符|
写法: |
功能:将符号左边的结果,作为符号右边的输入
示例:
cat a.txt | grep itheima ,将cat a.txt的结果,作为grep命令的输入,
用来过滤 itheima 关键字
可以支持嵌套:cat a.txt | grep itheima | grep itcast
echo命令
功能:输出内容
语法: echo 参数
参数:被输出的内容(被输出的内容最好带双引号)
`反引号
功能:被两个反引号包围的内容,会作为命令执行
示例:
echo `pwd`,会输出当前工作目录
重定向符 >和>>
tail命令:
tail [-f -num] Linux路径
-f 表示持续追踪,能看到文件内容的变化
-num 表示查看尾部多少行,不填默认10行
vi/vim
vim是vi的加强版,兼容vi的所有命令
三种工作模式:
命令模式(Command mode)
命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。
此模型下,不能自由进行文本编辑。
输入模式(Insert mode)
也就是所谓的编辑模式、插入模式。
此模式下,可以对文件内容进行自由编辑。
底线命令模式(Last line mode)
以:开始,通常用于文件的保存、退出。
root用户
root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的。
普通用户的权限,一般在其HOME目录内是不受限的
一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限
su命令就是用于账户切换的系统命令,其来源英文单词:Switch User
语法:su [-] [用户名]
- 符号是可选的,表示是否在切换用户后加载环境变量(后续讲解),建议带上
参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root
切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:ctrl + d使用普通用户,切换到其它用户需要输入密码,如切换到root用户
使用root用户切换到其它用户,无需密码,可以直接切换
sudo命令:
语法: sudo 其他命令
在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权
但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证
为普通用户配置sudo认证
上面的itheima 就是你的用户名
用户、用户组
Linux系统中可以:
配置多个用户
配置多个用户组
用户可以加入多个用户组中以下命令需root用户执行
创建用户组
groupadd 用户组名删除用户组
groupdel 用户组名
创建用户
useradd [-g -d] 用户名
选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
删除用户
userdel [-r] 用户名
选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
查看用户所属组
id [用户名]
参数:用户名,被查看的用户,如果不提供则查看自身
修改用户所属组
usermod -aG 用户组 用户名,将指定用户加入指定用户组
使用getent命令,可以查看当前系统中有哪些用户
语法: getent passwd
使用getent命令,同样可以查看当前系统中有哪些用户组
语法:getent group
权限控制
r表示读权限
w表示写权限
x表示执行权限
针对文件、文件夹的不同,rwx的含义有细微差别
r,针对文件可以查看文件内容
针对文件夹,可以查看文件夹内容,如ls命令
w,针对文件表示可以修改此文件
针对文件夹,可以在文件夹内:创建、删除、改名等操作
x,针对文件表示可以将文件作为程序执行
针对文件夹,表示可以更改工作目录到此文件夹,即cd进入
修改权限控制
- chmod
我们可以使用chmod命令,修改文件、文件夹的权限信息。
注意,只有文件、文件夹的所属用户或root用户可以修改。
语法:chmod [-R] 权限 文件或文件夹
选项:-R,对文件夹内的全部内容应用同样的操作示例:
chmod u=rwx,g=rx,o=x hello.txt ,将文件权限修改为:rwxr-x--x
其中:u表示user所属用户权限,g表示group组权限,o表示other其它用户权限
chmod -R u=rwx,g=rx,o=x test,将文件夹test以及文件夹内全部内容权限设置为:rwxr-x--x
除此之外,还有快捷写法:chmod 751 hello.txt
将hello.txt的权限修改为751其实就是把751转换为二进制
权限可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限。
数字的细节如下:r记为4,w记为2,x记为1,可以有:
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
所以751表示: rwx(7) r-x(5) --x(1)
chown命令,可以修改文件、文件夹的所属用户和用户组
普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行
语法:chown [-R] 用户:用户组 文件或者文件夹chown [-R] 用户:用户组 文件或者文件夹
选项,-R,同chmod,对文件夹内全部内容应用相同规则
选项,用户,修改所属用户
选项,用户组,修改所属用户组
:用于分隔用户和用户组
示例:
chown root hello.txt,将hello.txt所属用户修改为root
chown :root hello.txt,将hello.txt所属用户组修改为root
chown root:itheima hello.txt,将hello.txt所属用户修改为root,用户组修改为itheima
chown -R root test,将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则
实用快捷键
ctrl + c 强制停止
Linux某些程序的运行,如果想要强制停止它,可以使用快捷键ctrl + c
命令输入错误,也可以通过快捷键ctrl + c,退出当前输入,重新输入
ctrl + d 退出或登出,但不适用于退出vi/vim
history命令,查看历史输入过的命令
!命令前缀,自动执行上一次匹配前缀的命令
ctrl+r 历史命令搜索
光标快捷移动键
ctrl + a,跳到命令开头
ctrl + e,跳到命令结尾
ctrl + 键盘左键,向左跳一个单词
ctrl + 键盘右键,向右跳一个单词清屏:
通过快捷键ctrl + l,可以清空终端内容
或通过命令clear得到同样效果
软件安装:
yum:RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题。
语法: yum [-y] [install|remove|search] 软件名称
选项:-y,自动确认,无需手动确认安装或卸载过程
install:安装
remove:卸载
search:搜索yum命令需要root权限,可以su切换到root,或使用sudo提权。
yum命令需要联网CentOS使用yum管理器,Ubuntu使用apt管理器
语法: apt [-y] [ install | remove | search] 软件名称
用法和yum一致,同样需要root权限
apt install wget,安装wget
apt remove wget,移除wget
apt search wget,搜索wget
systemctl 命令
Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启
能够被systemctl管理的软件,一般也称之为:服务
语法:systemctl start | stop | status | enable | disable 服务名
系统内置的服务比较多,比如:
NetworkManager,主网络服务
network,副网络服务
firewalld,防火墙服务
sshd,ssh服务(FinalShell远程登录Linux使用的就是这个服务)现在可以使用systemctl去尝试一下,控制这些服务的启动、关闭、自启动
ln 命令创建软连接
在系统中创建软链接,可以将文件、文件夹链接到其它位置。
类似Windows系统中的《快捷方式》
语法: ln -s 参数1 参数2
-s选项,创建软连接
参数1:被链接的文件或文件夹
参数2:要链接去的目的地
实例:
ln -s /etc/yum.conf ~/yum.conf
ln -s /etc/yum ~/yum
修改主机名:
可以使用命令:hostname查看主机名
可以使用命令:hostnamectl set-hostname 主机名,修改主机名(需root)
ping测试是否联通
可以通过ping命令,检查指定的网络服务器是否是可联通状态
语法: ping [ -c num ] ip或主机名
选项:-c,检查的次数,不使用-c选项,将无限次数持续检查
参数:ip或主机名,被检查的服务器的ip地址或主机名地址
wget命令:
wget是非交互式的文件下载器,可以在命令行内下载网络文件
语法: wget [ -b ] url
选项:-b,可选,后台下载,会将日志写入到当前工作目录的wget-log文件,通过tail命令可以监控后台下载进度:tail -f wget-log
参数:url,下载链接无论下载是否完成,都会生成要下载的文件,如果下载未完成,请及时清理未完成的不可用文件。
curl 命令
curl可以发送http网络请求,可用于:下载文件、获取信息等
语法:
选项:-O,用于下载文件,当url是下载链接时,可以使用此选项保存文件
参数:url,要发起请求的网络地址
端口
公认端口:1~1023,通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口,HTTPS服务的443端口(非特殊需要,不要占用这个范围的端口)
注册端口:1024~49151,通常可以随意使用,用于松散的绑定一些程序\服务
动态端口:49152~65535,通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用。
可以通过Linux命令去查看端口的占用情况
使用nmap命令,安装nmap:yum -y install nmap
语法:nmap 被查看的IP地址可以看到,本机(127.0.0.1)上有1个端口现在被程序占用了。
可以通过netstat命令,查看指定端口的占用情况
语法:netstat -anp | grep 端口号,安装netstat:yum -y install net-tools
PS 命令
通过ps命令查看Linux系统中的进程信息
语法: ps [-e -f]
选项:-e,显示出全部的进程
选项:-f,以完全格式化的形式展示信息(展示全部信息)
一般来说,固定用法就是: ps -ef 列出全部进程的全部信息
关闭进程
在Linux中,可以通过kill命令关闭进程。
语法:
选项:-9,表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制。
查看系统资源占用
通过top命令查看CPU、内存使用情况,类似Windows的任务管理器
磁盘信息监控
使用df命令,可以查看硬盘的使用情况
语法:df [-h]
选项:-h,以更加人性化的单位显示
磁盘信息监控
可以使用iostat查看CPU、磁盘的相关信息
语法:iostat [-x] [num1] [num2]
选项:-x,显示更多信息
num1:数字,刷新间隔,num2:数字,刷新几次
网络状态监控
环境变量:
环境变量是一种KeyValue型结构,即名称和值
env命令即可查看当前系统中记录的环境变量
无论当前工作目录是什么,都能执行/usr/bin/cd这个程序,这个就是借助环境变量中:PATH这个项目的值来做到的。
$符号
在Linux系统中,$符号被用于取”变量”的值。
环境变量记录的信息,除了给操作系统自己使用外,如果我们想要取用,也可以使用。
取得环境变量的值就可以通过语法:$环境变量名 来取得
比如: echo $PATH
就可以取得PATH这个环境变量的值,并通过echo语句输出出来。
自行设置环境变量
Linux环境变量可以用户自行设置,其中分为:
临时设置,语法:export 变量名=变量值
永久生效
针对当前用户生效,配置在当前用户的: ~/.bashrc文件中
针对所有用户生效,配置在系统的: /etc/profile文件中
并通过语法:source 配置文件,进行立刻生效,或重新登录FinalShell生效
自定义环境变量:
环境变量PATH这个项目里面记录了系统执行命令的搜索路径。
这些搜索路径我们也可以自行添加到PATH中去。测试:
在当前HOME目录内创建文件夹,myenv,在文件夹内创建文件mkhaha
通过vim编辑器,在mkhaha文件内填入:echo 哈哈哈哈哈
完成上述操作后,随意切换工作目录,执行mkhaha命令尝试一下,会发现无法执行修改PATH的值
临时修改PATH:export PATH=$PATH:/home/itheima/myenv,再次执行mkhaha,无论在哪里都能执行了
或将export PATH=$PATH:/home/itheima/myenv,填入用户环境变量文件或系统环境变量文件中去
压缩、解压
Linux和Mac系统常用有2种压缩格式,后缀名分别是:
.tar,称之为tarball,归档文件,即简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单的封装
.gz,也常见为.tar.gz,gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩后的体积使用tar命令均可以进行压缩和解压缩的操作
语法: tar [ -c -v -x -f -z -C] 参数1 参数2 参数3 .... 参数N
-c,创建压缩文件,用于压缩模式
-v,显示压缩、解压过程,用于查看进度
-x,解压模式
-f,要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
-z,gzip模式,不使用-z就是普通的tarball格式
-C,选择解压的目的地,用于解压模式tar的常用组合为:
tar -cvf test.tar 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt 压缩到test.tar文件内
tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt 压缩到test.tar.gz文件内,使用gzip模式注意:
-z选项如果使用的话,一般处于选项位第一个
-f选项,必须在选项位最后一个-C选项单独使用,和解压所需的其它参数分开
zip压缩命令
可以使用zip命令,压缩文件为zip压缩包
语法:
-r,被压缩的包含文件夹的时候,需要使用-r选项,和rm、cp等命令的-r效果一致示例:
zip test.zip a.txt b.txt c.txt
将a.txt b.txt c.txt 压缩到test.zip文件内
zip -r test.zip test itheima a.txt
将test、itheima两个文件夹和a.txt文件,压缩到test.zip文件内
unzip 命令解压文件
使用unzip命令,可以方便的解压zip压缩包
语法: unzip [-d] 参数
-d,指定要解压去的位置,同tar的-C选项
参数,被解压的zip压缩包文件示例:
unzip test.zip,将test.zip解压到当前目录
unzip test.zip -d /home/itheima,将test.zip解压到指定文件夹内(/home/itheima)