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 列出目前工作目录下所有档案及目录;目录于名称后加"/", 可执行档于名称后加"*"