Centos 学习笔记2-问题解决
1.whereis, locate, which,find 的区别?:
(1) which: 寻找"执行文件"(命令程序),在PATH这个环境变量下查询,且此"执行文件"是完整文件名。如果加上"-a"参数,则显示的是所有找到的同名执行文件,而非仅仅第一个。
(2)whereis: 与locate 一样是在数据库中查找,速度快,而find是在磁盘中查找,慢。但是find的参数强大。
(3)locate: 更新数据库:updatedb :更新/var/lib/mlocate 内的数据库文件,而locate就是依据/var/lib/mlocate里的数据库记载查找用户输入的关键字文件名的。
(4) find:find [path] [option] [action]
比如:“列出最近30天内修改的,具有SUID权限, 且文件名包含‘httpd’所有文件”
那么命令为:find / -mtime -30 -perm -4000 -name '*httpd*'
2. soft & hard link: (软硬连接) 区别?
(1) 硬连接:假设有个/tmp/liuning/a.txt文件, 现在创建
ln /tmp/liuning/a.txt /home/tmp/b.txt
则创建了'b.txt'这个硬连接。此时,a.txt与b.txt代表的是两个inode节点,而文件名均指向一个真正的inode节点,这个inode节点指向的是文件的实际内容。因此,删除任何一个文件名,另一个文件名对应的真正inode节点还在,inode节点对应的实际内容还在,还可访问。硬连接相当于一个不占用新磁盘空间的复制,所以不能硬连接到目录,不能跨文件系统。
(2) 软连接:创建时加上-s
参数,例如ln -s /etc/crontab crontab2
给/etc/crontab这个文件创建了软连接crontab2, 此时crontab2这个文件名是一个真正的文件,inode节点与/etc/crontab文件inode节点号码不一样。且实质是crontab2文件内容就是指向的"文件名",所以,一旦目标文件被删除,连接文件将无法访问(连接文件内容是被指向的文件名),且修改连接文件内容就是修改目标文件内容。因为访问连接文件,就是访问目标文件。
3. 怎么挂载iso文件?例如:将当前目录下的iso文件以硬盘模式挂载到 /mnt/234
mount -t iso9660 -o loop hi-spider-isp6.10.iso /mnt/234/
(-t 参数可以不指定,因为系统一般自动识别文件类型;-o loop 意思是把一个文件当成硬盘分区挂接上系统(这里为必须); /mnt/234/是被挂载的目录)
4. 如何让一个程序在开机执行?添加到开机启动项?
添加到
/etc/rc.d/rc.local
文件中
5. gzip 与bzip2, tar的区别?
(1)gzip 与bzip2 只能单个地压缩与解压缩,而tar可以对许多文件,比如含有许多文件的目录进行打包成一个文件。
gzip [-cdtv#] 文件名
gzip -v 文件名
压缩该文件,并显示压缩比例,此时源文件消失,替代的是源文件.gz (不带任何参数就是直接压缩)
zcat xx.gz
命令:直接查看压缩的文件内容,而不需要解压。
(2)bzip2是取代gzip的压缩比更高的命令,bzip2 (-z) xx
压缩,bzcat xx.bz2
直接查看压缩文件,bzip2 -k xx
是压缩并保留xx文件,bzip2 -d xx.bz2
解压缩,bzip -c xx > xx(自己定义).bz2
输出命令行并重定向。
(3)tar命令:与压缩命令结合起来用,一般如下:
压缩: tar -jcv -f desktop.tar.bz2(压缩打包后的文件名) 桌面(待打包压缩的文件或目录)
(源文件会保留)
查询: tar -jtv -f desktop.tar.bz2(待查看压缩文件)
解压缩:tar -jxv -f desktop.tar.bz2(待解压文件名) -C /home/liuning/解压/(解压缩后文件放置目录)
比如备份/etc/目录:tar -zpcv -f /home/liuning/etc.tar.gz /etc
(这里压缩使用的是gzip格式,所以带-z参数而不是-j;-p是指保留备份数据原本的权限与属性,一般用在重要文件上)
**du -sh filename/dir(文件或目录)**
用来评估此文件或者目录的占用磁盘空间的大小 (-s 只列出目录下总量,而不列出目录下每一项大小; -m:以MB形式显示大小; -h:以人类友好方式列出大小(G/M))
tar -jtv -f /home/liuning/etc.tar.bz2
:查看etc.tar.bz2压缩文件下包含的各项小文件。
6. vim多窗口编辑多文件(每一个窗口一个文件)?
刚开始时就打开两个文件在两个窗口中:
vim -o(小o为水平分割,大O为垂直分割) file1 file2
, 如果已经打开了一个文件,那么再想划出新窗口打开新文件::split other.txt
7. 系统变量IFS?
IFS(Internal Field Seperator: 内部区域分隔符),一般默认是空格,tab, 换行三个。这样,在for循环遍历'welcome to my home!'时,才会一次取得:welcome, to, my, home!这几个字符。要改变:设置IFS=,(逗号)等。这个在shell脚本编程中需要用到。
8. 变量内容设置删除与替换?
echo ${path_back#/*:}
:从开始删除掉从/
开始到:
的第一个内容; (从后删除:%,一直删除:##或%%)
变量的测试与替换:username=${username:-root}
: 如果没有设置username或者是设为空,则替换为root
9.在CentOS下的Login shell环境下,shell的读取脚本顺序为:
/etc/profile(会调用/etc/inputrc, /etc/profile.d/*.sh, /etc/sysconfig/i18n这些文件) ------> [~/.bash_profile | ~/.bash_login | ~/.profile] (会调用~/.bashrc文件)
(第二个主文件是按照顺序来读取,前一个没有才会读取后一个,一般~/.bash_profile
都有)
10.数据流重定向:0,1,2?
0:标准输入; 1:标准输出; 2:标准错误输出。 如将
find /home -name .bashr
的正确结果导入list_tight的文件,错误结果导入list_error文件中:
find /home -name .bashrc > list_right 2> error_right
追加写入同一文件(不覆盖掉原来的数据),则用" >>",前面加上对应的数字,需要注意:<< "EOF"
这个表示结束输入,即当输入"EOF"时结束输入。
一般用法:将错误信息丢进NULL这个黑洞设备里:2> /dev/null
(/dev/null:数据黑洞,哈哈)
经常用法:find /home -name .bashrc > list 2>&1
(其中的2>&1
是指将正确错误输出均写入list文件中)
11.列出当前目录下以xxx
开头,且文件名是5个字符的所有文件?
ls | grep -n "^xxx.."
"^xxx.." 一共有5位(..
占两位),且带了'^',所以是以'xxx'开头。
12. 列出某文件下的特定列并且按照顺序排列?
ls passwd | cut -d ":" -f3 | sort
: 列出passwd文件中以":"分割的第3项,并按顺序输出。