四、Linux操作系统命令使用基础
1、命令格式 $command [option(s)] [argument(s)]
命令名 空格 选项 空格 参数
command :命令名[option(s)] :选项[argument(s)] :参数
注意:
在命令行中,每两个部分之间有空格分隔每个命令行可使用的最多的命令字符是256个命令区分大小写不同的命令提示符使用分隔符号 “/”命令中的参数/选项可以是多个,并且参数其实就是要传入命令程序主函数main的参数。[ ] 表示这个内容可以不包含,比如 [argument(s)] ,输入命令时可以不加参数2、联机帮助、清屏与历史记录命令 1)联机帮助
遇到一些函数和命令,不知道含义时可以使用命令man来查看帮助信息。
man ls
man -k keyword
man手册根据内容分为9个手册,可以使用下面命令查看
man man
man文档的分类编号
1 - commands(普通的命令)
2 - system calls(系统调用)
3 - library calls(库函数)
4 - special files(特殊文件:/dev下设备文件)
5 - file formats and convertions(文件格式)
6 - games for linux(游戏和娱乐)
7 - macro packages and conventions(杂项)
8 - system management commands(管理员命令)
9 - 其他(Linux特定, 用来存放内核例行程序的文档)
使用-k参数,man可以在所有的man文档和简介中查找符合条件的命令。
peng@ubuntu:~/test$ man -k bash
bash (1) - GNU Bourne-Again SHell
bash-builtins (7) - bash built-in commands, see bash(1)
bashbug (1) - report a bug in bash
builtins (7) - bash built-in commands, see bash(1)
dh_bash-completion (1) - install bash completions for package
rbash (1) - restricted bash, see bash(1)
有的关键词在系统中对应多个手册,使用-f参数,用于查找同名的手册:
peng@ubuntu:~/test$ man -f time
time (7) - overview of time and timers
time (1) - run programs and summarize system resource usage
time (2) - get time in seconds
2)清屏 clear
清屏使用命令clear或者使用快捷键:ctrl + l
3)历史纪录 history(history -n)
这是一个非常有用的命令,想知道之前输入过的所有命令,就可以用他。
history :查看最近使用的命令,最多500条
history n :曾经使用的最近n条命令
!n :执行最近第n条命令
!! :执行最近使用的第一条命令
方向上键:执行上一条命令
方向下键:执行下一条命令
五、文件管理
1)查看文件目录
下面这几个命令是使用最频繁的命令:
命令说明pwd显示当前工作目录cd [要改变的目录]改变目录ls列出当前目录的文件和子目录file辨识文件类型cdcd //回到当前用户主目录
cd ~//回到当前用户主目录
cd ~[用户名] //进入指定用户主目录
file功能说明:辨识文件类型。语法:file [-beLvz][-f <名称文件>][-m <魔法数字文件>…][文件或目录…]
参数:
-b 列出辨识结果时,不显示文件名称。
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-f<名称文件> 指定名称文件,其内容有一个或多个文件名称呢感,让file依序辨识这些文件,格式为每列一个文件名称。
-L 直接显示符号连接所指向的文件的类别。
-m<魔法数字文件> 指定魔法数字文件。
-v 显示版本信息。
-z 尝试去解读压缩文件的内容。
补充说明:通过file指令,我们得以辨识该文件的类型。
peng@ubuntu:~/test$ file wait.c
wait.c: ASCII text
peng@ubuntu:~/test$ file fifo_file
fifo_file: fifo (named pipe)
2) 文件路径
什么是文件的路径?就是文件存放的地方,可以联想为 文件的“家”。
在Linux中,存在着绝对路径和相对路径:
绝对路径:
路径的写法一定是由根目录 / 写起的,例如 /usr/local/mysql
相对路径:
路径的写法不是由根目录 / 写起的。
例如 首先用户进入到 /home,然后再进入到peng,执行的命令为
#cd /home
#cd peng
此时用户所在的路径为 /home/peng。
第一个cd命令后紧跟/home,前面有斜杠,是绝对路径;而第二个cd命令后紧跟peng,前面没有斜杠,表示从当前目录下找peng这个目录,这个peng是相对于/home目录来讲的,所以称为相对路径。
3)创建和删除文件目录 1、创建文件touch
功能说明:
文件名不存在,则创建一个新的空文件
如果文件名存在,更新该文件或者目录的修改访问时间,内容不变。
语法:
touch [-acfm][-d <日期时间>][-r <参考文件或目录>][-t <日期时间>][–help] [–version][文件或目录…]
或 touch [-acfm][–help][–version][日期时间][文件或目录…]
补充说明:使用touch指令可更改文件或目录的日期时间,包括存取时间和更改时间。
参数:
-a或–time=atime或–time=access或–time=use 只更改存取时间。
-c或–no-create 不建立任何文件。
-d<时间日期> 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m或–time=mtime或–time=modify 只更改变动时间。
-r<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同。
-t<日期时间> 使用指定的日期时间,而非现在的时间。
–help 在线帮助。
–version 显示版本信息。
2、创建目录mkdir
功能说明:
建立目录
语法:
mkdir [-p][–help][–version][-m <目录属性>][目录名称]
补充说明:mkdir可建立目录并同时设置目录的权限。
参数:
-m<目录属性>或–mode<目录属性> 建立目录时同时设置目录的权限。
-p或–parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。
–help 显示帮助。
–verbose 执行时显示详细的信息。
–version 显示版本信息。
3、删除文件rm
功能说明:
删除文件或目录。
语法:
rm [-dfirv][–help][–version][文件或目录…]
补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数”-r”,否则预设仅会删除文件。
参数:
-d或–directory 直接把欲删除的目录的硬连接数据删成0,删除该目录。
-f或–force 强制删除文件或目录。
-i或–interactive 删除既有文件或目录之前先询问用户。
-r或-R或–recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-v或–verbose 显示指令执行过程。
–help 在线帮助。
–version 显示版本信息。
4、删除目录
rmdir(remove directory)
功能说明:删除目录。
语 法:
rmdir [-p][–help][–ignore-fail-on-non-empty][–verbose][–version][目录…]
补充说明:当有空目录要删除时,可使用rmdir指令。
参 数:
-p或–parents 删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除。
–help 在线帮助。
–ignore-fail-on-non-empty 忽略非空目录的错误信息。
–verbose 显示指令执行过程。
–version 显示版本信息。
3)显示文件内容 1. cat
功能:
把档案串连接后传到基本输出到屏幕或加 > fileName 到另一个档案
使用权限:
所有使用者
语法:
cat [-AbeEnstTuv] [–help] [–version] fileName
参数:
-n 或 –number 由 1 开始对所有输出的行数编号
-b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 –show-nonprinting
范例:
cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
cat < /dev/stdin > 1.txt //利用输入重定向 CRTL+D 结束输入
cat /dev/null > 1.txt //输出重定向进行清空
2. head
功能:
查找文件的前多少行
语法:
head [-n] filename
3. tail
功能:
查找文件的莫问多少行
语法:
tail [-n] filename
4. more
功能:
分屏显示
用法
more filename
4)拷贝和移动文件目录 1. cp
功能说明:
cp 源文件 目标文件
将源文件复制为目标文件或目录。
语法:
cp [-abdfilpPrRsuvx][-S <备份字尾字符串>][-V <备份方式>][–help][–spares=<使用时机>][–version][源文件或目录][目标文件或目录] [目的目录]
补充说明:cp指令用在复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息。
2. mv
功能说明:
mv [源文件、目录] [目的文件、目录]
移动或更名现有的文件或目录。
语法:
mv [-bfiuv][–help][–version][-S <附加字尾>][-V <方法>][源文件或目录][目标文件或目录]
补充说明:mv可移动文件或目录,或是更改文件或目录的名称。
参数:
-b或–backup 若需覆盖文件,则覆盖前先行备份。
-f或–force 若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文 件或目录。
-i或–interactive 覆盖前先行询问用户。
-S<附加字尾>或
–suffix=<附加字尾> 与-b参数一并使用,可指定备份文件的所要附加的字尾。
-u或–update 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。
-v或–verbose 执行时显示详细的信息。
-V=<方法>或
–version-control=<方法> 与-b参数一并使用,可指定备份的方法。
–help 显示帮助。
–version 显示版本信息
5)文件目录权限 1. 权限
文件的权限:
以普通文件为例,使用 ls -l 命令,可以看到结果的第一列是 -rwxrwxrwx 的形式,其中第一个字符 "-" 表示这个文件为普通文件,它也可以是其他的字符,不同的字符代表不同类型的文件。其后的一串字符表明了该文件的权限,其中:
1)r 表明该文件具有可读权限,若该位置为 "-" ,则表明文件不可读;2)w 表明该文件具有写权限,若该位置为 "-" ,则表明文件不可写;3)x 表明该文件具有可执行权限,若该位置为 "-" ,则表明文件不具有可执行权限;4)第一个 rwx 表示该文件的所有者对该文件的权限;第二个 rwx 表示该文件所属组对该文件的权限;第三个 rwx 表示其他用户对该文件的权限。2. 权限所属对象
文件所有者:生成文件或目录的当前人,权限最高,用u表示。文件所属用户组:系统管理员分配的同组一个或几个人,用g表示。其他人对此文件的权限:除拥有者、用户组以外的人,用o 表示。所有人:包括拥有者,所属用户组、其他用户,用a表示
-rwxr(所有者) -xr(所在组) -x(其他人)
3.修改属性chmod
chmod命令用来修改文件目录的访问权限,修改权限的前提条件是在修改权限时具有可操作权限。
(a)用字母表示权限Who(u、g、o、a)+cp(“=”设置权限“+”添加权限“-”删除权限)+permission(“r”读权限“w”写权限“x”操作权限)例如:
chmod g=wr 1.c;
chmod u+w,g-w,o=wr 1.c
(b)用八进制数字表示权限
r w x
0 0 0 无权限
1 1 1 有权限
R:4,w;2,x:1
例如 :
Chmod 777 build 将build的权限成所有人rwx
注意:在Ubuntu中建立的文件默认权限是664
4. Chown改变文件的所属者和所属组
chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令。
语法
chown [-cfhvR] [--help] [--version] user[:group] file...
参数 :
user : 新的文件拥有者的使用者 ID
group : 新的文件拥有者的使用者组(group)
-c : 显示更改的部分的信息
-f : 忽略错误信息
-h :修复符号链接
-v : 显示详细的处理信息
-R : 处理指定目录以及其子目录下的所有文件
--help : 显示辅助说明
--version : 显示版本
实例:把 /var/run/httpd.pid 的所有者设置 root:
chown root /var/run/httpd.pid
5. chgrp改变文件或目录所属组
Linux chgrp(英文全拼:change group)命令用于变更文件或目录的所属群组。
与 chown 命令不同,chgrp 允许普通用户改变文件所属的组,只要该用户是该组的一员。
语法
chgrp [-cfhRv][--help][--version][所属群组][文件或目录...] 或 chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]
参数说明:
-c或--changes 效果类似"-v"参数,但仅回报更改的部分。
-f或--quiet或--silent 不显示错误信息。
-h或--no-dereference 只对符号连接的文件作修改,而不更动其他任何相关文件。
-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-v或--verbose 显示指令执行过程。
--help 在线帮助。
--reference=<参考文件或目录> 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
--version 显示版本信息。
Chown、chgroup使用频率较低,了解即可。
6)find查找文件
Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。
如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
我们有时候还要模糊查找某个文件,比如根据文件的后缀名,文件创建时间,文件大小等等。
语法:
find path -option [ -print ] [ -exec -ok command ] {} ;
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。
如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
参数说明:
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-user 按照用户(文件的属主)
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-mtime 按照最后一次修改时间
-atime 按照最后一次访问时间
-perm :按照文件的权限
-type typen : 查找文件类型为typen的文件
c: 字符设备
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: socket
注意find 的使用条件所查找的路径必须具有读权限。查找选项通过文件属性来查找。
例如:实例
1.将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:# find . -name "*.c"
2.将目前目录及其下子目录中所有一般文件列出# find . -type f
3.将当前目录及其子目录下所有最近 20 天内更新过的文件列出:# find . -ctime -20
4.查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:# find /var/log -type f -mtime +7 -ok rm {} ;
5.查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:# find . -type f -perm 644 -exec ls -l {} ;
6.查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:# find / -type f -size 0 -exec ls -l {} ;
whereiswhereis命令用于查找文件。该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。
语法
whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]
参数:
-b 只查找二进制文件。
-B<目录> 只在设置的目录下查找二进制文件。
-f 不显示文件名前的路径名称。
-m 只查找说明文件。
-M<目录> 只在设置的目录下查找说明文件。
-s 只查找原始代码文件。
-S<目录> 只在设置的目录下查找原始代码文件。
-u 查找不包含指定类型的文件。
实例:
1.使用指令"whereis"查看指令"bash"的位置,输入如下命令:peng@ubuntu:~/test$ whereis bash
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
2.查找标准库头文件stdio.h位置peng@ubuntu:~/test$ whereis stdio.h
stdio: /usr/include/stdio.h /usr/share/man/man3/stdio.3.gz
7)grep过滤和统计
功能:查出包含某些字符串的结果,对文件或输出结果进行过滤,对于大小写有一定 要求。