cd ls pwd su du rm cp mv > >> | sort find cat more less top ps free df wget uname grep tar kill wc chmod chown adduser mkdir touch crontab date type/which reboot halt shutdown split diff mount umount fdisk passwd ssh scp rcp sync rsync samba ifconfig netstat ping man sleep alias sed ulimit clear uniq awk ftp samba head/tail curl ln sudo export cut
.. 返回上级目录
rm [options] source..
cp [options] source.. directory
mv [options] source.. directory
find . -type f 表示查找当前目录及其子目录下类型是f的档案 ( . 表示当前目录)
显示瞬时进程的动态,内容与top差不多.
包括:pid,user,%cpu(cpu使用率),%mem(内存使用率),VSZ(虚拟内存占用大小),stat(状态),start(启用时间),time(执行时间),command(所执行的指令)
-s(signal) 其中可用的讯号有 HUP(1),KILL(9),TERM(15), 分别代表著重跑,砍掉,结束,eg: kill -9 mysql 即终止mysql进程
chmod 修改用户对文件的读写和可执行权限
使用方式:
chmod [options] file
u 表示ownerUser, g 表示同组group, o other表示其他用户, a 表示all
+ 表示增加权限, - 表示取消权限, = 表示唯一设定权限
r 表示可读, w 表示可写, x 表示可执行, X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=5
eg:chmod +x file 设置file为可执行文件
chmod 754 file 设置owner可读写执行,group可读可执行,other可读
chmod u+rwx,g+rx,o+w file 增加owner可读写执行权限,增加group读执行权限,增加other写权限
chown 改变文件的所有者,该命令只有root用户才能使用
使用方式:
chown [options] username file
username 文件的新所有者
-R 递归变更文件夹和子目录下的文件所有者
adduser 添加用户
用法: adduser -gid 1000 --home /home/username username
-gid 组id,如果不指定组,则会新建一个组
--home 用户主目录,不指定会默认在/home下创建
addgroup 添加组
mkdir 新建文件夹
使用方式:
mkdir [options] file
常用参数:
-p (parent)目录不存在,则建一个
eg:mkdir qq/aa 如果qq目录不存在,则会报错
mkdir -p qq/aa 如果qq目录不存在,则会新建一个qq目录
touch 改变文件的时间记录,新建文件
使用方式:
touch [options] file
touch filename 新建文件filename
crontab 设置定时任务,linux系统中作为工作时程表任务
时程表的格式如下: f1 f2 f3 f4 f5 program
其中分别对应 : 分钟 小时 日期 月份 星期 可执行程序
当 fn 的位置是 * 表示所有时间都要执行
eg: 0 * * * * /bin/ls 每月每天每小时0分钟的时候执行一次 /bin/ls
30 17 * * 1-5 /bin/ls 每周1-周5下午5点30分执行一次 /bin/ls
0 6-12/3 * 1 * /bin/ls 1月份的每天6点-12点每隔20分钟执行一次 /bin/ls
5,15,25 * * * * /bin/ls 每到1分,15分,25分钟的时候执行一次 /bin/ls
常用参数:
-u 指定时程表用户,一般root权限使用,普通用户只能给自己设置时程表,不指定-u时默认是当前用户
-l 列出所有时程表
-e 编辑时程表文件,保存退出后,系统将自动重启时程表任务
-r 删除时程表任务
使用方式:
$ vi cronfile #先建立cronfile
$ chmod +x cronfile #把cronfile设为可执行文件
$ crontab cronfile #启用cronfile文件,系统就会自动定时执行.
date 可以用来显示或设定系统的日期与时间
显示时间的格式:
%D : 直接显示日期 (mm/dd/yy) eg: date +%D 结果是: 05/20/13
%T : 直接显示时间 (24 小时制) eg: date +%T 结果是: 12:30:26
%X : 相当于 %H:%M:%S eg: date +%X 结果是: 01:10:23 PM
设置时间的格式:
MMDDhhmm[[CC]YY][.ss] 其中 MM 为月份, DD 为日, hh 为小时, mm 为分钟, CC 为年份前两位数字, YY 为年份后两位数字, ss 为秒数.
只有root权限才能设置系统时间,更改了系统时间之后,以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续抱持最新的正确值
常用参数:
-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
-s datestr : 将系统时间设为 datestr 中所设定的时间
-u : 显示目前的格林威治时间
$ sudo date -s '05/22 12:50 (20 13) (.40)'
结果显示系统时间设置为: Wed May 22 12:50:00 CST 2013
type 查找软件在系统中的位置,与which类似
使用方法:
type mysql #查找mysql可执行软件的位置
结果是: mysql is /usr/bin/mysql
reboot 若系统的 runlevel 为 0 或 6 则重启系统,否则唤醒 shutdown (-r)
参数:
-n : 在重开机前不做将记忆体资料写回硬盘的动作
-d : 不把记录写到 /var/log/wtmp 档案里(-n 包含了 -d)
-w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
-f : force,强迫重开机,不呼叫 shutdown 这个指令
-i : 在重开机之前先把所有网络相关的装置先停止
/var/run/utmp 当前的 runlevel 信息从此文件中读取
/var/log/wtmp 新的 runlevel 信息记录将追加到此文件
halt 若系统的 runlevel 为 0 或 6 则关闭系统,否则唤醒 shutdown (-h)
参数:
-n : 在关机前不做将记忆体资料写回硬盘的动作
-d : 不把记录写到 /var/log/wtmp 档案里(-n 包含了 -d)
-w : 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里
-f : force,强迫关机,不呼叫 shutdown 指令
-i : 在关机之前先把所有网络相关的装置先停止
-p : 当关机的时候,顺便做关闭电源(poweroff)的动作
shutdown 执行关机程序,并且在关机前传送讯息给所有使用者,关机前5分钟内拒绝用户登录,shutdown 也可以用来重开机(reboot),这是一种安全的关机模式.
使用方式:
shutdown [options] time [message]
参数 :
-r : 关机并重启系统(reboot)
-h : 关机后切断电源(halt or poweroff)
-c : 取消目前已经进行中的关机动作
-k : 并不会真的关机,只是将警告讯息传送给所有使用者
-t seconds : 设定在几秒钟之后进行关机程序
-n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机
-f : 关机时,不做 fcsk 动作(检查 Linux 档系统)
-F : 关机时,强迫进行 fsck 动作
time : 设定关机的时间,[now],立即关机,[+m],eg:+10 10分钟, hh:mm 24小时制的时分
message : 传送给所有使用者的警告讯息
/var/run/utmp 当前的 runlevel 信息从此文件中读取,环境变量
/var/log/wtmp 新的 runlevel 信息记录将追加到此文件
特别说明,我试了-c参数,无法生效
$ shutdown +10 #设置10分钟之后关机
然后系统开始计时并且发送message给用户,用户无法进入命令行模式,所以-c参数派不上用场
split 拆分文件,拆分后文件名首字母默认为x,默认后缀为2个字母,依次为aa,ab... eg: xaa,xab...
常用参数:
-l 按行分割
-b 按大小分割 M K
-a --suffix-length=N 指定输出文件名的后缀,默认为2个
diff 比较文件的差异,逐行比较文本文件的异同处.指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录
使用方式:
diff [options] [文件或目录1][文件或目录2]
常用参数:
-<行数> 指定要显示多少行的文本.须与-c或-u一起使用
-c context,显示全部内容,并标出不同之处
-d 使用不同的演算法,以较小的单位来做比较
-H 比较大文件时,可加快速度
-p 比较C语言的程序文件时,显示差异所在的函数名称
-q 仅显示有无差异,不显示详细的信息
-r 比较子目录中的文件
-y 以并列的方式显示文件的异同之处
-u 以合并的方式来显示文件内容的不同
mount 挂载
使用方式:
mount -t type device dir
eg: mount --bind olddir newdir 两处都挂载
mount --move olddir newdir 移到newdir
常用参数:
-a 将 /etc/fstab 中所有东西都挂上。
-F 通常与 -a 一起使用,它会为每一个 mount 的动作产生一个进程负责执行.在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作
-v verbose 显示详细过程
-f fake 通常用来除错,它并不执行实际挂上动作,而是模拟整个挂上动作,常与 -v 一起使用.
-t 指定文件类型,通常不必指定.mount 会自动选择正确的类型
-o ro 用唯读模式挂上
-o rw 用读写模式挂上
-B, --bind 重新绑定子树到其他地方
-R, --rbind 重新绑定子树到其他地方,包括子子树,递归方式绑定
-M, --move 重新绑,到别的地方
现有type包括:
adfs, affs, autofs, cifs, coda, coherent, cramfs, debugfs, devpts, efs, ext, ext2, ext3, ext4, hfs, hfsplus, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, nfs4,ntfs, proc, qnx4, ramfs, reiserfs, romfs, squashfs, smbfs, sysv, tmpfs, ubifs, udf, ufs, umsdos, usbfs, vfat, xenix, xfs, xiafs.
umount 卸载目前挂在Linux目录中的文件系统
-t 卸除指定的文件系统
-a 卸除/etc/mtab中记录的所有文件系统
-r 若无法成功卸除,则尝试以只读的方式重新挂入文件系统
fdisk 查看硬盘的情况,磁盘分区
使用方式:
$ fdisk -l /dev/sda #查看磁盘分配情况
$ fdisk /dev/sda #进入磁盘分区模式
:m 显示所有命令列示
:p 显示硬盘分割情形
:a 设定硬盘启动区
:n 设定新的硬盘分割区
e 硬盘为扩展分割区(extend)
p 硬盘为主要分割区(primary)
:t 改变硬盘分割区属性
:d 删除硬盘分割区属性
:q 结束不保存硬盘分割区属性
:w 结束并写入硬盘分割区属性
分区完成之后要先格式化分区
mkfsext3 分区名 将分区格式化ext3格式
mkfs -t 类型 分区名 将分区格式化为指定格式
mkswap 分区名 将分区格式化为swap格式
然后挂载分区到某目录下,这样才可以开始使用该分区
mount device dir
umount 卸载
或者在 /etc/fstab 文件里设置自动挂载
另外,添加交换分区
fdisk /dev/sdb
参数:n t l w
swapon/swapoff 分区名 打开和关闭交换分区
free 查看内存或交换分区使用情况
passwd 修改密码
使用方式:
passwd [username] 回车后输入当前密码,然后输入新密码
ssh 远程客户端登陆
使用方式:
ssh [options] [user]@hostname [command]
scp 远程拷贝,通过ssh方式的安全加密方式
使用方式:
scp [options] user@host1:file1 ... user@host2:file2
常用参数:
-1 scp只能用协议1
-2 scp只能用协议2
-3 两个远程主机之间的数据传输都经过本地主机.如果没有这个选项,数据传输是直接在两个主机之间进行.需要注意的是,这个选项不显示进度.
-4 scp只能用ipv4地址
-6 scp只能用ipv6地址
-B 批量模式,需要密码口令
-C 压缩Compression
-c cipher密码,encrypting加密传输数据
-p 保留源文件属性
-r 递归复制
-v 显示详细进度
$ scp -v cxz@192.168.1.105:/desktop/filename cxz@192.168.1.102:/tep/
rcp 远程拷贝
-p 保留源文件属性
-r 递归拷贝
sync 把缓存中的文件写入/同步到磁盘中
rsync 远程拷贝/同步文件
rsync -v -P -e ssh user@ip: ~/file ./
samba windows系统和linux系统之间共享文件的服务器,需要安装
参数:
start 启动Samba服务器的服务
stop 停止Samba服务器的服务
status 显示Samba服务器目前的状态
restart 重启Samba服务器
ifconfig 设置网络设备的状态,显示目前的设置,包括硬件地址,ip,广播,掩码,ipv6地址等
netstat 显示linux系统的网络状态
使用方式:
netstat [-vWeenNcCF] [<Af>] -r
netstat [-vWnNcaeol] [<Socket> ...]
netstat [-vWeenNac] -i | [-cWnNe] -M | -s
参数:
-r --route 显示路由配置信息表
-i --interfaces 显示接口信息表
-g --groups 显示多点光播组成员
-s --statistics 显示网络工作信息统计表(类似SNMP)
-M --masquerade 显示伪装的网络连接
-v --verbose 显示详细信息
-W --wide 不 truncate IP地址
-n --numeric 不解析名字(直接使用IP地址,而不通过域名服务器)
-N --symbolic 显示网络硬件外围设备的符号连接名称
-e --extend 显示网络其他相关信息
-p --programs 显示正在使用Socket的程序的PID和name
-c --continuous 持续列出网络状态
-l, --listening 显示监听中的服务器的Socket
-a, --all 显示所有连接中的sockets
-o, --timers 显示计时器
-F, --fib 显示转发信息
-C, --cache 显示路由缓存信息而不是转发信息FIB
-t --tcp
-u --udp
-w --raw
-x --unix
ping 使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常
ICMP (internet control message protocol) 报文控制协议
使用方式:
ping [options] [主机名称或IP地址]
参数:
-f 极限检测
-R 显示路由过程
-v 显示详细指令的执行过程
man 在线帮助手册
使用方式:
man command 显示详细的帮助信息
其他帮助方式:
command --help 显示主要的参数信息
sleep 延迟动作
number 时间长度,后面可接 s秒、m分、h时 或 d日
eg: sleep 1m 等待1分钟
alias 设置指令的别名
使用方式:
alias[别名]=['指令名称']
若不加任何参数,则列出目前所有的别名设置
sed 利用script的指令,来处理、编辑文本文件
-e<script> 以指定的script来处理输入的文本文件
-f<script文件> 以指定的script文件来处理输入的文本文件
-n --quiet --silent 仅显示script处理后的结果
ulimit 控制shell程序的资源,shell内建指令
-a 显示目前资源限制的设定
clear 清除屏幕
uniq 去重,检查及删除文本文件中重复出现的行列
使用方式:
uniq [options] [输入文件] [输出文件]
参数:
-c 显示每行重复出现的次数
-d 仅显示重复出现的行
-u 去重
-f<field> 忽略指定区域
-s<char> 忽略指定字符
-w<n> 指定要比较的字符数n
awk 处理文本和数据的程序语言,比sed和grep强大之处在于可以方便的处理列数据
awk是 pattern(模型,样品,规则) {action}{操作} 序列对,也可以自定义函数.
小程序可以直接在命令行输入,用单引号('')包起来,避免被shell解释.
大程序可以用-f调用程序文件.输入数据可以从文件列表读取,也可以从标准输出读取.输入数据被变量 RS 切分为一条条的记录,默认 RS='\n' ,即一行为一条记录.每条记录与pattern进行比较,匹配则执行{action}.
参数:
-F 设置分隔符,FS,eg:空格,t(tab),%,&,:等
-f 调用程序文件
-v 分配变量的值,var=value
-- 操作结束符
内置变量: (使用内置变量时不需要引号)
ARGC 命令行参数个数(不包括awk的选项和awk的程序内容)
ARGIND 当前正在处理的ARGV中的文件的索引值(同时处理多个文件时会用到)
ARGV 命令行参数序列数组,下标从0开始
CONVFMT 数字转换格式,和C语言中的数字输出格式化类似,默认为"%.6g"
ENVIRON 当前系统的环境变量
ERRNO 出错时的错误信息
FIELDWIDTHS 以空格分隔的字段宽度,如果指定此变量,awk将会用指定的宽度替换变量FS指定的分隔符
FILENAME 当前正在处理的文件名,该变量不能在BEGIN块中使用
FNR 当前处理的记录号
FS 字段的分隔符,默认为空格
IGNORECASE 如果该变量设置为非0值,在进行字符串匹配时忽略大小写
NF 当前记录中的字段个数
NR 已经读出的记录数
OFMT 数字的输出格式
OFS 输出的字段分隔符,默认为空格
ORS 输出的记录分隔符,默认为新行
RS 输入记录的分隔符,默认为新行
RSTART 被match()函数匹配的字符串的起始位置,如果没有匹配则为0(从1开始)
RLENGTH 被match()函数匹配的字符串的长度
SUBSEP 数组中多个下标的分隔符,默认为"\034"
eg:
awk '{pattern}{active}' file
awk -F / '{print $2}' file 打印文件以/分割的第2列
$n 表示第n列,$0表示整行
ftp 标准文件传输协议,用户与远程站点之间进行文件传输
使用方式:
ftp [options] [host:port]
-4 ipv4
-6 ipv6
-v 显示远程服务器的指令执行过程,包括数据传输和统计
-d 详细显示指令执行过程,便于排错或分析程序执行的情形,调试用
samba windows系统和linux系统之间共享文件的服务器,需要安装
start 启动Samba服务器的服务
stop 停止Samba服务器的服务
status 显示Samba服务器目前的状态
restart 重启Samba服务器
head/
tail 读取文本文件的最前/后10行
head -20 file 读取文件的前20行
tail -20 file 读取文件的后20行
tail -f file 实时刷新文件,一般用于查看日志文件
curl 下载url中的数据
curl是一个工具来与服务器传递数据,使用一个支持的协议(DICT类型, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP,IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,TELNET and TFTP).curl无需与用户进行交互.
curl提供一车有用的技巧,如代理支持,用户身份验证,FTP上传,HTTP post,SSL连接,cookie,文件传输摘要等等
curl [options] [URL...]
ln 在文件之间建立连接
Linux/Unix 文件系统中,有所谓的连结(link),我们可以将其视为文件的别名,而连结又可分为两种:硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个文件可以有多个名称,而软连结的方式则是产生一个特殊的文件,该文件的内容是指向另一个文件的位置.硬连结是存在同一个文件系统中,而软连结却可以跨越不同的文件系统
使用方式:
ln [options] source dist
ln source dist 是产生一个连结(dist)到 source,默认是硬连接,-s是软连接
不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间
参数:
-f 链结时先将与 dist 同档名的档案删除
-d 允许系统管理者硬链结自己的目录
-i 在删除与 dist 同档名的档案时先进行询问
-n 在进行软连结时,将 dist 视为普通文件
-s 进行软链结(symbolic link)
-v 显示所有已链接文件名
-b 将在链结时会被覆写或删除的档案进行备份
-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
-V METHOD : 指定备份的方式
eg:
ln -s yy zz 文件yy产生一个软连接zz
ln yy zz 文件yy产生一个硬链接zz
sudo 用超级用户或别的用户的身份执行命令
sudo -l 显示自己的权限
sudo command 以root身份执行命令
export 设置或显示环境变量(需安装)
在shell中执行程序时,shell会提供一组环境变量. export可新增,修改或删除环境变量,供后续执行的程序使用. export的效力仅及于该此登陆操作
参数:
-f 代表[变量名称]中为函数名称
-n 删除指定的变量,变量实际上并未删除,只是不会输出到后续指令的执行环境中
-p 列出所有的shell赋予程序的环境变量
cut 逐行打印指定部分到标准输出
用法:
cut -cnum1-num2 filename
显示每行从开头算起 num1 到 num2 的文字
参数:
-b 指定字节bytes
-c 指定字符characters
-d 指定分界符,默认是 tab
-f 指定列字段fields,如果没有分界符,则打印整行
-s 不打印无分界符的行
-c m-n 表示显示每一行的第m个字元到第n个字元
-f m-n 表示显示第m栏到第n栏(使用tab分隔)
eg:
cut -c 0-6 file #打印前 6 个字元
cut -c 5-8 file #打印第5-8个字符
cut -c 1-3,10-12 file #打印第1-3和10-12个字符
cut -f 1,3 file #打印tab分割的第1列和第3列