文件基本操作
查看
cat命令
cat命令用于查看纯文本文件(较短的),格式为:“cat [选项] [文件]”。
参数 作用
-n 显示行号
-b 显示行号(不包括空行)
-A 显示出“不可见”的符号,如空格,tab键等等
tac命令
是 cat 的反向操作,从最后一行开始打印。
more命令
more命令用于查看纯文本文件(较长的),格式为:“more [选项] 文件”
参数 作用
-n 显示行号
-b 显示行号(不包括空行)
-A 显示出“不可见”的符号,如空格,tab键等等
head命令
head命令用于查看纯文本文档的前N行,格式为:“head [选项] [文件]”。
参数 作用
-n 10 显示10行
-n -10 正常输出(如cat命令),但不显示最后的10行
tail命令
tail命令用于查看纯文本文档的后N行,格式为:“tail [选项] [文件]”
参数 作用
-n 10 显示后面的10行
-f 持续刷新显示的内容
od命令
od命令用于对查看特殊格式的文件,格式为:“od [选项] [文件]”。
参数 作用
-t a 默认字符
-t c ASCII字符
-t o 八进制
-t d 十进制
-t x 十六进制
-t f 浮点数
复制删除移动
cp命令
cp命令用于复制文件或目录,格式为:“cp [选项] 源文件 目标文件”。
复制命令的三种情况:
目标文件是一个目录,会将源文件复制到该目录中。
目标文件是一个文件,会将源文件覆盖该文件。
目标文件不存在,将会复制源文件并修改为目标文件的名称(重命名)。
参数 作用
-p 保留原始文件的属性
-d 若对象为"链接文件",则保留该"链接文件"的属性
-r 递归持续复制(用于目录)
-i 若目标文件存在则询问是否覆盖
-a 相当于-pdr(p,d,r为上述的参数)
mv命令
mv命令用于移动文件或改名,格式为:“mv [选项] 文件名 [目标路径|目标文件名]”。
rm命令
rm命令用于删除文件或目录,格式为:“rm [选项] 文件”。
删除普通文件并提示确认信息:“rm 文件名”
删除普通文件或目录文件,不提示:“rm -rf 文件或目录名”
参数 作用
-f 忽略警告信息
-i 删除前先询问
-r 删除文件夹
dd命令
dd命令用于指定大小的拷贝的文件或指定转换文件,格式为:“dd [参数]”。
参数 作用
if 输入的文件名称。
of 输出的文件名称。
bs 设置每个“块”的大小。
count 设置要拷贝“块”的个数。
conv=ucase 将字母从小写转换为大写。
conv=lcase 把字符从大写转换为小写。
创建
vi命令
比如vi www.sh
会显示一个空白的文件,添加字符并且:wq后,会保存退出
touch命令
touch命令用于创建空白文件与修改文件时间,格式为:“touch [选项] [文件]”。
1.我们可以用“touch test”轻松的创建出一个名字为test的空白文档,所以这个功能无须介绍。
2.对于在Linux中的文件有三种时间:
更改时间(mtime):内容修改时间(不包括权限的)
更改权限(ctime):更改权限与属性的时间
读取时间(atime):读取文件内容的时间
如果黑客执行了touch -d “2 days ago” test,便将访问与修改时间修改为了2天前(伪造了自己没有动过该文件的假象)。
3.
参数 作用
-a 近修改“访问时间”(atime)
-m 近修改“更改时间”(mtime)
-d 同时修改atime与mtime
-t 要修改成的时间[YYMMDDhhmm]
指令与文件搜索
which
指令搜索。
which [-a] command
-a :将所有指令列出,而不是只列第一个
whereis
文件搜索。速度比较快,因为它只搜索几个特定的目录。
whereis [-bmsu] dirname/filename
locate
文件搜索。可以用关键字或者正则表达式进行搜索。
locate 使用 /var/lib/mlocate/ 这个数据库来进行搜索,它存储在内存中,并且每天更新一次,所以无法用 locate 搜索新建的文件。可以使用 updatedb 来立即更新数据库。
locate [-ir] keyword
-r:正则表达式
find
文件搜索。可以使用文件的属性和权限进行搜索。
find [basedir] [option]
example: find . -name “shadow*”
1 与时间有关的选项
-mtime n :列出在 n 天前的那一天修改过内容的文件
-mtime +n :列出在 n 天之前 (不含 n 天本身) 修改过内容的文件
-mtime -n :列出在 n 天之内 (含 n 天本身) 修改过内容的文件
-newer file : 列出比 file 更新的文件
+4、4 和 -4 的指示的时间范围如下:
2 与文件拥有者和所属群组有关的选项
-uid n
-gid n
-user name
-group name
-nouser :搜索拥有者不存在 /etc/passwd 的文件
-nogroup:搜索所属群组不存在于 /etc/group 的文件
3 与文件权限和名称有关的选项
-name filename
-size [±]SIZE:搜寻比 SIZE 还要大 (+) 或小 (-) 的文件。这个 SIZE 的规格有:c: 代表 byte,k: 代表 1024bytes。所以,要找比 50KB 还要大的文件,就是 -size +50k
-type TYPE
-perm mode :搜索权限等于 mode 的文件
-perm -mode :搜索权限包含 mode 的文件
-perm /mode :搜索权限包含任一 mode 的文件
其他
tr命令
tr命令用于转换文本文件中的字符,格式为:“tr [原始字符] [目标字符]”。
例如:查看tr.txt文件,并将所有的小写字母转换为大写字母
cat tr.txt | tr [a-z] [A-Z]
wc命令
wc命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。
参数 作用
-l 只显示行数
-w 只显示单词数
-c 只显示字节数
cut命令
cut命令用于通过列来提取文本字符,格式为:“cut [参数] 文本”。
参数 作用
-d 分隔符 指定分隔符,默认为Tab。
-f 指定显示的列数。
-c 单位改为字符
获取当前系统中所有用户的名称:
参数作用:-d以”:”来做分隔符,-f参数代表只看第一列的内容。
cut -d: -f1 /etc/passwd
权限(包括文件夹)
查看权限
我们来查看一下zhaoyuqiang.html这个网页文件的权限。
方法:在终端输入:
ls -l xxx.xxx (xxx.xxx是文件名)查看的是xxx文件之中的文件权限
那么就会出现相类似的信息,主要都是这些:-rw-rw-r–
权限含义
-rw-r--r--
中间那三个 rw- 代表的是所有者(user)拥有的权限
然后那三个 r-- 代表的是组群(group)拥有的权限
最后那三个 r-- 代表的是其他人(other)拥有的权限
然后
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
-
表示相应的权限还没有被授予
之后的root root 就是用户拥有者了。
需要注意的是:查看文件权限的目录问题: 如果有文件夹 /a/b/c
那么执行 ls -l /a/b 查看权限的文件并不是b,而是查看的c的权限。
ls -l /a 查看的是b文件的权限
ls -l /a/b 查看的是c文件的权限
ls -l /a/b/c 查看的是c文件的权限
修改权限
在终端输入:
chmod o w xxx.xxx
表示给其他人授予写xxx.xxx这个文件的权限
chmod go-rw xxx.xxx
表示删除xxx.xxx中组群和其他人的读和写的权限
其中:
u 代表所有者(user)
g 代表所有者所在的组群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
其中:rwx也可以用数字来代替
r ------------4
w -----------2
x ------------1
- ------------0
行动:
表示添加权限
-表示删除权限
= 表示使之成为唯一的权限
当大家都明白了上面的东西之后,那么我们常见的以下的一些权限就很容易都明白了:
-rw------- (600) 只有所有者才有读和写的权限
-rw-r–r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx------ (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx–x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限
修改权限(数字)
另外一种方法是以数字来表示权限,而且仅需三个数字。
r: 对应数值4
w: 对应数值2
x:对应数值1
-:对应数值0
(一) 我们将rwx看成二进制数,如果有则有1表示,没有则有0表示,那么rwx r-x r- -则可以表示成为:111 101 100再将其每三位转换成为一个十进制数,就是754。
(二) 也可以将其简单的理解为一种运算: (4+2+1) (4+1) (4)=754
例如,我们想让zhaoyuqiang.html这个文件的权限为:
自己 同组用户 其他用户
可读 是 是 是
可写 是 是
可执行 是
那么,我们先根据上表得到权限串为:rw-rw-r–,那么转换成二进制数就是110 110 100,再每三位转换成为一个十进制数,就得到664,因此我们执行命令:
chmod 664 test.sh
[root@localhost ~]# chmod 700 /mnt/fileA注:仅把fileA目录的权限设置为700
[root@localhost ~]# chmod -R 744 /mnt/fileA注:表示将整个/mnt/fileA
目录与其中的文件和子目录的权限都设置为744
需要注意的还是关于修改权限的文件问题:比如有文件 /a/b/c.
执行: chmod 700 /a 修改的是a文件的权限
chmod 700 /a/b 修改的是b文件的权限
chmod 700 /a/b/c 修改的是c文件的权限
要和查看文件权限的目录分开
所有者
chown 语法
chown [选项]… [所有者][:[组]] 文件…
举例:将oldboy文件的属主改为oldboy用户
[root@localhost oldboy]# ls -l oldboy
-rw-r--r-- 1 root root 5 May 1 09:57 oldboy
[root@localhost ~]# chown oldboy:root oldboy #这里冒号也可以换成点(.)
[root@localhost oldboy]# ls -l oldboy
-rw-r--r-- 1 oldboy root 5 May 1 09:57 oldboy
说明:chown 所接的新的属主和新的属组之间应该以.或:连接,属主和属组任意之一可以为空。如果属主为空,应该是:属组;如果属组为空,就不必需要.或:了。
root@localhost ~]# mkdir -p /test/oldboy
[root@localhost ~]# cd /test/oldboy/
[root@localhost oldboy]# touch oldboy.txt
[root@localhost oldboy]# ls -l oldboy.txt
-rw-r--r-- 1 root root 0 May 3 08:09 oldboy.txt
[root@localhost oldboy]# chown zgy oldboy.txt #把oldboy.txt的属主改为zgy
[root@localhost oldboy]# ls -l oldboy.txt
-rw-r--r-- 1 zgy root 0 May 3 08:09 oldboy.txt
[root@localhost oldboy]# chown :zgy oldboy.txt
[root@localhost oldboy]# ls -l oldboy.txt
-rw-r--r-- 1 zgy zgy 0 May 3 08:09 oldboy.txt
[root@localhost oldboy]# chown root:etiantian oldboy.txt #把oldboy.txt的属主改为root,把属组改成etiantian用户组
[root@localhost oldboy]# ls -l oldboy.txt
-rw-r--r-- 1 root etiantian 0 May 3 08:09 oldboy.txt
特别提示:要修改的用户和组鄙视是系统中已经存在的。
chown也提供了-R参数,这个参数对目录改变属主和属组极为有用,我们可以通过加-R参数来改变某个目录下的所有文件到新的属主或属组;
[root@localhost oldboy]# mkdir zgy_dir
[root@localhost oldboy]# ls -ld zgy_dir/
drwxr-xr-x 2 root root 4096 May 3 08:26 zgy_dir/
[root@localhost oldboy]# mkdir zgy_dir
[root@localhost oldboy]# ls -ld zgy_dir/
drwxr-xr-x 2 root root 4096 May 3 08:26 zgy_dir/
文件夹
创建
mkdir命令
mkdir用于创建空白的文件夹,格式为:“mkdir [选项] 目录”。
参数 作用
-m=MODE 默认的文件目录权限,如"-m 755"
-p 连续创建多层目录(若文件夹已存在则忽略)
-v 显示创建的过程
查看目录进入
pwd命令
pwd命令用于显示当前的工作目录,格式为:“pwd [选项]”。
参数 作用
-P 显示真实路径。(即非快捷链接的地址)
cd命令
cd命令用于切换工作路径,格式为:“cd [目录名称]”。
参数 作用
- 切换到上一次的目录,如“cd -”
~ 切换到“家目录”,如"cd ~"
~username 切换到其他用户的家目录,如"cd ~teak"
.. 切换到上级目录,如"cd .."
列出文件与排序
ll命令
ll 是 ls -l 的别名,ll 命令可以看到该目录下的所有目录和文件的详细信息
ls命令
列出有关文件的信息(默认为当前目录)。如果没有指定-cftuvSUX或——Sort,则按字母顺序排序。
ls 参数格式
ls [OPTION]… [FILE]…
参数作用
-a 列出指定目录下的所有文件,包括隐藏文件
-c 使用最后一次更改文件状态以进行排序(-t)或长时间打印(-l)的时间
-h 与-l选项一起使用时,请使用单位后缀:Byte、Kilobyte、mete、gb、tb和Petabyte,以便使用以2为基数的大小将数字减少到3或更少
-l 长格式列表。(见下文)。如果输出到终端,则所有文件大小的总和将输出到长清单前面的一行中
-n 以数字形式显示用户和组id,而不是在长(-l)输出中转换为用户或组名。这个选项默认打开-l选项
-o 以长格式列出,但省略组id
-s 显示每个文件实际使用的文件系统块的数量,以512字节为单位,其中部分单元四舍五入为下一个整数值
-t 在按照字典顺序对操作数排序之前,先按修改的时间排序(最近修改的是first)
-u 使用最后一次访问的时间,而不是最后一次修改文件进行排序
$ ls
test tmp
$ ls -a
. .. .bash_history .bash_logout .bash_profile .bashrc test tmp
#可以看到通过ls -a 可以查看当前目录影藏的文件,Linux下(.)开头的文件是隐藏文件。
$ ls -l
total 4
-rw-r--r-- 1 test hero 0 Dec 21 19:54 test
drwxr-xr-x 2 test hero 4096 Dec 21 19:54 tmp
$ ls -lh
total 4.0K
-rw-r--r-- 1 test hero 0 Dec 21 19:54 test
drwxr-xr-x 2 test hero 4.0K Dec 21 19:54 tmp
$ ls -ll
total 4
-rw-r--r-- 1 test hero 0 Dec 21 19:54 test
drwxr-xr-x 2 test hero 4096 Dec 21 19:54 tmp
$ ls -alh
total 28K
drwx------ 3 test hero 4.0K Dec 21 19:54 .
drwxr-xr-x. 19 root root 4.0K Aug 1 10:41 ..
-rw------- 1 test hero 226 Dec 21 19:54 .bash_history
-rw-r--r-- 1 test hero 18 Aug 3 2016 .bash_logout
-rw-r--r-- 1 test hero 193 Aug 3 2016 .bash_profile
-rw-r--r-- 1 test hero 231 Aug 3 2016 .bashrc
-rw-r--r-- 1 test hero 0 Dec 21 19:54 test
drwxr-xr-x 2 test hero 4.0K Dec 21 19:54 tmp
$ ls -o
total 4
-rw-r--r-- 1 test 0 Dec 21 19:54 test
drwxr-xr-x 2 test 4096 Dec 21 19:54 tmp
$ ls -oh
total 4.0K
-rw-r--r-- 1 test 0 Dec 21 19:54 test
drwxr-xr-x 2 test 4.0K Dec 21 19:54 tmp
du命令
Linux du (英文全拼:disk usage)命令用于显示目录或文件的大小。
du 会显示指定的目录或文件所占用的磁盘空间。
语法
du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][–block-size][–exclude=<目录或文件>][–max-depth=<目录层数>][–help][–version][目录或文件]
参数说明:
-a或-all 显示目录中个别文件的大小。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或–total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-D或–dereference-args 显示指定符号连接的源文件大小。
-h或–human-readable 以K,M,G为单位,提高信息的可读性。
-H或–si 与-h参数相同,但是K,M,G是以1000为换算单位。
-k或–kilobytes 以1024 bytes为单位。
-l或–count-links 重复计算硬件连接的文件。
-L<符号连接>或–dereference<符号连接> 显示选项中所指定符号连接的源文件大小。
-m或–megabytes 以1MB为单位。
-s或–summarize 仅显示总计。
-S或–separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
-x或–one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-X<文件>或–exclude-from=<文件> 在<文件>指定目录或文件。
–exclude=<目录或文件> 略过指定的目录或文件。
–max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
–help 显示帮助。
–version 显示版本信息。
实例
显示目录或者文件所占空间:
# du
608 ./test6
308 ./test4
4 ./scf/lib
4 ./scf/service/deploy/product
4 ./scf/service/deploy/info
12 ./scf/service/deploy
16 ./scf/service
4 ./scf/doc
4 ./scf/bin
32 ./scf
8 ./test3
1288 .
只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的1288为当前目录的总大小
显示指定文件所占空间
# du log2012.log
300 log2012.log
方便阅读的格式显示test目录所占空间情况:
# du -h test
608K test/test6
308K test/test4
4.0K test/scf/lib
4.0K test/scf/service/deploy/product
4.0K test/scf/service/deploy/info
12K test/scf/service/deploy
16K test/scf/service
4.0K test/scf/doc
4.0K test/scf/bin
32K test/scf
8.0K test/test3
1.3M test
对文件大小进行排序,通过sort 这个命令来帮助我们排序,但是这个排序不对哦,因为加了-h的参数导致。
[root@node ~]# du -s /usr/* |sort -nr
581208 /usr/lib
285748 /usr/bin
268664 /usr/share
162984 /usr/lib64
57688 /usr/sbin
11884 /usr/libexec
36 /usr/include
0 /usr/tmp
0 /usr/src
0 /usr/local
0 /usr/games
0 /usr/etc
sort 命令
Linux 命令大全 Linux 命令大全
Linux sort 命令用于将文本文件内容加以排序。
sort 可针对文本文件的内容,以行为单位来排序。
语法
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][–help][–verison][文件][-k field1[,field2]]
参数说明:
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-u 意味着是唯一的(unique),输出的结果是去完重了的。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
–help 显示帮助。
–version 显示版本信息。
[-k field1[,field2]] 按指定的列进行排序。
在使用 sort 命令以默认的式对文件的行进行排序,使用的命令如下:
sort testfile
sort 命令将以默认的方式将文本文件的第一列以 ASCII 码的次序排列,并将结果输出到标准输出。
使用 cat 命令显示 testfile 文件可知其原有的排序如下:
$ cat testfile # testfile文件原有排序
test 30
Hello 95
Linux 85
使用 sort 命令重排后的结果如下:
$ sort testfile # 重排结果
Hello 95
Linux 85
test 30
使用 -k 参数设置对第二列的值进行重排,结果如下:
$ sort testfile -k 2
test 30
Linux 85
Hello 95
复制删除移动
cp命令
cp命令用于复制文件或目录,格式为:“cp [选项] 源文件 目标文件”。
复制命令的三种情况:
目标文件是一个目录,会将源文件复制到该目录中。
目标文件是一个文件,会将源文件覆盖该文件。
目标文件不存在,将会复制源文件并修改为目标文件的名称(重命名)。
参数 作用
-p 保留原始文件的属性
-d 若对象为"链接文件",则保留该"链接文件"的属性
-r 递归持续复制(用于目录)
-i 若目标文件存在则询问是否覆盖
-a 相当于-pdr(p,d,r为上述的参数)
mv命令
mv命令用于移动文件或改名,格式为:“mv [选项] 文件名 [目标路径|目标文件名]”。
rm命令
rm命令用于删除文件或目录,格式为:“rm [选项] 文件”。
删除普通文件并提示确认信息:“rm 文件名”
删除普通文件或目录文件,不提示:“rm -rf 文件或目录名”
参数 作用
-f 忽略警告信息
-i 删除前先询问
-r 删除文件夹