一些参考网站:
Linux 命令大全 | 菜鸟教程 (runoob.com)
一、文件权限管理
1.文件属性
首先通过ll或者ls -l命令显示文件属性以及文件所属的用户和组:
注:首个字符表示这个文件是目录、文件或链接文件等,确定文件类型:
d:目录
-:文件
l:链接文档(link file)
b:装置文件里可供储存的接口设备(可随机存取装置RAM)
c:装置文件里的串行端口设备,如键盘、鼠标等(一次性读取装置)
接下来三个字符为一组,1-3确定属主(文件所有者)权限,4-6确定属组(所有者的同组用户)权限,7-9确定其他用户权限:
r:可读
w:可写
x:可执行
-:没有权限
每个文件的属性由左边第一部分的10个字符确定:
2.更改文件属性
chgrp:更改文件属组
//语法
chgrp [-R] 属组名 文件名
//参数选项-R:递归更改文件属组,加上它时,该目录下的所有文件的属组都会更改
chown:更改文件属主和属组
//语法,不管原来的属主是什么,将其改为语句中的属主
chown [-R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
chmod:更改文件权限
(1)数字设置方法
//用数字代表各个权限:r=4,w=2,x=1
//每种身份(属主,属组,其他)的权限分数进行累加:
//例如-rwxrwx---分数为:
//owner=rwx=4+2+1=7
//group=rwx=4+2+1=7
//others=---=0+0+0=0
//设定权限的变更时文件的权限数字就是770,变更语法为:
chmod [-R] xyz 文件或目录
//选项参数
//xyz:数字类型的权限属性,为rwx属性数值的相加
//-R:进行递归的持续变更,以及连同次目录下的所有文件都会变更
(2)符号类型设置方法
//使用u,g,o来代表属主,属组,其他用户三种身份的权限
//a代表all,全部的身份
//+(加入),-(除去),=(设定)
//例:将文件权限设置为:-rwxr-xr--,语法为:
chomd u=rwx,g=rx,o=r 文件名
//例:拿掉全部人的可执行权限,语法为:
chmod a-x 文件名
通过chown来授权用户,通过chmod为用户设置可以开门的权限。
二、文件与目录管理
1.处理目录
ls:列出目录及文件名
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
-d :仅列出目录本身,而不是列出目录内的文件数据(常用)
-l :长数据串列出,包含文件的属性与权限等等数据;(常用)
cd:切换目录
//语法
cd [相对路径或绝对路径]
//绝对路径即为一级一级往下:如
cd /root/1/
//相对路径即为访问在同一上级目录下同级,例如1和2为root下同级的目录:如
cd ./2/
//回到根目录
cd ~
//返回上一级目录
cd ..
pwd:显示当前目录
//语法
pwd [-P]
//参数-P:显示出确实的路径,而非使用链接(link)路径
mkdir:创建新目录
//语法
mkdir [-mp] 目录名称
//参数
-m:直接配置文件的权限,如创建权限为rwx--x--x的目录
mkdir -m 711 目录名称
-p:直接将所需要的目录(包含上一级目录)递归创建,创建多层目录
mkdir -p test1/test2/test3
rmdir:删除空目录
//语法
rmdir [-p] 目录名称
//-p:从该目录起,一次删除多级空目录
cp:复制文件或目录
//语法
cp [options] 来源档 目标档
rm:移除文件或目录
//语法
rm [-fir] 文件或目录
//参数选项
-f:忽略不存在的文件,不会出现警告信息
-i:互动模式,删除前询问使用者是否动作
-r:递归删除,常用在目录删除,危险选项!
mv:移动文件与目录,或修改名称
//语法
mv [options] 来源档 目标档
2.文件内容查看
//由第一行开始显示文件内容
cat [-AbEnTv]
//由最后一行开始显示,tac是cat的倒写
tac [-AbEnTv]
//显示时顺道输出行号
nl [-bnw] 文件
//一页一页显示文件内容
more 文件
//比more多的是,可以往前翻页
less 文件
//只看头几行
head [-n number] 文件
//只看尾巴几行
tail [-n number] 文件
三、用户和用户组管理
1.用户账号的管理
//添加新的用户账号
useradd 选项 用户名
//删除账号
userdel 选项 用户名
//修改账号
usemod 选项 用户名
//密码管理
root用户修改用户的密码:passwd 选项 用户名
普通用户修改自己的密码:passwd
2.用户组的管理
//增加一个新的用户组
groupadd 选项 用户组
//删除一个已有的用户组
groupdel 用户组
//修改用户组属性
groupmod 选项 用户组
//用户组之间切换
newgrp root
3.与用户账号有关的系统文件
/etc/passwd
一行记录对应着一个用户,每行记录被冒号(:)分隔为7个字段,格式和含义为:
用户名:密码:用户标识号:组标识号:注释性描述:主目录:登录shell
四、磁盘管理
1.磁盘分区
(1)确定磁盘设备
fdisk -l:查看可用磁盘设备
(2)使用fdisk对磁盘进行分区(fdisk /dev/sda)
fdisk 磁盘设备文件名:磁盘分区
fdisk /dev/sda:
m(查看指令参数含义):
其中n为添加新分区:
含义分别为:
输入分区号(默认为4):选择4
输入起始扇区(默认16):使用默认值
输入结束扇区,:这里输入“+4M”表示 分区大小为4MB
w保存更改并退出:
再次使用fdisk -l命令查看是否挂载上:
2.磁盘格式化
mkfs 磁盘设备文件名:
//语法
mkfs.ext4 -F -L "rootfs" /dev/sda4
//.ext4:ext4格式
//-F:强制进行格式化,即使设备已经被挂载
//-L "rootfs":设置文件系统的标签为"rootfs",该标签作为文件系统的名称显示
///dev/sda4:要格式化的设备或分区
3.磁盘挂载与卸载
mkdir 设备磁盘文件名:创建空目录作为挂载点
mount 文件系统 指定挂载点:执行挂载命令
df -a:查看是否挂载成功
du:检查磁盘空间使用量
可知/dev/sda4分区已经成功挂载到/mnt/boot目录下。
umount [-fn] 装置文件名或挂载点:磁盘卸载
//参数
-f:强制卸载,可用在类似网络文件系统(NFS)无法读取到的情况下
-n:不升级/etc/mtab情况下卸载
4.访问文件系统
现在可以通过挂载点来访问和操作文件系统中的文件和目录。
5.磁盘检验
fsck 装置名称:检查和维护不一致的文件系统
五、vi/vim文本编辑器
1.vim键盘图:
2.vi/vim的使用
三种模式:命令模式、输入模式、命令行模式
命令模式:刚启动时
i -- 切换到输入模式,在光标当前位置开始输入文本。
x -- 删除当前光标所在处的字符。
: -- 切换到底线命令模式,以在最底一行输入命令。
a -- 进入插入模式,在光标下一个位置开始输入文本。
o:在当前行的下方插入一个新行,并进入插入模式。
O -- 在当前行的上方插入一个新行,并进入插入模式。
dd -- 删除当前行。
yy -- 复制当前行。
p -- 粘贴剪贴板内容到光标下方。
P -- 粘贴剪贴板内容到光标上方。
u -- 撤销上一次操作。
Ctrl + r -- 重做上一次撤销的操作。
:w -- 保存文件。
:q -- 退出 Vim 编辑器。
:q! -- 强制退出Vim 编辑器,不保存修改。
输入模式: i进入,Esc返回
命令模式下按下 i 切换到输入模式,按下Esc返回命令模式
输入模式:
字符按键以及Shift组合--输入字符
ENTER,回车键--换行
BACK SPACE--退格键,删除光标前一个字符
DEL,删除键--删除光标后一个字符
方向键--在文本中移动光标
HOME/END--移动光标到行首/行尾
Page Up/Page Down--上/下翻页
Insert--切换光标为输入/替换模式,光标将变成竖线/下划线
ESC--退出输入模式,切换到命令模式
底线命令模式::(英文冒号)进入
:w--保存文件。
:q--退出 Vim 编辑器。
:wq--保存文件并退出 Vim 编辑器。
:q!--强制退出Vim编辑器,不保存修改。
六、网络和监控命令
hostname
//显示主机名字
hostname
//显示机器所属域名
hostname -d
//显示完整的主机名和域名
hostname -f
//显示当前机器的ip地址
hostname -i
ping
用途:确认网络连接是否畅通;查看连接的速度信息
出现ping不通问题:
(1)与宿主机ping:
主机ping虚拟机可以通,虚拟机ping主机不通。
先通过cmd,ipconfig/all查看当前电脑的IP地址。
在主机中ping虚拟机:
在虚拟机中ping宿主机:
(2)与外网ping:
解决:
(1)修改vi /etc/resolv.conf
增加如下内容:
nameserver 114.114.114.114(电信的DNS)
nameserver 8.8.8.8(googel的DNS)
行不通
(2)ip a或ifconfig查看使用的网卡 然后进入/etc/sysconfig/network-scripts找到对应的网卡进行修改
(3)查看路由中的网关设置netstat -rn
若出现找不到netstat命令的情况,则需要apt install net-tools安装工具包
可以看到网关没有设置,添加路由网关:
route add default gw 10.199.107.18(主机路由网关,IPV4后面那个)
再次netstat -rn查看:添加成功,但这种方法在重启服务器或重启网卡后会失效。
静态路由加到/etc/sysconfig/static-routes文件中,没有文件就新建一个
any net default gw 10.199.107.18
最后还是ping不同,没解决。
ip
ip addr show:显示IP地址和网卡名称
ip address add [IP_address]:在指定的网卡上设置ip地址
ifconfig
ifconfig:查看当前活着的网络接口信息
七、shell编程练习
1.Linux下用C编写hello world脚本
(1)环境安装
gcc -v:检查是否安装gcc编译器
apt-get install gcc:安装gcc编译器(gcc一般用来编译C语言)
再次gcc -v查看gcc版本:
apt-get install g++:安装g++编译器(g++一般用来编译C++,因为C++兼容C语言,所以也能编译C语言)
apt-get install vim:安装vim
(2)创建文件并进行编辑
mkdir hello:创建hello文件夹
cd hello:进行hello文件夹
vim hello.c:创建hello.c文件
vim界面按下i进入编辑模式
输入helloworld的C语言代码
按下Esc进入命令模式
按下:(英文冒号),输入wq并保存退出
输入gcc -o hello hello.c 编译hello.c文件:此处出现编译错误,返回文件检查修改
输入./hello hello.c运行hello可执行文件
2.Linux下用shell编写helloworld脚本并输出
(1)在hello目录下创建文件:cd hello-vim helloshell
(2)输入以下代码:
#!/bin/bash //标志这是一个shell脚本
echo "hello world!" //输出“hello world!”
(3):wq保存退出
(4)bash helloshell或./helloshell运行
3.编写shell脚本读取文件
(1)修改文件权限
chmod 777 helloshell //777表示所有用户可读写可执行
(2)创建测试用例test
cd hello
vim test
i
1
22
333
4444
55555
666666
7777777
:wq
(3)创建shell脚本
#!/bin/bash
while read line
do
echo $line
done <test
(4)bash read运行