资源描述
连续学习
学习计划
这是我在过去几家公司招聘到工程师,Python入职培训的过程。
时间分为4周,全部自学,仅提供大纲。适用于Web方向:
1、Week1:读完《简明Python教程》,适应Python开发环境
2、Week2:写个爬虫,需要深入了解re、urllib2、sqlite3、threading,Queue等几个模块。需要用上多线程抓取,正则表达式分析,并发资源控制,重新开启程序自动继续抓取和分析
3、Week3:学习一种Web开发框架,推荐Flask、webpy之类的,学个数据库接口如sqlite3,写个简单的web应用如博客
4、Week4:给产品做个小功能并走完测试和上线流程,各个时期是不同的
我在之前的几家公司招聘工程师时,学过Python的其实较少。更常见的情况是人聪明,招来再学Python。就是按照如上流程。这个流程安排的挺轻松的,我找到的所有人都成功完成了这个流程。并且之后工作也很顺利。
CH1 基础知识
python大小写敏感,缩进敏感.
Python至少应当有第一行那样的特殊形式的注释。它被称作 组织行 ——源文件的头两个字符是#!,后面跟着一个程序。这行告诉你的Linux/Unix系统当你 执行 你的程序的时候,它应该运行哪个解释器。这会在下一节做详细解释。注意,你总是可以通过直接在命令行指定解释器,从而在任何平台上运行你的程序。就如同命令python helloworld.py一样。
注释符:#
单引号、双引号作用一样,选择单还是双主要依据字符串特点,不引起解释器注释就好
实数---浮点数
双斜杠---整除
2**3=8-----幂运算,或者用pow函数 pow(2,3)>>8
match.floor(32.9)=32.0 ---向下取整,ceil是向上取整
from 模块 import 函数:from math import floor-----这样就可以直接使用函数
也可以用变量引用函数:foo=match.sqrt,则foo(4)=2.0
foo(-1)=nan-----nan是特殊值,表示非数值(not a number)
负数平方是虚数,要引入cmath模块:import cmath,cmath.sqrt(-1)=1j
from _future_ import 函数----_future_模块是新特性的集合
程序编辑:file-new Window
添加环境变量:
程序运行方式:
(1).py文件----edità run或crtl+F5
(2)通过CMD窗口运行
(3)代码最后添加: raw_input(“press <enter>”),这样就可以双击.py文件直接运行
字符串表示:str让字符串更易阅读、repr让结果字符串转换为合法的Python表达式
Input和raw_input区别:前者输入必须带双引号才认为是字符串,后者会把所有的输入当做原始数据(raw data),然后将其放入字符串中。尽可能使用raw_input
长字符串需要跨行,可使用’’’ 字符串 ‘’’ 或 “”” 字符串 “””,用三个引号(双引号)括起来后,中间字符号可以自由使用单引号或双引号,不需使用 \ 进行转义
转义字符:\
换行符: \n
原始字符串:字符串以r开头,不会将\当做特殊字符
Unicode是书写国际文本的标准方法。如果你想要用你的母语如北印度语或阿拉伯语写文本,那么你需要有一个支持Unicode的编辑器。类似地,Python允许你处理Unicode文本——你只需要在字符串前加上前缀u或U。例如,u"This is a Unicode string."。
记住,在你处理文本文件的时候使用Unicode字符串,特别是当你知道这个文件含有用非英语的语言写的文本。
如何缩进
不要混合使用制表符和空格来缩进,因为这在跨越不同的平台的时候,无法正常工作。我强烈建议 你在每个缩进层次使用 单个制表符 或 两个或四个空格 。
选择这三种缩进风格之一。更加重要的是,选择一种风格,然后一贯地使用它,即 只 使用这一种风格。
for i in range(1,5)等价于for i in [1, 2, 3, 4]
字节编译的.pyc文件: 使输入模块更快加载。原理:Python语言写的程序不需要编译成二进制代码。你可以直接从源代码 运行 程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。
---对shoplist的操作会影响mylist
---对mylist的操作不会影响shoplist
join()函数
语法: 'sep'.join(seq)
参数说明
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串
返回值:返回一个以分隔符sep连接各个元素后生成的字符串
编写一个软件的各个环节
1. 什么(分析)
2. 如何(设计)
3. 编写(实施)
4. 测试(测试与调试)
5. 使用(实施或开发)
6. 维护(优化)
“软件是长出来的,而不是建造的”
if __name__ == "__main__"
“Make a script both importable and executable”
意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行。
下面举例说明:
先写一个模块:
1
2
3
4
5
#module.py
def main():
print "we are in %s"%__name__
if __name__ == '__main__':
main()
这个函数定义了一个main函数,我们执行一下该py文件发现结果是打印出”we are in __main__“,说明我们的if语句中的内容被执行了,调用了main():
但是如果我们从另一个模块导入该模块,并调用一次main()函数会是怎样的结果呢?
?
1
2
3
#anothermodle.py
from module import main
main()
其执行的结果是:we are in module
但是没有显示”we are in __main__“,也就是说模块__name__ = '__main__' 下面的函数没有执行。
这样既可以让“模块”文件运行,也可以被其他模块引入,而且不会执行函数2次。这才是关键。
总结一下:
如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == '__main__'“是True,但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是我们这个py文件的名字而不是__main__。
这个功能还有一个用处:调试代码的时候,在”if __name__ == '__main__'“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!
备份程序问题解决
下载WinRAR免费版后,添加绝对路径,并把参数改为a,搞定
os.sep变量的用法——这会根据你的操作系统给出目录分隔符,即在Linux、Unix下它是'/',在Windows下它是'\\',而在Mac OS下它是':'。使用os.sep而非直接使用字符,会使我们的程序具有移植性,可以在上述这些系统下工作。
可以使用物理行尾的反斜杠来表示逻辑行在下一物理行继续
面向对象编程
类创建一个新类型,而对象是这个类的 实例 。这类似于你有一个int类型的变量,这存储整数的变量是int类的实例(对象)
Python中即便是整数也被作为对象(属于int类)
类使用class关键字创建。类的域和方法被列在一个缩进块中。
类/对象可以拥有像函数一样的方法,这些方法与函数的区别只是一个额外的self变量
Python中的self等价于C++中的self指针和Java、C#中的this参考。
假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1, arg2)的时候,这会由Python自动转为MyClass.method(MyObject, arg1, arg2)——这就是self的原理了。
__init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的 初始化 。
__init__方法类似于C++、C#和Java中的 constructor
还有一个特殊的方法__del__,它在对象消逝的时候被调用。对象消逝即对象不再被使用,它所占用的内存将返回给系统作它用。
当对象不再被使用时,__del__方法运行,但是很难保证这个方法究竟在 什么时候 运行。如果你想要指明它的运行,你就得使用del语句,就如同我们在以前的例子中使用的那样
文件读写
f = file('poem.txt', 'w') # open for 'w'riting,如果不存在则新建
f.write(text) # write text to file
f.close() # close the file
line = f.readline()#读文件的每一行
储存器
模块cPickle,pickle功能完全相同,可以在一个文件中储存任何Python对象,前者用C编写速度快得多,
import cPickle as p
shoplistfile = 'shoplist.data'#创建用于储存的文件,文件名:shoplist.data
# the name of the file where we will store the object
f = file(shoplistfile, 'w')
p.dump(shoplist, f) # dump the object to a file
f.close()
f = file(shoplistfile)
storedlist = p.load(f)
print storedlist
首先以写模式打开一个file对象,然后调用储存器模块的dump函数,把对象储存到打开的文件中。这个过程称为 储存
使用pickle模块的load函数的返回来取回对象。这个过程称为 取储存
sys模块
sys模块中其他令人感兴趣的项目有sys.stdin、sys.stdout和sys.stderr它们分别对应你的程序的标准输入、标准输出和标准错误流
sys.argv[]的用法
sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个“外部”很关键,所以那些试图从代码来说明它作用的解释一直没看明白。因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可以看作是一个列表,所以才能用[]提取其中的元素。其第一个元素是程序本身,随后才依次是外部给予的参数。
下面我们通过一个极简单的test.py程序的运行结果来说明它的用法。
import sys
a=sys.argv[0]
print(a)
将test.py保存在c盘的根目录下。
在程序中找到 ‘运行’,打开,输入cmd回车进入控制台命令窗口,先输入cd c:\ (作用是将命令路径改到c盘根目录),然后输入test.py运行我们刚刚写的程序:
得到的结果是C:\test.py,这就是0指代码(即此.py程序)本身的意思。
然后我们将代码中0改为1 :
a=sys.argv[1]
保存后,再从控制台窗口运行,这次我们加上一个参数,输入:test.py what
得到的结果就是我们输入的参数what,看到这里你是不是开始明白了呢。
那我们再把代码修改一下:
a=sys.argv[2:]
保存后,再从控制台窗台运行程序,这次多加几个参数,以空格隔开:
test.py a b c d e f
得到的结果为[‘b’, ’c’, ’d’, ’e’, ’f’]
应该大彻大悟了吧。Sys.argv其实就是一个元组,里边的项为用户输入的参数,关键就是要明白这参数是从程序外部输入的,而非代码本身的什么地方,要想看到它的效果就应该将程序保存了,从外部来运行程序并给出参数。
os模块
这个模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行。一个例子就是使用os.sep可以取代操作系统特定的路径分割符。
下面列出了一些在os模块中比较有用的部分。它们中的大多数都简单明了。
· os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。
· os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。
· os.getenv()和os.putenv()函数分别用来读取和设置环境变量。
· os.listdir()返回指定目录下的所有文件和目录名。
· os.remove()函数用来删除一个文件。
· os.system()函数用来运行shell命令。
· os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
· os.path.split()函数返回一个路径的目录名和文件名。
>>> os.path.split('/home/swaroop/byte/code/poem.txt')
('/home/swaroop/byte/code', 'poem.txt')
· os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。类似地,os.path.existe()函数用来检验给出的路径是否真地存在。
列表综合
通过列表综合,可以从一个已有的列表导出一个新的列表。
在函数中接收元组和列表
当要使函数接收元组或字典形式的参数的时候,有一种特殊的方法,它分别使用*和**前缀。这种方法在函数需要获取可变数量的参数的时候特别有用。
>>> def powersum(power, *args):
... '''Return the sum of each argument raised to specified power.'''
... total = 0
... for i in args:
... total += pow(i, power)
... return total
...
>>> powersum(2, 3, 4)
25
>>> powersum(2, 10)
100
由于在args变量前有*前缀,所有多余的函数参数都会作为一个元组存储在args中。如果使用的是**前缀,多余的参数则会被认为是一个字典的键/值对。
注意在使用交互模式的Python解释器的时候,它会通过恰当地改变提示符来帮助你输入语句。在上面这个例子中,当你输入了关键字if之后,Python解释器把提示符改变为...以表示语句还没有结束。在这种情况下,我们按回车键用来确认语句已经完整了。然后,Python完成整个语句的执行,并且返回原来的提示符并且等待下一句输入。
lambda形式
lambda语句被用来创建新的函数对象,并且在运行时返回它们。
这里,我们使用了make_repeater函数在运行时创建新的函数对象,并且返回它。lambda语句用来创建函数对象。本质上,lambda需要一个参数,后面仅跟单个表达式作为函数体,而表达式的值被这个新建的函数返回。注意,即便是print语句也不能用在lambda形式中,只能使用表达式。
exec和eval语句
exec语句用来执行储存在字符串或文件中的Python语句。例如,我们可以在运行时生成一个包含Python代码的字符串,然后使用exec语句执行这些语句。下面是一个简单的例子。
>>> exec 'print "Hello World"'
Hello World
eval语句用来计算存储在字符串中的有效Python表达式。下面是一个简单的例子。
>>> eval('2*3')
6
assert语句
assert语句用来声明某个条件是真的。例如,如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句。当assert语句失败的时候,会引发一个AssertionError。
>>> mylist = ['item']
>>> assert len(mylist) >= 1
>>> mylist.pop()
'item'
>>> assert len(mylist) >= 1
Traceback (most recent call last):
File "<stdin>", line 1, in ?
AssertionError
repr函数
repr函数和反引号用来获取对象的可打印的表示形式
爬虫
2、Week2:写个爬虫,需要深入了解re、urllib2、sqlite3、threading,Queue等几个模块。需要用上多线程抓取,正则表达式分析,并发资源控制,重新开启程序自动继续抓取和分析
python中threading模块详解
正则表达式
Python通过re模块提供对正则表达式的支持。使用re的一般步骤是先使用pile()函数,将正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获得匹配结果(一个Match实例),最后使用Match实例获得信息,进行其他的操作。
举一个简单的例子,在寻找一个字符串中所有的英文字符:
1
2
3
4
5
import re
pattern = pile('[a-zA-Z]')
result = pattern.findall('as3SiOPdj#@23awe')
print result
# ['a', 's', 'S', 'i', 'O', 'P', 'd', 'j', 'a', 'w', 'e']
Urllib 模块提供了读取web页面数据的接口,我们可以像读取本地文件一样读取www和ftp上的数据。
刷票系统研究
不同网站投票的机制是不同的,有的投票不限ip不限次数也没有cookies(当然现在这样的太少了,貌似阿狸有?),这样的你只要找到它的接口,然后想投多少投多少。还有的有cookies,但不设ip限制,这样的只要固定删一下cookies就行了。还有的限制ip,你就需要不停的更换ip。最后是最难刷票的,登录微信qq等账号,每个账号固定投几票,这样的就需要拥有大量的微信qq号,一般人肯定没那个条件。总之,python能帮你的就是不停的访问投票接口,用requests模块最好,其他的,就不是它能做到的了。比如模拟微信客户端投票。
其他
网络爬虫
Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。
虚拟机网络设置
1、
2、
3、主机上的VMnet1虚拟网卡的设置
4、虚机中网络设置(Windows)
或(linux)
还需修改网络配置文件中的内容,防止虚拟机重启后,以上网络设置被重置。具体步骤如下:
cd /etc/sysconfig/network-scripts/ 目录下,可查看到 ifcfg-eth0 文件,vi ifcfg-eth0文件,修改其中的 ONBOOT 属性为YES
算法
冒泡排序:大的往右边冒泡。第一次遍历,将最大值交换到最右边;第2次遍历,将次大值交换到右2位置。。。
选择排序:选择小的往左边排列。
LINUX
大小写敏感
安装软件
rpm 是红帽(RedHat)软件包管理工具,实现类似于 Windows 中的添加/删除程序功能。
rpm -ivh 软件包名
安装软件包并显示安装进度。这个是用得最多的了。
rpm -qa
查询已经安装哪些软件包
rpm -q 软件包名
查询指定软件包是否已经安装。
rpm -Uvh 软件包名
升级一个软件包。
rpm -e 软件包名
删除指定软件包。
yum search xxx
yum install xxx
apt-get,Advanced Package Tool,是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。
apt-get命令一般需要root权限执行,所以一般跟着sudo命令。
sudo apt-get install # ------(package 安装包)
sudo apt-get update #------更新源
sudo apt-get upgrade #------更新已安装的包
sudo pip install pillow ----sudo pip install调用的是系统安装的pip
pip是一个安装和管理 Python 包的工具 ,是easy_install的替代品
wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理。"wget" 这个名称来源于 “World Wide Web” 与 “get” 的结合。
ls命令
ls命令用于显示目录内容,类似DOS下的dir。
ls [options][filename]
主要参数:
-a,--all:列出所有文件,包括隐藏文件;
-l:使用较长格式列出信息;
-m:所有项目以逗号分隔,并填满整行行宽;
-R,--recursive:同时列出所有子目录层;
-h 易读方式(带单位)
-u 显示文件的最后访问时间
蓝色表示是目录,绿色表示是可执行文件,红色表示是压缩文件,浅蓝色 表示是链接文件,灰色表示是其他格式文件。
ls最常使用的是ls -l。其别名为ll
查阅文件
1.cat命令可以一次显示整个文件,如果文件比较大,使用不是很方便;
2.more命令可以让屏幕在显示满一屏幕时暂停,此时可按空格健继续显示下一个画面,或按Q键停止显示。
3.less命令也可以分页显示文件,和more命令的区别就在于它支持上下键卷动屏幕,当结束浏览时,只要在less命令的提示符“: ”下按Q键即可。
另外,多数情况下more和less命令会配合管道符来分页输出需要在屏幕上显示的内容。
cat install.log | grep “i686”| more ,这条命令实际上是将install.log文件内的所有内容管道给grep,然后查找包含i686的文本行,最后将查找到的内容管道给more分页输出。
grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print
LINUX管道命令
n 管道符号是什么?|
n 管道符号的作用?
将一个命令的输出定向成另一个命令的输入
如:command1|command2,command1的输出将成为command2的输入
n 通常结合more&less使用
ls-R1 | more
cat file1 | more
Linux输入输出重定向命令
有时候并不希望执行结果输出到屏幕。我想输出到文件或其它设备。这个时候我们就需要进行输出重定向了
1. 标准输入 (stdin) :代码为 0 ,使用 < 或 <<
2. 标准输出 (stdout):代码为 1 ,使用 > 或 >>
3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>>
cmd > file 把 stdout 重定向到 file 文件中(覆盖);
cmd >> file 把 stdout 重定向到 file 文件中(追加);
cmd 1> fiel 把 stdout 重定向到 file 文件中;
cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中;
cmd 2> file 把 stderr 重定向到 file 文件中;
cmd 2>> file 把 stderr 重定向到 file 文件中(追加);
cmd >> file 2>&1 把 stderr 和 stderr 一起重定向到 file 文件中(追加);
cmd < file >file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout;
cat <>file 以读写的方式打开 file;
cmd < file cmd 命令以 file 文件作为 stdin;
cmd << delimiter Here document,从 stdin 中读入,直至遇到 delimiter 分界符。
Shell脚本和Shell编程
n 当命令不在命令行中执行,而是从一个文件中执行时,该文件就称为 Shell 脚本。
n Shell 脚本是纯文本文件。
n Shell 脚本通常以 .sh 作为后缀名,但不是必须。
n Shell 脚本是以行为单位的,在执行脚本的时候会分解成一行一行依次执行。
n Shell 是一种功能强大的解释型编程语言
n 通常用于完成特定的、较复杂的系统管理任务
n Shell 脚本语言非常擅长处理文本类型的数据
n 使用文本编辑器编辑脚本文件
$ vi script-file
n 为脚本文件添加可执行权限
$ chmod +x script-file
n Shell 脚本的执行
$ . /script-file
i编辑
esc退出编辑
yy 复制光标所在行
p 粘贴
:w 将编辑缓冲区的内容写入文件
:wq 保存文件并退出
:w!强行写入。
:q!强行退出vi,不保存修改的内容
最基本的网络管理命令
n netconfig:进行网络配置
改动的是/etc/sysconfig/network-scripts/ifcfg-eth?
n ping:用于网络检测
#ping
n ifconfig:网络配置和网络参数查看
# ifconfig
n netstat 查看网络状况
数据库
数据库原理:按某种数据结构组织、存储、管理数据的容器
数据库模型:关系型、面向对象、层次、网状
关系型数据库实质是一张二维表
操作关系型数据库用SQL
SQL分为DDL/DML/DCL三类
DDL:create、drop、alter
DML:select、insert into、update、delete
DCL:grant、revoke、commit、rollback
OLTP:联机事务处理,如银行在线交易
OLAP:联机分析处理,如移动无线性能分析月报
关系型数据库设计,常用E-R图
E-R图用于表示实体类型、属性、联系:矩形框表示实体类型、圆形框表示属性、无向边表示联系、菱形表示不同实体类型间关系
关系型数据库设计流程:
为E-R图中每个实体建立一张表
为每张表定义一个主键
设置外键
删除冗余
关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键
比如
学生表(学号,姓名,性别,班级)
其中每个学生的学号是唯一的,学号就是一个主键
课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键
成绩表(学号,课程号,成绩)
成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键
成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键
同理 成绩表中的课程号是课程表的外键
进入数据库: mysql –u root –p
show databases;
use dbTEST;
show tables;
(vi tblCity_DDL.sql)
source tblCity_DDL.sql
desc tblCity;
select * from tblCity;
视图:用于简化开销(主表变化,视图会自动变化)、访问权限管理
create view viewWLAN
as select
…
from
table1,
table2,
table3
where
… and …
Ctrl+d
键盘输入结束或退出终端
Ctrl+s
暂停当前程序,暂停后按下任意键恢复运行
Ctrl+z
将当前程序放到后台运行,恢复到前台为命令fg
Ctrl+a
将光标移至输入行头,相当于Home键
Ctrl+e
将光标移至输入行末,相当于End键
Ctrl+k
删除从光标所在位置到行末
Alt+Backspace
向前删除一个单词
Shift+PgUp
将终端显示向上滚动
Shift+PgDn
将终端显示向下滚动
man <command_name>帮助
通常 man 手册中的内容很多,你可能不太容易找到你想要的结果,不过幸运的是你可以在 man 中使用搜索,/<你要搜索的关键字>,查找到后你可以使用n键切换到下一个关键字所在处,shift+n为上一个关键字所在处。使用Space(空格键)翻页,Enter(回车键)向下滚动一行,或者使用j,k(vim编辑器的移动键)进行向前向后滚动一行。按下h键为显示使用帮助(因为man使用less作为阅读器,实为less工具的帮助),按下q退出。
如果你知道某个命令的作用,只是想快速查看一些它的某个具体参数的作用,那么你可以使用--help参数,
ls –help
su <user>可以切换到用户user,执行时需要输入目标用户的密码,sudo <cmd>可以以特权级别运行cmd命令,需要当前用户属于sudo组,且需要输入当前用户密码。su - <user>命令也是切换用户,同时环境变量也会跟着改变成目标用户的环境变量。
$ sudo adduser lilei 创建好一个用户
$ su -l lilei切换登录用户
sudo usermod -G sudo lilei执行 sudo 命令将 lilei 添加到 sudo 用户组
$ sudo deluser lilei --remove-home
二、Linux 文件权限
$ ls -l较长格式列出文件并显示当前目录下的文件
$ ls –A 显示除了 '.'(当前目录),'..' 上一级目录之外的所有包含隐藏文件(Linux 下以 '.' 开头的文件为隐藏文件)
$ touch iphone6新建一个文件,命名为 “iphone6”
文件所有者成功修改为 shiyanlou :
$ cd /home/lilei
$ ls iphone6
$ sudo chown shiyanlou iphone6
$ cp iphone6 /home/shiyanlou
大部分目录结构是规定好了(FHS 标准)
FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该要放置设置文件,/bin 与 /sbin 则应该要放置可执行文件等等。
第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统登录文件、/usr/share 放置共享数据等等。
linux常用命令的英文单词缩写
命令缩写:
ls:list(列出目录内容)
cd:Change Directory(改变目录)
su:switch user 切换用户
rpm:redhat package manager 红帽子打包管理器
pwd:print work directory 打印当前目录 显示出当前工作目录的绝对路径
ps: process status(进程状态,类似于windows的任务管理器) 常用参数:-auxf
ps -auxf 显示进程状态
df: disk free 其功能是显示磁盘可用空间数目信息及空间结点信息。换句话说,就是报告在任何安装的设备或目录中,还剩多少自由的空间。
rpm: 即RedHat Package Management,是RedHat的发明之一
rmdir:Remove Directory(删除目录)
rm:Remove(删除目录或文件)
cat: concatenate连锁 cat file1 file2>>file3把文件1和文件2的内容联合起来放到file3中
insmod: install module,载入模块
ln -s : link -soft 创建一个软链接,相当于创建一个快捷方式
mkdir:Make Directory(创建目录
touch
man: Manual
pwd:Print working directory
su:Swith user
cd:Change directory
ls:List files
ps:Process Status
mkdir:Make directory
rmdir:Remove directory
mkfs: Make file system
fsck:File system check
cat: Concatenate
uname: Unix name
df: Disk free
展开阅读全文