2014-08-31
ln 为文件建立链接 (make links)
链接分为两种 : 硬链接(hard link)与软链接(symbolic link)
软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建
平常软链接使用比较多
常用参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
实例:
1. ls -s file newfile 给文件创建软链接
2. ls file newfile 给文件创建软链接
3. 删除链接使用rm 但注意删除链接目录时是目录名称,不要带/ 如rm -rf dirname 而不是rm -rf dirname/
2014-08-30
chown将指定文件的拥有者改为指定的用户或组(change file owner and group)
命令格式
chown [选项] [所有者]:[组] 文件名
实例:
1. chown apache:apache file 改变拥有者和群组
2. chown root: file 改变文件所有者
3. chown :root filw 改变组
2014-08-29
每天一个linux命令
chmod 改变linux系统文件或目录的访问权限 (change file mode bits)
选择参数:
<权限范围>+<权限设置> 使权限范围内的目录或者文件具有指定的权限
<权限范围>-<权限设置> 删除权限范围的目录或者文件的指定权限
<权限范围>=<权限设置> 设置权限范围内的目录或者文件的权限为指定的值
权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组
权限代号:
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
实例:
1. chmod a+r file 将文件添加可读权限,保留其他权限,a也可省略
2. chmod 444 file 只有可读权限
3. chmod a-r file 将文件去掉可读权限
4. chmod 777 file 添加所有权限
5. chmod +r+w+x file 同上
2014-08-28
每天一个linux命令
了解文件属性
1.ls -lih
> 2491530 -rw-rw-r--. 1 apache apache 134 8月 26 10:39 tt.tar.gz
第一列:inode
inode 意思是索引节点。每个存储设备或存储设备的分区(存储设备是硬盘、软盘、U盘等等)被格式化为文件系统后,应该有两部份,
一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数 据的信息,
这些信息包括文件大小、属主、归属的用户组、读写权限等
第二列:文件种类和权限;
共10个字符,第一个字符如果是“-” 表示这是个文件, 如果是 “d” 表示的是文件夹,“l” 表示链接文件等等
后面9个字符分为3个字符一组共三组,分别表示user(文件所属用户) 的权限、group组用户的权限、other其它用户的权限。
rwx(Owner)r-x(Group)r-x(Other)
r表示读,w表示写,x的话示执行。各种权限代表的数字r (4) , w (2) , x (1)
第三列: 硬链接个数;
linux链接分二种,一种是软链接,一种是硬链接
软、硬链接最大的不同在于:当源文件删除后,软链接也就没用了,找不到源文件了,但硬链接还有,可以打开,相当于源文件的拷贝,
但可以同步更新。为什么可以同步更新呢?因为他们的inode是一样的
第四列: 属主;
第五列:所归属的组;
第六列:文件或目录的大小;
第七列和第八列:最后访问或修改时间;
第九列:文件名或目录名
2014-08-27
每天一个linux命令
date 显示或设置时间(display or set date and time)
参数:
-d datestr, --date datestr 显示由datestr描述的日期
-s datestr, --set datestr 设置datestr 描述的日期
-u, --universal 显示或设置通用时间 时间域
% H 小时(00..23)
% I 小时(01..12)
% k 小时(0..23)
% l 小时(1..12)
% M 分(00..59)
% p 显示出AM或PM
% r 时间(hh:mm:ss AM或PM),12小时
% s 从1970年1月1日00:00:00到目前经历的秒数
% S 秒(00..59)
% T 时间(24小时制)(hh:mm:ss)
% X 显示时间的格式(%H:%M:%S)
% Z 时区 日期域
% a 星期几的简称( Sun..Sat)
% A 星期几的全称( Sunday..Saturday)
% b 月的简称(Jan..Dec)
% B 月的全称(January..December)
% c 日期和时间( Mon Nov 8 14:12:46 CST 1999)
% d 一个月的第几天(01..31)
% D 日期(mm/dd/yy)
% h 和%b选项相同
% j 一年的第几天(001..366)
% m 月(01..12)
% w 一个星期的第几天(0代表星期天)
% W 一年的第几个星期(00..53,星期一为第一天)
% x 显示日期的格式(mm/dd/yy)
% y 年的最后两个数字( 1999则是99)
% Y 年(例如:1970,1996等)
实例:
1. date 显示时间
2. date +%D\ %X (设定格式必须有加号,短接符"-"、空格" "和冒号":" 为分隔符,其中空格前面加了转义符号"\")
3. date +%Y-%m-%d\ %H:%M:%S
4. date -v +1d +%Y%m%d 显示加一天时间
5. date -v -1m +%Y%m%d 显示加一个月时间
6. date -v -1y +%Y%m%d 显示加一年时间
2014-08-26
gzip 解压缩文件
参数:
-a或--ascii 使用ASCII文字模式。
-c或--stdout或--to-stdout 把压缩后的文件输出到标准输出设备,不去更动原始文件。
-d或--decompress或----uncompress 解开压缩文件。
-f或--force 强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
-h或--help 在线帮助。
-l或--list 列出压缩文件的相关信息。
-L或--license 显示版本与版权信息。
-n或--no-name 压缩文件时,不保存原来的文件名称及时间戳记。
-N或--name 压缩文件时,保存原来的文件名称及时间戳记。
-q或--quiet 不显示警告信息。
-r或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-S<压缩字尾字符串>或----suffix<压缩字尾字符串> 更改压缩字尾字符串。
-t或--test 测试压缩文件是否正确无误。
-v或--verbose 显示指令执行过程
实例
1. gzip file 将file压缩成file.gz
2. gzip -dv file.gz 解压file.gz
3. gzip -l file.gz 查看file.gz的信息,但不解压
4. gzip -r file.tar 压缩tar文件
2014-08-25
tar 打包压缩和解压文件(manipulate tape archives)
命令参数:
必要参数有如下:
-A 新增压缩文件到已存在的压缩
-B 设置区块大小
-c 建立新的压缩文件
-d 记录文件的差别
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-z 支持gzip解压文件
-j 支持bzip2解压文件
-Z 支持compress解压文件
-v 显示操作过程
-l 文件系统边界设置
-k 保留原有文件不覆盖
-m 保留文件不被覆盖
-W 确认压缩文件的正确性
可选参数如下:
-b 设置区块数目
-C 切换到指定目录
-f 指定压缩文件
--help 显示帮助信息
--version 显示版本信息
实例:
1. tar xvf xx.tar 解xx.tar包,并显示解包过程
2. tar cvf xx.tar file 将file打包到xx.tar中
3. tar zxvf xx.tar.gz 解压xx.tar.gz
4. tar zcvf xx.tar.gz file 将file文件压缩到xx.tar.gz中
5. tar zcvf tt.tar.gz -C donnie/ tt.txt
注意要搞清楚什么是打包,压缩,以什么方式压缩
2014-08-24
du 查看目录文件所占的空间 (display disk usage statistics)
命令参数:
-a或-all 显示目录中个别文件的大小。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-k或--kilobytes 以KB(1024bytes)为单位输出。
-m或--megabytes 以MB为单位输出。
-s或--summarize 仅显示总计,只列出最后加总的值。
-h或--human-readable 以K,M,G为单位,提高信息的可读性。
-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
--exclude=<目录或文件> 略过指定的目录或文件。
-D或--dereference-args 显示指定符号链接的源文件大小。
-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
-l或--count-links 重复计算硬件链接的文件。
实例:
1. du 显示目录或者文件所占空间
2. du file 显示指定文件所占空间
3. du -h test 方便阅读的格式显示
4. du -ch my|tail -n 1 看到当前目录下的my目录大小,但不想查看其他目录以及子目录
2014-08-23
df 显示指定磁盘文件的可用空间 (df - report file system disk space usage)
命令参数:
必要参数:
-a 全部文件系统列表
-h 方便阅读方式显示
-H 等于“-h”,但是计算式,1K=1000,而不是1K=1024
-i 显示inode信息
-k 区块为1024字节
-l 只显示本地文件系统
-m 区块为1048576字节
--no-sync 忽略 sync 命令
-P 输出格式为POSIX
--sync 在取得磁盘信息前,先执行sync命令
-T 文件系统类型
选择参数:
--block-size=<区块大小> 指定区块大小
-t<文件系统类型> 只显示选定文件系统的磁盘信息
-x<文件系统类型> 不显示选定文件系统的磁盘信息
--help 显示帮助信息
--version 显示版本信息
实例:
1.df
2. df -i (了解inode:http://www.ruanyifeng.com/blog/2011/12/inode.html)
3. df -h
2014-08-22
每天一个linux命令
xargs 将标准输入的资料分隔成为参数 (xargs - build and execute command lines from standard input)
xargs是以空白为分割,xargs主要用分隔成参数并交给下一个命令执行
常用参数:
1. -a file 从文件中读入作为sdtin
2. -E flag flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
3. -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
4. -p 操作具有可交互性,每次执行comand都交互式提示用户选择,当每次执行一个argument的时候询问一次用户
5. -t 表示先打印命令,然后再执行。
6. -i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给{},可以用{}代替
7. -L 从标准输入一次读取num行送给Command命令
8. -d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符
9. -x exit的意思,如果有任何 Command 行大于 -s Size 标志指定的字节数,停止运行 xargs 命令
10. -r no-run-if-empty 如果没有要处理的参数传递给xargsxargs 默认是带 空参数运行一次,
如果你希望无参数时,停止 xargs,直接退出,使用 -r 选项即可,其可以防止xargs 后面命令带空参数运行报错。
实例:
1. cat tt.txt|xargs echo
2. cat tt.txt|xargs -0 echo
3. xargs -a tt.txt echo
4. cat tt.txt|xargs -E 'cc' echo
5. cat tt.txt|xargs -n 1 echo
6. ls *.txt |xargs -t -i cp {} {}.bak
7. find . -name '*txt' |xargs cat 将管道传来的内容作为文件,交给cat执行
2014-08-21
find命令之exec
1. find . -type f -exec ls -al {} \;
找出文件并用ls -al列出文件
; (分号)表示command命令参数的结束,对于不同的系统,直接使用分号可能会有不同的意义, 所以使用转义符/在分号前明确说明。
{}表示文件名,也就是find前面处理过程中过滤出来的文件,用于command命令进行处理。
2. find . -name "*.tmp" -exec rm -rf {} /;
找出当前目录下的tmp文件,并删除
3 find . -name "*.java" -exec cp {} donnie \;
找出后缀为java的文件并copy到donnie的目录里
4. find . -name "*.java" -exec mv {} .. \;
找出后缀为java的文件并移动到上一目录
2014-08-20
find 查找文件(search for files in a directory hierarchy)
常用参数:
-name 按照文件名查找文件。
-perm 按照文件权限来查找文件。
-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-user 按照文件属主来查找文件。
-group 按照文件所属的组来查找文件。
-mtime -n +n 按照文件的更改时间来查找文件,
- n表示文件更改时间距现在n天以内,
+ n表示文件更改时间距现在n天以前。
find命令还有-atime和-ctime 选项,但它们都和-m time选项。
-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
另外,下面三个的区别:
-amin n 查找系统中最后N分钟访问的文件
-atime n 查找系统中最后n*24小时访问的文件
-cmin n 查找系统中最后N分钟被改变文件状态的文件
-ctime n 查找系统中最后n*24小时被改变文件状态的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后n*24小时被改变文件数据的文件
实例:
1.find /opt -name runtime* 查找在opt目录下的开头是runtime的文件或目录
2.find . -perm 777 查找当前目录下有777权限的文件
3.find /opt -path "*trade" -prune -o -name trade 查找不在trade目录下的trade
4. find . -type f -name *trade* 查找当前目录下包含trade的文件
5.find -atime -2 查找48小时内修改过的文件
2014-08-19
重定向符号
大于号:将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的)重定向其它输出设备(文件,打开文件操作符,或打印机等等)
实例:
1.ls > b.txt 将ls后的结果写入到b.txt文件中(如存在就覆盖b.txt中的内容)
2.ls >> b.txt 将ls后的结果不覆盖写入b.txt文件的尾部(如无b.txt则新建)
3.mysqldump -u root -p test > 20101216_test.sql 倒出数据
小于号:命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入
实例:
1.mysql -u root -p -h test < 20101216_test.sql 导入数据
2014-08-18
管道:Linux所提供的管道符“|”将两个命令隔开,将左边命令执行结果通过管道传递给右边的命令再执行
实例:
ls -al|grep java
此命令意思是先执行ls -al列出当前所有文件或目录,再通过管道“|” 转递给grep 查询是否包含java的目录或文件
常用的有:
1 .ps aux|grep java
2. tail -100f log.txt|grep log
2014-08-17
locate:快速查找文件 (find filenames quickly)
locate的速度比find快,它并不是真的查找,而是查数据库,
一般文件数据库在/var/lib/slocate/slocate.db中,
所以locate的查找并不是实时的,而是以数据库的更新为准
常用参数:
1.-e 将排除在寻找的范围之外。
-1 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。
这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的权限资料。
-f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案放在资料库中。
-q 安静模式,不会显示任何错误讯息。
-n 至多显示 n个输出。
-r 使用正规运算式 做寻找的条件。
-o 指定资料库存的名称。
-d 指定资料库的路径
-h 显示辅助讯息
-V 显示程式的版本讯息
实例:
1.locate pwd 查找和pwd相关的所有文件
2.locate /etc/sh 搜索etc目录下所有以sh开头的文件
3.locate -r /etc/sh$ 搜索etc目录下所有以sh结尾的文件
2014-08-16
less:对文件或其它输出进行分页显示的工具(opposite of more)
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将“tab”键显示为规定的数字空格
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
2014-08-15
more :more会以一页一页的显示方便使用者逐页阅读(file perusal filter for crt viewing)
命令参数:
+n 从笫n行开始显示
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c 从顶部清屏,然后显示
-d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l 忽略Ctrl+l(换页)字符
-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s 把连续的多个空行显示为一行
-u 把文件内容中的下画线去掉
4.常用操作命令:
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
2014-08-14
which 查看可执行文件的位置 (locate a program file in the user's path)
which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
实例:
which java
2014-08-13
nl 将输出的文件内容自动的加上行号(number lines of files)
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
-n ln :行号在萤幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w :行号栏位的占用的位数。
实例:
1. nl -b a file1 输出内容并列出行号
2. nl -b a -n rz file1 列出行号并行号加0
3. nl -b a -n rz -w 3 file1 将列出的行号保持3位数
2014-08-12
tail:命令从指定点开始将文件写到标准输出 (display the last part of a file)
常用参数:
-f 循环读取
-n<行数> 显示行数
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
实例
1.tail -n 10 file1 显示10行末尾的内容
2.tail -100f file1 动态显示末尾的100行内容
3.tail -100f file1|grep java 动态显示末尾的100行包含java的内容
2014-08-11
cat : 连接文件或标准输入并打印 (concatenate files and print on the standard output)
常用参数:
-A, --show-all 等价于 -vET
-b, --number-nonblank 对非空输出行编号
-e 等价于 -vE
-E, --show-ends 在每行结束处显示 $
-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
-t 与 -vT 等价
-T, --show-tabs 将跳格字符显示为 ^I
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
实例
1. cat file 显示整个文件内容
2. cat file1 file2 >file 合并文件到file
3. tac file 将文件内容倒过来显示
2014-08-10
cp: 复制(copy files)
1. cp file1 file2 将文件file1复制成文件file2
2. cp -i file1 file2 将文件file1复制成文件file2时需问是否复制
3. cp -f file1 file2 将文件file1强制复制成file2
4. cp dir1 dir2 将目录dir1复制成dir2
5. cp file1 file2 file3 dir 将多个文件复制到dir目录中
2014-08-09
mv:移动文件(move files)
1. mv file1 file2 将文件file1改名为file2
2. mv file dir 将文件file移动到目录dir中
3. mv -i file1 file2 将文件file1改名为file2,如果file2已经存在,则询问是否覆盖
4. mv -f file1 file2 将文件file1改名为file2,即使file2存在,也是直接覆盖掉
5. mv dir1 dir2 如果目录dir2不存在,将目录dir1改名为dir2;否则,将dir1移动到dir2中
6. mv file1 file2 file3 dir1 将多个文件移动到dir1目录中
2014-08-08
rm :删除 (remove directory entries)
-f, --force 强制删除。忽略不存在的文件,不提示确认
-i 在删除前需要确认
-r, -R, --recursive 递归删除目录及其内容
-v, --verbose 详细显示进行的步骤
(注意慎用rm,怕错删的可以自定义回收站功能)
自定义回收步骤:
1. myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
2. alias rm='myrm'
2014-08-07
mkdir : 创建目录(make directories)
1) mkdir -m 777 test
-m, --mode=模式,设定权限<模式> (类似 chmod)
2)mkdir -vp src/{lib/,java/}
-p, --parents 可以创建多级目录
-v, --verbose 每次创建新目录都显示信息
2014-08-06
每天一个linux命令
pwd: 输出当前目录 (Print the name of the current working directory)
pwd -P 显示出实际路径
pwd -L 目录连接链接时,输出连接路径(pwd 默认是pwd -L)
$PWD 当前目录的变量,可以用echo $PWD 输出,结果与pwd一样
$OLDPWD 上一个目录的变量
2014-08-05
cd [目录名] :切换当前目录至dirName (Change the current directory to DIR)
常用命令组合
1. cd / 进入系统根目录
2. cd .. 返回上一级目录
3. cd ~ 或cd 当前用户主目录
(注意:“当前用户主目录”和“系统根目录”是两个不同的概念)
4. cd - 返回进入此目录之前所在的目录
5. cd !$ 执行linux cd !$把上个命令最后的参数作为输入
2014-08-04
ls : 列出目标目录中所有的子目录和文件( list directory contents)
常用组合参数
1)ls -al
-a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件
-l 将文件的权限、所有者、文件大小等信息详细列出来
2)ls u*
u* 星是正则表达匹配。意思是已u开头的文件或目录
3) ls -F 列出目前工作目录下所有档案及目录;目录于名称后加"/", 可执行档于名称后加"*"