ll:查看文件的属性
语法:ll [选项] 文件或目录
选项:-c 以更改时间排序,显示文件和目录
使用例:
ll:察看当前文件夹下文件
ll file1 file2:察看文件file1和file2属性
-rwxr-xr-x 1 root root 96324 2010-06-11 15:11 /bin/ls*
-rw-r--r-- 1 linux linux 1991 2010-12-04 12:48 grub
属性说明:
[root@gucuiwen root]# ll
总用量 4055
-rw-r--r-- 1 root root 1581 11月 24 18:14 anaconda-ks.cfg
drwxr-xr-x 2 root root 208 12月 1 13:50 babylinux
lrwxrwxrwx 1 root root 9 1月 4 11:06 disk1.link.png -> disk1.png
-rwxr-xr-x 1 root root 13695 11月 30 16:51 fangkuai.sh
drwxr-xr-x 2 root root 208 12月 28 12:06 FreeBSD
-rw-r--r-- 1 root root 2315 11月 25 17:19 getMBR.png
brw-r----- 1 root root 3, 1 1月 4 11:06 hda1
drwxr-xr-x 2 root root 296 12月 31 11:53 htmls
-rw-r--r-- 1 root root 21369 11月 24 18:12 install.log
-rw-r--r-- 1 root root 0 12月 18 10:44 tset
crw-r----- 1 root root 4, 65 1月 4 11:08 ttyS1
-rw-r--r-- 1 root root 9754 12月 1 11:25 X.sxw
-rw-r--r-- 1 root root 8704 11月 29 12:22 员工信息.xls
第1行:总用量(total)
这个数值是该目录下所有文件及目录列表第5个字段的和(以k为单位),也就是该目录的大小.请注意和该目录下的文件和子目录下文件的总合做区分.这个数字和du /root 得到的数字的大小是不一样的.
第1字段: 文件属性字段
文件属性字段总共有10个字母组成,第一个字母表示文件类型如下:
- 普通文件
d 目录文件
b 块设备文件
c 字符设备文件
l 符号链
p 管道特殊文件
第一字段的后面9个字母表示文件的权限.
r表是读 (Read)
w表示写 (Write)
x表示执行 (eXecute)
其中前三个表示文件属主的权限,中间三个表示组用户权限,最后三个表示其他用户权限.
比如:
-rw-r--r-- 1 root root 1581 11月 24 18:14 anaconda-ks.cfg
表示文件的拥有者root对文件有读写权限,其他人(同组用户和其他用户只有读的权限)
第2字段: 文件硬链接数或目录子目录数
如果一个文件不是目录那么这一字段表示,这个文件所具有的硬链接数,即这个文件总共有多少个文件名.查看第一个文件:
-rw-r--r-- 1 root root 1581 11月 24 18:14 anaconda-ks.cfg
第2字段的值为1,说明这个文件只有anaconda-ks.cfg这一个文件名.即只有一个指向该链接的硬链接.
如果我用ln,做一个指向该文件的硬链接再查看该文件,该文件的第2字段就会变成2:
如果是一个目录,则第2字段表示该目录所含子目录的个数(注是子目录不包括文件).
新建一个空目录,这个目录的第二字段就是2,表示该目录下有两个子目录.为什么新建的目录下面会有两个子目录呢?
因为每一个目录都有一个指向它本身的子目录"." 和指向它上级目录的子目录"..",这两个默认子目录是隐藏的.用ls -a可以看到.
每次在目录下新建一个子目录,该目录第2字段的值就增1,但是新建一个普通文件该字段值不增加.
第3字段: 文件拥有者
该字段表示这个文件是属于哪个用户的.UNIX类系统都是多用户系统,每个文件都有它的拥有者.只有文件的拥有者才具有改动文件属性的权利.当然, root用户具有改动任何文件属性的权利.对于一个目录来说,只有拥有该目录的用户,或者具有写权限的用户才有在目录下创建文件的权利.
如果某一个用户因为某种原因,被删除,而该用户的文件还存在,那么用ls -l 查看该文件将显示一个代表用户存在前ID号的数字.
第4字段: 文件拥有者所在的组
组的概念可以想像成是一个共同完成一个项目的团队.通过组的概念,可以控制文件让特定的用户查看,修改或运行.而不是一棍子打死,要么全不让看,要么全让看.
一个用户可以加入很多个组,但是其中有一个是主组,就是显示在第4字段的明称.
可以在adduser的时候用-g指定该用户所在的主组,用-G指定其他组.
第5字段: 文件文件大小(以字节为单位)
第5字段表示文件大小,如果是一个文件夹,则表示该文件夹的大小.请注意是文件夹本身的大小,而不是文件夹以及它下面的文件的总大小!
很多人不能理解文件夹是一个特殊的文件的含义,这样的话理解文件夹大小的含义就比较困难了.
第6字段: 文件创建月份
第7字段: 文件创建日期
第8字段: 文件创建时间
第9字段: 文件名
如果是一个符号链接,那么会有一个 "->" 箭头符号,后面根一个它指向的文件名.
chmod:
“chmod”命令就是改变文件的模式位。chmod会根据要求的模式来改变每个所给的文件,文件夹,脚本等等的文件模式(权限)。
Read (r)=4 Write(w)=2 Execute(x)=1
所以如果你想给文件只读权限,就设置为'4';只写权限,设置权限为'2';只执行权限,设置为1; 读写权限,就是4+2 = 6, 以此类推。
现在需要设置3种用户和用户组权限。第一个是拥有者,然后是用户所在的组,最后是其它用户。
chown:
“chown”命令就是改变文件拥有者和所在用户组。
root@tecmint:~# ls -l drwxr-xr-x 3 server root 4096 May 10 11:14 Binary drwxr-xr-x 2 server server 4096 May 13 09:42 Desktop
在这里,目录Binary属于用户"server",和用户组"root",而目录"Desktop"属于用户“server”和用户组"server"
chown root:sys abc将文件abc的用户改为root用户组改为sys
为了改变它的权限,为拥有者,用户所在组和其它用户提供读,写,执行权限。
root@tecmint:~# chmod 777 abc.sh
mkdir:
“mkdir”命令在命名路径下创建新的目录。目录只能在用户拥有写权限的目录下才能创建。
touch:
“touch”命令代表了将文件的访问和修改时间更新为当前时间。touch命令只会在文件不存在的时候才会创建它。如果文件已经存在了,它会更新时间戳,但是并不会改变文件的内容。
注意:touch 可以用来在用户拥有写权限的目录下创建不存在的文件。
cp:
“copy”就是复制。它会从一个地方复制一个文件到另外一个地方。
在shell脚本中是最常用的一个命令,而且它可以使用通配符(在前面一块中有所描述),来定制所需的文件的复制。
例:
cp file1 abc/def/file2
cp -R folder1 folder2
cp /home/user1/folder1/* /home/user1/folder2/
mv:
“mv”命令将一个地方的文件移动到另外一个地方去。
注意:mv 命令可以使用通配符。mv需谨慎使用,因为移动系统的或者未授权的文件不但会导致安全性问题,而且可能系统崩溃。
文件重命名就是通过mv命令来实现:mv /home/user1/file1 /home/user1/file2
rm:
功能:删除文件或目录;
补充说明1:执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文件。rm -r 目录(包括其子目录)
补充说明2:文件覆盖时只看该文件的权限,删除时还要看上曾文件加的权限。
pwd:
“pwd”(print working directory),在终端中显示当前工作目录的全路径。
echo:
察看上一个命令的返回值: echo ${?}
who:
who am i 显示的是实际用户ID即用户登陆的时候的用户ID
whoami 显示的是有效用户ID.
但在大多数情况下,实际用户ID和有效用户ID是一致的。
su - root和 su root:
带短划线的作用是将会改变成要切换的用户的环境变量了,不再是当前用户的环境了。
用pwd命令查看时它的主目录不再是原来用户的当前目录,而是变成了root用户的主目录了
察看执行过的历史命令:
esc+k 上滚一条命令是ESC+k
下滚一条命令是ESC+j
history 察看执行过的命令列表
* 通配符
改变liu下所有文件的所属 chown user:group /home/abc/liu/*
grep grep HULFT_RECV_DIR /usr/local/adm_scripts/func/conf/conf_batchDir
从文件内容查找匹配指定字符串的行:
$ grep "被查找的字符串" 文件名
从文件内容查找与正则表达式匹配的行:
$ grep –e “正则表达式” 文件名
查找时不区分大小写:
$ grep –i "被查找的字符串" 文件名
查找匹配的行数:
$ grep -c "被查找的字符串" 文件名
从文件内容查找不匹配指定字符串的行:
$ grep –v "被查找的字符串" 文件名
从根目录开始查找所有扩展名为.log的文本文件,并找出包含”ERROR”的行
find / -type f -name "*.log" | xargs grep "ERROR"
\符号:
ecscape符号
id:
显示当前执行用户,以及所在组
tar,gzip tar :
解包:tar -xvf FileName.tar
打包:tar -cvf FileName.tar DirName
语法:gzip [选项] 压缩(解压缩)的文件名
解压:gzip -d *.gz
diff:
diff file1 file2
find:
查找文件:find / -name sources.list
查找目录:find / -name Java
/ 表示在根目录下
.表示当前目录下
-type f : 指定为文件
-type d:指定为目录
-name “文件名”
一个比较常用的,就是下载的svn或者其他的版本管理工具,都会在每个目录下生成一个类似于.svn这样的目录,如果要拷贝的话就要把每层目录中的.svn去掉:
find . –name “.svn” –type d –R | xargs rm –rf : 就会递归地把.svn目录删掉
find . -name aplpat.config -type f
find . -name aplpat.config -type f -exec ll {} \;
-r-xr-xr-x 1 aplimp aplimp 93 11月 5日 16:10 ./adm_scripts/conf/aplpat.config
-exec 后面接命令,最后要以;结尾
vi:
一 vi的操作模式
vi提供两种操作模式:输入模式(insert mode)和指令模式(command mode)。在输入模式下,用户可输入文本资料。在指令模式下,可进行删除、修改等各种编辑动作。
在输入模式下,按Esc键切换到指令模式下。
在指令模式下,按输入指令(i、a、o等)进入输入模式。
二进入vi
$ vi filename
直接键入“vi + 所要编辑的文件名”,即可对指定的文件进行编辑。
如果指定的文件为新文件,则提示:“New file”,否则显示该文件的当前内容。
$ view filename
以只读方式打开文件filename
三 指令模式
3.1 进入输入模式
a 在当前游标之后输入
A 在当前行之末输入
i 在当前游标之前输入
I 在当前行之首输入
o 在当前行之下新增一行,并在新增行输入
O 在当前行之上新增一行,并在新增行输入
输入结束后,按Esc键退出输入模式。
3.2 游标移动
h 向左移动一个字元
l 向右移动一个字元
j 向下移动一个字元
k 向上移动一个字元
b 左移一个单词,至词首
w 右移一个单词,至词尾
0 移到当前行行首
$ 移到当前行行尾
+ 移至下一行的行首
- 移至上一行的行首
H 移至视窗的第一行
M 移至视窗的中间一行
L 移至视窗的最后一行
G 移至该文件的最后一行
nG 移至该文档的第n行
n+ 下移n行
n- 上移n行
3.3 视窗移动
<Ctrl> + f 视窗下卷一页
<Ctrl> + b 视窗上卷一页
<Ctrl> + d 视窗下卷半页
<Ctrl> + u 视窗上卷半页
<Ctrl> + e 视窗下卷一行
<Ctrl> + y 视窗上卷一行
3.4 删除操作
x 删除游标所在字元
X 删除游标前一字元
dw 从游标当前位置开始向后删除一个单词
db 从游标当前位置开始向前删除一个单词
d0 从行首删除至当前游标位置
d$ 从游标当前位置删除至行尾
dd 删除游标所在行
D 同d$
3.5 修改操作
s 修改游标所在字元,修改完成后按Esc键结束
S 修改整行内容,修改完成后按Esc键结束
r 替换当前游标所在字元
R 进入替换状态,直至按Esc键结束
cw 修改一个单词(从游标位置至词尾)
cb 修改一个单词(从词首至游标位置)
cc 修改整行内容,完成后按Esc键结束,同S
c0 修改行首至游标位置的内容
c$ 修改游标位置至行尾的内容
~ 游标所在字元大小写切换
3.6 指令重复
在指令模式中,可在指令前面加入一个数字n,则该指令会重复执行n次。常用的重复操作有:
nx 删除n个字元
ndd 删除n行
ns 修改n个字元
3.7 取消前一动作(Undo)
u 撤消上一指令的结果
3.8 查找字符串
/字符串 从当前游标向后查找该字符串
?字符串 从当前游标向前查找该字符串
n 从当前游标向后查找下一个字符串
N 从当前游标向前查找下一个字符串
3.9 查看编辑状况
<Ctrl> + g 显示正在编辑的文件名、当前游标所在行数、文件总行数、文件是否被修改
四保存与退出
:w 保存,但不退出
:wq 保存并退出
:x 同:wq
:q 退出,如果当前文件没有保存,禁止退出
:q! 不保存退出
:w file1 将内容保存至文件file1中,注意:此时编辑的仍为原文件
:w! file1 将内容覆盖保存至文件file1中,如文件file1存在,:w file1将禁止执行
五环境设置
:set 显示已设置的环境状况
:set all 显示所有的环境设置选项
:set nu 显示行号
:set nonu 不显示行号
:set ts = n 设置Tab键的长度为n
六执行指令
以下用具体的数字为例进行介绍,数字表示行数,游标所在行可用“.”代替,文件最后一行可用“$”代替。
: 10 , 20d 删除第10行至第20行的内容
:10d 删除第10行的内容
:%d 删除全部内容
: 10 , 20co30 将第10行至第20行的内容复制到第30行之后
: 10 , 20mo30 将第10行至第20行的内容移动到第30行之后
: 1 , $s/old/new 将第1行至最后一行中的old替换成new
: 1 , $s/^/new 将第1行至最后一行的内容前面插入new
: 10 将游标移至第10行
七重复指令
. 重复上一条指令
八切换到shell状态
:sh 切换到shell状态,exit返回
cat:
“cat”代表了连结(Concatenation),连接两个或者更多文本文件或者以标准输出形式打印文件的内容。
cat 是一个文本文件查看和连接工具。查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名
注意:“>>”和“>”调用了追加符号。它们用来追加到文件里,而不是显示在标准输出上。“>”符号会删除已存在的文件,然后创建一个新的文件。
所以因为安全的原因,建议使用“>>”,它会写入到文件中,而不是覆盖或者删除。
警告:我们要知道>意思是创建,>>是追加。千万不要弄混了。造成失误可不是闹着玩的;
Wildcard Matches
* 零个或者更多字符
? 恰好一个字符
[abcde] 恰好列举中的一个字符
[a-e] 恰好在所给范围中的一个字符
[!abcde] 任何字符都不在列举中
[!a-e] 任何字符都不在所给的范围中
{debian,linux} 恰好在所给选项中的一整个单词
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
例:
把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -n textfile1 > textfile2
把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
cat -b textfile1 textfile2 >> textfile3
1.1 cat 查看文件内容实例
cat /etc/profile 注:查看/etc/目录下的profile文件内容;
cat -b /etc/fstab 注:查看/etc/目录下的profile内容,并且对非空白行进行编号,行号从1开始;
cat -n /etc/profile 注:对/etc目录中的profile的所有的行(包括空白行)进行编号输出显示;
cat -E /etc/profile 注:查看/etc/下的profile内容,并且在每行的结尾处附加$符号;
cat 加参数-n 和nl工具差不多,文件内容输出的同时,都会在每行前面加上行号;
[root@localhost ~]# cat -n /etc/profile
[root@localhost ~]# nl /etc/profilede>
cat 对于内容极大的文件来说,可以通过管道|传送到more 工具,然后一页一页的查看;
de>[root@localhost ~]# cat /etc/fstab /etc/profile | morede>
1.2 cat 的创建、连接文件功能实例
cat 有创建文件的功能,创建文件后,要以EOF或STOP结束;
de>[root@localhost ~]# cat > linuxsir.org.txt << EOF 注:创建linuxsir.org.txt文件;
> 我来测试 cat 创建文件,并且为文件输入内容; 注:这是为linuxsir.org.txt文件输入内容;
> 北南南北 测试; 注:这是为linuxsir.org.txt文件输入内容;
> EOF 注:退出编辑状态;
[root@localhost ~]# cat linuxsir.org.txt 注:我们查看一下linuxsir.org.txt文件的内容;
我来测试 cat 创建文件,并且为文件输入内容;
北南南北 测试;
cat 还有向已存在的文件追加内容的功能;
de>[root@localhost ~]# cat linuxsir.txt 注:查看已存在的文件linuxsir.txt 内容;
I am BeiNanNanBei From LinuxSir.Org . 注:内容行
我正在为cat命令写文档
[root@localhost ~]# cat >> linuxsir.txt << EOF 注:我们向linuxsir.txt文件追加内容;
> 我来测试cat向文档追加内容的功能; 注:这是追回的内容
> OK?
> OK~
> 北南 呈上
> EOF 注:以EOF退出;
[root@localhost ~]# cat linuxsir.txt 注:查看文件内容,看是否追回成功。
I am BeiNanNanBei From LinuxSir.Org .
我正在为cat命令写文档
我来测试cat向文档追加内容的功能;
OK?
OK~
北南 呈上de>
cat 连接多个文件的内容并且输出到一个新文件中
de>[root@localhost ~]# cat sir00.txt
linuxsir.org forever
[root@localhost ~]# cat sir01.txt sir02.txt sir03.txt >> sir00.txt
[root@localhost ~]# cat sir00.txt
linuxsir.org forever
123456
i am testing
56789
BeiNan Tested
9876
linuxsir.org testingde>
ps -ef命令
ps -ef |grep abc 查看含有"abc"的活动进程
ps -ef |grep -v abc 查看不含abc的活动进程
env命令
env命令可用来显示当前的环境或设置一个或多个环境变量。还可以运行指定的命令。而环境的变化只在命令运行期间有效。
env | grep ORACLE_HOME
ORACLE_HOME=。。。。。