一个多月的时间学习Linux的基础知识,看得是鸟哥的私房菜,看了有两遍吧。现在总结一下平时经常用到的知识。

一、一些简单的小指令

date:

显示时间,更多的是用来产生一些时间格式的文件夹,如:生成日志的文件夹。

bc:

计算器,quit退出,一般用不到。

ctrl+alt+F1~F6可切换不同的文字界面,一般用于:如果一个界面死掉了,可以再切换另一个界面将其杀死,而不用重启计算机,很方便的。ctrl+alt+F7切换到文字界面。

当指令太长时可用'\'符号来延续到下一行。

alias ll=‘ls -a -l’ 命名别名

shutdown  -r now  立刻重启

shutdown  -h now 立刻关机

shutdown  -h +10 “guan ji le ” 十分钟后关机,并在屏幕上显示guan ji le

shutdown  -h 20:35 到点关机

shutdown  -c 取消已经进行的shutdown指令

基本指令:

tab 补全

路径:cd - 回到上一目录(很好用)

cd .. 回到上一层目录

cd ~回到用户根目录

pwd 显示当前工作目录

pwd -p 针对链接文件,显示完整路径

mkdir aa 建立一个名称为aa的文件夹

mkdir -p aa/bb/cc/dd/test 可以创建递归目录

删除一切东西用: rm -rf bb 强制删除(超好用)

ls 列出当前目录下的东西

ls -a 隐藏的东东也会列出

ll 列出属性

ll -d 只列出目录的属性,不会列出目录中子文件的属性

cp 复制文件

cp -r 复制目录

cp -a 连同属性一起复制

cp -u 只在文件有所改变后才会进行复制。(用于备份文件,只有在不同时,才会进行备份)

scp 为远程复制

scp /home/aa.txt root@10.52.210.10:/home 传出文件

scp root@10.52.210.10:/home/bb.txt /home 传入文件

mv 移动文件

mv -r 移动目录

mv -u 只在文件有所改变后才会进行移动。

二、文件的属性设置

ll **  查看**的属性

w:写 ;r:读;x:可执行(只有当文件夹是可执行时才能够进入该文件夹)

r=4

w=2

x=1

一个文件的权限针对“三个人”而言:文件拥有者的权限(u)、文件所属的群组中他人的权限(g)、外人的权限(o)。

chgrp aa user 把当前user的群组的名称改为了aa

我在两个组中,有一个文件只想让其中的一个组可以访问,可以利用chgrp来改它所属组性。

chown bb user 把当前user的拥有者的名称改为了bb

chown aa:bb user  把当前user的群组的名称改为了aa,拥有者的名称改为了bb

chmod 777 file 改变了file的权限为可读、可写、可执行

chmod -R 777 mulu 改变mulu文件夹下面所有文件的权限(chgrp、chown也可以有-R)

chmod r=rwx,g=rwx,o=rwx temp

chmod a+w temp

chmod a-x temp

可执行文件(./test.sh)的属性中一定有x属性。

当一个设置了SUID位的可执行文件被执行时,该文件将以所有者的身份运行,与就是说无论谁来执行这个文件,他都有文件所有者的特权,如果所有者的身份是root的话,那么执行人就有超级用户的身份。

SUID=4,SGID=2,Sticky Bit=1(只能针对目录)

chmod 4777 a.txt    权限变为 rwsrwsrwx

chmod 6751 a.txt    权限变为 rwsrwS--x  (当设置了x位时,就用小s;没有设置x位时,就用大S)

chmod 1755 a.txt    权限变为 drwxr-xr-t   (当设置了x位时,就用小t;没有设置x位时,就用大T)

当user的权限中的x变为小s的时候,表示该user有该文件的root权限

Sticky Bit只针对目录有效,即具有SBit的目录下,若用户在该目录下具有w和x权限,那么当用户在该目录下建立文件或目录时,只有文件的拥有者或root才有权利删除。即,用户只能删除自己建立的东西,而不能删除他人所建的东西。例如/tmp本身的权限是drwxrwxrwt,在这样的权限目录下,任何人都可以在/tmp内新增或修改文件,但仅有该文件的建立者和root能够删除自己所建的目录或文件,他人是不可以的。

改变文件的隐藏属性:

chattr +i aa.txt  这样aa.txt只能读,别的什么都不能做,chmod都不可以改变;rm -rf都不可以删除;wq!都不可以写入

若想改变,应先用chattr -i aa.txt 进行解锁

chattr +a aa.txt 针对登陆文件,只可增加数据,不可修改和删除原有数据

lsattr 可以显示隐藏的属性

umask 用于指定当前用户所建文件和目录的默认属性。root一般建立的文件属性为-rw-r--r--,目录属性为drwxr-xr-x

umask 0000 表示改变其默认属性为777“三个人”都是可读、可写、可执行(但是下次开机后就回复原来默认的)

(若想永远的改变umask的值,应在/root/.bashrc文件中加入 umask 0000 然后保存,再执行. .bashrc 即可)

三、查看文件

cat aa.txt

cat -n 显示行号

more less

head -n 10 aa 只显示aa文件的前十行

tail -n 10 aa 只显示aa文件的后十行

tail -f aa 动态显示aa后十行(经常用)

nl 显示行号

nl -b a filename 连同空行也算在内

wc -l 统计行数

wc -c 统计字节数

wc -w 统计字数

四、查找文件、目录

which 只找“执行文件”,是在PATH的路径下找,且只列出找到的第一个。which -a则列出全部的

whereis 很少用,可以设定所查找的文件类型

locate 可以只输入部分要查找的文件名,会列出所有含有该部分文件名的文件。利用locate aa | grep /aa$ 可以只列出aa文件

find 可以查找文件和目录。使用方法为:find 要在那个路径下查找 -name 名字例如:find / -name test 意味着在根目录下查找名为test的文件或目录

which、whereis、locate只能搜索文件,不能用来寻找目录。

五、硬盘与硬件管理

df -h 查看硬盘的总容量、已用容量、系统分区

du -sh 目录名 只显示该目录总的大小

df -h 查看文件系统大小和使用情况

free -m 显示内存、SWAP的大小和使用情况

fdisk -l

六、shell脚本

shell脚本不需要编译,是以行为单位执行的,shell脚本第一行必须为#!/bin/bash

./test.sh a b c d 其中文件名为$0, 参数a为$1, b为$2

1.shell脚本变量的规则:

1)=链接的左右不能有空格

2)变量只能为字母、数字,并以字母开头

3)应用变量要加$

4)若有空格应用“ ” 或‘ ’。二者的区别:“ "会保留变量的特性;而‘ ’值是输出其中的字符

name=vbird

my="$name its me"

my2='$name its me'

my3="${name}itsme"  和变量相连要用{ }区分出来

echo $my     (结果为vbirdits me)

echo $my2   (结果为$name its me)

echo $my3   (结果为nameitsme)

5)export a 则变量a可以在其他子程序中使用

6)unset a 取消变量

2.shell的编程

declare声明变量

-a 数组

-f 函数

-i 整型

read name 从键盘上读取内容

read -p "请输入您的名字:“    可以加入提示信息

read -t 30 设置等待时间,如果30秒内没有输入,则该命令会被自动略过

echo $name 输出

3.脚本的逻辑判断:

eq  =

ne !=

lt     <

gt    >

le    <=

ge   >=

a     and

o     or

z     空字符串

n    非空字符串

4.shell脚本中的数值运算用$(( )),或$[ ]

nu=$((2+4)) echo $nu

a=2

b=3

nu=$(($a*$b))

echo $nu

5.if、while、for

if的使用:

if [ "$y" = "y" ] || [ "$y" = "Y" ];  (注意:[和“ ,”和]之间都要有空格)

then

......

fi

for循环

declare -i s

for (( i=i; i<=100; i=i+1))   (注意:这是有两个())

do

s=s+i

done

另一种for循环

LIST="tomy jony mary geoge"

for i in $LIST

do

echo $i

done

while循环

declare -i i

declare -i s

while [ "$i" != "101“ ]

do

s=s+1

i=i+1

done

6.

shell中的数组

a=(1 2 3 4 5) 用空格隔开

echo ${a[2]} 结果为3

echo ${a[@]} 结果为1 2 3 4 5 a[@]或a[*]表示整个数组

echo ${#a[@]} 结果为5 求数组的长度

a[1]=100 为数组赋值

unset a[1] 删除元素2

unset a 删除全部元素

特殊的使用:${数组名[@]:起始位置:长度}例如:echo ${a[@]:1:3} 结果为2 3 4

${数组名[@]/查找的元素/替换的元素}例如:echo ${a[@]/3/100} 结果为1 2 100  4 5

用for循环来遍历数组:

for value in ${a[@]};do

echo $(($value+2))

done

7.shell中的函数

在shell脚本中函数要放在程序的最前面,function fun(){}  调用时直接为fun,而不是fun()。且fun()中不能带参数,但可以用参数$1,$2来表示。例如,在文件aa中编程:

funtion pt(){

echo "Num is $1"

}

case $1 in     这里的$1以函数pt中的$1是不一样的,这里的$1指的是./aa two中的two

"one")

pt 1        调用函数pt并且赋予参数$1的值为1

; ;

"two")

pt 2

; ;

"three")

pt 3

; ;

*)

echo "error"

; ;

esac

在命令行中输入./aa two 输出的结果为Num is 2

七、vi编辑器中的指令

1)一般模式下:

0 零 光标移动到本行的行首

$ 光标移动到本行的行尾

G 光标移动到该文件的最后一行

nG 光标移动到第n行

gg 光标移动到该文件的第一行

n<enter> 光标向下移动n行

n<空格> 光标向后移动n个

dd 删除光标所在行

yy 复制光标所在行

p 粘贴到光标的下一行

U 恢复上一步

ctrl + r 与U是相反的操作

. 重复前一个操作

2)编辑模式:

i 光标所在字符前插入

a光标所在字符后插入

o 光标的下一行插入

3)命令行模式:

:set nu 显示行号

:wq 保存退出 :q! 强制退出

/ab 在该文件中查找ab (n为查找下一个,N为查找上一个)

八、管线命令:

连续的指令 && 和 ||

command1, command2 全部执行两条指令

command1 && command2  只有当command1执行正确后才执行command2

command1 || command2  只有当command1执行错误后才执行command2

cut -d ":" -f 2 (以:为分割副,只显示出第2区块)

cut -c 1-20     (之显示出1到20个字符)

cut -c 1,4,7 只显示第1,4,7个字符

cut -c 3-  显示出第3个字符以后的所有字符(包含第三个字符)

sort 以行为单位,比较首字符,默认按升序排序。

sort -f 忽略大小写

sort -b 忽略前面的空格符

sort -u 相同的行会合并

sort -r 绛序

sort -n 按数字大小进行排序

sort  -n -r -t ":" -k 2 按:进行分块后的第二块按数字进行绛排序

sort -t ' ' -k2 -k3  以空格分隔后,先按照第二块进行排序,如果相同,则再按照第三块排序

grep -c ljg  输出含有ljg行的总数

grep -v ljg 输出不含有ljg的行

grep -i ljg  不区分大小写

grep ab 与 grep [a,b]

grep 'tea' /home/name1 /home/name2  可以在多个文件中列出

pgrep cmd 专门用于进程查询,只输出该指令的PID

uniq 重复的行只显示一个,将相邻的相同行合并

uniq -d 只显示重复的行

tr -d ab 删除文件中的所有字符a,和字符b。而不是只删除ab字符串

tr '[a-z]' '[A-Z]' 将所有的小写字母转换为大写字母

tr 'ljg' 'tsh' 意味着把说有的l换为t,j换为s,g换为h。(注意:不是只把ljg换为tsh)

>a.txt 覆盖到a中

>>a.txt 累加到a的后面

tee a.txt 覆盖到a.txt中,并且在屏幕上显示,后面还可以再接其他的管线命令。

tee -a a.txt 累加到a.txt中,并且在屏幕上显示,后面还可以再接其他的管线命令。

正则表达式(与通配符中的* ?的意义不一样)

‘[^g]'oo   意味只要oo前面不能为g

^ 行首

[^  ]  非

$ 行尾

grep '[^a-z]'  列出非a-z

grep '^[a-z]'  列出行首为a-z

grep '^$' 列出空行

grep -v '^$' | grep -v '^#' 去掉空行和开头为#

. 是任意一个字符

* 是重复0个或多个前面的字符

.* 表示零个或多个

grep 'g..d'  列出g??d

grep 'goo*d'  列出god  good  goood .......不要丢掉god,因为*前面的那个字符o,只是表示重复的字符。

grep 'g*g'  列出g  gg   ggg   gggg ...... 不要丢掉g

要想列出含有tast或test的方法:

grep 't[ae]st'

grep '[tast,test]'(这个方法不可以)

egrep 'tast | test'

egrep 't(a|e)st'

sed

-n,常与p打印联用。例如:sed ‘2,5p’ 的结果为,所有的都会输出,并且重复2,3,4,5行再次输出

sed -n ‘2,5p’ 的结果是只输出2,3,4,5行

-f 可以把sed操作的内容写在一个文件内

-r 支持扩展正则表达式

3,5 表示3到5行

sed ‘2a hello’ 在第二行下面插入一行内容为hello

sed ‘2i hello’ 在第二行上面插入

sed ‘2,5c hello’ 把2到5行的内容换位hello

sed ‘2,5d’ 删除2到5行。若只想删除第2行,和第5行,应该sed ‘2d’ | sed ‘4d’。因为已经删除了一行,索引5要变为4

sed ‘ s/ / /g’

sed ‘n1,n2s/aaa/bbb/g' 把n1到n2行中的aaa替换为bbb。

总结:sed后面的指令一定在‘ ’中,且sed‘ ’指令中一般先指明行号,再接动作a,i,c,d,p,s

sed比较合适处理整行,awk比较倾向于一行中分成数个“字段”来处理

awk默认以空格或Tab键来分段的。$0代表一整行,$1代表第一字段,$2代表第二字段

awk -F ‘.’ ‘{print $1 “\t" $3}’ 以 ‘.’来分割,输出第一字段和第三字段,中间空4个空格。或者写成FS=“.”

awk的格式:awk ‘条件类型1{动作1} 条件类型2{动作2}’

动作1和动作2都是针对前面的主体而言的,而不是,动作1处理后,把结果再让动作2来处理。不是管道命令的性质。

cat /etc/passwd | awk -F ':' '$3<10 {print $1 "\t" $3}'

awk类似于if

九、解压缩指令:

unzip name (用于*.zip)

uncompress name (用于*.z)

bzip2 -d name (用于*.bz2)

gzip -d name (用于*.gz)

tar中 -x是解压,-c是压缩,-z是后缀中有.gz

tar -zxvf name (用于*.tar.gz)

tar -xvf name (用于*.tar)

tar -cxvf name 压缩文件

十、帐号管理

/etc/passwd  用户帐号      /etc/shadow 密码      /etc/group  群帐号      /etc/gshadow  群密码

groups 显示出该帐号都存在与哪些组当中

groupadd -g 55 testing  建立一个GID为55的群组

groupdel testing 删除群组 (若有用户,则必须先删除用户)

新加一用户:

1)useradd -m ljg 建立一个用户,名称为ljg (-m 为生成根目录,不然则进不到ljg中)

2)passwd ljg  设置密码

userdel ljg 删除(只删除passwd和shadow中的东西)

user -r ljg 将用户的一切数据都删除

身份变换

su 转换为root身份

su - 当前目录会发生变换

su ljg 切换为ljg身份

su -l ljg 当前目录会发生变换

su 进行身份转换时要输入对方的密码,但用sudo不能切换身份,但是可以在对方用话下进行一定的操作

sudo -u ljg shutdown -h now 并且只需要输入自己的密码。

十一、at和crontab

at仅执行一次的使用方法:

1)输入 at 5:30 2014-06-01 回车    (at now +5 minutes,          也可一是hours、days、weeks)

2)进入at>命令模式,输入要执行的命令,shutdown -h now

3)ctrl + D则保存退出。并且退出之后显示该工作的编号如:job 3 at thu may 1 05:30:00 2014

4)atq 查看当前所有的at工作

5)atrm 3 删除上面的at工作。

crontab循环执行的使用方法:

输入crontab -e 进入crontab编译

输入命令的格式为:  分 时 日 月 周   命令     *表示所有数组都适用

如:59 23 1 5 *  mail xiaozhu </home/test/test.txt   表示在每年的5月1日23:59都会把邮件test.txt的内容发送给xiaozhu

如:*/5 * * * * sh /home/test/test.sh  表示每隔5分钟执行一次

但当有多个任务都是每隔5秒执行一次,这样会增加系统在某一时刻的负担,可以这样

1,6,11,16.....51,56 * * * * cmd1

2,7,12,17.....52,57 * * * * cmd2 这样可以解决,其中的......不能省略,必须一个一个的列出

crontab -l 查看所有的crontab流程

crontab -r 删除所有的crontab数据。(若要删除某一条,用crontab -e进入编译中去删除)

* 代表所有可能

,隔开 1,5,9

- 制定范围 2-6

*/n 表示时间间隔频率

crontab -e 是处理用户例行性,即改变的是/usr/bin/crontab的内容

若要是设置“系统的例行性任务”直接vim /etc/crintab,按照已有的例子添加即可。

十二、进程管理

ps -auxh | grep  xxx    查看进程xxx (会列出用户名、PID、CPU和MEM的使用情况、tty1-6表示为本机登录者 pts/??表示为远程登录者、运行状态、开始运行的日期、运行的时间、指令名称)

ps后的运行状态

R 运行

S 中断

T 停止

D 不可中断

Z 僵死 (且ps后的指令名称中显示<defunct>) ps auxh | grep defunct 可以列出zombie进程

top中的第二行的zombie表示僵尸进程的个数

top动态显示进程的信息,默认每隔5秒刷新一次。

top -d 1 改变刷新时间为1秒一次

top -p 1278 只观察PID为1278

top | grep cmd 只观察指令cmd

who 显示登录时间

w 显示uptime和who的

last 显示近期用户或终端的登录情况

netstat -antlp 查看本机各端口的网络连接

hostname 显示主机名

dmesg 显示开机信息

command & 后台运行

time command 侦测一个进程所需要的时间

用户对话:

write 针对一个在线用户

wall 针对所有在线用户

mail 可以实现离线传输

杀死进程:

kill %工作号

kill PID

pkill -9 cmd (指令的名称可以只输入一部分)

pkill -u 用户名  可以杀死用户  (当userdel -r ljg,显示用户ljg目前已登录。可以用pkill -u来解决)

killall -9 cmd

xkill 用于关闭图像界面(当一软件死后,不能关闭窗口,可以这样做)

pstree 列出所有进程的关联,可以找出父进程

(若杀死不了一zombie进程,可以用pstree查找出其父进程,来杀其父进程)

所有的进程都存在于/proc中,以PID号为目录名。

十三、gcc

方法一:gcc hello.c 自动生成a.out文件,再执行./a.out 即可运行

方法二:gcc -c hello.c 生成hello.o 的目标文件;然后在执行gcc -o aaa hello.o 生成aaa可执行文件;./aaa 即可

动态库文件 *.so 静态函数库 *.a头文件 *.h

当用到第三方库时:

-L 后接库*.so的路径 -I(大写的i) 后接头文件*.h的路径 -l(小写的L)后加上*.so,*中去掉lib的那一部分

例如:当库位libm.so时,应该这样:gcc hello.c -lm -L /usr/lib -I /usr/include

为libpng.so时,应该这样:gcc hello.c -lpng -L /usr/lib -I /usr/include

安装软件执行make时,make会在当前目录下搜索Makefile文件,Makefile文件中记录了源代码是如何编译的详细信息

config是一个检测程序,检测用户的工作环境,以及该环境是否有该软件开发商所需要的其他套件。

一般用./configure --prefix=/usr/local/aaa  来设置软件安装的目录

makefile文件编写的基本格式:

main: main.o aa.o bb.o cc.o

(这里一定要用Tab键) gcc -o yyy main.o aa.o bb.o cc.o

clean:

rm -rf yyy main.o aa.o bb.o cc.o

make clean

make main

十四、一些其他指令

ln -s aa bb 类似与bb为aa的快捷方式(符号链接改变bb,那么aa也会改变。删除aa,那么bb则无效)

touch 建立一个空文件。若文件存在,则是将这个文件的日期修改为当前日期

route -n 显示路由器

sh -n test.sh 查看脚本的语法,若有错误则列出。

ifconfig  查看 ip

ifconfig eth0 192.168.120.23 netmask 255.255.255.255 broadcast 8.8.8.8  配置IP地址

md5sum 产生文件指纹,可以对比两个文件是否相同。也可以查看某一软件是否为正版

md5sum -c filename 可以把许多文本的md5sum的值放到一个filename中,md5sum aaa.txt >test

md5sum -c test 即可。如果test的内容不变则输出正确,否则输出失败。

echo $? 可以判断上一条指令是否正确,为0,则正确。为1,则有错误

ssh root@10.52.210.10 登录远程计算机

ssh -p 1234 user@host链接远程主机的1234端口

diff 和 cmp 比较两个文件的不同之处

file aa.txt 的结果中:LSB executable 为执行文件;uses shared libs 为使用动态函数库;ASCII test 为一般脚本;data 为数据文件。

文件或目录的查找

basename /etc/sys/network 的结果是network获取文件名

dirname /etc/sys/network 的结果是/etc/sys获取路径名

我的Linux学习之旅相关推荐

  1. 聊聊我的Linux学习之旅吧

    聊聊我的Linux学习之旅吧 从2017年8月份正式开始学习Linux到现在正好有1年了.因为是在校学习,而且自己又事情比较多,主要是在大二时当选了网趣工作室的社长,自己又想做出一番成绩,给自己大学留 ...

  2. Linux学习之旅(20)-----信号(2)

    在上一篇文章Liunx学习之旅(19)---信号中提到系统对信号的处理方式主要有三种:(1)默认(2)忽略(3)捕捉.默认就是当系统接收到某个信号时,去执行信号的默认状态,而忽略就是对这个信号不予处理 ...

  3. 学习linux装,一个初学者的Linux学习之旅之Linux安装篇

    昨天下载了个RedHat linux,想去看看非windows的世界是什么样子的,不过安装和windows真的没有可比的,虽然我的DOS基础还行,但就一个启动盘就把我搞得头昏眼花,因为没有软驱和光驱, ...

  4. Linux 学习之旅

    2023.3.1  (day3) 学习内容: 1.ubuntu 修改国内镜像源,Ubuntu激活root用户 (1)ubuntu 修改国内镜像源 # ubuntu里下载软件用apt root@sc:~ ...

  5. 我的linux学习之旅:(4)搭建mysql数据库

    编译安装mysql 目标:在mysqlM上编译安装mariadb,并安装wordpress博客程序.mysqlS暂不配置. 操作系统CentOS6.6 x32_64 使用的mariadb版本 本机ip ...

  6. Linux学习之旅(一)Linux常用命令

    pwd命令  显示当前所在的目录 ls命令  显示目录下的子目录和文件 ls 显示当前目录下的子目录和文件 ls -a 显示当前目录下的所以子目录和文件(包括隐藏文件和文件夹) ls -al    显 ...

  7. 我的Linux学习记录(蓝桥)————入门环境介绍

    我的Linux学习之旅(蓝桥) 嘿,首先让我们看看Linux的页面: 差不多长这个样,其中呢: 这个玩意就是你windows的这个玩意 这个东西,就是你windows下win+R然后输入cmd跳出来的 ...

  8. 我的linux学习历程[引子:安装和特点](不是教程,分享一下而已)

    2023年的1月,新的一年,我也想尝试一下新花样,突然灵光一现,开始了我的linux学习之旅: 我在网上查了很多教程,因为没有钱去购买一台电脑专门安装linux,网上很多教程都是通过虚拟机来实现的,所 ...

  9. PYTHON学习之旅1:linux操作系统学习

    PYTHON学习之旅1:linux操作系统学习. 1.初识linux系统: a.Linux系统细分为内核以及发行版.其中linux的发行版建立在其内核基础上.指一些编程者使用linux内核自己再另外开 ...

最新文章

  1. 在mac上配置cocos2d-x开发环境
  2. 使用VS2008进行WEB负载测试
  3. android radiogroup 获取点击位置_屏幕连点器,解放双手[Android]
  4. dedecms织梦(一)
  5. oracle目录解析,Oracle目录分析与比较
  6. oracle创建用户与权限操作(oracle学习笔记一)
  7. springboot对应springcloud各个版本和官网查询地址
  8. Excel,Word,PowerPoint2016通过命令行安装License过程
  9. mysql5.5手册读书日记(3)
  10. 计算机拓扑结构网状图,网络拓扑结构大全和图片(星型、总线型、环型、树型、分布式、网状拓扑结构)...
  11. GitHub又放大招,Python版本的植物大战僵尸还能作弊玩!
  12. HBase的安装和使用
  13. windows 7 32bit安装 python3.5.0 安装错误 0x80240017 -未指定错误
  14. ubuntu系统开机显示BusyBox v1.22.1(Ubuntu 1:1.22.0-15ubuntu1) built-in shell(ash) 问题的解决办法
  15. 全网顶尖,毫不夸张的说这份斯坦福大学机器学习教程中文笔记,能让你机器学习从入门到精通
  16. python字符串排列组合子集_python编程题:字符串的(所有可能的)排列组合
  17. Chap和pap认证
  18. Docker 配置网络教程 - overlay 网络
  19. justify/align-content/items使用区别
  20. 【金九银十】软件测试中的高频面试题梳理(内附答案)

热门文章

  1. 前端面试题库 面试题 JS难题,做对一半就是高手
  2. 搜狗拼音皮肤 php文件,手把手教你制作搜狗输入法皮肤
  3. Android开发38岁被裁,本以为稳进Top3,今天已经是失业第42天
  4. android 调用系统图库剪切图片出现黑屏闪退
  5. Java解析剑指Offer链表篇(1)
  6. jquery:选择器【基础选择器、层级选择器、属性选择器和方法操作、过滤选择器、筛选选择器和方法,可见性过滤选择器】
  7. python迅雷自动下载_Python3.x+迅雷x 自动下载高分电影的实现方法
  8. 鱼鹰软件签约武汉知名公关全产业链机构创联凯尔
  9. 昨夜西风凋碧树,独上高楼,望断天涯路————马哥培训第二天
  10. C++ 动态链接库快速创立和两种调用方式