linux 文件类型:
-:表示普通文件。 d:表示目录文件 directory l:表示符号连接文件。 link b:表示块设备文件 block c:表示字符设备文件, character p:表示管道文件。 pipe s:表示套接字文件 socket
linux通配符:
类比于正则 也是这宗规则
“*”是通配符,可以匹配多个字符; “?”只能匹配一个字符
linux之ls:
(1)ls示例一——不带参数
[user1@server1 ~]$ ls
abc host.conf php.ini
功能:显示指定目录中的文件清单,如果没有指定任何目录,则默认为当前目录。
(2)ls示例二——显示隐含文件
[user1@server1 ~]$ ls -a
. abc .bash_profile .emacs host.conf .viminfo
.. .bash_logout .bashrc .gtkrc php.ini .zshrc
参数-a的功能:显示隐含文件。
说明:若文件名以“.”开头,则认为是隐含的,进而普通的ls命令不显示以“.”开头的文件;
(3)ls示例三——长格式输出
[user1@server1 ~]$ ls -l
total 60
drwxrwxr-x 2 user1 user1 4096 Aug 17 09:10 abc
- rw- r-- r-- 1 user1 user1 17 Aug 17 09:04 host.conf
- rw- r-- r-- 1 user1 user1 38450 Aug 17 09:04 php.ini
参数-l 的功能是:以长格式列表输出指定目录中的文件清单。
以上述输出中文件abc为例
解释长格式输出的内容如下:
文件类型 文件权限 连接数 属主 属组 大小 日期 时间 文件名
d rwxrwxr-x 2 user1 user1 4096 Aug 17 09:10 abc
ls -R 递归 r = recursive
linux之mkdir:
(1)mkdir示例一 [user1@server1 ~]$mkdir abc 功能:在当前目录下创建目录abc (2)mkdir示例二——创建多级目录 [user1@server1 ~]$ mkdir -p a/b/c 功能:参数-p功能是如果要创建的目录的父目录不存在,则先创建其父目录,再创建该目录; 如果指定的目录存在,则不影响原目录,也不会报错。在本示例中会连续创建a目录、a/b目录、a/b/c目录。
linux之 目录:
. 当前目录 ~家目录 /根目录 .. 上一级
linux之 cd:
(1)cd示例一——切换工作目录 [user1@server1 ~]$ cd /var [user1@server1 var]$ pwd /var 功能:将当前的工作目录切换为/var (2)cd示例二——切换到当前用户的主目录 [user1@server1 var]$ cd [user1@server1 ~]$ pwd /home/user1 功能:不带参数的cd命令直接将当前的工作目录切换为该用户的主目录。
linux之 touch:
(1)touch示例一——创建空文件 [user1@server1 ~]$ touch myfile [user1@server1 ~]$ ls -l myfile -rw-rw-r-- 1 user1 user1 0 Aug 17 11:54 myfile 功能:如果myfile不存在,则创建一个大小为0字节名为myfile的空文件。 (2)touch示例二——改变文件的最后修改时间 再执行一次touch myfile [user1@server1 ~]$ touch myfile [user1@server1 ~]$ ls -l myfile -rw-rw-r-- 1 user1 user1 0 Aug 17 11:56 myfile 功能:如果myfile已存在,则将改变myfile的最后修改时间。
linux之 cp:
(1)cp示例一——复制文件 [user1@server1 ~]$ cp /etc/php.* abc 功能:将/etc/目录下以php.开头的文件 文件复制到目录abc中。 (2)cp示例二——复制目录 [user1@server1 ~]$ cp -R /etc abc 功能:增加了参数-R,就能将目录/etc下面的所有子目录和文件都复制到目录abc中。
linux之 mv:
(1)mv示例一——将文件移动到目录中 [user1@server1 ~]$ mv myfile mydir1 功能:如果mydir1存在且是个目录,则将文件myfile移动到目录mydir1中。 (2)mv示例二——文件改名 [user1@server1 ~]$ mv myfile myfile2 功能:将文件(或目录)myfile改名为myfile2。
linux之 rmdir:
[user1@server1 ~]$ rmdir mydir1 功能:删除指定的空目录。
linux之 rm:
(1)rm示例一——删除文件 [user1@server1 ~]$ rm php.ini 功能:删除指定的文件 php.ini。 (2)rm示例二——删除目录 [user1@server1 ~]$ rm -rf abc 功能:参数-r是递归的意思,即可以删除非空目录;参数-f是强制的意思。
linux之 cat:
(1)cat示例一——显示文件内容 [user1@server1 ~]$ cat myfile hello,world 功能:显示指定文件myfile的内容。 (2)cat示例二——创建文件 [user1@server1 ~]$ cat > myfile2 Welcome to Linux World! 按ctrl+d结束输入 功能:利用输出重定向符“>”来创建简短的文本文件myfile2。
linux之 more less:
$ more /etc/httpd/conf/httpd.conf 功能:分屏显示指定文件httpd.conf的内容,非常适合显示超过一屏的文本文件。每按一下空格键,向后翻一屏;每按一次回车键,向后翻一行。 说明:与more功能很相似,只不过less功能更强大,支持PageUp键向前翻屏,及PageDown向后翻屏。
linux之 head tail:
(1)head示例一——显示文件头10行内容 $ head /etc/httpd/conf/httpd.conf 功能:默认显示指定文件的头10行的内容。 (2)head示例二——显示文件头n行内容 $ head -n 19 /etc/httpd/conf/httpd.conf 功能:参数-n设置显示指定行数,本例会显示文件的头19行的内容。 (1)tail示例一——显示文件最后10行内容 $ tail /etc/httpd/conf/httpd.conf 功能:默认显示指定文件的末尾10行的内容。 (2)tail示例二——显示文件最后n行内容 $ tail -n 12 /etc/httpd/conf/httpd.conf 功能:参数-n设置显示指定行数; 本例会显示文件的末尾12行的内容。 (3) tail -f /etc/httpd/conf/httpd.conf ----- 动态查看文件内容 常用语查看动态查看文件日志
linux之用户、组管理命令
Linux采用组来组织和管理用户 在Linux中每个用户有唯一的用户标识符UID,该UID是一个无符号整数。 同时每个用户也必须至少属于一个组,也有组标识符GID。 其中UID与GID独立编号。
linux之groupadd
(1)groupadd示例一——创建组账号 [root@server1 ~]# groupadd mygroup1 功能:创建一个新组mygroup1,其GID号为已存在GID号的下一个顺序编号。 说明:创建一个组的同时会在/etc/group文件中为该组增加相应的一行,用来记录该组的名称、GID号及成员等信息。 (2)groupadd示例二——创建组账号并设置其GID号 # groupadd -g 5000 mygroup2 功能:创建一个新组mygroup2,并指定其GID号为5000,其中-g用来设置用户的主要组,每个用户都有一个主要组。
linux之useradd
(1)useradd示例一——创建用户账号 [root@server1 ~]# useradd user1 功能:创建一个用户user1,同时在/etc/passwd文件和/etc/shadow文件增加一行,并自动为用户创建相应的主目录:/home/user1。 说明:/etc/passwd文件记录了系统中每个用户的用户名、UID号、GID号、主目录、shell等信息。 注意:用户的口令原来也存放在此文件中,现在为了保证安全采用了影子口令文件/etc/shadow来保存每个用户的口令。 (2)useradd示例二——创建用户账号并设置相应属性值 # useradd -u 600 -g mygroup1 -G mygroup2 -d /home/student1 s1 功能:创建用户s1,其中参数 -u指定UID号为600; -g指定用户的主要组为mygroup1; -G指定用户的附加组为mygroup2,每个用户可以有多个附加组; -d 指定用户的主目录为/home/student1。
linux之userdel
(1)userdel示例一——删除用户 [root@server1 ~]# userdel user1 功能:删除指定的用户user1。 (2)userdel示例二——删除用户的同时删除其主目录 [root@server1 ~]# userdel -r user2 功能:删除指定的用户user2,同时删除其主目录。linux之groupdel
[root@server1 ~]# groupdel mygroup2 功能:删除指定的组 注意:当某个组是某现有用户的主要组时,则不能被删除。linux之passwd
(1)passwd示例一——改变口令 [user1@server1 ~]$ passwd Changing password for user user1. Changing password for user1 (current) Unix password: New Unix password: BAD PASSWORD: it is too simplistic/systematic New Unix password: BAD PASSWORD: is too similar to the old one New Unix password: Retype new Unix password: passwd: all authentication tokens updated successfully. 功能:普通用户只可以修改自己的口令 (2)passwd示例二——禁止用户登录 l = lock [root@server1 ~]# passwd -l user1 Locking password for user user1. passwd: Success 功能:参数-l 可以给指定的用户user1加锁,即禁止该用户登录。 (3)passwd示例三——恢复用户登录 u = unlock [root@server1 ~]# passwd –u user1 Unlocking password for user user1. passwd: Success. 功能:参数-u 可以给指定的用户user1解锁,即恢复该用户登录。 (4)passwd示例四——删除用户口令 [root@server1 ~]# passwd -d user1 Removing password for user user1. passwd: Success 功能:参数-d 可以删除指定的用户user1口令,即以user1登录时无需口令。linux之usermod
# usermod -u 601 -g 501 s1 功能:将(已存在的)用户s1的UID号修改为601、主要组修改为501 说明:usermod 还能修改用户主目录、登录shell及口令等linux之 id
[root@server1 ~]# id user1 uid=501(user1) gid=501(user1) groups=501(user1) 功能:显示用户的UID、GID及所属的组信息。linux之 文件属性:
Linux文件有三种典型的权限,即r读权限、w写权限和x执行权限。linux之 chown命令
(1)chown示例一——改变文件的属主 [root@server1 ~]# chown user1 hello.txt 功能:将指定文件hello.txt的属主(所有者)改为user1。 (2)chown示例二——递归改变文件的属主 # chown -R user1 mydir 功能:参数-R,表示递归,即可以深入到指定目录中的每一层,将所有子目录和文件的属主(所有者)改为指定的用户;本例中会将mydir目录中所有子目录和文件的属主设定为user1。 (3) chown –R user1:mygroup1 mydir 表示级联修改文件夹和其下面所有文件的属主:属组linux之 chgrp
(1)chgrp示例一——改变文件的属组 # chgrp mygroup1 hello.txt 功能:将指定文件hello.txt的属组改为mygroup1。 (2)chgrp示例二——递归改变文件的属组 # chgrp -R mygroup1 mydir 功能:参数-R,表示递归,即可以深入到指定目录中的每一层,将所有子目录和文件的属组改为指定的组;本例中会将mydir目录中所有子目录和文件的属组设定为mygroup1。linux之 chmod
(1)chmod示例一——字母方式 图中字母u针对属主、g针对属组、o针对其他用户、a针对所有用户; =表示赋予(设置)指定权限,要注意它会覆盖原权限, +表示在原有权限的基础上增加指定权限, -表示在原有权限的基础上去掉指定权限; r、w、x三种权限,既可以单独使用也可以组合使用 $ chmod u+x host.conf 功能:为文件host.conf的属主增加执行权限。 $ chmod g-w,o=x host.conf 功能:将文件host.conf的属组去掉写权限,同时将其他用户设置为只有执行权限,而文件属主的权限不变。 (2)chmod示例二——数字方式 chmod的数字使用方式,使用起来也是很方便的,关键是一个数制转换的问题。 这种方式是先将每个权限位化成二进制数,其中如果某权限位是“-”则用0来表示,否则用1来表示;接着,将这9列权限分为三组(每三位一组),再将每组化成一个八进制数。 例如,某文件有如下权限rwxrw-r--,则转换为二进制数为111110100,再化为八进制数则为764;反之,当看到八进制数764时也应该很快转化为相应权限。 $ chmod 764 host.conf 功能:将文件host.conf的权限设置为: 属主拥有全部权限; 属组拥有读写权限; 其他用户拥有只读权限。linux之 特殊权限:s权限
s权限具有改变进程的执行身份功能。 原则上,用户在执行某程序的过程中,该进程就具有该用户的身份。 当设置了s权限后,就可以改变该进程的运行身份,请看如下示例: [root@server1 ~]# ls -l test.txt -rw------- 1 root root 42 Aug 23 10:34 test.txt 注意观察test.txt文件的权限,只有root用户才能读写该文件。 [root@server1 ~]# cp test.txt /home/user1 [root@server1 ~]# which cat /bin/cat [root@server1 ~]# cp /bin/cat /home/user1/mycat 按ALT+F2切换到第二个控制台,以user1登录,并执行如下命令: [user1@server1 ~]$ ./mycat test.txt ./mycat: test.txt: Permission denied 执行上述命令时会报错,表示没有相应的访问权限。 请执行ls -l test.txt查看相应权限,解释原因。 接下来,按ALT+F1切换到第一个控制台,执行如下命令: [root@server1 ~]# chmod u+s /home/user1/mycat 功能:为文件/home/user1/mycat加上s(SetUID)权限,表示当该程序被执行时,其执行身份为该程序的所有者。执行如下命令: [root@server1 ~]# ls -l /home/user1/mycat -rwsr-xr-x 1 root root 19140 Aug 23 11:05 /home/user1/mycat 最后,再按ALT+F2切换到第二个控制台,以user1身份执行如下命令: [user1@server1 ~]$ ./mycat test.txt hello,this file can be read only by root! 说明:可以看出这次执行mycat test.txt,就能够显示出test.txt文件的内容,这充分说明“s”权限的作用。 除了本例中u+s,还可以有g+s的用法linux之 umask命令
(1)umask示例一——显示文件的创建掩码 先来看如下命令的执行: [user1@server1 ~]$ touch test [user1@server1 ~]$ ls -l test -rw-rw-r-- 1 user1 user1 0 Aug 18 11:57 test 发现文件test的权限是664,再创建几个文件会发现权限都是664。 下面执行如下命令: [user1@server1 ~]$ umask 0002 功能:显示文件创建掩码;文件的被创建后其权限分两种情况, 一是如果创建的是目录文件,则用777减去文件创建掩码; 二是如果创建的是普通文件,则用666减去文件创建掩码。 本例中umask当前值为0002,用touch创建的test是普通文件,所以test的权限=666-0002=664。 (2)umask示例二——设置文件的创建掩码 [user1@server1 ~]$ umask 0006 功能:先设置文件创建掩码为0006。 请读者自行练习如下命令,体会相应功能。 [user1@server1 ~]$ touch test2 [user1@server1 ~]$ mkdir dirtest2linux之 i节点和ext2文件系统: ext2文件系统是当前Linux上流行的文件系统之一,其主要结构如下:
引导块的功能是负责系统的引导。 超级块是用来描述ext2文件系统整体信息的数据结构,其内容非常重要,主要包含了i节点表和数据区的位置,是ext2文件系统的核心机制。 i节点表是ext2文件系统的特色,其内容就是该文件系统中所有i节点的列表。 每一个文件都要与一个i节点相关联。 i节点是一个64字节大小的数据结构,它记录了文件的重要信息,主要包括文件的属主、属组、权限、大小、日期时间以及15个数据块指针等内容。 值得注意的是i节点中并没有包含文件名! “目录文件”主要内容: 包括位于该目录下的文件的名称及相应的i节点号。 文件名到i节点的转换 : 当通过文件名访问文件时,首先在目录中查找是否有相应的文件名存在,若存在,则访问与该文件名相对应的i节点,进而通过i节点中的15个指针定位真正的数据块。 简单地说,目录实现了文件名到i节点的转换i节点的示意图请参见下图所示:
linux之 符号连接(软连接)和硬连接
硬连接是Unix类操作系统中特有的概念。 本质上,一个i节点可以对应多个文件名,每个文件名都是该i节点的一个硬连接。 新创建的硬连接与原文件名共用同一个i节点。 需要说明的是,不能为目录创建硬链; 而且硬连接也不能跨越文件系统。 符号连接是一种特殊的文件。 与硬连接不同,符号连接采用了新的i节点,这说明它与原文件之间是有着本质区别的。 符号连接的内容实际上是目标文件名(路径)而已,即是一条指向原(目标)文件的文件名的路径,相当于Windows系统中的“快捷方式”。 符号连接可以跨越文件系统,也能够为目录来创建符号连接。 (1)ln命令示例一——建立硬连接 [user1@server1 ~]$ ln myfile myfile.hlink 功能:为文件myfile创建名为myfile.hlink的硬连接。 [user1@server1 ~]$ ls -il 180590 -rw-rw-r-- 2 user1 user1 12 Aug 17 12:14 myfile 180590 -rw-rw-r-- 2 user1 user1 12 Aug 17 12:14 myfile.hlink 说明:通过ls –il 命令可以看出myfile与myfile.hlink的i节点号(最左面的数)是一样的,即硬连接与原文件共用同一个i节点,请注意两个文件的连接数(位于长格式列表中权限位与属主之间的数)都增加了1变成2了。 (2)ln命令示例二——建立符号连接 [user1@server1 ~]$ ln -s myfile myfile.slink 功能:为文件myfile创建名为myfile.slink的符号连接。 [user1@server1 ~]$ ls -li 180590 -rw-rw-r-- 2 user1 user1 12 Aug 17 12:14 myfile 180590 -rw-rw-r-- 2 user1 user1 12 Aug 17 12:14 myfile.hlink 180606 lrwxrwxrwx 1 user1 user1 6 Aug 21 06:21 myfile.slink -> myfile 说明:试试用rm命令删除myfile文件,注意观察连接数的变化,再分别访问myfile.hlink和myfile.slink,看看是否能够正常访问 ----> cannot visitlinux之 查找命令
1. which命令 [user1@server1 ~]$ which cp /bin/cp [user1@server1 ~]$ which updatedb /usr/bin/updatedb 功能:显示命令的绝对路径。 注意:该命令只能在命令搜索路径指定的目录中去查找命令或程序。 [user1@server1 ~]$ whereis ln ln: /bin/ln /usr/share/man/man1/ln.1.gz /usr/share/man/man1p/ln.1p.gz 功能:查询指定命令所在目录以及帮助文档所在目录。linux之 find: 最长用到的就是 find -name
(1)find示例一——按文件名查找 # find / -name "dhcpd*" 功能:参数-name指明按文件名进行查找,即从/目录开始查找以dhcpd开头的所有文件。 (2)find示例二——按文件大小查找 [user1@server1 ~]$ find /etc -size 8 功能:从/etc下开始查找大小为8块的文件,此处默认512字节为1块。若认为块大小为1k,则应写为8k。 其它可以使用的单位有c(字节)、w(双字节)、M(兆字节)和G(吉字节)。 (3)find示例三——按文件类型查找 $ find /var -type d -print 功能:从/var目录下开始查找类型为目录的文件,其中参数-print是显示到屏幕上的意思,经常省略。 (4)find示例四——按文件的修改时间查找 [user1@server1 ~]$ find . -cmin -5 功能:从当前目录下查找5分钟之内修改过的文件。 如果把“-5”改为 “+5”,则表示查找5分钟以前修改过的文件。不带“+”或“-”,则认为整5分钟。 如果把时间单位改为天,则使用参数“-ctime”,请看示例: [user1@server1 ~]$ find . -ctime -5 (5)find示例五——按文件的权限查找 [user1@server1 ~]$find mytmp -perm 755 功能:查找mytmp目录下的权限恰为755的文件。 [user1@server1 ~]$find mytmp -perm +755 功能:查找mytmp目录下的满足755中任何一种权限的文件,即符合任何一个指定的权限位即可。 [user1@server1 ~]$find mytmp -perm -755 功能:查找mytmp目录下的权限至少满足755的文件,即指定的所有权限位必须符合才算满足查询条件。 (6)find示例六——多条件查询 $find / -ctime -5 –a -name “*.conf” 功能:查找5天以内修改过的所有.conf的文件。 说明:默认情况下各查询条件之间是“与”的关系,也可用-a或 -and 来表示;-o表示“或”;!表示“非”。 (7)find示例七——处理查找到的文件 $find . -size 0 –exec rm {} \; 功能:将当前目录下大小为0字节的所有文件删除;其中参数-exec的功能是针对查找到的文件执行后面相应的命令, “{}”相当于一个占位符,当执行到“\;”时,就用找到的一个文件来替换“{}”,替换后再执行该指令; 要注意“{}”与“\;”之间要有空格,“\”与“;”之间没有空格。 $find . \( -type f -or type l \) –ok rm {} \; 功能:从当前目录下开始查找普通文件或符号连接文件,针对找到的每个文件,在执行rm命令之前提问是否要执行该命令。 其中“\( \)”是优先符号, 参数“-ok”比“-exec”多了交互功能。linux之 grep
1. grep命令 (1)grep示例一——在指定的文件中查找包含特定的字符串的行 [user1@server1 ~]$ grep "bind" host.conf 功能:在文件host.conf中查找包含字符串“bind”行。 [user1@server1 ~]$ grep "network" /etc/*.conf 功能:利用通配符可在多个文件中查找包含特定的字符串的行。本例会在/etc下扩展名为.conf文件中查找包含字符串“network”的行。 (2)grep示例二——查找不包含指定字符串的行 $ grep -v "network" /etc/nsswitch.conf 功能:查找/etc/nsswitch.conf文件中不包含字符串“network”的行。linux之 wc
(1)wc示例一——统计指定文件的行数、单词数和字符数 [user1@server2 ~]$ wc /etc/nsswitch.conf 63 272 1718 /etc/nsswitch.conf 功能:统计出文件/etc/nsswitch.conf共有63行、272个单词、1718个字符。 (2)wc示例二——参数使用 $ wc -l /etc/nsswitch.conf 63 /etc/nsswitch.conf 功能:参数-l的功能可统计出指定文件的行数。另外,利用参数-w统计单词,利用-c统计字符数。linux之 sort
(1)sort示例一——按正序输出 [user1@server1 ~]$ sort mytest 功能:将指定文件以行为单位按正序输出。 (2)sort示例二——按逆序输出 [user1@server1 ~]$ sort -r mytest 功能:将指定文件以行为单位按逆序输出。linux之 diff
diff 命令 [user1@server1 ~]$ diff test mytest 功能:比较文件test与mytest是否相同,将不同之处输出到屏幕上。linux之 cut
cut命令是一个文本提取工具,它以行为单位,将每行看作一条记录,而字段之间的分隔符可以灵活地定义。 (1)cut示例一——按特定的分隔符提取指定的字段 [user1@server2 ~]$ cut -d: -f1 /etc/passwd 功能:参数-d用来定义字段之间的分隔符,参数-f指定提取第几个字段;本例为提取/etc/passwd文件中以“:”为分隔符的第1个字段。 (2)cut示例二——提取指定的字符 $ cut -c1-3,5 /etc/passwd 功能:参数-c用来指定提取哪几列;本例提取/etc/passwd文件中每行的第1列至第3列和第5列。linux之 tar
1. tar命令 tar命令是经典的备份/还原命令,几乎所有最新的软件包都是通过tar包发布的。 (1)tar命令示例一——打包(备份) [user1@server2 ~]$ tar -cvf myetc.tar /etc 功能:参数-c的功能是打包(创建),create 参数-v是显示处理过程, 参数-f是用来指定文档名; file 本例的功能是:将目录/etc打包为一个名为myetc.tar的文档。 (2)tar命令示例二——打包(备份)并压缩 $ tar -zcvf myetc.tar.gz /etc 功能:将目录/etc打包并压缩为一个名为myetc.tar.gz的文档。 说明: 其中参数-z是调用gzip命令来压缩,扩展名为gz, 参数-Z是调用compress命令来压缩,扩展名为Z, 参数-j是调用bzip2命令来压缩,扩展名为bz2。 (3)tar命令示例三——解压缩还原 $ tar -zxvf myetc.tar.gz 功能:将参数-c换成-x即可实现还原释放的功能。 说明:本例没有指明还原的位置,则将会还原在当前目录下; 如果想指明还原位置可用参数-C,请尝试如下示例: $ tar -zxvf myetc.tar.gz -C /tmplinux之 gzip
(1)gzip命令示例 [user1@server2 ~]$ gzip myetc.tar 功能:将文件myetc.tar压缩为myetc.tar.gz。 (2)gunzip命令示例 [user1@server2 ~]$ gunzip myetc.tar.gz 功能:将文件myetc.tar.gz解压缩为myetc.tar