Linux
学习版本:centos7
远程登陆
Linux 一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的 Linux 服务器。这时我们就需要远程登录到Linux服务器来管理维护系统。
Linux
系统中是通过 ssh
服务实现的远程登录功能,默认 ssh
服务端口号为 22
。
Window
系统上 Linux
远程登录客户端有 SecureCRT
, Putty
, SSH
Secure
Shell
等,本文以 Putty
为例来登录远程服务器。
- putty
- 终端利用ssh登录远程服务器
安装ssh: yum install ssh 启动ssh: service sshd start 登录远程服务器: ssh -p 50022 my@127.0.0.1 输入密码: my@127.0.0.1: -p 后面是端口 my 是服务器用户名 127.0.0.1 是服务器 ip 回车输入密码即可登录
系统目录结构
文件系统的最顶层是由根目录开始的,cd /
就是将你的位置移动到你的计算机文件系统的起始点。
两个特殊表示:
.
:代表当前的目录,也可以使用./
来表示;..
:代表上一层目录,也可以../
来代表。
最常见的顶级目录及其描述:
/
- 根目录:在Linux
中,一切都从根目录开始。它是文件系统的最顶层。所有其他目录都挂载在根目录下。/bin
- 二进制程序:存放系统的基本命令和程序,如ls、cp
等,这些命令对于所有用户都是必需的。/boot
- 启动目录:包含了启动Linux
系统时所需的文件,包括Linux
内核、初始内存盘映像以及引导加载程序(如GRUB
)的配置文件。/dev
- 设备文件:用于存放设备文件,这些特殊文件代表系统中的硬件组件,如磁盘驱动器、输入设备等。/etc
- 配置文件:包含了系统范围内的所有配置文件。/home
- 用户主目录:在多用户系统中,每个用户都有一个专属的目录,通常以用户的名字命名。/lib
- 系统库文件:存放系统最基本的库文件,这些文件支持位于/bin
和/sbin
目录下的二进制文件。/media
- 可移动媒体:这是外部可移动存储设备的挂载点,如USB
驱动器、CD-ROM
等。/mnt
- 挂载点:传统上被用来临时挂载文件系统。/opt
- 可选的应用软件包:通常用于存放第三方和可选的软件应用程序。/proc
- 进程信息:这是一个虚拟文件系统,包含了当前运行进程的信息以及内核和硬件的信息。/root
- 根用户的家目录:这是系统管理员,也就是root
用户的个人目录。/sbin
- 系统二进制文件:存放一些重要的系统管理程序,通常只有root
用户才能执行。/srv
- 服务数据:包含特定系统服务相关的数据。/sys
- 系统虚拟文件系统:提供了内核和设备的信息和控制接口。/tmp
- 临时文件:用于存储系统和用户生成的临时文件。/usr
- 用户程序:包含用户应用程序和文件的次级层次结构,其中包括库、文档、静态数据等。/var
- 变量文件:用于存放经常变化的文件,如日志、数据库、邮件等。
文件基本属性
chgrp
、chown
和 chmod
是 Linux 系统中用于更改文件属性的三个重要命令,它们分别用于改变文件的组所有权、用户所有权以及权限。
chown
更改文件所有者(owner),也可以同时更改文件所属组
chown [–R] 所有者 文件名
chown [-R] 所有者:属组名 文件名
ubuntu@VM-24-2-ubuntu:~$ su -
root@VM-24-2-ubuntu:~# cd /root
root@VM-24-2-ubuntu:~# touch install.log
root@VM-24-2-ubuntu:~# chown bin install.log
root@VM-24-2-ubuntu:~# chown root:root install.log
chmod
Linux文件属性有两种设置方法,一种是数字,一种是符号
Linux 文件的基本权限有九个,分别是 owner/group/others
(拥有者/组/其他) 三种身份各有自己的 read/write/execute
权限。
符号
文件的权限字符为: -rwxrwxrwx
数字
各权限的分数对照表如下:
r:4
w:2
x:1
每种身份(user/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx— 分数则是:
user : rwx 即 4+2+1 = 7
group : rwx 即 4+2+1 = 7
others : — 即 0+0+0 = 0
chmod [-R] xyz 文件或目录
# xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
# -R : 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更
root@VM-24-2-ubuntu:~# ll .bashrc
root@VM-24-2-ubuntu:~# chmod 777 .bashrc
root@VM-24-2-ubuntu:~# chmod a=rwx .bashrc
root@VM-24-2-ubuntu:~# chmod u=rwx,g=rx,o=r .bashrc
root@VM-24-2-ubuntu:~# touch test1
root@VM-24-2-ubuntu:~# chmod u-x,o+r test1
chgrp
用于修改文件或目录的所属组(group)
chgrp [-R] group file/directory
---
root@VM-24-2-ubuntu:~# touch file.txt
root@VM-24-2-ubuntu:~# chgrp group1 file.txt
root@VM-24-2-ubuntu:~# chgrp group2 directory/
root@VM-24-2-ubuntu:~# chgrp -R group3 directory/
文件与目录管理
ls(英文全拼:list files): 列出目录及文件名
- -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
- -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
- -l :长数据串列出,包含文件的属性与权限等等数据;(常用)
[root@www ~]# ls -al ~
cd(英文全拼:change directory):切换目录
- cd [相对路径或绝对路径]
#使用 mkdir 命令创建 runoob 目录
[root@www ~]# mkdir runoob
#使用绝对路径切换到 runoob 目录
[root@www ~]# cd /root/runoob/
#使用相对路径切换到 runoob 目录
[root@www ~]# cd ./runoob/
# 表示回到自己的家目录,亦即是 /root 这个目录
[root@www runoob]# cd ~
# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;
[root@www ~]# cd ..
pwd(英文全拼:print work directory):显示目前的目录
- -P :显示出确实的路径,而非使用链接 (link) 路径
[root@www ~]# pwd [-P]
mkdir(英文全拼:make directory):创建一个新的目录
- -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
- -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
# mkdir [-mp] 目录名称
[root@www tmp]# mkdir -p test1/test2/test3/test4
[root@www tmp]# mkdir -m 711 test2
# 要注意的是,这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录。
rmdir(英文全拼:remove directory):删除一个空的目录
- -p :从该目录起,一次删除多级空目录
rmdir [-p] 目录名称
[root@www tmp]# rmdir test
[root@www tmp]# rmdir -p test1
cp(英文全拼:copy file): 复制或复制并重命名 文件或目录
- -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
- -d:若来源档为链接档的属性(link file),则复制链接档属性而非文件本身;
- -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
- -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
- -l:进行硬式链接(hard link)的链接档创建,而非复制文件本身;
- -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
- -r:递归持续复制,用於目录的复制行为;(常用)
- -s:复制成为符号链接档 (symbolic link),亦即『捷径』文件;
- -u:若 destination 比 source 旧才升级 destination !
[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
[root@www ~]# cp [options] source1 source2 source3 .... directory
---
[root@www ~]# cp ~/.bashrc /tmp/bashrc
[root@www ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n <==n不覆盖,y为覆盖
rm(英文全拼:remove): 删除文件或目录
- -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
- -i :互动模式,在删除前会询问使用者是否动作
- -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
rm [-fir] 文件或目录
---
[root@www tmp]# rm -i bashrc
rm: remove regular file `bashrc'? y
mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
- -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory
---
[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest
[root@www tmp]# mv mvtest mvtest2
- map [命令]查看命令帮助
查看文件内容
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
- nl 显示的时候,顺道输出行号!
- more 一页一页的显示文件内容
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
- head 只看头几行
- tail 只看尾几行
用户和用户组管理
实现用户账号的管理,要完成的工作主要有如下几个方面:
用户账号的添加、删除与修改
# 添加新的用户账号使用useradd命令
useradd 选项 用户名
useradd –d /home/sam -m sam
useradd -s /bin/sh -g group –G adm,root gem
# 删除一个已有的用户账号使用userdel命令
userdel 选项 用户名
userdel -r sam
# 修改已有用户的信息使用usermod命令
usermod -s /bin/ksh -d /home/z –g developer sam
用户口令的管理
指定和修改用户口令的Shell命令是passwd
# passwd 选项 用户名
$ passwd
Old password:******
New password:*******
Re-enter new password:*******
# 如果是超级用户
# passwd sam
New password:*******
Re-enter new password:*******
用户组的管理
- groupadd 选项 用户组
- -g GID 指定新用户组的组标识号。
- -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
# 增加一个新的用户组使用groupadd命令 groupadd group1 groupadd -g 101 group2
- groupdel 用户组
- -g GID 为用户组指定新的组标识号。
- -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
- -n新用户组 将用户组的名字改为新名字
# 如果要删除一个已有的用户组,使用groupdel命令 groupdel group1
- groupmod 选项 用户组
- -g GID 为用户组指定新的组标识号。
- -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
- -n 新用户组 将用户组的名字改为新名字
# 修改用户组的属性使用groupmod命令 groupmod -g 102 group2 groupmod –g 10000 -n group3 group2
- 用户组之间切换命令
newgrp root
vi/vim
使用比较多的是 vim 编辑器。vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
-
什么是 vim?
Vim 是从 vi 发展出来的一个文本编辑器。
vim 则可以说是程序开发者的一项很好用的工具。
代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 -
vi/vim 的使用
基本上 vi/vim 共分为三种模式,
命令模式(Command Mode)
命令模式只有一些最基本的命令,因此仍要依靠底线命令行模式输入更多命令。
i -- 切换到输入模式,在光标当前位置开始输入文本。
x -- 删除当前光标所在处的字符。
: -- 切换到底线命令模式,以在最底一行输入命令。
a -- 进入插入模式,在光标下一个位置开始输入文本。
o:在当前行的下方插入一个新行,并进入插入模式。
O -- 在当前行的上方插入一个新行,并进入插入模式。
dd -- 剪切当前行。
yy -- 复制当前行。
p(小写) -- 粘贴剪贴板内容到光标下方。
P(大写)-- 粘贴剪贴板内容到光标上方。
u -- 撤销上一次操作。
Ctrl + r -- 重做上一次撤销的操作。
:w -- 保存文件。
:q -- 退出 Vim 编辑器。
:q! -- 强制退出Vim 编辑器,不保存修改。
输入模式
在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式。
在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下 :(英文冒号)就进入了底线命令模式。
在底线命令模式中,基本的命令有(已经省略了冒号):
:w:保存文件。
:q:退出 Vim 编辑器。
:wq:保存文件并退出 Vim 编辑器。
:q!:强制退出Vim编辑器,不保存修改。
yum命令
yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器
yum [options] [command] [package …]
- 常用命令
1. 列出所有可更新的软件清单命令:yum check-update 2. 更新所有软件命令:yum update 3. 仅安装指定的软件命令:yum install <package_name> 4. 仅更新指定的软件命令:yum update <package_name> 5. 列出所有可安裝的软件清单命令:yum list 6. 删除软件包命令:yum remove <package_name> 7. 查找软件包命令:yum search <keyword> 8. 清除缓存命令: yum clean packages: 清除缓存目录下的软件包 yum clean headers: 清除缓存目录下的 headers yum clean oldheaders: 清除缓存目录下旧的 headers yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers
apt
apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器
apt [options] [command] [package …]
- apt 常用命令
1. 列出所有可更新的软件清单命令:sudo apt update 2.升级软件包:sudo apt upgrade 3.列出可更新的软件包及版本信息:apt list --upgradeable 4.升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade 5.安装指定的软件命令:sudo apt install <package_name> 6.安装多个软件包:sudo apt install <package_1> <package_2> <package_3> 7.更新指定的软件命令:sudo apt update <package_name> 8.显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name> 9.删除软件包命令:sudo apt remove <package_name> 10.清理不再使用的依赖和库文件: sudo apt autoremove 11.移除软件包及配置文件: sudo apt purge <package_name> 12.查找软件包命令: sudo apt search <keyword> 13.列出所有已安装的包:apt list --installed 14.列出所有已安装的包的版本信息:apt list --all-versions