标签:linux
用了很久的linux,但是也只用到某些命令,并没有深入去全面学习,很久之前就买了一本《Linux指令规范速查》手册,上面有一个光盘,有一个比较系统的教程。所以今天开始想学一下。下面的只是记下我自己平时不常用的。。
ls -a 查看所有文件,包括隐藏文件。隐藏文件以‘.‘作为前缀。
ls -l 中c 表示字符设备,b 表示块设备,l 表示链接符号,d 表示目录,- 表示一般文件。
ls -i 查看索引节点,所有的文件前面都多了一个数字,如果两个数字相同,那么那两个文件本质上是同一个文件。
cp -l 建立硬连接。
eg. cp -l hello hardlink.hello
此时,hardlink.hello与hello拥有相同的索引节点号
cp -i 建立符号链接。
eg. cp -i hello symlink.hello
此时,symlink.hello与hello拥有不同的索引节点号,但是symlink.hello会指向hello
alias 查看系统已经设置了的别名
rmdir 删除空目录,对于非空目录不能删除。个人感觉这个命令没有啥用,但是这个可以作为检查目录是否非空来运用。
mkdir -p 可以递归的创建多个目录。
eg. mkdir -p a/b/c/d
此时,就会在当前目录创建了a目录,然后在a目录下创建了b目录,如此类推
rmdir -p 可以递归的删除多个空目录。前提是这些目录都为空。
eg rmdir -p a/b/c/d
chgrp 修改工作组。
chgrp -R 递归的修改目录以及目录下面所有的文件都进行工作组的修改。
chgrp -R user dir
chmod u=rwx,g=rw,o=rw 修改对应文件的操作权限。
chmod u-x 修改对应文件的+-增加或者减少操作权限
chmod a 表示修改对应文件的u,g,o的所有的操作权限
chown 修改文件的所有者以及工作组。
chown -R root:root dir
此时,递归的修改dir以及dir目录下所有文件的所有者以及工作组。
chown root dir
此时,只改变dir的所有者
find ./ -name "*.c" -exec rm -rf {} \;
此时,会在当前路径,找到后缀名为.c的所有文件,并通过-exec 来调用shell命令rm -rf ,然后找出的结果会放到一对花括号里面。最后以" \;"作为调用外部命令的结束符。
ln 连接。
eg. ln log hard.log
此时就会生成一个硬连接,它们的设备节点号是相同的(ls -i查看),改变其中一个的内容,另外一个也会改变,删除其中一个,对另外一个不受影响。其中要注意的是,硬连接一定要在同一个设备分区中进行,而且不能对目录进行硬连接。因为每一个设备分区中的设备节点都是自成体系的。
eg. ln -s log sym.log
此时会生成一个符号连接,他们的设备节点不同,本质上是两个不同的文件,只是符号连接指向了那一个目标文件(ls -l查看)。改变其中一个内容,另外一个也会改变,但是如果删除了目标文件,符号连接会变成红色并失效。符号连接可以是跨设备分区并能对目录进行操作。
whereis 会显示我们平时用的命令的二进制文件路径,源文件路径,以及man手册的路径。
eg. whereis ls
which 会在$PATH下的目录进行寻找我们平时用的命令的所在的执行路径以及别名(Ubuntu9下面不显示别名alias)
eg. which ls
touch 修改文件的时间属性,文件的最近一次修改时间更改为当前的系统时间。
touch file{1,2,3}
此时,依次创建file1,file2,file3三个空文件。
locate 在数据库中查找文件,比find要快很多,但是准确性要根据使用updatedb来更新数据库的周期。
dd 格式化输出文件(给我的感觉是这样哈~)
eg. dd if=hello.c conv=ucase of=new.c
此时,会把hello.c中所有的字母变成大写并拷贝为new.c
eg. dd if=/dev/cdrom of=mycdrom.iso
此时,会把cdrom里面的内容做成一个以.iso为后缀的镜像
eg. dd if=/dev/fd0 of=myfloppy.img
此时,会把fd0里面的内容做成一个以.img为后缀的软盘
dirname /hello/hello.c 获取文件所在位置的绝对路径
此时,会输出hello.c所在的绝对路径 /hello
basename 去除文件路径前面的路径,只获取文件名。
eg. basename /hello/world/test.c
此时,会输出test.c
eg. basename /hello/world/test.c .c
此时,会输出test。 如果要去除后缀名,则只需要在命令的最后加上要去除的类型。
pathchk /hello/hello.c 用来检测这个路径作为参数的时候是否合法,是否具有可移植性
此时,如果没有输出,证明是OK的
rename 批量改名
eg. rename file linux test* (在Debain下)
eg. rename ‘s/file/linux/‘ test* (在Ubuntu下)
此时,会在当前目录查找所有以test为前缀的所有文件,并把这些文件名中的file字符改成linux
标签:linux
原文地址:http://sam2016.blog.51cto.com/9877956/1739697