Linux学习笔记
一、Linux常用命令
1、文件处理命令
1.1命令格式与目录处理命令ls:
命令格式:命令 [-选项] [参数]
例如: ls -la /etc 其中/etc就是操作的对象
ls:原意list,所在路径为/bin/ls,所有用户均可执行,它的作用是显示目录文件
语法: ls 选项 [-ald] [文件或目录]
- -a (all)显示所有文件,包括隐藏文件,以点(.)开头的就是隐藏文件
- -l (long长格式显示)详细信息显示
注意:在这里long显示的两个root root 代表的是文件所属的所有者和所属组,一个文件只能由一个所有者,也只能有一个所属组G(group),定义了一组相同的用户,组中的用户均可使用它,另一种就是others其他人。
ls -lh 可以显示文件的大小为k或者M,该是什么单位格式就是什么单位格式,而不像ls -l一样显示的只是代表字节,还需要自己去计算大小。
显示的开头部分如果是d表示是文件夹,是-就表示是文件,是l表示是软链接。
-rw-r–r--: r读,w写,x执行
rw- 是u(所有者)
r-- 是g(所属组)
r–其他人
于是上述字符串可解释为所有者对此文件具有读写权限,所属组和其他人只能读权限。至于为什么所有者没有x执行权限是遵循最小权限原则,如果它只是一个log日志文件就没必要有执行权限,只有当这个文件是shell脚本或其他执行文件时才会给x执行权限。主要是保证安全。 - -d 查看目录属性
-d就是查看这个目录的详细信息,而不是它目录下的每个文件的信息。
可使用ls -ld /etc 查看etc文件夹的信息。
ls -i查看文件的唯一标志id。
1.2目录处理命令:
mkdir:make directories,所在位置/bin/mkdir,所有用户可执行
语法:mkdir -p [目录名],创建新目录,-p递归创建
-p的作用是可以在不存在的文件夹目录下创建子目录,比如mkdir -p /tmp/japan/movies就可以在创建japan的时候同时创建movies目录。
同时mkdir不同于windows下一次只能创建一个文件夹,linux下可以同时创建多个文件夹目录,比如mkdir /tmp/japan/movies1 /tmp/japan/movies2
cd:change directory shell内置命令,所有用户
语法:cd [目录],切换目录
cd /tmp/japan/movies 切换到指定目录
cd … (这里是两点)回到上一级目录
pwd:显示当前目录
.表示当前目录
…(这里是两点)表示上一级目录
rmdir:remove empty directories,位置在/bin/rmdir,所有用户
语法:rmdir [目录名] ,删除空目录(不常用)
例如:rmdir /tmp/japan/boduo
cp:copy 位置/bin/cp,所有用户,复制文件或目录
语法:cp -rp [原文件或目录] [目标目录]
-r 复制目录,如果是复制文件不必要加-r参数,并且可以复制多个,以最后一个目录为目标,其余的目录均为要复制的文件。
-p 保留文件属性 ,比如文件的最后修改时间
还可以在复制的同时对复制到目标文件进行改名,比如:cp -r /tmp/japan /root/japanese
此时root下的目录名为japanese。
mv:move ,位置bin/mv,所有用户,剪切文件,改名
mv [原文件或目录] [目标文件]
用法同cp一样,也可以剪切多个,并且不需要指定-r参数。
改名:比如当前目录下有个japan,cd到当前目录,然后mv japan japan1就可以改名为japan1。
rm:rmove 删除文件
-r :删除文件夹,此文件下还有文件夹,会一次次询问你是不是执行删除操作。-f强制执行就不会,会直接删除这个文件夹,不会提示。同志们可不要直接rm -rf / 直接把根目录删除了,那就是删库跑路了,整个世界清净了。
1.3文件处理命令:
touch:/bin/touch ,所有用户,创建空文件
语法:touch [文件名] 例如:touch /tmp/love.list
cat:/bin/cat,所有用户,显示文件内容,-n显示行号
cat [文件名]
例如: cat /etc/issue
cat -n /etc/issue,cat -n /etc/services这个services文件有很多内容,cat不好显示。
把cat倒过来写写成tac就会把显示的内容倒过来显示。最后一条显示的内容现在显示在第一条。
more:/bin/more,所有用户,分页显示文件内容
语法:more [文件名]
空格或f :翻页
enter :换行
q:退出
例如:more /etc/services
按一下f显示一页内容,按一下enter显示下一行,q退出浏览。
less:/usr/bin/less,所有用户,分页显示文件内容(可向上翻页)
less的向下翻页同more一样,向上翻页使用PgUp,向上换行使用↑箭头,并且less还可以搜索关键字,先输入/再输入要查看的关键词,就是把关键词高亮显示,按n就可显示下一个搜索的关键词。n表示next。
head:/usr/bin/head,所有用户,显示文件前面几行,-n指定行数
head [文件名]
head -n 20 /etc/services,不加-n默认显示前十行。
tail:/usr/bin/tail,所有用户,显示文件后面几行,用法同head一样
多一个参数-f:表示动态的显示文件末尾内容,如果文件在别的地方发生了改变,可以显示出来,比如tail /var/log/messages日志文件,如果改了ip地址或者绑定了其他的信息在这里就会显示处理。
1.4链接命令:
ln:link,/bin/ln,所有用户,生成链接文件
语法:ln -s [原文件] [目标文件],-s创建软链接
比如:ln -s /etc/issue /tmp/issue.soft创建文件/etc/issue的软链接/tmp/issue.soft
ln /etc/issue /tmp/issue.hard 创建文件/etc/issue的硬链接/tmp/issue.hard
软链接文件就类似于windows的快捷方式。此时的软连接的操作权限为lrwxrwxrwx,第一个l表示软链接文件,后面的九个分别代表所有者,所属组,其他人的都可读写执行权限,因为这个文件的权限不会影响原文件的操作权限,它只是一个链接到原文件的指示,真正执行的还是原文件。所以决定文件执行操作权限的最后还是原文件。原文件是什么就是什么。
并且文件大小很小,有箭头指向源文件。硬链接就没有。
硬链接:(用的很少)会创建一个大小时间都与原文件相同的链接文件,同cp -p保留原文件属性一样,但是不同的是它可同步更新,原文件变硬链接也变。如果原文件丢失,那么软链接是访问失败的,但是硬链接依旧可以访问。硬链接与原文件同一个i节点,ls -i查看文件节点,这里出现了同一个i节点对应两个文件,这是特殊情况。操作系统对文件更新是基于i节点的,所以这也是为什么硬链接可以与原文件同步更新的原因。
并且不能跨分区生成,比如/跟目录下的不能生成到/boot分区下。软链接可以,硬链接不能对目录使用。
2、权限管理命令
2.1:权限管理命令chmod
chmod:change the permissions mode of a file,/bin/chmod/,执行权限:所有用户
语法:chmod [{ugoa}{±=}{rwx}] [文件或目录]
[mode=421] [文件或目录]
-R 递归修改
作用:改变文件或目录权限。
ugo分别是所有者,所属组,其他人,a表示all所有人,±表示增加减少权限,=表示不管前面是什么权限现在都赋予新的权限。比如:chomd u+x /tmp/issue.hard 给所有者赋予x执行权限。还可以同时作多个修改,chmod g+w,o-r /tmp/issue.hard。用逗号分隔即可,但是在linux中常用数字来修改权限。
下面权限用数字表示:r—4,w—2,x----1
比如:rwxrw-r–就是764
比如修改成rw-r-----写成数字就是640,于是chmod 640 /tmp/issue.hard
-R:递归修改权限,比如通过mkdir -p /tmp/a/b,创建文件此时a与b的权限一致,修改a的权限后,b的权限是不会变的,加上-R的话就会把a目录以及子目录都修改。
注意重点:区分文件rwx权限和文件夹(目录)rwx
代表字符 | 权限 | 对文件的含义 | 对目录的含义 |
---|---|---|---|
r | 读权限 | 可以查看文件内容 | 可以列出目录中的内容 |
w | 写权限 | 可以修改文件内容 | 可以在目录中创建、删除文件 |
x | 执行权限 | 可以执行文件 | 可以进入目录 |
对一个file:有r权限就表示你可以:cat\more\head\tail\less
有w:vim,有x:这个文件是个stricp\command
对一个driectory:
有r权限:ls
有w权限:touch\mkdir\rmdir\rm
有x权限:cd
用root创建一个文件,mkdir /temp,touch /temp/testfile,chmod 777 /temp,此时/temp目录是所有用户均可rwx,但是它的testfile不是,此时换另一个普通用户登录,rm /temp/testfile,却成功删除了,普通用户删除了一个由root用户创建的文件,因为它的文件夹(目录)是所有人均可rwx,有w说明可以对此文件夹进行创建删除文件,此时可以删除成功。注意这里的权限区别,对文件和对文件夹,一般文件夹的r和x权限同时具有。只有能够进入文件夹才能列出文件夹中的内容。
2.2 其他权限管理命令
chown:change file ownership,/bin/chown,所有用户,改变文件或目录的所有者
语法:chown [用户] [文件或目录]
只有root才可以操作这个改变文件或目录的所有者。
chgrp:change file group ownership,/bin/chgrp,所有用户,改变文件或目录的所属组
语法:chown [用户组] [文件或目录]
默认创建的文件权限是rw- r-- r–,默认创建的目录的权限是rwx r-x r-x。就是使用touch创建的文件和mkdir创建的目录。
umask -S:查看创建文件和目录时默认的操作权限是什么样,可以通过umask修改默认创建时的权限。
3、文件搜索命令
3.1 文件搜索命令
find::所有用户,文件搜索
语法:fing [搜索范围] [匹配条件]
例如:find /etc -name init在/etc目录下搜索init文件,只有名字为init的才会显示,如果要改成只要包含init连续四个字母的文件名都显示处理,就可以使用 find /etc -name * init * 其中*表示通配符。可以匹配任意字符,init就是表示以init开头的文件名,init???表示以init开头的其后面有三个字符,?就表示单个匹配字符。
变化1:把-name改成**-iname**,就可以实现不区分字母大小写查找文件。init和INIT都可被查到。
根据文件大小查找:find / -size +204800在根目录下查找大于100MB的文件,+n号表示大于,-n号表示小于,n就表示等于。在linux中单位是数据块,一个数据块是512字节,大小0.5k,100MB=102400KB=204800数据块。
按所有者和所属组查找:find /home -user miniguang,-group就是按所属组查找。
根据修改时间查找:find /etc -cmin -5,在/etc下查找5分钟内被修改过属性的文件和目录。
-amin:访问时间access,-cmin文件属性c就是表示change,-mmin文件内容m就是表示modify。
文件属性通过ls -ld 可以查看到所属组所有者,修改时间,操作权限等。其中-5表示5分钟之内,+5表示超过5分钟。
-a 表示两个条件同时满足 例如:find /etc -size +163840 -a -size -204800就是大于80M小于100M
-o 表示两个条件满足任意一个即可.
-type 根据文件类型查找 f :文件,d:目录,l:软链接文件
如果对查找到文件直接进行操作可使用-exec/-ok 命令 {} ;进行操作,比如:
find /etc -name init* -a -type f -exec ls -l {} ;这就是对查找到的文件显示它的文件属性。
-ok就会每次对你操作的命令进行询问,如果此时是进行rm操作,就会一次次提醒你是否要删除。
-inum表示按i节点查找。如果要进行操作的文件是个很特殊的文件(比如文件名带空格shen jin)就可以使用find [文件范围] -inum 数字,数字就是那个文件的i节点数字。
此时还可以利用这个-inum判断一个文件有没有硬链接,因为硬链接是不能跨分区的,所以在查找i节点的文件的时候列出来的文件是否有两个,并且同一个i节点数目。就可以判断这个文件是不是有硬链接。
3.2 其他搜索命令:
locate:/usr/bin/locate,所有用户,在文件资料库中查找文件
语法:locate 文件名 例如:locate inittab
locate相比于find操作是快速的,是更节省cpu资源的,因为它是基于文件资料库搜索的,这个资料库是定期更新的,所以他有个问题就是不能实时查找,如果是刚新创建的文件,就无法查找到,此时可以使用updatedb更新一下资料库,对于要查找一些系统文件就可以使用这个命令,能够减少很多cpu资源消耗。find是比较费资源的。
加个-i就可以忽略大小写查找。
**which:**查找命令所在目录及别名信息。比如:which ls
which rm 得到的结果rm = 'rm -i’这里的rm就是后