即 manunal,是一种显示Unix/Linux在线手册的命令。可以用来查看命令、函数或文件的帮助手册,另外它还可以显示一些gzip压缩格式的文件。
man命令语法: man [选项] [命令名称]
【例】 显示ls命令的man手册页
[root@PC-LINUX ~]# man lsLS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]… [FILE]…
DESCRIPTION
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is speci‐fied.
Mandatory arguments to long options are mandatory for short options too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and …
--author
Manual page ls(1) line 1 (press h for help or q to quit)
info文档是Linux系统提供的另一种格式的文档。info命令支持文件的链接跳转(通过链接快速跳转定位),使用方向键在显示的帮助文档中选择需要进一步查看的文件名,回车后被选中的文件会自动打开。与man手册相比,info文档具有更强的交互性。info命令的基本格式如下:
info 命令名
通常而言:info显示的帮助信息比man更详细,但通常用man,因为info显示内容太繁琐。
使用help命令可以查找shell命令的用法,只需在所查找的命令后输入“help”命令,然后就可以看到所查命令的内容了。
命令语法: [命令] --help(注意:如果参数是1个字母时,一般是1个横线;如果参数是1个单词,则一般是2个横线----规律)
【例】 查看mkdir命令帮助。
[root@PC-LINUX ~]# mkdir --help
使用whereis命令可以查找命令所在的位置。
命令语法:
*** whereis [选项] [命令名]***
【例10】 查找ls命令在什么目录下。
[root@PC-LINUX ~]# whereis ls
ls: /bin/ls /usr/bin/ls /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz
主要功能是
①用来显示文件内容,依次读取其后所指文件的内容并将其输出到标准输出设备上;
②另外,还能够用来连接两个或多个文件,形成新的文件(把几个文件的内容附件到另一个文件中)。
该命令的常用形式如下:
cat [option] filename
-n 由1开始对所有输出行的行数编号(number)
-b 对非空输出行编号(blank)
-s 当遇到有连续两行以上的空白行时,就替换为一行的空白行
-E/e 在每行开始/结束处显示$
例:cat -b /etc/default/grub
cat /etc/issue /etc/legal > /ljh.txt
在查看文件过程中,因为有的文本过于庞大,文本在屏幕上迅速地闪过,用户来不及看清其内容。
该命令就可以分页方式一次显示一屏文本,并在终端底部打印出“–More–”,系统还将同时显示出已显示文本占全部文本的百分比。若要继续显示,按回车或空格键即可。
该命令的常用形式如下:
*** more [option] filename***
-num:一次显示的行数
+num:从第num行开始显示
该命令的功能和more命令的功能基本相同,也是用来按页显示文件。不同之处在于less命令在显示文件时,允许用户既可以向前又可以向后逐行翻阅文件,而more命令只能向后翻阅文件。由于该命令参数的使用与more命令类似,在此不再赘述。
注:在命令执行过程中,如果要退出,直接输入q键退出。如果要向后翻阅,可以使用键盘的**“Page UP”键,要向前翻阅文件,则相应地使用键盘的“Page Down”**键即可。
如果用户希望查看一个文件究竟保存的是什么内容,只要查看文件的头几行,而不必浏览整个文件,便可以使用这个命令。该命令用来显示文件的前面n行,
常用形式如下:
head -number filename
如: head -3 hello.c
和head命令的功能相对应。如果想查看文件的尾部,可以使用tail命令。该命令显示一个文件的指定内容。它把指定文件的指定显示范围内的内容显示在标准输出上。同样,如果没有给定文件名,则使用标准输入文件。该命令的常用形式如下:
*** tail option filename***
-n +K:从第K行以后开始显示
-n -K:从距文件尾K行处开始往下显示;若省略K参数,系统默认值为10
文件内容查询命令主要是指grep、egrep和fgrep命令。这组命令以指定的查找模式搜索文件,通知用户在什么文件中搜索到与指定的模式匹配的字符串,并且打印出所有包含该字符串的文本行,该文本行的最前面是该行所在的文件名。
grep命令一次只能搜索一个指定的模式;
egrep命令检索扩展的正则表达式(包括表达式组和可选项);
fgrep命令检索固定字符串,并不识别正则表达式,是一种更为快速的搜索命令。
这组命令在搜索与定位文件中特定的主题和关键词方面非常有效。可以用其来搜索文件中包含的这些关键词。总的来说,grep命令的搜索功能比fgrep强大,因为grep命令的搜索模式可以是正则表达式,而fgrep却不能。
该组命令的常用格式如下:
grep [option] [search pattern] [file1, file2,……]
erep [option] [search pattern] [file1, file2,……]
frep [option] [search pattern] [file1, file2,……]
部分命令选项:
-b:在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量;
-c:只显示匹配行的数量
-i:比较时不区分大小写(ignore)
-h:在查找多个文件时,指示grep不要将文件名加入到输出之前;
-l:显示首次匹配串所在的文件名并用换行符将其隔开,当在某文中多次出现匹配串时,不重复显示次文件名; -n :在输出前加上匹配字符串所在行的行号(文件首行为1)
-v :只显示不包含匹配字符串的行;
-x :只显示整行严格匹配的行。
【例1】在文件/etc/default/grub中搜索匹配字符“GRUB”,比较时不区分大小写,并输出所在行的行号。
grep -in ‘GRUB’ /etc/default/grub
【例2】显示目录/etc/default下所有以a开头的文件中包含“modules”的行内容,并输出匹配字符串所在行的行号(区分大小写)。
grep -n ‘modules’ /etc/default/a*
【例3】 显示目录/etc/default下acpid,alsa文件中匹配“before”的行数据内容。
cd /etc/default
grep ‘before’ acpid alsa
【例4】 将文件etc/default/grub中所有包含至少有8个连续小写字符的行数据内容显示出来。
grep ‘[a-z]{8}’ /etc/default/grub
元字符 | 含义 |
---|---|
? | 匹配任意一个字符 |
* | 匹配任意数量的字符 |
[abc] | 匹配方括号中的任意一个字符 |
[a-z] | 匹配方括号中表示字符范围内的任意一个字符 |
[!a-z] | 匹配除了方括号中表示范围内的字符 |
(1)在包含元字符的字符串两边加单引号或双引号。
(2)在元字符前使用反斜杠“\”。
查找文件名为“abcd”的文件 :# ls "abcd"
查找文件“abc*def“ : # ls abc*def
grep和正则表达式实例分析:
(1)在文件textfile中搜索以字符“n”开头的所有行:# grep ‘^n’ textfile
(2) 在文件textfile中搜索以“.00”结尾的所有行:# grep ‘.00$’ textfile
(3) 在文件textfile中搜索包含数字5,后面紧接字符“.”,再后面是任意一个字符的所有行:# grep ‘5…’ textfile
(4) 在文件textfile中搜索以字符“w”和“y”开始的所有行:# grep ‘1’ textfile
元字符 | 匹配字符 |
---|---|
^ | 行首 |
$ | 行尾 |
\char | 转义后面的字符 |
[^] | 不匹配方括号中的任意字符 |
< | 单词的开始 |
> | 单词的结尾 |
( ) or ( ) | 标记后面用到的匹配字符 |
| or | | 分组 |
x{m} | 重复"x"字符m次 |
x{m,} | 重复"x"字符至少m次 |
x{m,n} | 重复"x"字符m次到nn次 |
. | 所有的单个字符 |
其功能是在指定的目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作。此命令提供了相当多的查找条件,可指定文件的名称,类别,时间和大小及权限等不同信息的组合,其功能非常强大。
格式:
find [路径] [选项] [-print]
选项含义:
-name 按照文件名查找文件
-perm 按照文件权限来查找文件
-user 按照文件属主来查找文件
-group 按照文件所属的组来查找文件
-cmin n 在过去n分钟内被修改过的文件
-ctime n 在过去n天内被修改过的文件
-size n 大小为n的文件
-type 查找某一类型的文件,可指定不同的文件类型,如下表
字 符 | 含 义 |
---|---|
b | 块设备文件 |
d | 目录 |
c | 字符设备文件 |
p | 管道文件 |
l | 符号链接文件 |
f | 普通文件 |
find命令提供的寻找条件可以是一个用逻辑运算符not、and、or组成的复合条件,含义如下。
(1)and:逻辑与,在命令中用“-a”表示,是系统默认的选项,表示只有当所给的条件都满足时,寻找条件才满足。
(2)or:逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满足时,寻找条件就满足。
(3)not:逻辑非,在命令中用“!”表示。该运算符表示查找不满足所给条件的文件。
【例1】 查找/boot目录下的启动菜单配置文件grub.conf
find /boot -name grub.cfg
【例2】 查找/目录下所有以“.conf”为扩展名的文件
find / -name ‘*.conf’
【例3】 列出/etc目录及其子目录下所有最近3天内更新过的文件 find /etc -ctime 3
【例4】 查找文件名不是“tmp”的所有文件
find ! –name ‘tmp’
【例5】查找/usr下名为ljh.c的文件并将其删除
find /usr -name ljh.c -exec rm {} ;
说明:-exec参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。 {} 花括号代表前面find查找出来的文件名,两个括号间不能有空格。
或:#find /usr -name ljh.c | xargs rm -rf
***该命令查找文件时比find命令搜索要快,***它需一个数据库,这个数据库由每天的例行工作(crontab)程序来建立。当建立好这个数据库后,就可方便的搜寻所需文件了。常用命令格式如下: locate [option] filename
【例1】查找根目录/下的文件httpd.conf
locate httpd.conf
【例2】寻找所有文件名为httpd.conf的前3个文件
locate -n 3 httpd.conf
使用sort命令可以对文件中的数据进行排序(对各行进行排序),并将结果显示在标准输出上。实际上,sort命令可以被认为是一个非常强大的数据管理工具,用来管理内容类似数据库记录的文件。
该命令将逐行对文件中的内容进行排序,如果两行的首字符相同,该命令将继续比较这两行的下一字符。sort排序是根据从输入行抽取的一个或多个关键字进行比较来完成的。
命令语法:sort [选项] [文件]
选项含义:
(1)改变默认设置的选项
-m:若给定文件已排好序,合并文件
-c:检查给定文件是否已排好序,如果它们都没有排好序,则打印一个出错信息;
-u:对排序后认为相同的行只留其中一行(unique)
(2)改变默认排序规则的选项
-d:按字典顺序排序,比较时仅比较字母、数字、空格和制表
**-f:将大小写字母与大写字母同等对待 **
-M:作为月份比较,如“JAN”<“FEB”
-r:按逆序输出排序结果
【例1】 排序文件/etc/at.deny上的数据,显示在屏幕上。
sort /etc/at.deny
【例2】 读取文件/etc/at.deny ,以倒序排序该文件并显示在屏幕上。
*** sort -r /etc/at.deny***
文件经过处理后在它的输出文件中可能会出现重复的行。例如,用cat命令将两个文件合并后,再使用sort命令进行排序,就可能出现重复行。这时可以用uniq命令将这些重复行数据从输出文件中删除,只留下每条记录的唯一样本。
命令语法:uniq [选项] [文件]
选项含义:
-c:显示输出中,在每行行首加上本行在文件中出现的次数;
*** -d:只显示重复行;***
*** -u:只显示文件中不重复的各行***
-n:前n个字段与每个字段前的空白一起被忽略
+n:前n个字符被忽略,之前的字符被跳过;
例如: sort aa.txt | uniq -d //只显示aa.txt中的重复行
文件内容统计命令主要是指wc命令。该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。
wc命令的常用格式如下:
wc [option] filename
选项含义:
-c 统计字节数
-l 统计行数
-w 统计字数
【例】 统计文件/etc/default/grub的行数、字符数和单词数。
wc -clw /etc/default/grub
【例】 统计目录/etc下的文件nsswich.conf、pam.conf的行数、字符数和单词数(多个文件的统计)。
wc -clw /etc/nsswich.conf /etc/pam.conf
该命令是***对两个已经排好序的文件进行比较。***其中file1和file2是已排序的文件(如果没有,可以使用上述的sort命令先进行排序)。 comm读取这两个文件,然后生成三列输出:仅在file1中出现的行;仅在file2中出现的行;在两个文件中都存在的行。如果文件名用“-”,则表示从标准输入读取。
comm命令格式:comm [-123] [文件1] [文件2]
option选项含义:
-1 不显示只在第1个文件里出现过的列
-2 不显示只在第2个文件里出现过的列
-3 不显示只在第1个和第2个文件里出现过的列
comm -12只显示在两个文件中都存在的行;comm -23只显示在第一个文件中出现而未在第二个文件中出现的行;*** comm -123***则什么也不显示;
该命令的功能为逐行比较两个文本文件,列出其不同之处。它对给出的文件进行系统地检查,并显示出两个文件中所有不同的行,不要求事先对文件进行排序。
diff命令的常用格式如下:
diff [选项] file1 file2
diff -r dir1 dir2
【例】比较file1和file2文件,列出其不同之处。
diff file1 file2
cp -r [src_dir] [dst_dir] //递归地复制目录及子目录的所有内容
该命令的功能是将给出的文件或目录复制到另一文件或目录中,就如同DOS下的copy命令一样,功能非常强大。cp命令的常用格式如下:
cp [option] [src_file|src_dir] [dst_file|dst_dir]
用户可以使用mv命令来为文件或目录改名(重命名)或将文件由一个目录移入另一个目录中。该命令如同DOS下的ren和move的组合。mv命令的常用格式如下:
mv [option] [src_file|src_dir] [dst_file|dst_dir]
对于无用文件,用户可以用rm命令将其删除。该命令的功能为删除一个目录中的一个或多个文件,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。rm命令的常用格式如下:
rm [option] [files|dirs] ;如删除非空目录用:rm –rf 目录名
创建目录需要使用mkdir命令。mkdir命令的常用格式如下: #mkdir [option] [dirname]
删除空目录需要使用rmdir命令(只能用来删除空目录,删除非空目录必须使用rm -rf)。rmdir命令的常用格式如下:
#rmdir [option] [dirname]
touch命令不常用,一般在使用make的时候可能会用到;通常用来修改文件或目录的时间戳,或者新建一个不存在的文件。命令格式:
#touch [选项] 文件1 文件2 … 文件n
选项:-a 或–time=atime或–time=access或–time=use 只更改存取时间。
-c 或–no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-m 或–time=mtime或–time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
cd命令即英文词组change directory的缩写,作用是改变当前工作目录。cd命令的常用格式如下:cd [directory]
cd~或cd 一次性进入当前用户的主目录
cd - 返回上一次的操作目录
pwd命令即英文词组print working directory的缩写,***作用是显示当前工作目录的路径。该命令无参数和选项。***在Linux层次目录结构中,用户可以在被授权的任意目录下用mkdir命令创建新目录,也可以用cd命令从一个目录转换到另一个目录。
然而,没有提示符来告知用户目前处于哪一个目录中。要想知道当前所处的目录,可以用pwd命令显示整个路径名。
ls是英文单词list的简写,其功能为列出目录的内容。这是用户最常用的命令之一,因为用户要不时地查看某个目录的内容。该命令类似于DOS下的dir命令。对于每个目录,该命令将列出其中所有的子目录与文件。
对于每个文件,ls将输出其文件名以及所要求的其他信息。默认情况下,输出条目按字母顺序排序。当未给出目录名或文件名时,就显示当前目录的信息。ls命令的常用格式如下:
ls [option] [dirname|filename]
列 数 | 描 述 |
---|---|
第1列 | 第1个字符表示文件的类型 第2~4个字符表示文件所有者对此文件的访问权限 第5~7个字符表示用户组对此文件的访问权限 第8~10个字符表示其他用户对此文件的访问权限 |
第2列 | 文件的链接数 |
第3列 | 文件的所有者 |
第4列 | 文件的用户组名 |
第5列 | 文件所占的字节数 |
第6~8列 | 文件上一次的修改时间 |
第9列 | 文件名 |
ll会列出该文件下的所有文件信息,包括隐藏的文件,而ls -l只列出显式文件
ctime:“改变时间(change time)”
mtime:“修改时间(modification time)”
改变和修改之间的区别在与改文件的属性还是更改他的内容。chomd a -w myfile,那么这是一个改变;
echo foo>>myfile,那么这是一个修改。
改变是文件的索引节点发生了变化,修改是文件本身的内容发生了变化。
atime:“访问时间(access time)”
访问时间是文件最后一次被读取的时间,因此阅读一个文件会更新它的访问时间。但是它的改变时间和修改时间并没有变。
ls -lc filename 列出文件的ctime
ls -lu filename 列出文件的atime
ls -l filename 列出文件的mtime
使用du命令可以查看或显示目录或文件的大小。 du(disk usage)命令可以计算文件或目录的大小(占用磁盘空间大小)。
命令语法:du [选项] [文件名或目录名]
说明:逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况。若没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。
选项含义:
-s, –summarize 只显示目录(不包括文件)所占总空间
***-h, –human-readable 以比较阅读的方式输出文件大小信息 ***
-a:递归地显示指定目录中各文件及子孙目录中各文件占用的数据块总数;
-b:以字节为单位列出磁盘空间使用情况(系统缺省以K字节为单位);
-k:以1024字节为单位列出磁盘空间使用情况;
-l:计算所有的文件大小,对硬链接文件,则计算多次。
【例1】 分屏显示每个目录或文件的大小:
#du | more
【例2】 显示文件/root/default/grub的大小:
#du /root/default/grub
【例3】 显示/roo目录所占用的数据块总数:
#du -s /root
【例4】 以MB为单位显示/root目录所占用的数据块总数:
#du -sh /root
【例5】 #du -h /boot //列出/boot目录下每个目录的大小
【例6】 #du -sh /boot //列出/boot目录的大小
使用uname命令可以显示计算机以及操作系统的相关信息。
命令语法:
uname [-amnrsv]
-a 显示全部信息
-m 显示计算机硬件类型
-n 显示在网络上的主机名称
-r 显示操作系统的内核版本
-s 显示操作系统名称
-v 显示操作系统的版本
【例1】 显示操作系统的内核版本
uname -r
【例2】 显示计算机主机名
uname -n
【例3】 显示计算机硬件类型
uname -m
【例4】 显示操作系统的全部信息
uname -a
使用hostname命令可以显示或修改计算机的主机名。
命令语法:
hostname [计算机名]
【例1】 显示当前计算机主机名
hostname
【例2】 修改计算机主机名为LINUX
hostname LINUX
使用dmesg命令可以显示开机信息。
命令语法:
dmesg [-cn] [-s <缓冲区大小>]
-c 显示信息后,清除缓冲区中的内容
-n 设置记录信息的层级
使用cal命令可以显示计算机系统的日历。
命令语法:
cal [选项] [月 [年]]
-j 显示出给定月中的每一天是一年中的第几天
-y 显示出整年的日历 (year)
-M 以星期一为每周的第一天的方式显示
【例1】 显示本月的月历
cal
【例2】 显示公元2025年年历
cal 2025
【例3】 显示公元2001年5月的月历
cal 5 2001
【例4】 以星期一为每周的第一天的方式显示本月的月历
cal -m 9
【例5】 以1月1日起的天数显示今年的年历
cal -jy
使用date命令可以显示和设置计算机系统的日期和时间。只有超级用户才有权限使用date命令设置时间,一般用户只能使用date命令显示时间
命令语法:date [参数] [显示时间格式] (以+开头,后面接格式)
-d 显示描述的日期
-s 设置描述的日期(set 设置)
-u 显示或设置通用时间
选项 | 含 义 | 选项 | 含 义 |
---|---|---|---|
% H | 小时(00~23) | % b | 月的简称(Jan~Dec) |
% I | 小时(01~12) | % B | 月的全称(January~December) |
% k | 小时(0~23) | % c | 日期和时间(Mon Nov 8 14:12:46 CST 1999) |
% l | 小时(1~12) | % d | 一个月的第几天(01~31) |
% M | 分(00~59) | % D | 日期(mm/dd/yy) |
% p | 显示出AM或PM | % h | 和%b选项相同 |
% r | 时间(hh:mm:ss AM或PM),12小时 | % j | 一年的第几天(001~366) |
% s | 从1970年1月1日0点到目前经历的秒数 | % m | 月(01~12) |
% S | 秒(00~59) | % w | 一个星期的第几天(0代表星期天) |
% T | 时间(24小时制)(hh:mm:ss) | % W | 一年的第几个星期(00~53,星期一为第一天) |
% X | 显示时间的格式(%H:%M:%S) | % x | 显示日期的格式(mm/dd/yy) |
% Z | 时区日期域 | % y | 年的最后两个数字(1999则是99) |
% a | 星期几的简称(Sun~Sat) | % Y | 年(例如:1970,1996等) |
% A | 星期几的全称(Sunday~Saturday) |
【例1】 显示当前计算机上的日期和时间
date
【例2】 设置计算机日期和时间为2015年09月28日19点14分
date 092819142015
【例3】 按照指定的格式显示计算机日期和时间
date +’%r%a%d%h%y’
【例4】 设置计算机时间为上午9点16分
date -s 09:16:00
【例5】 设置计算机时间为2015年4月14日
date -s 150414
【例6】 用指定的格式显示计算机日期和时间
date ‘+The data of today is:%x,it is:%X’
使用echo命令可以在计算机显示器上显示一段文字,一般起到一个提示的作用。
命令语法: echo [-n] [字符串]
-n表示输出文字后不换行,字符串可以加引号也可不加引号。
【例1】 将一段信息写到标准输出 echo hello Linux
【例2】 将文本“hello Linux”添加到新文件notes中 echo hello Linux > notes
使用mesg命令可以设置是否允许其他用户用write命令给自己发送信息。
命令语法:mesg [y|n]
【例1】 显示当前计算机是否允许其他用户给自己发送信息的状态 mesg
【例2】 允许其他用户发送信息到当前终端 mesg y
【例3】 禁止其他用户发送信息到当前终端 mesg n
使用wall命令可以对全部已登录的用户发送信息。
命令语法:wall [消息]
【例1】 向所有用户发出“下班后请关机”的信息。
wall ‘下班后请关机’ (Ubuntu下无此命令,RedHat下有)
注:执行上述命令后,所有已登陆的用户的终端都会有“下班后请关机”的信息,但并不出现系统提示符$(#),再次按回车键后,屏幕才会出现系统提示符。
使用write命令可以向用户发送消息。
命令语法:write [用户账号] [终端名称]
【例1】 向tty3终端上的root用户发送信息。
write root tty3
接着输入要发送的消息: hello (希望退出发送状态时,按[Ctrl+C]即可)
注:在tty3终端上,用户root会接收到如上信息,要结束按[Ctrl+C]即可
clear命令可以清除屏幕上的信息,类似于Windows系统命令行中的cls命令。
命令语法:clear
使用sync命令可以更新inode表,并将缓冲文件写到硬盘中。
命令语法:sync
使用uptime命令可以显示系统已经运行了多长时间,它依次显示下列信息:现在时间、系统已经运行了多长时间、目前有多少登录用户、系统在过去的1min,5min和15min内的平均负载。
命令语法:uptime [-V] -V 显示版本信息 【例1】 显示系统运行时间。
使用last命令可以显示用户最后登录的信息。
命令语法:last [选项]
【例1】 显示用户root在控制台终端的所有登录和注销记录
last root console
【例2】 显示两次系统重新引导间的时间
last reboot
【例3】 显示用户root在控制台终端的所有登录和注销的前6行记录
last –n 6
PATH简单点说就是一个表示环境变量的字符串变量,当输入命令的时候Linux会自动查找PATH里面记录的路径。
比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls这个命令根本不在这个两个目录下,而是位于/bin下。原因在于PATH环境变量的存在,当你输入命令时Linux会去/bin,/usr/bin, /sbin 等目录下面去找你此时输入的命令。而PATH的值恰恰就是/bin:/sbin:/usr/bin:……。其中的冒号使目录与目录之间隔开。
如 export PATH=/bin:$PATH 表示把bin这个目录添加到整个环境变量中,这样bin这个目录中所有命令在任何地方都可以使用。 现假设新安装了一个命令在/usr/locar/new/bin下面,如果想像ls一样在任何地方都使用这个命令,就需要修改环境变量PATH了,准确的说就是给PATH增加一个值/usr/locar/new/bin。需要一行**bash命令: **
export PATH=$PATH:/usr/locar/new/bin
可把这行bash命令写到/root/.bashrc的末尾,当你重新登陆Linux的时候,新的默认路径就添加进去了;也可以直接用命令:source /root/.bashrc,执行这个文件重新登陆了。
若要删除PATH里的/usr/local/del/bin:变量,可直接在命令行里输入 e x p o r t P A T H = export PATH= exportPATH=(echo $PATH | sed ‘s/:/usr/local/del/bin:/:/g’)
注:"/"代表转意字符
Linux系统中的每个文件和目录都有访问许可权限。通过其确定何种用户/用户组可以通过何种方式对文件和目录进行访问和操作。本节将对文件/目录访问的方法和命令进行介绍。
文件或目录的访问权限分为读,写和可执行三种。
有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。每一个文件或目录的访问权限都有三组,每组用三位表示,分别为:
文件属主的读、写和执行权限;
与属主同组的用户的读、写和执行权限;
系统中其他用户的读、写和执行权限。
例:-rwxr-xr-x 1 0 0 137332 Jun 18 15:45 tux
字符 | 含义 | 八进制表示 |
---|---|---|
r | read :读,可以显示该文件的内容 | 22=4 |
w | write :写,可以编辑或删除它 | 21=2 |
x | excute:执行,如果是程序的话 | 20=1 |
- | 无该权限 | 0 |
它是一条非常重要的系统命令。用户可用其控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
chmod [who] [+|-|=] [mode] filename
操作对象who可以是下述子母中的任一个或为各字母的组合。
u user,表示用户user,即文件或目录的所有者
g group,表示同组(group)用户,即与文件属性有相同组ID的所有用户
o other,表示其它(others)用户
a all,表示所有用户(以上3种人),其为默认值。
选项 | 功能 | 选项 | 功能 |
---|---|---|---|
a | 所有用户 | = | 赋值权限 |
u | 属主用户 | r | 读权限 |
g | 属主用户组 | w | 写权限 |
o | 其他用户 | x | 执行权限 |
+ | 添加权限 | s | SUID位/SGID位 |
- | 删除权限 | t | Sticky位 |
假设文件demo的初始权限为"rwxrwxrwx",
$ chmod a-x demo # 结果为 rw-rw-rw-
$ chmod go-w demo # 结果为 rw-r–r–
$ chmod g+w demo # 结果为 rw-rw-r–
$ chmod a= demo # 结果为 ---------
$ chmod +t demo # 结果为 --------T
$ chmod u+s demo # 结果为 --S-----T
$ chmod u+rx demo # 结果为 r-s-----T
$ chmod g+rws demo # 结果为 r-srwS-T
$ chmod u-s demo # 结果为 r-SrwS-T
数字设定法是与文字设定法功能等价的设定方法,只不过比文字设定法更加简洁。数字设定法用3个二进制位来表示文件权限。第一位表示r权限(可读),第二位表示w权限(可写),第三位表示x权限(对于文件而言为可执行,对于文件夹而言为可枚举)。设定好后将其换算为十进制数即可。
当然,也可以直接用十进制数计算。0表示没有权限,1表示x权限,2表示w权限,4表示r权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)、(g)、(o)。其他的与文字设定法基本一致。
如果想让某个文件的属主有“读/写”二种权限,须要把4(可读)+2(可写)=6(读/写)。
数字设定法的使用形式:chmod [mode] filename
【例1】使用文字设定法,给/目录下的11.txt文档的属主(u)、同组用户(g)、其他用户(o)均增加执行权限。
chmod a+x 11.txt
【例2】使用文字设定法,给/目录下的11.txt文档的属主(u)、同组用户(g)增加写权限、其它用户(o)删除执行权限。
chmod ug+w, o-x 11.txt
【例3】使用数字设定法,给/目录下的11.txt文档的属主(u)拥有读/写权限,同组用户(g)拥有读/执行权限,其它用户(o)没有任何权限。
chmod 650 11.txt
$ chmod 666 demo # 结果为 rw-rw-rw-
$ chmod 644 demo # 结果为 rw-r--r--
$ chmod 700 demo # 结果为 rwx------
$ chmod 4666 demo # 结果为 rwSrw-rw-
$ chmod 1111 demo # 结果为 --x-x--t
登录系统之后,创建文件或文件夹有一个默认权限的。umask命令则用于显示和设置用户创建文件的默认权限。当使用不带参数的umask命令时,系统会输出当前umask的值。代码如下所示:
[root@localhost root]# umask
0022
通常文件权限只会用到后3位,即022。要注意的是,***umask命令设置的权限的补码,而chmod是设置文件权限码。***当umask为022时,默认创建文件权限为644,默认创建目录的权限是755。
umask nnn //n为0~7之间的整数
chown(change own)命令用来更改某个文件或目录的属主和属组。举个例子,root用户把自己的一个文件复制给用户xu,为了让用户xu能够存取这个文件,root用户应该把这个文件的属主设为xu,否则,用户xu无法存取这个文件。chown命令的常用格式如下:
chown [option] [user|group] filename 选项如下:
*** -R 递归地改变指定目录及其下面的所有子目录和文件的拥有者***
-v 显示chown命令所做的工作
【例1】 把文件11.txt 所有者改为stu
chown stu 11.txt
【例2】 把目录/my及其下面的所有文件和子目录的属主改为stu,属组改为users
chown -R stu.users /my
gzip压缩利用Lempel-Ziv(LZ77)算法,与之相关的命令有:gzip(压缩),gunzip(解压缩)和zcat(解压并输出到标准输出设备)。
gzip、gunzip和zcat命令的常用格式如下。
gzip [-acdfhlLnNqrtvV] [-level] [-S suffix] [file]
gunzip [-acdfhlLnNqrtvV] [-S suffix] [file]
zcat [-fhlV] [file]
例如:gzip hello.c
zcat hello.c.gz 等价于 gunzip hello.c.gz
使用gzip时需要注意以下几点。
(1)默认gzip压缩/gunzip解压的文件会以.gz结尾,同时删除原始文件;
(2)若不希望使用.gz后缀,则需用-S覆盖;
(3)gunzip -c和zcat 功能相同。
Linux压缩保留源文件的方法: gzip -c filename > filename.gz
Linux解压缩保留源文件的方法: gunzip -c filename.gz > filename
bzip2压缩利用Burrows-Wheeler block sorting和Huffman编码算法,与之相关的命令有:bzip2(压缩),bunzip2(解压缩),bzcat(解压并输出到标准输出设备)和bz2recover(从损坏的bzip2文件中恢复数据)。
bzip2、bunzip2、bzcat和bz2recover命令的常用格式如下。
bzip2 [-cdfhkLstvVz] [–repetitive-best] [ --repetitive-fast] [-level] [file]bunzip2 [-fkLsvV] [file] //删除原始文件
bzcat [-s] [file] //不会删除原始文件
bz2recover [file]
bzip2压缩的命令和gzip非常类似,不过bzip2通常都比基于LZ77算法的工具压缩率更高。默认bzip2压缩的文件会以.bz2结尾,同时删除原始文件。但和gzip相比,bzip2可以通过添加-k参数保留原始文件。bunzip2-c和bzcat功能相同。
例:bzip2 -k hello.c bunzip2 -k hello.c.bz2等价于 bzcat hello.c.bz2
tar是一个归档程序,就是说tar可以把许多文件打包成为一个归档文件或者把它们写入备份设备,例如一个磁带驱动器。
因此,通常Linux下保存文件都是先用tar命令将目录或者文件打成tar归档文件(也称为tar包),然后gzip或bzip2压缩。正因为如此,Linux下已压缩文件的常见后缀有tar.gz、tar.bz2,以及tgz和tbz等。
(1)创建tar包
创建归档可以使用-cf参数,如果需要显示日志,可以使用-cvf参数。-c:create -f:filname
***【例】: tar -cf etc.tar /etc ***
注:表示将/etc目录打包成名为etc.tar的文件 ;这里会自动去掉开始的“/”,防止解压出现问题。
(2)查看tar包内容 查看归档可以使用-tf参数。
【例】 tar -tf etc.tar | more //t表示list列出
(3)还原tar包(解开tar包)
还原归档可用-xf参数,如果需要显示日志,可用-xvf参数。
【例】 tar -xf etc.tar // -x: extract 解压,提取 -v:verbose 详细
(4)直接在tar包中使用压缩选项
打好的tar包可以交由gzip或bzip2进行压缩。另外也可以直接在tar命令中调用这些压缩功能,加入相应参数-z即可。
例如将hello.c和hello.c.bz2打包后用gzip压缩并输出为hello.tar.gz,显示执行过程,可以使用-zcvf参数。
命令: tar -zcvf hello.tar.gz(目标文件) hello.c hello.c.bz2
显示hello.tar.gz中内容可用-tvf、-tf或-tzf等参数:
命令: tar -tvf hello.tar.gz
(5)直接用tar解压包: tar -jxvf hello.tar.bz2 -C mydir
命令: tar -zxvf hello.tar.gz -C mydir //通过-C来指定解压的目标目录mydir
tar -Jxvf hello.tar.xz -C mydir
//打包并压缩:tar -Jcvf [目标文件名].tar.xz [原文件名/目录名]
zip格式(即PKZIP)在多种平台(UNIX、Linux、Machintosh,以及Windows)下都有很广泛的应用。Linux对zip格式的文件也有很好的支持。与zip相关的命令相当多,主要有zip、unzip等。
zip命令的格式如下:
Zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$] [-b tmp_dir] [-ll] [-n suffix] [-t datetime] [-level] [zipfile] [files_to_zipped] [-i include_pattern] [-x exclude_pattern]
【例】压缩/etc.tar包和/bin目录及其下所有文件,命令如下:
zip –r /compress.zip /etc.tar /bin
解压: 【例1】unzip -z /compress.zip
【例2】:将compress.zip中除etc.tar外的内容解压缩到/tmp目录,命令格式:
unzip /compress.zip -d /tmp -x etc.tar
文件命名: 在Linux系统上,任何软件和I/O设备都被视为文件。Linux中的文件名最大支持256个字符,分别可以用A~Z、a~z、0~9等字符来命名。 和Windows不同,Linux中文件名是区分大小写的,所有的UNIX系列操作系统都遵循这个规则。
目录/无盘符:Linux下也没有盘符的概念(如Windows下的C盘、D盘),而只有目录,不同的硬盘分区是被挂载在不同目录下的。
扩展名:此外,Linux对于文件的扩展名没有像Windows要求的那么严格,所以在使用Linux的过程中经常会遇到很多文件根本就没有扩展名,文件名称与文件的种类也没有任何关系。
例如:abc.exe可以是文本文件,而abc.txt也可以是可执行文件。 目录和设备都当做文件:在Linux系统下除了一般文件之外,所有的目录和设备(光驱、硬盘等)都是以文件的形式存在的。
.bz2:使用bzip2压缩的文件
.gz:使用gzip压缩的文件
.tar:使用tar压缩的文件,又称tar文件
.tbz:使用tar和bzip压缩的文件
.tgz:使用tar和gzip压缩的文件
.zip:使用zip压缩的文件,Linux下使用gzip命令压缩的文件
.au:音频文件
.gif:GIF图像文件
.html/.htm:HTML文件
.jpg:JPEG图像文件
.pdf:PDF文档
.png:PNG图像文件
.ps:PostScript文件,为打印而格式化过的文件
.txt:纯ASCII文本文件
.wav:音频文件
.XPm:图像文件
.conf(或.cfg):一般属于配置文件;
.lock:锁文件,用来判定程序或设备是否正在用;/etc/.pwd.lock .rpm:Linux系统中用来安装软件的软件包管理器文件;
.c:C程序语言的源码文件
.cpp:C++程序语言的源码文件
.h:C或C++程序语言的头文件
.o:程序的对象文件—目标文件
.pl:Perl脚本
.py:Python脚本
.so:库文件
.sh:Shell脚本
.tcl:TCL脚本
文件扩展名不总是被使用或被一致地使用。使用file命令判断没有扩展名的文件类型相当有用。
示例如下:
[root@localhost ~]# file /etc/issue
/etc/issue: ASCII text
/etc/issue为text文本文件
[root@localhost ~]# file /usr/local
/usr/local/: directory
/usr/local为目录
wy ↩︎