Linux常用命令

2017-08-01  本文已影响0人  种豆瓜

Shell作为操作系统的外壳,为用户提供了使用操作系统的接口。Shell和核心是命令行提示符,它允许输入文本命令,然后解释命令,并在内核执行。

Linux系统上,通常有几种shell,不同的shell有不同的特性,所有的Linux发行版默认的Shell都是bash shell(Bourne again shell)。

基本的bash shell 命令

!!回车,唤出刚执行过的命令执行

pwd

print work directory 打印工作目录

clear

清屏

history

历史命令

scp

scp -r /opt/web/qf-web root@172.16.11.118:/opt/web/ ,将本机qf-web复制到118的/opt/web/目录下

免密传输,在src生成公钥ssh-keygen -t rsa(可能已经存在),在当前用户的home目录.ssh隐藏文件夹下,将id_rsa.pub公钥

加到dest用户home目录下的.ssh下的authorized_keys里。

-------------------搜索------------------------

grep

Global Regular Expression Print

grep -c Exception aaa.log ,输出匹配行的计数

-n:显示匹配行及行号

-v:显示不包含匹配文本的所有行。

-e: grep -e t -e f file1 ,指定多个匹配模式

pattern正则表达式主要参数:

\: 忽略正则表达式中特殊字符的原有含义。

^:匹配正则表达式的开始行。

$: 匹配正则表达式的结束行。

\<:从匹配正则表达式的行开始。

\>:到匹配正则表达式的行结束。

[ ]:单个字符,如[A]即A符合要求 。

[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。

.:所有的单个字符。

* :有字符,长度可以为0。

find

格式:find  path  -option  [  -print ]  [ -exec  -ok  command ]  {} \;

-name filename #查找名为filename的文件,正则""

-mtime    -n +n      #按文件更改时间来查找文件,-n指n天以内,+n指n天以前

-atime    -n +n      #按文件访问时间来查找文件,-n指n天以内,+n指n天以前

-ctime    -n +n      #按文件创建时间来查找文件,-n指n天以内,+n指n天以前

-perm                #按执行权限来查找

find  . -name "*sh"  | xargs  chmod  a+x

find . -name .svn | xargs rm -rf

$find . -perm -007 -exec ls -l {} \;  #查所有用户都可读写执行的文件

-------------------------遍历目录-------------------------------

cd

change directory 切换目录(制表符自动补全功能)

cd .. ,返回上一级目录(单点符.表示当前目录,双点符..表示父目录)

cd / ,返回根目录

cd ~ 或cd ,返回到用户home目录

cd - ,切换当前目录到上一个目录

cd /opt/v* ,从当前目录切换到/etc/v_ _(其他的匹配还可以?)

tab双击,提示目录下有哪些文件

cd /opt && ls ,切换到/opt目录并列出目录下的文件

ls/ll

ls -l long长清单

ls -lh 1024为单位

ls -lS 文件大小排序

ls -lt 最后修改时间排序

ls -l --block-size=M  (K,M,G,T)

ls -a all所有文件(隐藏文件)

ls -p 目录文件加斜线

ls -r 翻转顺序

ls -F 文件末尾夹/

-------------------------处理文件-------------------------------

touch

创建空文件

cp

copy 复制文件或目录

-f:强行复制文件或目录,不论目标文件或目录是否已存在;

-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;

-b:覆盖已存在的文件目标前将目标文件备份

cp /opt/t1 ../t2 . ,t1和t2文件复制到当前文件夹下

mv

move 移动,重命名

mv demo1.txt demo2.txt ,重命名为demo2.txt

mv demo1 demo2 ,demo2存在,移动到demo2下,不存在重命名为demo2

mv -b src desc ,如果dest存在,dest会备份为dest~,src重命名为dest

mv -u old.txt new.txt, new.txt的修改时间比old.txt的修改时间新,覆盖会失败

rm

remove 移除

-i 删除前逐一询问确认

-------------------------处理目录-------------------------------

mkdir

make directory 创建文件夹

mkdir ubuntu redhat slackware ,创建多个文件夹

mkdir -p letter/important ,递归的创建文件夹

rmdir

remove directory 删除空文件夹

----------------------查看全部文件内容---------------------------

cat

concatenate 查看整个文件内容

cat -n test1 给所有的行加上行号,-b

cat f1.txt>f2.txt ,文件f1内容写入到f2中,>>,不存则创建

more

分页查看,空格翻页,b键回退

less

less is more,more命令的升级版。

d后翻半页,u前翻半页

b前翻一页,空格后翻一页

/ ?搜索

nl

----------------------查看部分文件内容-------------------------

tail

显示文件最后几行内容

tail -n 100 a.txt 显示默认100行

tail -f a.log 显示a.log文件实时追加内容

head

显示文件开头几行内容

head -n a.txt

----------------------探查进程---------------------------------

ps

process status

ps -ef ,显示所有进程完整信息

top

第一行,当前系统时间,系统运行时间,几个用户登陆系统,1,5,15分钟负载情况

第二行,进程状态

第三行,us — 用户空间占用CPU的百分比。

sy — 内核空间占用CPU的百分比。

ni — 改变过优先级的进程占用CPU的百分比

id — 空闲CPU百分比

wa — IO等待占用CPU的百分比

hi — 硬中断(Hardware IRQ)占用CPU的百分比

si — 软中断(Software Interrupts)占用CPU的百分比

第四行,内存状态

第七行:PID — 进程id

USER — 进程所有者

PR — 进程优先级

NI — nice值。负值表示高优先级,正值表示低优先级

VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR — 共享内存大小,单位kb

S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU — 上次更新到现在的CPU时间占用百分比

%MEM — 进程使用的物理内存百分比

TIME+ — 进程使用的CPU时间总计,单位1/100秒

COMMAND — 进程名称(命令名/命令行)

kill

-l 列出所有可选信号

kill pid -9, 杀死进程

3 QUIT 结束运行

9 KILL 无条件终止

killall

killall pname

killall http*

--------------------检测内存---------------------

free

-k,-m,-g

-------------------检测磁盘空间------------------

df

disk free 设备上还有多少磁盘空间

df -h 用户易读的形式显示

du

disk usage ,某个特定目录的磁盘使用情况

du -h

du -sh ,显示统计

----------------------权限----------------------

chmod

chmod options mode file ,mode参数可以使用八进制模式或者符号模式

[ugoa][[+-=][rwxXstugo]] u 用户、g 组、o 其他,a 所有

chown

-----------------------文件处理------------------------

sort

排序

sort -t ':' -k 3 -n /etc/passwd 根据用户ID数值排序,-n数值排序,-t分隔符

-r 反序

cut

处理一个字符间隔的内容

-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。

-c :以字符为单位进行分割。

-d :自定义分隔符,默认为制表符。

-f  :与-d一起使用,指定显示哪个区域。

who|cut -b 3-5,8

cut -c 3 cut_ch.txt

cat /etc/passwd|head -n 5|cut -d : -f 1

sed [-nefr] [动作]

选项与参数:

-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。

-e :直接在命令列模式上进行 sed 的动作编辑;

-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;

-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)

-i :直接修改读取的文件内容,而不是输出到终端。

function:

a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~

c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!

d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;

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

p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~

s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

cat new.txt |sed '2,5d' 删除2-5行,不实际删除文件内容

nl /etc/passwd | sed '3,$d'

sed '2a drink tea'

nl /etc/passwd | sed '2i drink tea'

nl /etc/passwd | sed '2,5c No 2-5 number'

nl /etc/passwd | sed -n '5,7p'

nl /etc/passwd | sed -n '/root/p'

/sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'  ,sed 's/要被取代的字串/新的字串/g'

nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/' ,-e表示多点编辑,第一个编辑命令删除/etc/passwd第三行到末尾的数据,第二条命令搜索bash替换为blueshell

sed 的『 -i 』选项可以直接修改文件内容

sed -i 's/\.$/\!/g' regular_express.txt , sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !

sed -i '$a # This is a test' regular_express.txt

awk

awk的一般语法格式为:awk [-参数 变量] 'BEGIN{初始化}条件类型1{动作1}条件类型2{动作2}。。。。END{后处理}'

默认域分隔符是"空白键" 或 "[tab]键, $0则表示所有域,$1表示第一个域,$n表示第n个域

awk '{print}'  /etc/passwd  ==  awk '{print $0}'  /etc/passwd

/etc/passwd |awk  -F ':'  '{print $1}'

cat /etc/passwd |awk  -F ':'  'BEGIN {print "name,shell"}  {print $1","$7} END {print "blue,/bin/nosh"}'

awk -F: '/root/' /etc/passwd

ARGC              命令行参数个数

ARGV              命令行参数排列

ENVIRON            支持队列中系统环境变量的使用

FILENAME          awk浏览的文件名

FNR                浏览文件的记录数

FS                设置输入域分隔符,等价于命令行 -F选项

NF                浏览记录的域的个数

NR                已读的记录数

OFS                输出域分隔符

ORS                输出记录分隔符

RS                控制记录分隔符

ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size}'

awk -F ':' 'BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name[i]}' /etc/passwd

awk -F: '$1~/mail/{print $1}' /etc/passwd

----------------------压缩数据-------------------

gzip是Linux上最流行的压缩工具

gzip

压缩文件,单个文件

-d ,解压缩

gunzip

解压文件

tar

tape archive

-c ,创建一个新的tar归档文件

-x ,从已有的tar归档文件中提取文件

-f ,输出结果到文件

-t ,列出tar归档文件的内容

-v ,在处理时显示文件

-z ,将输出重定向到gzip命令来压缩内容

tar -cvf test.tar test1/ test2/

tar -tf test.tar

tar -xvf test.tar

tar -czf test.tar test

tar -zxvf filename.tar.gz

---------------------网络----------------------

netstat

netstat -at ,只列出TCP连接,-u

netstat -ant ,禁用反向域名解析,显示的是ip

netstat -ntl ,所有处于监听状态的tcp连接

netstat -ntlp ,获取进程名、进程号以及用户 ID

netstat -ie ,打印网络接口,和ifconfig相似

---------------------日期----------------------

date

date +%Y%m%d

date +%Y%m%d-%H:%m:%S

date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00

date -s 01:01:01 //设置具体时间,不会对日期做更改

date -s “01:01:01 2008-05-23″ //这样可以设置全部时间

date -s “01:01:01 20080523″ //这样可以设置全部时间

date -s “2008-05-23 01:01:01″ //这样可以设置全部时间

date -s “20080523 01:01:01″ //这样可以设置全部时间

上一篇下一篇

猜你喜欢

热点阅读