纯粹按着鸟哥的书上的基本命令打一遍不喜勿喷

Chapter5.首次登录

一.基础命令:

1.显示时间和日期的命令:date

dzhwen@deng:~$ date
2014年 02月 23日 星期日 :: CST
dzhwen@deng:~$ date +%Y/%m/%d
//
dzhwen@deng:~$ date +%H:%M
:

2.显示日历:cal

dzhwen@deng:~$ cal
二月
日 一 二 三 四 五 六

3.计算器:

dzhwen@deng:~$ bc

二.热键:

1.[Tab]按键:

a.[Tab] 接在一串命令的第一个命令的后面,则为“命令补全”;
b.[Tab] 接在一串命令的第二个命令以后时,则为“文件补全”;

2.[Ctrl]-c : 中止当前执行的程序

3.[Ctrl]-d:退出字符界面

4.man + 指令 :对于要查找指令的说明

5.数据同步写入磁盘:sync

二.重启,关机:

root@deng:~# shutdown -h now
立刻关机,其中now相当于时间为0的状态
root@deng:~# shutdown -h :
系统在今天的17:00关机,如果在18:00才执行该命令,则隔天才关机
root@deng:~# shutdown -h +
系统再过10分钟后自动关机
root@deng:~# shutdown -r now
系统立刻重启
root@deng:~# shutdown -r + 'The system will reboot.'
再过30分钟系统会重启,并显示后面的消息给所有在线的用户

Chapter6.Linux的文件权限与目录配置

一.Linux文件属性

1.ls -al

root@deng:~# ls -al
总用量
drwx------ root root 11月 : .
drwxr-xr-x root root 10月 : ..
-rw------- root root 2月 : .bash_history
-rw-r--r-- root root 4月 .bashrc
drwx------ root root 10月 : .cache
drwx------ root root 10月 : .config
drwx------ root root 10月 : .dbus
drwx------ root root 11月 : .gconf
drwx------ root root 11月 : .gnome2
drwx------ root root 10月 : .gnome2_private
drwx------ root root 10月 : .gvfs
drwxr-xr-x root root 10月 : .local
-rw-r--r-- root root 4月 .profile
drwx------ root root 2月 : .pulse
-rw------- root root 10月 : .pulse-cookie
drwxr-xr-x root root 11月 : .vim
-rw------- root root 11月 : .viminfo
-rw-r--r-- root root 10月 : .vimrc

ls——list,显示文件的文件名与相关属性;参数“-al”则表示列出所有的文件详细的权限与属性。

r——可读;w——可写;x——可执行;

第二列表示有多少文件连接到此节点;第三列表示这个文件(或目录)的“所有者帐号”;第四列表示这个文件的所属用户组;第五列为这个文件的容量大小,单位为B

第六列为这个文件的创建文件爱你日期或最近修改日期;第七列为该文件名

2.修改文件属性与权限

chgrp:改变文件所属用户组

root@deng:~# chgrp 用户组 文件名

chown:改变文件所有者

root@deng:~# chown 帐号名称:组名 文件或目录

应用:当将某个文件复制给别的用户(同一或不同用户组)时,单纯的cp复制给人家,人家还是没有权限对其进行修改,这时需要对文件的所有者进行修改。

chmod:改变文件的权限

root@deng:~# chmod 数字(3位) 文件或目录
root@deng:~# chmod u=rwx,go=rx 文件名
root@deng:~# chmod a-x 文件名 (a——all,'-'指除去)

3.查看Linux版本

dzhwen@deng:~$ uname -r
3.8.--generic   #查看实际的内核版本
dzhwen@deng:~$ uname -a
Linux deng 3.8.--generic #~precise1-Ubuntu SMP Wed Aug :: UTC i686 i686 i386 GNU/Linux
dzhwen@deng:~$ uname -m
i686
dzhwen@deng:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04. LTS
Release: 12.04
Codename: precise

Chapter7.Linux文件与目录管理

1.目录的相关操作

.     代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表“目前用户身份”所在的主文件夹
cd:切换目录
pwd [-p]:显示当前目录,加入-p代表显示正确的完整路径,不加入代表显示连接文件的数据显示
mkdir [-mp]:新建一个新的目录,加入-p参数,可以自行创建多层目录
# mkdir -m 711 test2   参数-m强制设置属性
rmdir [-p] 目录名称:删除一个空的目录
#rmdir test   若尚有内容,则无法删除
-p:连同上层“空的”目录也一起删除

注意:仅输入cd时,代表的是cd ~

2.文件和目录管理

a.查看文件与目录:ls

常用参数:

-a:全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)

-d : 仅列出目录本身,而不是列出目录内的文件数据

-l: 列出长数据串,包含文件的属性与权限等数据。

b.复制:cp [参数]  源文件  目标文件

常用参数:

-a : 相当于-pdr

-i :  若目标文件已经存在时,在覆盖时会先询问操作的进行。

-r :  递归持续复制,用于目录的复制行为。

c.移除文件或目录:rm [-fir] 文件或目录

参数:

-f : 就是force的意思,忽略不存在的文件,不会出现警告信息;

-i:互动模式,在删除前会询问用户是否操作;

-r:递归删除,最常用在目录的删除了。这是非常危险的操作!!

d.移动文件与目录,或更名:

mv [-fiu] source destination

或:mv [options] source1 source2 source3 .... directory

参数:

-f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i:若目标文件(destination)已经存在时,就会询问是否覆盖;

-u:若目标文件已经存在,且source比较新,才会更新。

3.取得路径的文件名与目录名称

dzhwen@deng:~$ basename ./python文件/Homework/Chapter5/5_5.py    #文件名
5_5.py
dzhwen@deng:~$ dirname ./python文件/Homework/Chapter5/5_5.py #目录名
./python文件/Homework/Chapter5

4.文件内容查询

 cat:由第一行开始显示文件内容
tac:从最后一行开始显示,可以看出tac是cat的倒写形式
nl:显示的时候,顺便输出行号
more:一页一页地显示内容
less:与more类似,但是比more更好的是,它可以往前翻页!
head:只看头几行
tail:只看结尾几行
od:以二进制的方式读取文件内容!

5.修改文件时间或创建新文件:touch [-acdmt] 文件

参数:

-a:仅修改访问时间;

-c:仅修改文件的时间,若该文件不存在则不创建新文件

-d:后面可以修改的日期而不用目前的时间,也可以使用--date=“日期或时间”;

-m:仅修改mtime;

-t:后面可以接欲修改的时间而不用目前的时间,格式为[YYMMDDhhmm]

6.文件默认权限:umask

注意:umask的分数是指“该默认值需要减掉的权限

新建文件时:(--rw-rw-rw-)      新建目录时:(drwxrwxrwx)

dzhwen@deng:~$ umask

dzhwen@deng:~$ sudo -i
[sudo] password for dzhwen:
root@deng:~# umask

7.设置文件的隐藏属性:chattr;显示文件的隐藏属性:lsattr

Chapter8.Linux磁盘与文件系统管理

· 基本上Linux最主要的文件系统是Ext2,该文件系统内的信息主要有:

1.superblock:记录此文件系统的整体信息,包括inode/block 的总量,使用量,剩余量,以及文件系统的格式与相关信息等。

2.inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码。

3.block:实际记录文件的内容,若文件太大时,会占用多个block。

· Ext2文件系统的数据访问为索引式文件系统。

· 需要碎片整理的原因就是文件写入的block太过于离散了,此时文件读取的性能将会变得很差所致。这个时候可以通过碎片整理将同一个文件所属的blocks汇集在一起。

· Ext2文件系统主要有boot sector,superblock,inode bitmap,block bitmap,inode table,data block等六大部分。

· data block是用来放置文件内容数据地方,在Ext2文件系统中所支持的block大小有1KB,2KB及4KB三种而已。

· inode记录文件的属性/权限等数据,每个inode大小均固定为128bytes;每个文件都仅会占用一个inode而已;因此文件系统能够新建的文件数量与inode的数量有关。

· 文件的block记录文件的实际数据,目录的block则记录该目录下面文件名与其inode号码的对照表。

· 日志文件系统会多出一块记录区,随时记载文件系统的主要活动,可加快系统恢复时间。

· Linux文件系统为增加性能,会让主存储器作为大量的磁盘高速缓存;

· 实际连接(硬链接)只是多了一个文件名对该inode号码的连接而已。

· 符号链接就类似Windows的快捷方式功能。

· 磁盘的使用必需经过分区,格式化与挂载,分别惯用的命令为fdisk,mkfs和mount;

· 开机自动挂载可参考/etc/fstab的设置,设置完毕务必使用mount -a 测试语法正确否。

Chapter9.Linux磁盘与文件系统管理

· 压缩命令为通过一些运算方法去将原本的文件进行压缩,以减少文件所占用的磁盘空间。压缩前与压缩后的文件所占用的磁盘空间比值,就可以称为“压缩比”。

· 压缩的好处是可以减少磁盘空间的浪费,在www网站也可以利用文件压缩技术进行数据的传送,好让网站带宽的可利用率上升。

· 压缩文件的扩展名大多是.tar,*.tar.gz,*.tgz,*.gz,*.Z,*.bz2。

· 常见的压缩命令有gzip与bzip2,其中bzip2压缩比gzip还要更好,建议使用bzip2。

· tar可以用来进行文件打包,并可支持gzip或bzip2的压缩。

· 压   缩:tar -jcv -f filename.tar.bz2 被压缩的文件或目录名称。

· 查   询:tar -jtv -f filename.tar.bz2 。

· 解压缩:tar -jxv -f filename.tar.bz2 -C 欲被解压缩的目录。

· dump 命令可备份文件系统或单一目录。

· dump 的备份若针对文件系统时,可进行0~9的level差异备份。其中level 0 为完整备份。

· restore 命令可还原被dump构建的备份文件。

· 要新建光盘刻录数据时,可通过mkisofs命令来构建。

· 可通过cdrecord 来写入CD或DVD刻录机。

· dd可备份完整的分区或磁盘,因为dd可读取磁盘的扇区表面数据。

· cpio 为相当优秀的备份命令,不过必须要搭配类似find命令来读入欲备份的文件名数据,才可进行备份操作。

Chapter10.vim程序编辑器

vim不用说了吧,功能强大的编辑器。问题还是要记的命令特别多,没办法,好好学。

Chapter11.认识与学习bash

1.由于内核在内存中受保护的块,因此我们必须要通过“Shell”将我们输入的命令与Kernel通信,好让Kernel可以控制硬件来正确无误地工作。

2.学习shell的原因主要有:命令行界面的shell在各大distribution都一样;远程管理时命令行界面速度较快;shell是管理Linux系统非常重要的一环,因为Linux内很多控制都是以shell编写的。

3.系统合法的shell均写在/etc/shells 文件中。

4.用户默认登录取得的shell记录于/etc/passwd 的最后一个字段。

5.type可以用来找到执行命令为何种类型。其中各种含义:file : 表示为外部命令;alias : 表示该命令为命令别名所设置的名称;builtin : 表示该命令为bash 内置的命令功能。

 dzhwen@deng:~$ type ls
ls 是 `ls --color=auto' 的别名
dzhwen@deng:~$ type -t ls
alias
dzhwen@deng:~$ type -a ls
ls 是 `ls --color=auto' 的别名
ls 是 /bin/ls
dzhwen@deng:~$ type cd
cd 是 shell 内嵌

6.变量就是以一组文字或符号等来替换一些设置或者是一串保留的数据。变量主要有环境变量与自定义变量,或称为全局变量与局部变量。

7.用env查看环境变量与常见环境变量说明

dzhwen@deng:~$ env
SSH_AGENT_PID=
GLADE_PIXMAP_PATH=:
TERM=xterm
SHELL=/bin/bash
XDG_MENU_PREFIX=xfce-
XDG_SESSION_COOKIE=bd0043ad08cbeac04bd685950000000a-1393769511.366101-
WINDOWID=
GNOME_KEYRING_CONTROL=/tmp/keyring-oOOnHB
USER=dzhwen
LS_COLORS=rs=:di=;:ln=;:mh=:pi=;:so=;:do=;:bd=;;:cd=;;:or=;;:su=;:sg=;:ca=;:tw=;:ow=;:st=;:ex=;:*.tar=;:*.tgz=;:*.arj=;:*.taz=;:*.lzh=;:*.lzma=;:*.tlz=;:*.txz=;:*.zip=;:*.z=;:*.Z=;:*.dz=;:*.gz=;:*.lz=;:*.xz=;:*.bz2=;:*.bz=;:*.tbz=;:*.tbz2=;:*.tz=;:*.deb=;:*.rpm=;:*.jar=;:*.war=;:*.ear=;:*.sar=;:*.rar=;:*.ace=;:*.zoo=;:*.cpio=;:*.7z=;:*.rz=;:*.jpg=;:*.jpeg=;:*.gif=;:*.bmp=;:*.pbm=;:*.pgm=;:*.ppm=;:*.tga=;:*.xbm=;:*.xpm=;:*.tif=;:*.tiff=;:*.png=;:*.svg=;:*.svgz=;:*.mng=;:*.pcx=;:*.mov=;:*.mpg=;:*.mpeg=;:*.m2v=;:*.mkv=;:*.webm=;:*.ogm=;:*.mp4=;:*.m4v=;:*.mp4v=;:*.vob=;:*.qt=;:*.nuv=;:*.wmv=;:*.asf=;:*.rm=;:*.rmvb=;:*.flc=;:*.avi=;:*.fli=;:*.flv=;:*.gl=;:*.dl=;:*.xcf=;:*.xwd=;:*.yuv=;:*.cgm=;:*.emf=;:*.axv=;:*.anx=;:*.ogv=;:*.ogx=;:*.aac=;:*.au=;:*.flac=;:*.mid=;:*.midi=;:*.mka=;:*.mp3=;:*.mpc=;:*.ogg=;:*.ra=;:*.wav=;:*.axa=;:*.oga=;:*.spx=;:*.xspf=;:
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
GLADE_MODULE_PATH=:
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
SSH_AUTH_SOCK=/tmp/ssh-gYTDUbyf1934/agent.
SESSION_MANAGER=local/deng:@/tmp/.ICE-unix/,unix/deng:/tmp/.ICE-unix/
DEFAULTS_PATH=/usr/share/gconf/xubuntu.default.path
XDG_CONFIG_DIRS=/etc/xdg/xdg-xubuntu:/etc/xdg:/etc/xdg
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
DESKTOP_SESSION=xubuntu
QT_IM_MODULE=xim
PWD=/home/dzhwen
XMODIFIERS=@im=ibus
GNOME_KEYRING_PID=
LANG=zh_CN.UTF-
MANDATORY_PATH=/usr/share/gconf/xubuntu.mandatory.path
UBUNTU_MENUPROXY=libappmenu.so
GDMSESSION=xubuntu
SHLVL=
HOME=/home/dzhwen
LANGUAGE=zh_CN:zh
LOGNAME=dzhwen
XDG_DATA_DIRS=/usr/share/xubuntu:/usr/local/share/:/usr/share/:/usr/share
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-E2PvMmVd6n,guid=3b8bc3a0f6b5a2e9db80a81200000047
LESSOPEN=| /usr/bin/lesspipe %s
DISPLAY=:0.0
GLADE_CATALOG_PATH=:
LIBGLADE_MODULE_PATH=:
XDG_CURRENT_DESKTOP=XFCE
GTK_IM_MODULE=ibus
LESSCLOSE=/usr/bin/lesspipe %s %s
COLORTERM=Terminal
XAUTHORITY=/home/dzhwen/.Xauthority
_=/usr/bin/env

8.仅用export 也会将所有的“环境变量”显示出来。

dzhwen@deng:~$ export
declare -x COLORTERM="Terminal"
declare -x DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-E2PvMmVd6n,guid=3b8bc3a0f6b5a2e9db80a81200000047"
declare -x DEFAULTS_PATH="/usr/share/gconf/xubuntu.default.path"
declare -x DESKTOP_SESSION="xubuntu"
declare -x DISPLAY=":0.0"
declare -x GDMSESSION="xubuntu"
declare -x GLADE_CATALOG_PATH=":"
declare -x GLADE_MODULE_PATH=":"
declare -x GLADE_PIXMAP_PATH=":"
declare -x GNOME_KEYRING_CONTROL="/tmp/keyring-oOOnHB"
declare -x GNOME_KEYRING_PID=""
declare -x GTK_IM_MODULE="ibus"
declare -x HOME="/home/dzhwen"
declare -x LANG="zh_CN.UTF-8"
declare -x LANGUAGE="zh_CN:zh"
declare -x LESSCLOSE="/usr/bin/lesspipe %s %s"
declare -x LESSOPEN="| /usr/bin/lesspipe %s"
declare -x LIBGLADE_MODULE_PATH=":"
declare -x LOGNAME="dzhwen"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:"
declare -x MANDATORY_PATH="/usr/share/gconf/xubuntu.mandatory.path"
declare -x OLDPWD
declare -x PATH="/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
declare -x PWD="/home/dzhwen"
declare -x QT_IM_MODULE="xim"
declare -x SESSION_MANAGER="local/deng:@/tmp/.ICE-unix/1992,unix/deng:/tmp/.ICE-unix/1992"
declare -x SHELL="/bin/bash"
declare -x SHLVL=""
declare -x SSH_AGENT_PID=""
declare -x SSH_AUTH_SOCK="/tmp/ssh-gYTDUbyf1934/agent.1934"
declare -x TERM="xterm"
declare -x UBUNTU_MENUPROXY="libappmenu.so"
declare -x USER="dzhwen"
declare -x WINDOWID=""
declare -x XAUTHORITY="/home/dzhwen/.Xauthority"
declare -x XDG_CONFIG_DIRS="/etc/xdg/xdg-xubuntu:/etc/xdg:/etc/xdg"
declare -x XDG_CURRENT_DESKTOP="XFCE"
declare -x XDG_DATA_DIRS="/usr/share/xubuntu:/usr/local/share/:/usr/share/:/usr/share"
declare -x XDG_MENU_PREFIX="xfce-"
declare -x XDG_SEAT_PATH="/org/freedesktop/DisplayManager/Seat0"
declare -x XDG_SESSION_COOKIE="bd0043ad08cbeac04bd685950000000a-1393769511.366101-937543318"
declare -x XDG_SESSION_PATH="/org/freedesktop/DisplayManager/Session0"
declare -x XMODIFIERS="@im=ibus"

9.set可以查看目前bash环境下的所有输入变量。

10.$?也为变量,是前一个命令执行完毕后的回传码。在Linux回传码为0代表执行成功。

11.locale可用于查看语系数据。

dzhwen@deng:~$ locale
LANG=zh_CN.UTF-
LANGUAGE=zh_CN:zh
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

12.可用read 让用户由键盘输入变量的值。

dzhwen@deng:~$ read var
Hello Bash!
dzhwen@deng:~$ echo $var
Hello Bash!
dzhwen@deng:~$ read -p "Please input your name:" -t named
Please input your name:Deng Zhuowen
dzhwen@deng:~$ echo $named
Deng Zhuowen

13.ulimit 可用以限制用户使用系统的资源情况。

14.通配符及其含义:

* —— 代表0个到无穷多个任意字符。

?—— 代表一定有一个任意字符

[ ]——同样代表一定有一个在中括号内的字符(非任意字符)。例如[abcd]代表一定有一个字符,可能是a,b,c,d这四个任何一个。

[-]——若有减号在中括号内时,代表在编码顺序内的所有字符。例如[0-9]代表0到9之间的所有数字,因为数字的语系编码是连续的。

[^]——若中括号内的第一个字符为指数符号(^),那表示原向选择,例如[^abc]代表一定有一个字符,只要是非a,b,c的其他字符就接受的意思。

15.数据流重定向通过>,2>,<之类的符号将输出的信息转到其他文件或设备去。

16.连续命令的执行可通过;&& || 等符号来处理。

17.管道命令的重点是它仅会处理standard output,对于standard error output会予以忽略。管道命令必须要能够接收来自前一个命令的数据成为standard input 继续处理才行。

18.重点运用的管道命令,例子比较多的主要有:cut,grep,sort,wc,uniq,tee,tr,col,join,paste,expand,split,xargs等。

Chapter12.正则表达式与文件格式化处理

1.不随语系改变的特殊符号:

[:alnum:] —— 0-9,A-Z,a-z

[:alpha:] —— A-Z,a-z

[:blank:] —— 代表空格键与[Tab]按键

[:cntrl:] —— 代表键盘上面的控制按键,即包括CR,LF,Tab,Del 等。

[:digit:] —— 0-9

[:graph:] —— 除了空格符(空格键和[Tab]按键)外的其他所有按键

[:lower:] —— a-z

[:print:] —— 代表所有可以被打印出来的字符

[:punct:] —— 代表标点符号,即"'?!;:#$

[:upper:] —— A-Z

[:space:] —— 任何会产生空白的字符

[:xdigit:] —— 代表十六进制的数字类型,因此包括0-9,A-F,a-f的数字与字符。

2.grep与基础正则表达式

#以grep找出内含eth的那行
dzhwen@deng:~$ dmesg | grep 'eth'
#要将找到的关键字显色,且加上行号来表示
dzhwen@deng:~$ dmesg | grep -n --color=auto 'eth'
#在关键字所在行的前两行与后三行也一起找出来显示。
dzhwen@deng:~$ dmesg | grep -n -A3 -B2 --color=auto 'eth'

查找加显示行号:

dzhwen@deng:~$ grep -n 'the' regular_express.txt

反向选择:

dzhwen@deng:~$ grep -vn 'the' regular_express.txt

忽略大小写:

dzhwen@deng:~$ grep -in 'the' regular_express.txt

[ ]里面不论有几个字符,它都只代表某“一个”字符,如查找test或taste

dzhwen@deng:~$ grep -n 't[ae]st' regular_express.txt
:I can't finish the test.
:Oh! The soup taste good.

反向选择,比如不想oo前面不是小写字母

dzhwen@deng:~$ grep -n '[^a-z]oo' regular_express.txt
:Football game is not use feet only.
dzhwen@deng:~$ grep -n '[0-9]' regular_express.txt
:However, this dress is about $ dollars.
:You are the best is mean you are the no. .
dzhwen@deng:~$ grep -n '[[:digit:]]' regular_express.txt
:However, this dress is about $ dollars.
:You are the best is mean you are the no. .

行首与行尾字符:^$

dzhwen@deng:~$ grep -n '^[[:lower:]]' regular_express.txt
:apple is my favorite food.
:this dress doesn't fit me.
:motorcycle is cheap than car.
:the symbol '*' is represented as start.
:google is the best tools for search keyword.
:goooooogle yes!
:go! go! Let's go. dzhwen@deng:~$ grep -n '\.$' regular_express.txt
:"Open Source" is a good mechanism to develop programs.
:apple is my favorite food.
:Football game is not use feet only.
:this dress doesn't fit me.
:motorcycle is cheap than car.
:This window is clear.
:the symbol '*' is represented as start.
:You are the best is mean you are the no. .
:The world <Happy> is the same with "glad".
:I like dog.
:google is the best tools for search keyword.
:go! go! Let's go.
#不要空白行和以#开头的行
dzhwen@deng:~$ grep -v '^$' regular_express.txt | grep -v '^#'
"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
However, this dress is about $ dollars.
GNU is free air not free beer.
Her hair is very beauty.
I can't finish the test.
Oh! The soup taste good.
motorcycle is cheap than car.
This window is clear.
the symbol '*' is represented as start.
Oh! My god!
The gd software is a library for drafting programs.
You are the best is mean you are the no. .
The world <Happy> is the same with "glad".
I like dog.
google is the best tools for search keyword.
goooooogle yes!
go! go! Let's go.

注意: “.* ” 就代表零个或多个任意字符的意思

dzhwen@deng:~$ grep -n 'g.*g' regular_express.txt
:"Open Source" is a good mechanism to develop programs.
:The gd software is a library for drafting programs.
:google is the best tools for search keyword.
:goooooogle yes!
:go! go! Let's go.
dzhwen@deng:~$ grep -n 'g*g' regular_express.txt
:"Open Source" is a good mechanism to develop programs.
:Football game is not use feet only.
:Oh! The soup taste good.
:Oh! My god!
:The gd software is a library for drafting programs.
:The world <Happy> is the same with "glad".
:I like dog.
:google is the best tools for search keyword.
:goooooogle yes!
:go! go! Let's go.

限定连续RE字符范围{}

因为{与}的符号在shell是有特殊意义的,因此,我们必须要使用转义字符\来让它失去特殊意义才行。例子:我们要找出g后面接2到5个o,然后再接一个g的字符串。

dzhwen@deng:~$ grep -n 'go\{2,5\}g' regular_express.txt
:google is the best tools for search keyword.

3.sed工具

d:删除,将第2-5行删除

dzhwen@deng:~$ nl /etc/passwd | sed '2,5d'
root:x:::root:/root:/bin/bash
games:x:::games:/usr/games:/bin/sh
man:x:::man:/var/cache/man:/bin/sh
lp:x:::lp:/var/spool/lpd:/bin/sh
mail:x:::mail:/var/mail:/bin/sh
news:x:::news:/var/spool/news:/bin/sh
uucp:x:::uucp:/var/spool/uucp:/bin/sh
proxy:x:::proxy:/bin:/bin/sh
www-data:x:::www-data:/var/www:/bin/sh
backup:x:::backup:/var/backups:/bin/sh
list:x:::Mailing List Manager:/var/list:/bin/sh
irc:x:::ircd:/var/run/ircd:/bin/sh
gnats:x:::Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:::nobody:/nonexistent:/bin/sh
libuuid:x::::/var/lib/libuuid:/bin/sh
syslog:x::::/home/syslog:/bin/false
messagebus:x::::/var/run/dbus:/bin/false
colord:x:::colord colour management daemon,,,:/var/lib/colord:/bin/false
lightdm:x:::Light Display Manager:/var/lib/lightdm:/bin/false
whoopsie:x::::/nonexistent:/bin/false
avahi-autoipd:x:::Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
avahi:x:::Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
usbmux:x:::usbmux daemon,,,:/home/usbmux:/bin/false
kernoops:x:::Kernel Oops Tracking Daemon,,,:/:/bin/false
pulse:x:::PulseAudio daemon,,,:/var/run/pulse:/bin/false
rtkit:x:::RealtimeKit,,,:/proc:/bin/false
speech-dispatcher:x:::Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh
hplip:x:::HPLIP system user,,,:/var/run/hplip:/bin/false
saned:x::::/home/saned:/bin/false
dzhwen:x:::Deng:/home/dzhwen:/bin/bash
guest-SgMGr3:x:::Guest,,,:/tmp/guest-SgMGr3:/bin/bash
mysql:x:::MySQL Server,,,:/nonexistent:/bin/false

a:新增。在第2行末尾添加“drink tea?”

dzhwen@deng:~$ nl /etc/passwd | sed '2a drink tea?'
root:x:::root:/root:/bin/bash
daemon:x:::daemon:/usr/sbin:/bin/sh
drink tea?
bin:x:::bin:/bin:/bin/sh
sys:x:::sys:/dev:/bin/sh
sync:x:::sync:/bin:/bin/sync

p:打印,也就是将某个选择的数据打印出来。通常p会与参数 sed -n 一起运行。

dzhwen@deng:~$ nl /etc/passwd | sed -n '5,7p'
sync:x:::sync:/bin:/bin/sync
games:x:::games:/usr/games:/bin/sh
man:x:::man:/var/cache/man:/bin/sh

c:替换,c的后面可以接字符串,这些字符串可以替换n1,n2之间的行。

dzhwen@deng:~$ nl /etc/passwd | sed '2,5c No 2-5 number'
root:x:::root:/root:/bin/bash
No - number
games:x:::games:/usr/games:/bin/sh
man:x:::man:/var/cache/man:/bin/sh
lp:x:::lp:/var/spool/lpd:/bin/sh
mail:x:::mail:/var/mail:/bin/sh
news:x:::news:/var/spool/news:/bin/sh
uucp:x:::uucp:/var/spool/uucp:/bin/sh
proxy:x:::proxy:/bin:/bin/sh
www-data:x:::www-data:/var/www:/bin/sh
backup:x:::backup:/var/backups:/bin/sh
list:x:::Mailing List Manager:/var/list:/bin/sh
irc:x:::ircd:/var/run/ircd:/bin/sh
gnats:x:::Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:::nobody:/nonexistent:/bin/sh
libuuid:x::::/var/lib/libuuid:/bin/sh
syslog:x::::/home/syslog:/bin/false
messagebus:x::::/var/run/dbus:/bin/false
colord:x:::colord colour management daemon,,,:/var/lib/colord:/bin/false
lightdm:x:::Light Display Manager:/var/lib/lightdm:/bin/false
whoopsie:x::::/nonexistent:/bin/false
avahi-autoipd:x:::Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
avahi:x:::Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
usbmux:x:::usbmux daemon,,,:/home/usbmux:/bin/false
kernoops:x:::Kernel Oops Tracking Daemon,,,:/:/bin/false
pulse:x:::PulseAudio daemon,,,:/var/run/pulse:/bin/false
rtkit:x:::RealtimeKit,,,:/proc:/bin/false
speech-dispatcher:x:::Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh
hplip:x:::HPLIP system user,,,:/var/run/hplip:/bin/false
saned:x::::/home/saned:/bin/false
dzhwen:x:::Deng:/home/dzhwen:/bin/bash
guest-SgMGr3:x:::Guest,,,:/tmp/guest-SgMGr3:/bin/bash
mysql:x:::MySQL Server,,,:/nonexistent:/bin/false

s:替换,可以直接进行替换的工作。

sed 's/要被替换的字符串/新的字符串/g'

i:插入,i的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行)

4.扩展正则表达式

+ —— 意义:重复一个或一个以上的前一个RE字符

dzhwen@deng:~$ egrep -n 'go+d' regular_express.txt
:"Open Source" is a good mechanism to develop programs.
:Oh! The soup taste good.
:Oh! My god!

? —— 意义:零个或一个的前一个RE字符

dzhwen@deng:~$ egrep -n 'go?d' regular_express.txt
:Oh! My god!
:The gd software is a library for drafting programs.

| —— 意义:用或(or)的方式找出数个字符串。

dzhwen@deng:~$ egrep -n 'gd|good|dog' regular_express.txt
:"Open Source" is a good mechanism to develop programs.
:Oh! The soup taste good.
:The gd software is a library for drafting programs.
:I like dog.

( ) —— 意义:找出“组”字符串

dzhwen@deng:~$ egrep -n 'g(la|oo)d' regular_express.txt
:"Open Source" is a good mechanism to develop programs.
:Oh! The soup taste good.
:The world <Happy> is the same with "glad".

( ) —— 意义:多个重复组的判别

dzhwen@deng:~$ echo 'AxyzxyzxyzxyzC' | egrep 'A(xyz)+C'
AxyzxyzxyzxyzC

5.printf可以通过一些特殊符号来将数据进行格式化输出。

6.awk可以使用“字段”为依据,进行数据的重新整理与输出。

7.文件的比较中,可利用diff及cmp进行比较,其中diff主要用在纯文本文件方面的新旧版本比较。

8.patch命令可以将旧版数据更新到新版(主要由diff创建patch的补丁来源文件)。

Chapter13.学习shell script

1. shell script 程序的组成成分

(1).第一行#!/bin/bash 声明这个script使用的shell名称。

(2). 程序内容的说明

(3). 主要环境变量的声明

(4). 主要程序部分

(5).告知执行结果

2.关于输入输出:echo,read(后接 -p 代表后接提示字)

3.利用test命令的测试功能:

dzhwen@deng:~/scripts$ test -e /scripts && echo "exist" || echo "Not exist"
Not exist
dzhwen@deng:~/scripts$ test -e ~/scripts && echo "exist" || echo "Not exist"
exist

4.利用判断符号[ ]

注意:在中括号[ ]内的每个组件都需要有空格键来分隔;在中括号内的变量,最好以双括号括号起来;在中括号内的常量,最好都以单或双引号括号起来。

#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH read -p "Please input(Y/N) : " yn
[ "$yn" == "Y" -o "$yn" == "y" ] && echo "OK, continue" && exit
[ "$yn" == "N" -o "$yn" == "n" ] && echo "Oh, interrupt!" && exit
echo "I don't know what your choice is" && exit

5.shell script 的默认变量

$# : 代表后接的参数“个数”;

$@:代表“$1","$2","$3","$4"之意,每个变量都是独立的(用双引号括起来);

$*:代表”$1c$2c$3c$4",其中c为分隔字符,默认为空格键。

6.shift:造成参数变量号码偏移

7.利用 if……then 的条件判断式

# 多个条件判断(if ... elif ... else)分多种不同情况执行
if [ 条件判断式一 ]; then
当条件判断式一成立时,可以进行的命令工作内容;
elif [ 条件判断式二 ]; then
当条件判断式二成立时,可以进行的命令工作内容;
else
当条件判断式一与二均不成立时,可以进行的命令工作内容;
fi #提示判断结构的结束

8.利用case...esac 判断

#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH echo "This program will print your selection !"
case $ in
"one")
echo "Your choice is ONE"
;;
"two")
echo "Your choice is TWO"
;;
"three")
echo "Your choice is THREE"
;;
*)
echo "Usage $0 {one|two|three}"
;;
esac
dzhwen@deng:~/scripts$ sh sh12.sh two
This program will print your selection !
Your choice is TWO
dzhwen@deng:~/scripts$ sh sh12.sh three
This program will print your selection !
Your choice is THREE
dzhwen@deng:~/scripts$ sh sh12.sh four
This program will print your selection !
Usage sh12.sh {one|two|three}

9.利用function功能

注意function的内置变量的意义。

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH function printit( ){
echo "Your choice is $1"   #注意内置变量
} echo "This program will print your selection !"
case $ in
"one")
printit
;;
"two")
printit
;;
"three")
printit
;;
*)
echo "Usage $0 {one|two|three}"
;;
esac

10.循环

while [ condition ]  <==中括号内的状态就是判断式
do <==do 是循环的开始
程序段落
done <==done 是循环的结束
until [ condition ]
do
程序段落
done
for var in con1 con2 con3 ...
do
程序段
done
for ( ( 初始值; 限制值; 执行步长 ) )
do
程序段
done

11.shell script 的追踪与调试

sh [-nvx] script.sh
参数:
-n : 不要执行 script,仅查询语法的问题。
-v : 在执行 script 前,先将 script 的内容输出到屏幕上;
-x : 将使用到的 script 内容显示到屏幕上,这是很有用的参数。

后面的暂时不写了,根本就没有机会用到。。。。。。

鸟哥的书——ubuntu命令的更多相关文章

  1. 41个linux命令大全(鸟哥的私房菜)

    转http://www.xmws.cn/show-87-419-1.html 41个linux命令大全 发布作者:微思网络   发布时间:2017-01-10   浏览量:709次 学过linux的人 ...

  2. (整理)ubuntu 的 相关知识(来自 鸟哥的私房菜)

    1. Linux 文件权限概念 $ ls 察看文件的指令 $ ls -al 出所有的文件详细的权限与属性 (包含隐藏档,就是文件名第一个字符为『 . 』的文件) 在你第一次以root身份登入Linux ...

  3. 《鸟哥的Linux私房菜》Chapter11 20180726~20180806

    目录 1.认识Bash这个shell 1.1.硬件.核心与shell 1.2.系统的合法shell和/etc/shells功能 1.3.Bash shell的功能 1.3.1.命令修编功能 1.3.2 ...

  4. 鸟哥的linux私房菜——第十六章学习(程序管理与 SELinux 初探)

    第十六章.程序管理与 SE Linux 初探 在 Linux 系统当中:"触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个 ID ,称为 PID,同时依据启发这个程序的 ...

  5. 每周一书-《鸟哥的Linux私房菜》获奖公布

    <鸟哥的Linux私房菜>一书的赠书活动时间为2016年10月19日到10月31日, 也就是今天结束. 首先要感谢QQ号为:1084830483(路在远方),来自哈尔滨工程大学的同学赠送给 ...

  6. 每周一书-《鸟哥的Linux私房菜基础学习篇(第四版)》台湾原版,你想要吗?

     首先说明,本周活动有效时间为2016年10月19日到2016年10月31日.   目在介绍这本书之前,首先要感谢QQ号为:1084830483(路在远方),来自哈尔滨工程大学的同学赠送给玄魂工作室的 ...

  7. 《鸟哥的linux私房菜》 - linux命令温故而知新

    在公司的某角落里,看到了<鸟哥的linux私房菜>,顿时想看看是什么鬼. 其他时候还要自己去买才有,现在正好,比图书馆方便.看完了,写点啥! 编辑器很重要,一个vim就主要是我的使用方向: ...

  8. 鸟哥的私房菜上 xpenguins 设备(ubuntu 12.04)

    看了一个暑假linux,我觉得很辛苦啊,要很好地利用linux并不是的easy... 今天装了一下鸟哥课后给的xpenguins软件,就是桌面特性软件.会有非常多企鹅下落,本以为能够非常轻松的搞定.没 ...

  9. awk:快速入门(简单实用19例+鸟哥书内容)

    awk 用法:awk ' pattern {action} '  变量名 含义  ARGC 命令行变元个数  ARGV 命令行变元数组  FILENAME 当前输入文件名  FNR 当前文件中的记录号 ...

随机推荐

  1. C1WPF制作OLAP Cube浏览工具

    经过前期一段时间对WPF的学习了解,相信大家对WPF有了一定的了解.今天我们一起来了解使用Component One(简称C1)的WPF控件制作CUBE浏览工具.其实这个OLAP控件官方已经有了很详细 ...

  2. Pascal-S代码注释

    注释参考博文 http://www.cnblogs.com/luxiaodou/p/6025124.html 注释代码 https://github.com/Hesitater/Pascal-S-Co ...

  3. [学习]ulimit

    ulimit User limits - limit the use of system-wide resources. Syntax ulimit [-acdfHlmnpsStuv] [limit] ...

  4. VLD 无法打印堆栈调用情况

    调试时遇到了一个比较郁闷的问题:同样一个MFC工程,复制之后无任何附加操作,VLD便无法正常打印内存泄漏处的堆栈调用了 百度了一下,重要找到了答案:“VLD不支持中文” 复制工程时windows自动在 ...

  5. Qt4问题集锦

    一.Qt程序发布后加载的jpg.jpeg图片不可见 问题的提出: 最近在客户机器上部署安装QT编写的软件,发现只要是jpg.jpeg格式的图片都无法显示出来.最后发现必须按如下述步骤才能显示jpg.j ...

  6. BZOJ3512 DZY Loves Math IV(杜教筛+线性筛)

    注意到n很小,考虑枚举i.现在要求的是f(n,m)=Σφ(in) (i=1~m).显然当n没有平方因子时,φ(in)=φ(i)·φ(n/gcd(i,n))·gcd(i,n).利用φ*1=id又可得φ( ...

  7. log4net日志文件的应用

    日志作为快速定位程序问题的主要手段,日志几乎是所有程序都必须拥有的一部分,下面我们就看下怎么使用log4net.dll文件: 1.下载log4net.dll文件 2.创建自己的项目 3.在自己项目下的 ...

  8. Java pdf转String 并修正格式

    在尝试pdf转成String的时候,首先用python的pdfminer和pdfminer3k去尝试转换,然后资料看不太懂,就尝试用了java, 以下是java的pdfbox写的pdf转String函 ...

  9. 【刷题】BZOJ 1977 [BeiJing2010组队]次小生成树 Tree

    Description 小 C 最近学了很多最小生成树的算法,Prim 算法.Kurskal 算法.消圈算法等等. 正当小 C 洋洋得意之时,小 P 又来泼小 C 冷水了.小 P 说,让小 C 求出一 ...

  10. 【spring学习笔记二】Bean

    ### bean的三种实例化方式: 1.构造 2.静态工厂 3.实例工厂 其中,工厂就是工厂的概念,工厂函数factor-method会返回她生产出来的产品类. 而构造初始化也可以选择初始化方式和销毁 ...