Linux 如何学习
自主查询
Linux自身文件数据
/usr/share/doc
DLDP中文文件计划:http://www.linux.org.cn/CLDP
The Linux Documentation:http://www.tldp.org
Linux设备与文件名
设备 | 设备在 Linux 内的文件名 |
---|---|
IDE 硬盘 | /dev/hd[a-d] |
SCSI/SATA/USB 硬盘 | /dev/sd[a-p] |
U盘 | /dev/sd[a-p] |
软驱 | /dev/fd[0-1] |
打印机 | 并口:/dev/lp[0-2] USB:/dev/usb/lp[0-15] |
鼠标 | USB:/dev/usb/mouse[0-15] PS2:/dev/psaux |
当前 CD ROM/DVD ROM | /dev/cdrom |
当前鼠标 | /dev/mouse |
更多支持https://www.kernel.org/pub/linux/docs/lanana/device-list/devices-2.6.txt
命令行模式
字符界面:Ctrl + Alt + F1 ~ F6
图形界面:Ctrl + Alt + F7
启动命令:startx
执行命令
command [-options] parameter1 parameter2 ...
一行命令中第一个输入部分绝对是 “Command” 或 “可执行文件”。
command 为命令的名称。
Parameter... 为依附在 options 后面的参数,或者是command 的参数。
命令, -options,参数,之前以空格来区分,不论空几格,都视为一格。
按下 Enter 键后立即执行。
命令太长的时候,可使用 \ 来转义 Enter 等符号,使命令连续到下一行。
基础命令操作
显示日期与时间:date;
gerrycheng@ubuntu:~$ dateTue Dec 30 03:57:23 PST 2014gerrycheng@ubuntu:~$ date +%Y/%m/%d2014/12/30gerrycheng@ubuntu:~$ date +%H:%M04:02
显示日历命令:cal;
gerrycheng@ubuntu:~$ cal 12 2014 December 2014 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
计算器:bc;
gerrycheng@ubuntu:~$ bc bc 1.06.95Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. scale=4 1/3 .3333 343/344553 .0009 1+45 46 quit
重要热键
[Tab]
命令补全、文件补全
gerrycheng@ubuntu:~$ ca [Tab] [Tab] cal capsh calendar captoinfo calibrate_ppa case
[Ctrl]-c
中断目前程序[Ctrl]-d
替代 Exit
man page 与 info page
man page
gerrycheng@ubuntu:~$ man date
超级简单的文本编辑器:nano
gerrycheng@ubuntu:~$ nano GNU nano 2.2.6 New Buffer ^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos ^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text^T To Spell
正确关机重启方法
查看系统的使用状态who
| netstat -a
| ps -aux
|
通知在线用户关机的时间shutdown
| reboot
|
关机命令:shutdown
gerrycheng@ubuntu:~$ shutdown -h now 立刻关机 gerrycheng@ubuntu:~$ shutdown -h 21:1521点15分关机,如执行时间超过此时间,隔天执行 gerrycheng@ubuntu:~$ shutdown -h +10系统再过10分钟自动关机 gerrycheng@ubuntu:~$ shutdown -r now 系统立刻重启 gerrycheng@ubuntu:~$ shutdown -r +30 'The system will reboot'30分钟后重启并提示消息给在线用户 gerrycheng@ubuntu:~$ shutdown -k now 'This system will reboot'系统不会关机,但发出警告消息
切换执行等级:init
run level 0:关机
run level 3:命令行模式
run level 5:图形界面模式
run level 6:重启
Linux 文件属性
root@ubuntu:~# ls -al total 24 drwxrwxrwx 3 root root 4096 Dec 23 01:08 . drwxr-xr-x 22 root root 4096 Dec 23 00:20 .. -rw------- 1 root root 340 Dec 30 22:59 .bash_history -rw-r--r-- 1 root root 3106 Feb 19 2014 .bashrc drwx------ 2 root root 4096 Dec 23 00:29 .gconf -rw-r--r-- 1 root root 140 Feb 19 2014 .profile [权限][连接][所有者][用户组][文件大小][修改日期][文件名]
文件类型是
[d]
则是目录,是[-]
则是文件,是[l]
则是连接文件(linkfile),是[b]
表示设备文件里的可供存储的接口设备,是[c]
表示设备文件里面的串行端口设备。接下来的字符,以3个为一组,
[r]
代表 Read,[w]
代表 Write,[x]
代表 execute(若没有目录的可执行权限,则无法进入这个目录),如里没有权限,会以[-]
表示。第一组为“文件所有者权限”,第二组为“同用户组的权限”,第三组为“其他用户组的权限”
如何改变文件属性与权限
chgrp
:改变文件所属用户组chown
:改变文件所属用户chmod
:改变文件权限
root@ubuntu:~# chgrp [-R] dirname/filename...[-R]是指进行递归操作,即连同子目录下的所有文件、目录都更新成为这个用户组。 root@ubuntu:~# chown [-R] 账号名称 文件或目录root@ubuntu:~# chmod [-R] xyz 文件或目录xyz => r=4,w=2,x=1root@ubuntu:~# chmod u=rwx,go=rx testu=user,go=group,o=other
Linux文件种类与扩展名
文件种类
普通文件(Regular file):用
[-]
表示纯文本文件(ASCII)
二进制文件(Binary)
数据格式文件(Data)
目录(Directory):文件属性第一个字母为
[d]
连接文件(Link):第一个属性为
[l]
设备与设备文件(Device):块(Block)设备文件为
[b]
、字符(Character)设备文件为[c]
套接字(Sockets)属性为
[s]
管道(FIFO,Pipe)属性为
[p]
扩展名
sh
:脚本或批处理文件Z、tar、tar.gz、zip、tgz
:不同压缩软件生成的扩展名html、php
:网页相关文件
Linux文件名长度限制
在Linux下面,使用默认的Ext2/Ext3文件系统时,文件的文件名限制为:
单一文件或目录的最大容许文件名为255个字符
包含完整路径名称及目录(/)的完整文件名为4096个字符
Linux目录配置
FHS(Filesystem Hierarchy Standard)将目录定义成为四种交互作用的形态。
FHS定义出根目录(/)下要有下面这些子目录:
其他目录
usr的意义与内容
var的意义与内容
目录树
绝对路径与相对路径
绝对路径(absolute)是指由根目录(/)开始写起的文件名或目录名。
相对路径(relative)是相对于目前路径的文件名写法。
.
代表当前的目录,也可以用./
来表示..
代表上一层目录,也可以用../
来表示
目录相关操作
常见命令
cd
:切换目录(Change Directory)pwd
:显示路径(Print Working Directory)mkdir
:创建目录(Mak Directory)rmdir
:删除一个空的目录(Remove Directory)
.
代表当前的目录..
代表上一层目录-
代表前一个工作目录~
代表“目前用户身份”所在的主文件夹~account
代表 account 这个用户的主文件夹
pwd
root@ubuntu:/var# cd lockroot@ubuntu:/var/lock# pwd/var/lock root@ubuntu:/var/lock# pwd -P/run/lock root@ubuntu:/var/lock# [-P]显示正确路径而不是连接文件
mkdir
root@ubuntu:~# mkdir test1/test2/test3mkdir: cannot create directory ‘test1/test2/test3’: No such file or directory root@ubuntu:~# mkdir -p test1/test2/test3root@ubuntu:~# lstest test1
rmdir
root@ubuntu:~# lstest test1 root@ubuntu:~# rmdir testroot@ubuntu:~# rmdir test1/rmdir: failed to remove ‘test1/’: Directory not empty root@ubuntu:~# rmdir -p test1/test2/test3/root@ubuntu:~# lsroot@ubuntu:~# 加[-p]参数删除嵌套的空的目录
执行文件路径的变量:$PATH
root@ubuntu:~# echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin root@ubuntu:~# ^Croot@ubuntu:~# su - gerrycheng 用 gerrycheng 的身份列出查询路径 gerrycheng@ubuntu:~$ echo $PATH/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games 不包含sbin gerrycheng@ubuntu:~$ ifconfigCommand 'ifconfig' is available in '/sbin/ifconfig'The command could not be located because '/sbin' is not included in the PATH environment variable.This is most likely caused by the lack of administrative privileges associated with your user account.ifconfig: command not found gerrycheng@ubuntu:/$ ./sbin/ifconfig 根据绝对路径使用命令可以正常运行 eth0 Link encap:Ethernet HWaddr 00:0c:29:42:42:37 inet addr:192.168.42.163 Bcast:192.168.42.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe42:4237/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:31 errors:0 dropped:0 overruns:0 frame:0 TX packets:93 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:3716 (3.7 KB) TX bytes:12625 (12.6 KB) Interrupt:19 Base address:0x2000 gerrycheng@ubuntu:/$ PATH="$PATH":./sbin 将sbin加入gerrycheng gerrycheng@ubuntu:/$ echo $PATH/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:./sbin gerrycheng@ubuntu:/$ ifconfig eth0 Link encap:Ethernet HWaddr 00:0c:29:42:42:37 inet addr:192.168.42.163 Bcast:192.168.42.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe42:4237/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:33 errors:0 dropped:0 overruns:0 frame:0 TX packets:95 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4118 (4.1 KB) TX bytes:13009 (13.0 KB) Interrupt:19 Base address:0x2000
文件与目录管理
查看文件与目录:ls
-a:列出全部文件,连同隐藏文件
-A:列出全部文件,连同隐藏文件,但不包括 . 及 .. 这两个目录
-d:列出目录本身
-f:列出结果,不进行排序,ls默认会以文件名排序
-F:根据文件、目录等信息给予附加数据结构:* 代表可执行文件,/ 代表目录,= 代表 socket 文件, | 代表 FIFO 文件
-h:将文件容量以易读的方式显示出来
-i:列出 inode 号码
-l:列出长数据串,包含文件的属性与权限等数据
-n:列出 UID 与 GID
-r:将排序结果反向输出
-R:连同子目录一起列出
-S:以文件容量大小排序,而不是用文件名排序
-t:依时间排序,而不是用文件名
--color--=never:不要颜色显示
--color--=always:显示颜色
--full-time:以完整时间模式
--time={atime,ctime}:输出访问时间或改变权限属性时间而非内容更改时间
复制、删除与移动
cp
复制文件或目录
-a:相当于-pdr的意思
-d:若源文件为连接文件的属性,则复制连接文件属性而非文件本身
-f:若目标文件已经存在且无法开房,则删除后再尝试一次
-i:若目标文件已经存在,在覆盖时会进行询问
-l:进行硬连接的连接文件创建,而非复制文件本身
-p:连同文件的属性一起复制过去,而非使用默认属性
-r:递归持续复制,用于目录的复制
-s:复制成为符号链接文件,即“快捷方式”文件
-u:若destination 比 source 旧才更新 destination
注意,如果源文件有两个以上,则最后一个目的文件一定要是“目录”才可以
rm
移除文件或目录
-f:忽略不存在的文件,不出现警告信息
-i:互动模式,在删除前询问用户是否操作
-r:递归删除,目录的删除
mv
移动文件与目录或更名
-f:如果目标文件已经存在,不询问直接覆盖
-i:若目标文件已经存在,询问是否覆盖
-u:若目标文件已经存在,且源文件比较新,才会更新
注意,如果源文件或目录有两个以上,则最后一个目的文件一定要是“目录”才可以
取得路径的文件名与目录名称
root@ubuntu:~# basename /etc/pm/sleep.d/sleep.d root@ubuntu:~# dirname /etc/pm/sleep.d//etc/pm
文件内容查阅
cat
:从第一行开始显示文件内容,-n 打印出行号tac
:从最后一行开始显示nl
:显示的时候输出行号more
:一页一页显示文件内容,输入 "/字符串" 后向下查询该字符串less
:与 more 类似,但可以往前翻页,'/' 向下查询,'?' 向上查询head、tail
:只看头几行及只看后几行,-n 代表显示几行od
:以二进制方式读取文件,od [-t TYPE],TYPE --> a(默认字符)、c(ASCII)、d[size](十进制及每个整数占用字节数)、f[size]浮点、o[size]八进制、x[size]十六进制
修改文件时间或创建新文件:touch
最常使用的情况是:
创建一个空文件
将某个文件日期修改为特定日期(mtime 与 atime)
mtime
= modification time(ls -l 默认显示mtime)ctime
= status time (如权限属性改变时)atime
= access time
root@ubuntu:~# ls -l /etc/manpath.config -rw-r--r-- 1 root root 5173 Apr 10 2014 /etc/manpath.config root@ubuntu:~# ls -l --time=atime /etc/manpath.config -rw-r--r-- 1 root root 5173 Jan 7 04:32 /etc/manpath.config root@ubuntu:~# ll --time=ctime /etc/manpath.config -rw-r--r-- 1 root root 5173 Dec 23 00:14 /etc/manpath.config
root@ubuntu:~# touch [-acdmt] filename
-a
:仅修改访问时间-c
:仅修改文件的时间-d
:后面可以接想要修改的日期或时间-m
:仅修改mtime-t
:后面可以接想要修改的时间
root@ubuntu:~# cd /tmp/root@ubuntu:/tmp# touch testtouchroot@ubuntu:/tmp# ll testtouch -rw-r--r-- 1 root root 0 Jan 7 06:15 testtouch root@ubuntu:/tmp# cp -a ~/.bashrc bashrcroot@ubuntu:/tmp# ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc -rw-r--r-- 1 root root 3106 Feb 19 2014 bashrc -rw-r--r-- 1 root root 3106 Jan 7 05:10 bashrc -rw-r--r-- 1 root root 3106 Jan 7 06:16 bashrc 分号代表依次执行命令 root@ubuntu:/tmp# touch -d "two days ago" bashrc touch: invalid date format ‘two days ago’ root@ubuntu:/tmp# touch -d "2 days ago" bashrc root@ubuntu:/tmp# ll bashrc ;ll --time=atime bashrc ;ll --time=ctime bashrc -rw-r--r-- 1 root root 3106 Jan 5 06:21 bashrc -rw-r--r-- 1 root root 3106 Jan 5 06:21 bashrc -rw-r--r-- 1 root root 3106 Jan 7 06:21 bashrc root@ubuntu:/tmp# touch -t 1411130113 bashrc root@ubuntu:/tmp# ll bashrc ;ll --time=atime bashrc ;ll --time=ctime bashrc -rw-r--r-- 1 root root 3106 Nov 13 01:13 bashrc -rw-r--r-- 1 root root 3106 Nov 13 01:13 bashrc -rw-r--r-- 1 root root 3106 Jan 7 06:23 bashrc
文件与目录的默认权限与隐藏权限
umask
文件默认权限
root@ubuntu:/tmp# umask0022root@ubuntu:/tmp# umask -Su=rwx,g=rx,o=rx 看后3位“002”,数字代表要拿掉的权限