问题:
1,在Ubunt上面,是不是一定要在系统的主账户上面才有权限sudo去运行.c的文件???
1,Xftp破解版本使用
2,vim的配置。
3,Xshell破解版本的使用。
1,操作系统介绍
操作系统介绍:https://www.cnblogs.com/linhaifeng/p/6295875.html
2,Linux文件系统
2.1目录与路径
目录:目录时一组相关文件相关路径的集合。
路径:在Unix和Linux中使用"/"分割目录,而Window是使用""分割目录。
绝对路径:
1)绝对路径是从根"/"目录开始直至文件所经过的所有节点目录。
2)下级目录接在上级目录后面用"/"隔开。
3)注意:绝对路径从"/"开始,所有第一个字符一定是"/"。
相对路径:
1)相对路径是指目标目录相对于当前目录的位置。
2)如果不在当前目录则需要使用到两个特殊的目录"."和".."了。目录"."指当前目录,目录".."指上级目录。
2.2 文件系统
2.2.1 Linux系统和Windows系统却别
1)Windows是通过盘符来管理文件。
2)而Linux没有盘符的概念,是用目录的方式来管理。
3)Windows和Linux都是通过树状的方式来管理文件。
2.2.2 Linux目录结构
/ 根目录
/bin /usr/bin 可执行二进制目录(工具)
/lib /usr/lib /usr/local/lib 系统用的函数库的目录
/home 家目录
/usr/include 头文件的目录
......
2.3 一切皆文件
2.3.1 一切皆文件
在Linux和Unix中对数据文件(*.mp3,*.bmp),程序文件(*.c , *.h , *.o),设备文件(LCD, 触摸屏, 鼠标),网络文件
(socket)等管理都抽象成文件,使用统一的方式方法管理。
在Linux和Unix操作系统中必须分文件类型,通过文件的类型可以区分文件是可执行文件,文本文件,和数据文件。
在Linux和Unix操作系统中文件可以没有扩展名。
2.3.2 文件分类:
普通文件:-开头
录文件:d开头
设备文件:字符设备c开头。块设备b开头
管道文件:套接字可以理解为一个管道。具体后面了解
连接文件:
2.4,文件权限:
访问用户:文件所有者(只允许用户自己访问)用户组(允许一个预先指定的用户组中的用户访问。 其他用户(允许系统中任意一个用户访问)
访问权限:读权限(r),写权限(w),可执行权限(x)
- 10个字符确定不同用户能对文件干什么
- 第一个字符代表普通文件(-)、文件夹(d),软链接文件(l),硬件字符设备(c),硬件设备(b),管道文件(s)
- 其余字符每3个一组(rwx),读(r)、写(w)、执行(x)
- 第一组rwx:文件所有者的权限是读、写和执行
- 第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行
- 第三组r--:不与文件所有者同组的其他用户的权限是读不能写和执行
网络文章链接:
https://www.cnblogs.com/123-/p/4189072.html
3,Linux的命令
3.1 概述
###1,linux的快捷键:
1,清空屏幕快捷键:
ctrl + l
2,清空当前输入快捷键:
ctrl + u
3,或者放弃当前输入快捷键:
ctrl + z
###2,如何知道该使用什么命令,已经这个命令怎么用。
(1)可以直接在命令大全里面查。
(2)也可以直接百度。
(3)比较高级的,用自带的功能。ls --help
(4)在linux里面点开头的文件是隐藏文件。
(5)有问题找man这功能是万能的几乎所有功能都有。提供一个手册,,包含绝大部分的命令,函数使用说明。
eg.man ls回车
命令是分章节的,有些函数和命令同名。如果在linux终端输入的man后面跟的是函数也是命令的时候。
这个时候默人为命令比如 man printf回车这个时候打印出来的是命令的结果。如果是需要查
这个printf函数该怎么办呢。方法是输入两个man man 比如:man man printf回车即可。
(6)如果有个命令不是很熟,但是又能大概记得前面的几个字母这个时候可以输入前面的几个字母然后输入tab键
这样有一个补全的功能。如果出来不了,则多按两个字母进去。
(7)history 可以看到敲过的命令历史。
(8)按上下键可以寻找敲过的命令
关于Linux的权限介绍链接:https://jingyan.baidu.com/article/f79b7cb31d98009144023ea1.html
3.2 命令使用方法
3.2.1,命令的格式
command [-options] [parameter]...
command 命令名
[-options] 选项
[parameter] 传入的参数,可以是零个,一个,或者多个。
[]方括号表示的是可选。
eg, ls 或者 ls -a -l -s 。在ls后面可以添加可以不添加
3.2.2 查看帮助文档
1)--help
2)man (有问题找男人)
3.3常用命令
3.3.1文件管理
1,查看文件信息ls:
ls这个命令联合 -a -l -h 使用。ls作用是列出文件夹里面的内容。
详细用法如下
ls -a 查找文件夹下的所有东西。(包括隐藏文件)
ls -l 可以看到文件夹里面的文件和文件夹的详情信息。
ls -h 比如一字节问单位的文件信息可以智能的转换成k,如果能转换成M的的就转换直接成兆。
ls -lha 也可以这样用 也就是是三个限定条件加到一起
通配符:
* 文件代办文件名中的所有字符。
ls te* 查找以te开头的字符。
[abc] 匹配a,b,c中任意一个。
*.c 查找带有.c的文件。
\ 转意字符。
\*.c 查找带有*.c的文件
2,输入重定向命令>:
ls >text.txt 把查找出来的东西写入到test.txt文件中。如果么有test.txt文件就创建一个
否则就覆盖原来的。
ls >>text.txt 把差找出来的东西追加到test.txt文件里的内容后面。不会覆盖原来数据。
3,分屏显示more:
more /usr/include/stdio.h 表示把stdio.h文件展示在屏幕上并且先只展示一屏然后通过按enter键查看更多。
而 cat /usr/include/stdio.h 就是一次性把stdio.h文件全部展示出来。Q退出。
4,管道 |
管道,一个命令的输出可以作为另外一个命令的输入。主要配合查询使用。
例如 ls | grep std 可以过滤出带有std的文件。
5,清屏(把屏幕往上移动)clear
6,切换工作目录cd:
cd 进入到用户的主目录(/home/用户目录),用户登录的时候
cd ~ 进入到用户的主目录(/home/用户目录)
cd . 切换到当前目录
cd .. 切换到上级目录
cd - 进入到上一个进入的目录
7,显示当前路径,显示当前目录,显示当前地址 pwd:
8, 创建文件夹mkdir:
mkdir /路径 在指定的路径下创建文件夹,如果不指定路径就默认创建在当前文件夹下。
mkdir ./a/b/c -p 表示递归创建文件夹。在当前目录创建a然后在a中创建b在b中创建c。
9,删除文件夹rmdir:
rmdir 路径 删除空的文件夹。文件夹中不能有文件和文件。参数 -p
rm 路径 参数 删除。 参数1, -r 删除内容 参数2,,-f 不做提示 参数3,-i 以交互方式执行。
10,删除文件rm:(未完待续...)
11,建立链接文件ln:
软链接:ln -s 源文件 链接文件
1,类似于windows中的快捷方式,软链接依赖于源文件存在。
2,如果源文件删除,软链接失去意义。
硬链接:ln 源文件 链接文件
1,本质上就是拷贝一份源文件。然后把两个文件建立关联。这两个文件占用独立内存。
2,改其中一个文件。另外一个文件也会发生改变。
3,删除某个硬链接文件,不影响另外一个文件。
12,显示文件内容cat:
cat 文件名 文件名 可以把文件内容显示到终端上,可以同时显示多个文件。
grep [-选项] ‘搜索内容串’ 文件名 查找文件搜索关键字
选项:1,-v 显示显示不包括匹配文本的所有行(相当于求反)
2,-n 显示匹配及其行号。
3,-i 忽略大小写
grep的搜索内容串,可以使用正则表达式。例如:grep -n [0-9]bb[0-9] a.txt
配合管道使用例如: ls -l |grep abc 查找带有abc的文件会文件夹。
13,查找文件find:
find命令功能非常强大,通常用在特定的目录下搜索符合条件的文件,也可以用来
搜索特定的用户属主文件。
常用用法:
find ./ -name test.sh 查找当前目录下所有名为test.sh的文件。
find ./ -name '*.sh' 查找当前目录下所有后缀为.sh的文件。
find ./ -name '[A-Z]*' 查找当前目录下所有大写字母开头的文件。
find /tmp -size 2M 查找在/tem目录下等于2M的文件。
find /tmp -size +2M 查找在/tem目录下大于2M的文件。
find /tmp -size -2M 查找在/tem目录下小于2M的文件。
find /tmp -size +4k -size -10M 查找在/tem目录下大于4k小于10M的文件。
find ./ -perm 0777 查找当前目录下权限为777的文件或目录。
14,复制cp:
cp 命令的功能是将给出的文件或者目录复制到另一个文件或目录汇总。
相当于DOS下的copy命令。
选项:
-a 该选项通常是复制目录时使用,它保留链接,文件属性,并且
递归地复制目录,简单而言,保持文件原有属性。
-f 删除已经存在的目录文件而不提示。
-i 交互式复制,在覆盖目标文件之前将给出提示要求用户确定。
-r 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,
目标文件必须为一个目录名。
-v 显示拷贝进度。
15,拷贝文件cp:(未完待续...)
16,移动mv:
mv 文件名 目标地址+新名字 从一个位置移动到另外一个位置,可以改名,可以移动文件夹。
选项:
-f 禁止交互式操作,如有覆盖也不会给出提示。
-i 确认交互式操作,如果mv操作将导致对已存在的目标文件的覆盖,
系统会询问是否重写,要求用户回答以避免误覆盖文件。
-v 显示移动进度。
17,获取文件类型file:
查看文件是什么样的类型。
18,归档管理tar:
只负责打包和解包,不负责压缩。
用法:tar [参数] 打包文件名 文件
打包:tar -cvf xxx.tar 需要打包的文件 (在-cvf前面其实可以不用加-)
解包:tar -xvf xxx.tar 不指定路径默认在当前目录。
指定路径打包:tar -cvf 路径+xxx.tar 需要打包的文件 (不加路径就打包到当前目录)
指定路径解压:tar -xvf xxx.tar -C 解压的路径 (解压到指定路径需要加-C)
参数:
-c 创建打包文件。
-d 解压
-r 压缩所有子目录
19,文件压缩解压gzip:
压缩:gzip [r] xxx.tar 自动生成一个xxx.tar.gz的文件。
解压:gzip -d xxx.tar.gz
压缩打包:tar -czvf xxx.tar.gz 所需文件
解压解包:tar -xzvf xxx.tar.gz
在Linux中要打压缩包需要先打包,再压缩。解压也同理。也可以一步到位,直接打包+压缩。
解压缩包同理。
上面的参数中f一定放最后。
20,文件压缩解压gzip2:
压缩:bzip2 -z abc.tar abc.tar.bz2
解压:bzip2 -d abc.tar.bz2
一步到位解压压缩方法.
一步到位压缩:tar -cvjf abc.tar.bz2 abc
一步到位解压:tar -xvjf abc.tar.bz2 -C 指定路径
21,文件压缩解压zip:
压缩:zip -r abc abc (第一个abc是名字,第二个abc是要压缩的文件夹名。生成的压缩文件叫abc.zip)
解压:unzip -d def abc.zip (把abc.zip文件解压到def目录下)
22,查看命令的位置which:
e.g查看ls命令的位置: which ls
3.3.2用户权限管理:Linux分为两种用户 1,管理员用户 2,标准用户,或者普通用户(非管理员用户)
1,查看当前用户:whoami
2,查看登录用户:who
3,查看登录用户:w
4,退出登录用户:exit
(1)如果是图形界面,退出当前终端
(2)如果是ssh远程登录,退出登录账户。
(3)如果是切换后的登录用户,退出则回上一个账户。
5,切换用户:su
su 切换root账户
su root 切换root账户
su - 切换到root用户,同时切换到/root
su - root 切换到root用户,同时切换到/root
su 普通用户 切换到普通账户
su - 普通用户 切换到普通账户
6,添加,删除组账号:groupadd,groupdel (管理员用)
(1)groupadd 新建组账号
(2)groupdel 删除组账号
创建一个用户(系统会默认创建一个用户组,这个用户组的名字和用户的名字是一样的。)
e.g: groupadd abcd 创建abcd组
cat /etc/group 查看用户组信息
groupdel abcd 删除abcd组(组里面有用户的时候就不能删除组)
pulse-access:x:125:
rtkit:x:126:
saned:x:127:
albert:x:1000:
sambashare:x:128:albert
guest-8jfrdz:x:999:
guest-akzzvm:x:998:
guest-9j2m28:x:997:
用户组名(guest-9j2m28):组id(997)
7,修改用户所有组:usermod -g 用户组名 用户名 (管理员用)
查看用户信息:cat /etc/passwd
e.g: usbmux:x:120:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false
albert:x:1000:1000:Albert-Ubuntu,,,:/home/albert:/bin/bash
guest-8jfrdz:x:999:999:Guest:/tmp/guest-8jfrdz:/bin/bash
guest-akzzvm:x:998:998:Guest:/tmp/guest-akzzvm:/bin/bash
guest-9j2m28:x:997:997:Guest:/tmp/guest-9j2m28:/bin/bash
用户名(guest-9j2m28):用户id(997):组id(997)
8,添加用户账号:useradd(管理员用)(管理员用)
useraddd [参数] 新建用户
-d 指定用户登录新系统时候的主目录,如果不指定该参数系统自动在
/home 目录下建立与用户名同名目录与主目录。
-m 如果没有文件夹就创建文件夹
-g 指定用户组
9,设置用户密码:passwd
10,删除用户:userdel
其实呀创建一个用户需要配置很多东西。(具体的需要自己去学习)
11,查看用户登录情况:last
e.g:
albert tty7 :0 Sun Aug 30 05:23 gone - no logout
reboot system boot 4.10.0-28-generi Sun Aug 30 05:08 still running
12,修改文件权限:chmod
chmod 修改文件权限有两种使用格式:字母法与数字法。
字母法:chmod u/g/o/a +/-/= rwx 文件 (chmod a-rwx file.txt 去掉所有文件权限)
数字法:chmod 数字 文件 (e.g: chmod 777 file.txt 添加所有文件权限)
u user 表示该文件的所有者
g group 表示与该文件的所有者属于同一组者,即用户组。
o other 表示其他外的人
a all 表示这三者皆是
[+-=]
+ 增加权限
- 撤销权限
= 设定权限
数字对应关系:
rwx
---
000 0 代表么有任何权限
r--
100 4 代表有读权限
-w-
010 2 代表有写权限
--x
001 1 代表有执行权限
把上面的数字进行加减表示对应的权限。
e.g
rw-
110 6 代表有读写权限
文件夹权限说明:
文件夹如果没有读权限r:无法查看文件夹的内容
文件夹如果没有写权限w:无法新建或删除文件
文件夹如果没有执行权限x:不允许用户进入
13,改变文件所有者:chown
14,改变文件所属组:chgrp
3.3.3系统管理:
1,查看当前日历:cal
cal -y 查看一年的
2,显示或设置时间:date
3,查看进程信息:ps
常用选项:
-a 显示终端上的所有金成功,包括其他用户进程。
-u 显示进程的详细状态。
-x 显示没有控制终端的进程。(在终端上按ctrl+c也不会停止的)
-w 显示加宽以便显示更多信息
-r 只显示正在运行的进程。
常用的e.g:
ps -aux
4,动态显示进程:top
5,终止进程:kill
kill 进程id 杀掉指定id的进程
kill -9 进程id 强制杀掉进程
6,后台程序:&,jobs,fg
& 一个没有运行的程序如何以后台方式运行。(e.g: ./hello & 让hello在后运行)
jobs 查看后台运行的程序。
fg 把后台程序调用出来。
7,关机重启:reboot,shutdown,init
reboot 重新启动操作系统。
shutdown 重新启动操作系统,shutdown会给别的用户提示。
shutdown -r now 立刻关机,其中的now相当于时间为0的状态。
shutdown -h 20:45 系统在今天的20:25会关机。
shutdown -h +10 系统再过10分钟后自动关机。
init 0 关机
init 6 重启
8,字符界面和图形界面切换
在redhat平台下,可通过命令进行切换:
init 3 切换到字符界面
init 5 切换到图像界面
通用快捷键切换(使用大部分平台)
Ctrl + Alt + F2 切换到字符界面
Ctrl + Alt + F7 切换到图像界面
9,检测磁盘空间:df (e.g df abc -h)
选项:
-a 显示所有文件系统磁盘使用情况
-m 以1024字节为单位
-h 以K,M,G为单位,提高信息可读性。
-T 显示文件系统
10,检测目录所占磁盘空间:du (e.g: du Desktop/ -h )
选项:
-a 递归显示指定目录中各文件和子目录中文件占用的数据块
-s 显示指定文件或目录占用的数据块
-b 以字节为单位显示磁盘占用情况
-h 以K,M,G为单位,提高信息可读性。
11,应用软件安装与卸载
(1) rpm的使用格式如下:
rpm + [选项] [软件包名]
选项:
-i 指定安装的软件包
-h 使用“#”显示详细的安装过程及细节
-v 显示安装的详细信息
-q 查询系统是否已安装指定的软件包
-a 查询系统已安装的所有软件包
--nodeps 配合-e参数使用,强制卸载不检查依赖选项
--force 强制操作 如强制安装删除等
(2) sudo dpkg -i xxxx.deb 用于安装后缀名字为.deb的包
https://blog.csdn.net/suleil1/article/details/49471723
(3)如果在Ubunt平台,软件的安装可以通过互联网在线安装,更加方便快捷。
命令: 含义:
sudo apt-get update 获取最新的软件包列表
sudo apt-get install xxx 从源中安装xxx软件
sudo apt-get remove xxx 删除xxx软件
12,查看和配置网卡信息:ifconfig
显示字段: 说明:
eth0 网路接口名称
Link encap 链路封装协议
Hwaddr 网络接口的MAC地址
Inet addr IP地址
Bcast 广播地址
Mask 子网掩码
13,检测远程主机联通性:ping
作用是检查网络是否可以连通
14,网络路由设置:route
15,监控网路状态:netstat
4,编辑器
4.1 gedit 编辑器(未完待续...)
内置编辑器。UI版本的。
4.2 vi编辑器
4.2.1 vi升级版本就是vim。
4.2.2 vi的基本操作。
(1)打开文件
编辑模式
(1) vi fileName 如果文件不存在就直接创建并打开。
如果存在就打开。
(2) vi fileName +行号 文件存在并且文件有那么多行的情况下可以进入指定行。
(2)编辑文件
进入文件 i 开始编辑。
(3)保存文件
(1)ZZ 退出vi
(2)ESC : wq 退出并保存
(3)ESC : q! 退出不保存
4.2.3 vi实用命令
(1)vi的插入模式
a 光标位置右边插入文字
i 光标位置当前插入文字
o(小写字母) 光标位置下方开启新行
O(大写字母) 光标位置上方开启新行
I 光标所在行首插入文字
A 光标所在行尾插入文字
(2)vi 的退出
ZZ(Shift+z+z) 保存退出
:wq 保存退出
:x(小写) 保存退出
:w filename 保存到指定文件
:q 退出,如果文件修改但没有保存,会提示无法推测出
:q! 退出不保存
:!命令 暂时离开vi,执行命令.
补充说明:
vi配置
快捷键:
侧栏 F9影藏和显示
\p< 头文件
\im main函数
\ip 生成一个printf
ctrl+n 显示历史写的代码。
1,安装Vim
sudo apt-get install vim
2,安装ctags
sudo apt-get install ctags
3,配置vim
1)把文件夹《vim_configure》拷贝到虚拟机任意目录
2)进入此文件夹,sudo运行copy_con.sh脚本
cd vim_configure
./copy_con.sh
拷贝成功后出现copy successful
如果提示没有权限:请使用chmod u+x copy_con.sh增加执行权限
(3)vi的删除和修改功能
[n]x 删除光标后n个字符
[n]X 删除光标前n个字符
D 删除光标所在开始到此行尾的字符
[n]dd 删除从当前开始的n行(准确来讲是剪切,剪切不黏贴就是删除。)
[n]yy 复制当前行开始的n行
p 把黏贴版上的内容插入到当前行
dG 删除光标所在开始到结尾的所有字符。
J 合并两行
. 执行上一次操作
u 撤销前一个命令
总结:常用的有 [n]dd, [n]yy ,p,u,.
(4)vi定位的功能
Ctrl+f 向上滚动一屏
Ctrl+b 向后滚动一屏
gg 到文件第一行
G(大写) 到文件最后一行行首(G必须大写)
:$ 到文件最后一行行尾
mG或mgg 到指定行数(m为行数)
/内容 到查找内容位置
总结:常用的有 gg,G(大写) ,mG或mgg
(5)vi文本查找功能
/字符串 查找指定字符串
n 查找下一个
N 回到前一个
? 寻找上一个
/^字符串 查找以字符串开始的行
/字符串$ 查找以字符串结束的行
/a.b 查找字符串a任意字符串b
总结:常用的有 /字符串,n ,N,/a.b
(6)vi的替换功能
r 替换当前光标字符
:r 文件名 在光标当前位置载入另外一个文件
:s/p1/p2/g 在当前行的中的p1均用p2替代
:g/p1/s//p2/g 在当前文件中所有的p1均用p2替代
(7)vi的set功能
:set ic 搜索时忽略大小写
:set noic 搜索时不忽略大小写
:set nu 显示航符
:set nonu 不显示航符
5,远程操作
5.1 SSH 介绍
要远程操作在服务器需要先装一个SSH工具。
1,xftp乱码问题处理(在默认回话属性中处理,选项里面选择utf-8)
5.2.1 Linux相互远程连接。
远程Linux连接Linux命令 ssh -l username hostip
5.2.2 Windows远程连接Linux系统。
1,首相还是需要在远程的Linux系统上面装SSH软件。
2,然后在Windows上面装上putty或者Xshell软件然后就可以通过Linux的ip和用户名密码登录了。
5.3
5.3.1 Linux相互远程传输
SSH用命令和shell用来登录远程服务器,在默认情况下不允许用户拷贝文件。但是提供了一个“scp”命令。
参数: 含义:
RemoteUserName 远程用户名
RemoteHostIp 远程IP
RemoteFile 远程文件可以带上路径
FileName 拷贝到本地后的名字,可以带上路径,不带路径默认拷贝到当前目录。
本地文件复制到远程
scp FileName RemoteUserName@RemoteHostIp:RemoteFile
scp FileName RemoteHostIp:RemoteFolder
scp FileName RemoteHostIp:RemoteFile
本地目录复制到远程
scp -r FolderName RemoteUserName@RemoteHostIp:RemoteFolder
scp -r FolderName RemoteHostIp:RemoteFolder
远程文件复制到本地
scp RemoteUserName@RemoteHostIp:RemoteFlie FileName
scp RemoteHostIp:RemoteFolder:FileName
scp RemoteHostIp:RemoteFile:FileName
远程目录复制到本地
scp -r RemoteUserName@RemoteHostIp:RemoteFolder FolderName
scp -r RemoteHostIp:RemoteFolder FolderName
5.3.2 Windows和Linux相互远程传输。
使用xftp工具远程传输既可
6,webserver环境搭建
6.1 webserver环境搭建
1,把myhttp文件用xftp移动到linux下面。
2,然后解压myhttp文件。
3,make编译下解压后的文件。
4,sudo ./myhttp start 启动服务器。
5,sudo ./myhttp stop 停止服务器。