版权生命:文章系原创,转载请注明出处,多谢!
为了在Linux系统下用深度学习框架caffe,系统补习了一下Linux操作的知识,做些笔记,以备复习,或随时查看。
Lesson1:Linux基础和常用命令
#**************************************************************************
Linux版本
内核版本 2.6.18(主次末)www.kernel.org
发行版本 redhat,ubuntu,centOS等
开源软件:源代码开源,可修改
#**************************************************************************
Linux与Windows系统的不同
1.严格区分大小写
2.所有内容以文件的形式保存,包括硬件---一切内容皆文件
Linux不靠拓展名区分文件类型,而是靠权限区分:(常见的拓展名除外,这些约定俗成,只是习惯给管理员操作,可以不写,谢了更好,有颜色区别等优点)
压缩包:.gz .bz2 .tar.bz2 .tgz(不同的压缩,解压缩方法)
二进制软件包:.rpm
网页文件:.html .php
脚本文件:.sh
配置文件:.conf
Windows下的程序不能直接在Linux中安装和运行(可以通过模拟器安装和执行),提高安全性
字符界面的优势:
占用系统资源更少
减少了出错,被攻击的可能性,安全
虚拟机VMware
#**************************************************************************
分区Partition:
柜子内空间,逻辑上分隔---比如CDE,一开始按照需求规划好的。
规矩:
主分区:最多只能4个
拓展分区:最多只能有1个;主分区+拓展分区最多有4个;不能写入数据,只能包含逻辑分区(是逻辑分区的容器)
逻辑分区:可以有很多(a,b,软驱名字;c主分区1;最多23个(26-3))
格式化:每个分区,打小格的过程。根据用户选定的文件系统(FAT16,FAT32,NTFS,EXT2,EXT3,EXT4,越来越先进),在分区中划分一片用于存放文件分配表,目录表等用于文件管理的磁盘空间。
1.分区被分割为等大小的数据块block,默认4kb。文件被非连续放置。
2.二维表:ID号(i节点号 Inode),修改时间,权限,block号
#**************************************************************************
硬件设备文件名
IDE硬盘 /dev/hd[a--d] “/”代表根目录 dev:一级目录,保存的是硬件设备名;hd:描述硬盘的不同接口
SATA/USB硬盘 /dev/sd[a--p]
光驱 /dev/cdrom或 /dev/hdc
打印机(usb) /dev/usb/lp[0--15]
鼠标 /dev/mouse
分区(挂载点)的设备文件名
/dev/hda1 IDE硬盘接口,a:第一块硬盘;1:第一个分区(1234主分区专有,5之后给逻辑分区使用);
/dev/sda1 SCSI硬盘接口,SATA硬盘接口
挂载(目录作为盘符):
/ 根分区
swap分区 交换分区,内存两倍
/boot 启动分区,200M
#****命令基本格式**********************************************************************
3000 突击60--70个最常用命令,每个三遍以上
lx@lx-B5400:~$
lx@lx-B5400:/$
root@lx-B5400:~#
当前登陆用户名@主机名:当前用户所在目录(家目录)$或# #(lx$的家目录(~表示):/home/lx;root#的家目录:/root)(/是根目录)
pwd 显示当前所在的位置
cd 目录切换
#命令[选项][参数]
[]:可选
当有多个选项时,可以写在一起
-a 等价于 --all
ls [选项][文件或目录]
-a 显示所有文件,包括隐藏文件
-l 显示详细信息
-d 查看目录属性(目录本身,而不是其下的文件)
-h 人性化显示文件大小(以kb为单位)
-i 显示inode
drwxr-xr-x 4 root root 1024 9月 20 17:52 boot
文件类型:
- (-文件 d目录 l软连接文件)(另外,块设备文件,字符设备文件,套接字文件,管道符文件)
权限:
r--读 w--写 x--执行
u所有者 g所属组 o其他人
引用计数 lx所有者 lx所属组 大小(字节) 最后修改日期
ls -ldh caffe
drwxrwxr-x 17 lx lx 4.0K 10月 17 14:15 caffe
#****目录处理命令**********************************************************************
目录处理命令
建立:mkdir -p [目录名](make directory)
-p递归创建
mkdir -p japan/cangls
切换目录: cd [目录名] (change directory)
cd ~ 进入当前用户家目录 ~代表家目录
cd - 进入上次目录
cd .. 进入上一级目录
cd . 进入当前目录,.代表当前目录
相对路径:参照当前所在目录,进行查找 cd ../japan/cangls (在当前目录,找上一级目录,然后再找/japan)
绝对路径:从根目录开始指定,在任何目录下都能进入指定位置 cd /home/lx/caffe/fast-rcnn
显示当前目录:pwd
删除目录:rmdir [目录名] (remove directiries)(但不可删除非空目录)
rmdir japan/cangls
rm [目录名] (可以删除非空目录) (-r:可显示非空目录 -f 强制:没有提示信息)
rm -rf / Linux系统自杀!!
复制命令:
cp [选项][原文件或目录][目标目录] copy (可 改名复制文件)
选项:
-r 复制目录 (当复制目录时。不加则是复制文件)
date 显示当前系统日期时间
ctrl+L 清屏
ll 等价 ls -l (命令别名)
#**************************************************************************
常用目录的作用
/ 根目录 最高一级的目录
/bin 命令保持目录。(根目录下的bin和sbin,usr目录下的bin和sbin,这四个目录都是用来保存系统命令的。区别在于bin普通用户就可以读取,sbinRoot才可以读取)
/boot 启动目录,保存的用户的启动数据,启动相关文件。
/dev 设备文件保持目录
/etc 配置文件保存目录
/home 普通用户的家目录 /root
/lib 系统库保存目录(函数库,用的时候调用)
/mnt 系统挂载目录(挂载外设)
/media 挂载目录
/tmp 临时目录,临时数据放置
/sbin 命令保存目录
/proc 直接写入内存的 (/proc和/sys保存的是内存的挂载点)
/sys
/usr 系统软件资源保存目录
/usr/bin 系统命令
/usr/sbin 系统命令
/var 系统相关文档
/home /tmp 可以随意做东西的位置
#****链接命令**********************************************************************
产生链接文件:
ln -s [原文件][目标文件] link
-s创建软连接
1.类似windows的快捷方式
2.有自己的i节点和block块,但数据块中保存的是原文间的文件号和i节点号,没有实际的数据
3.软连接的文件权限都为:lrwxrwxrwx
4.删原,软连接不能用。一改全改。
5.原文件要写绝对路径。
-h创建硬链接
1.拥有相同的i节点和block块,可以看做是同一个文件
2.可通过i节点识别,不能跨分区,不能针对目录使用
3.一修改,都修改。删除其中任何一个其他的不受影响
#****文件搜索命令**********************************************************************
文件搜索命令 locate (比 find 快 )
locate 文件名 在后台数据库按文件名搜索
/var/lib/mlocate
#locate命令搜索的后台数据库 updatedb强制更新数据库
#搜索的规则在 /etc/updatedb.conf配置文件中。
PRUNE_BIND_MOUNTS="yes"#筛选规则生效
PRUNENAMES=".git .bzr .hg .svn" #不搜索,文件名中包括这些关键字的文件
PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs" #这些目录中更新的文件就不搜索了
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb devtmpfs" #不筛选这些文件系统
命令搜索命令 whereis which
whereis 命令名 (只能搜索系统命令,搜索命令所在的路径及帮助文档所在的位置) (whoami whatis)
-b 只查找可执行文件
-m 只查找帮助文件
which 命令名 #搜索命令所在路径和别名
文件搜索命令 find 最强大
find [搜索范围][搜索条件] #搜索文件
#如果需要匹配,使用通配符,通配符是完全匹配。
Linux中的通配符:
* 匹配任意多个内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符 ab[cd] 搜索abc或abd文件 *[cd]搜索以c结尾或者以d结尾的文件
find / -name install.log
find / -name "install.log*" find / -name "*" #所有文件
-name
-iname 不区分大小写
-user 按照所有者搜索
-nouser 查找没有所有者的文件(没有所有者的文件:1.内核创建的文件;2.外来文件)
find /var/log -mtime +10 #查找10天前修改的文件
-10 10天内修改
10 10天当天修改的文件
+10 10天前修改的文件
atime 文件访问时间
ctime 改变文件属性
mtime 修改文件内容
find .-size 25k #查找文件大小是25kb的文件 (.代表当前文件夹)
-25k 小于25k (25M时也可执行)
25k
+25k 大于25k
find .-inum 262422 #查找i节点是262422的文件
find /etc -size +20k -a -size -50k #查找/etc目录下,大于20k并且小于50k的文件
-a and 与 都满足
-o or 或 两个条件满足一个就行
find /etc -size +20k -a -size 50k -exec ls -lh {}\;
#查找/etc 目录下,大于20k并且小于50k的文件,并显示详细信息。
#-exec ls -lh {} \; 对搜索结果执行操作,exec的标准格式,第一条的结果给第二条处理
字符串搜索命令 grep
grep [选项] 字符串 文件名 #在文件当中匹配符合条件的字符串
-i 忽略大小写
-v 不包含这些字符串的文件
grep -i "size" a.conf
find 和 grep 的区别:
find 在系统当中搜索符合条件的文件名,通配符匹配,完全匹配
grep 在文件当中搜索符合条件的字符串,正则表达式进行匹配,包含匹配(只要有,就能匹配到)
#**************************************************************************
环境变量:定义的是系统搜索命令的路径。(比如,找到 pwd 这个命令,是在PATH的路径下逐个查找的)
/home/lx/anaconda2/bin:/home/lx/anaconda2/bin:/usr/local/cuda-7.5/bin:/usr/local/sbin:/usr/local/bin
Linux中的通配符:
* 匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符
扇区:默认512k
#****帮助命令**********************************************************************
man 命令 #获取指定命令的帮助
man ls #查看ls的帮助
man man
man -f 命令 #查看命令拥有哪个级别的帮助 相当于 whatis 命令
man 5 passwd #密码
man 4 null
man 8 ifconfig
man -k 命令 #查看和命令相关的所有帮助 相当于:apropos 命令
apropos passwd
命令 --help #查看命令的选项
help shell内部命令 #获取shell内部命令的帮助
whereis cd #确定是否是shell内部命令
help cd #获取内部命令帮助
#**************************************************************************