分类: LINUX
2009-05-26 14:01:50
u 代表属主
g 代表属组
o 代表其它用户
a 代表属主、属组和其它用户,也就是上面三个用户(或组)的所有;
权限定义字母:
r 代表读权限;
w 代表写权限;
x 代表执行权限;
权限增减字符;
- 代表减去相关权限;
+ 代表增加相关权限;
示例:
chmod u-x,go+rw linuxsir007.txt 注:减去文件属主对文件的执行权,增加属组和其它用户对文件的可读可写权;
4. 使用选项 -C 来解压缩 .tar 存档文件
tar xvf -C tmp/a/b/c newarc.tar.gz ,在red hat下应当将 -C tmp/a/b/c
置后
5.显示一个目录的结构
tree命令显示一个目录的结构,有时候很方便。
7.tar
以下摘自鸟哥:
7.1 压缩文件介绍
*.Z compress 程式壓縮的檔案,不再是主流方式;
*.gz gzip 程式壓縮的檔案;解压,gzip -d man.config.gz
gunzip 命令与 gzip 命令相对,专门把 gzip 压缩的 .gz 文件解压缩。
如果您有已经压缩过的文件,例如 big1.gz,这时就可以用解压缩:gunzip big1.gz
这个命令也可以用 gzip 自己来完成,效果完全一样:gzip -d big1.gz *.bz2 bzip2 程式壓縮的檔案;解压,bzip2 -d man.config.bz2
*.tar tar 程式打包的資料,並沒有壓縮過;
*.tar.gz tar 程式打包的檔案,其中並且經過 gzip 的壓縮
*.tar.bz2 tar 程式打包的檔案,其中並且經過 bzip2 的壓縮
使用zcat可以查看gzip壓縮文件的内容;使用bzcat查看bzip2压缩文件内容
7.2 tar命令选项:
[root@www ~]# tar [-j|-z] [cv] [-f 建立的檔名] filename... <==打包與壓縮
[root@www ~]# tar [-j|-z] [tv] [-f 建立的檔名] <==察看檔名
[root@www ~]# tar [-j|-z] [xv] [-f 建立的檔名] [-C 目錄] <==解壓縮
選項與參數:
-c :建立打包檔案,可搭配 -v 來察看過程中被打包的檔名(filename)
-x :解打包或解壓縮的功能,可以搭配 -C (大寫) 在特定目錄解開
-t :察看打包檔案的內容含有哪些檔名,重點在察看『檔名』就是了; 特別留意的是, -c, -t, -x 不可同時出現在一串指令列中。
-j :透過 bzip2 的支援進行壓縮/解壓縮:此時檔名最好為 *.tar.bz2
-z :透過 gzip 的支援進行壓縮/解壓縮:此時檔名最好為 *.tar.gz
-v :在壓縮/解壓縮的過程中,將正在處理的檔名顯示出來!
-f filename:-f 後面要立刻接要被處理的檔名!建議 -f 單獨寫一個選項囉!
-C 目錄 :這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項。
其他後續練習會使用到的選項介紹:
-p :保留備份資料的原本權限與屬性,常用於備份(-c)重要的設定檔
-P :保留絕對路徑,亦即允許備份資料中含有根目錄存在之意;
--exclude=FILE:在壓縮的過程中,不要將 FILE 打包!
7.3 列出tar文件的内容,
tar -tvf filename.tar
8.grep命令
问题???grep语句中,字符串单引号?双引号?不加引号
8.1 最简单的grep使用,如下:
grep apple fruitlist.txt
在这个例子里,grep会返回"fruitlist.txt"中所有包含“apple”的文本行
grep默认情况下是大小写敏感的,若要不区分大小写,Apple,aPPle,则用
grep -i apple fruitlist.txt
8.2 grep修改版
存在很多grep的修改版,例如表示“近似的grep approximate grep用于模糊字符串搜索,fgrep用于固定样式搜索fixed pattern searches,而egrep用于搜索更复杂的语法。8.3 目录中搜索
在etc目录中,搜索所有文件中含有"192.168.1.5"的行
grep -r "192.168.1.5" /etc/
8.4 常用选项
8.4.1 完整匹配boo整个单词,这个不是很理解!!
grep -w "boo" /path/to/file
8.4.2 匹配word的个数
grep -c 'word' /path/to/file
8.4.3 反向,找出不含bar的行
grep -v bar /path/to/file
8.5 搜索特定文件中的特定字符串
搜索当前目录的cpp文件,并且找出含有Mail的行
find . -name '*.cpp' -exec grep 'Mail' {} \;
8.6 svn st 查找改变的cpp或h文件
svn st |egrep '(\.h$)|(\.cpp$)'
8.7 显示匹配行及以下若干行:
例如:dmidecode |grep -A16 "Memory Device$"
9.find命令
9.1 一般形式
find pathname -options [-print -exec -ok ...]
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行
-type
查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
9.2 示例:
9.2.0 简单例子:
find . -name "*.java"
9.2.1 find命令匹配到当前目录下的所有普通文件,并在-exec选项中使用ls -l命令将它们列出,务必注意最后的分号,"\;"是一体的,{}中间最好别加空格,命令中的空格最好只用一个。
find . -type f -exec ls -l {} \;
9.2.2 在/logs目录中查找更改时间在5日以前的文件并删除它们
find logs -type f -mtime +5 -exec rm { } \;
9.2.3 查找文件名字中含有index的文件
find . -name '*index*'
9.2.4 查找目录名字中含有.emacs的目录。
find . -type d -name '*.emacs*'
9.2.5 查找.c文件中含有main的文件,列出所在文件的路径和行号
find ./ -name "*.c" -exec grep "main" -nH {} \;
9.2.6 查找多个文件的某个字符串:
有时候在emacs shell下会出现
find . -regex '.*\.\(c\|cpp\|h\|hpp\)$' -exec grep 'changed sample rate to*' -nH {} \;
find . -regex '.*\.\(c\|cpp\|h\|hpp\)$' -exec grep 'change' -nH {} \;
另附一篇讲find的好文:
http://blog.csdn.net/jakee304/archive/2007/09/20/1792830.aspx
10. rpm(yum)命令:
10.1 首先关闭yum的自动更新:
service yum-updatesd stop
10.2 配置yum的http代理:
在/etc/yum.conf中加入以下行:
proxy=
10.3 使用rpmforge源:
rpmforge是Dag、Dries 和其它软件包的组合。它们为 CentOS 提供了超过10000个软件包。rpmforge不是redhat Linux产品或 CentOS 的组成部分,但它是为这些 Linux 套件而设计的。
注释:因为这个安装源不是CentOS 本身的组成部分,要使用rpmforge,必须先安装rpmforce这个Repository。
下载rpmforge的rpm文件包
wget
yum:
例如安装rpmforge ,我们使用命令:yum install rpmforge ,可能 No package rpmforge available.
但是如果我们改为:yum install rpmforge* ,则找到了rpm包,显示可以安装。
讲yum安装的好文章:
和
11.pkg-config命令:
本来不想研究这个命令,但是由于在编译vlc过程中,必须要搞清楚,所以看了看这个命令。
这个命令非常相关的一个东西是.pc文件。
比较正规的软件都会生成一个.pc文件,它的位置在pkgconfig文件夹里,pkgconfig文件夹在安装目录的lib子目录里面,
和你编译安装生成的so文件在一个目录里。
编译时,需要设置 :
export PKG_CONFIG_PATH=/usr/local/ffmpeg-0.9.1/lib/pkgconfig
另外,要注意,export PKG_CONFIG_PATH只对当前终端有效,换一个终端则无效了。
12.apt命令:
12.1常用命令:
12.2 问题:
[Solved] E: The package NAME needs to be reinstalled, but I can’t find an archive for it..
以上可能是由于不正确的安装流程引起,导致无法安装其他的软件包。
可以执行命令:
dpkg --remove --force-remove-reinstreq NAME
如果上面的命令不奏效,then try:
1- sudo rm /var/lib/dpkg/lock
then
2- sudo dpkg --configure -a