您的位置:首页 > 运维架构 > Linux

常见Linux命令

2015-08-11 16:10 525 查看


source

执行某个文件,效果等同于
.
,都是在当前进程的上下文执行。


bash

以bash执行某个文件,作为子进程。

-x
参数可以查看调试信息。


gdb

用来调试C程序,打开一个调试:

gdb a.out


调试命令

break 16       #断点行
break func     #断点函数
info break     #打印断点

r            #run
n            #next
c            #continue
p i          #print i
bt           #函数堆栈
finish       #退出函数
q            #退出GDB



${}

${str%.txt}     最短匹配末尾.txt并删除
${str%%.txt}    最长匹配末尾.txt并删除
${str#.txt}     最短匹配开始.txt并删除
${str##.txt}    最长匹配开始.txt并删除


该表达式支持通配符


awk

awk 'pattern {action}'
pattern(all by default) BEGIN, END
action(print by default)
builtin variables
NR:       已输入记录的条数。
NF:       当前记录中域的个数。记录中最后一个域可以以$NF的方式引用。
FILENAME: 当前输入文件的文件名。
FS:       域分隔符,用于将输入记录分割成域。其默认值为“空白字符”,即空格和制表符。FS可以替换为其它字符,从而改变域分隔符。
RS:       当前的记录分隔符。默认状态下,输入的每行都被作为一个记录,因此默认记录分隔符是换行符。
OFS:      输出域分隔符,即分隔print命令的参数的符号。其默认值为空格。
ORS:      输出记录分隔符,即每个print命令之间的符号。其默认值为换行符。
OFMT:     输出数字格式(Format for numeric output),其默认值为"%.6g"。
%0:       整个记录
%n:       第n个记录



sed

语法:

/模式/p           #打印
/模式/d           #删除
s/模式/替换文字/   #替换
s/模式/替换文字/g  #替换所有
np                #匹配第n行


选项:

-f   #指定sed脚本
-i   #直接修改文件
-e   #正则表达式
-n   #不输出模式空间



解压缩

tar xvf file.tar
tar xvzf file.tgz
tar xvzf file.tar.gz
bzip -cd file.bz | tar xvf -
tar xvjf file.tar.bz2
unzip file.zip
unrar x file.rar
xz -d file.xz && tar xvf file.tar
rpm2cpio file.rpm | cpio -div 
ark -bae file.deb [-o .]



cp

#用`.`而不是`*`可以拷贝到隐藏文件
cp -r /opt/usr/20070723/.  /backup/latest/



chmod

更改文件权限:

chmod [-cfvR] [--help] [--version] mode file...


mode

指定用户:u 所有者,g 与拥有者同一群,o 其他,a 皆是
操作权限:+ 增加,- 取消,= 设定
指定权限:r 读,w 写,x 执行,X 只有当该档案是个子目录或者该档案已经被设定过为可执行

参数

-c : 若该档案权限确实已经更改,才显示其更改动作 
-f : 若该档案权限无法被更改也不要显示错误讯息 
-v : 显示权限变更的详细资料 
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)


举例

chmod -R ug+w,o-w file1.txt file2.txt
chmod abc file a,b,c各表示User、Group、及Other,r=4,w=2,x=1 ,即chmod a=rwx file 与 chmod 777 file 相同 
chmod 4755 file 总是作为文件的所有者而执行,只要它不是SHELL脚本就行



chown

更改文件所有者

chown username:groupname file



内核模块

lsmod
即可查看内核模块,也可以直接读取文件:
/proc/modules/


modprobe
 +模块名、通用识别符
即可载入内核模块。其中,模块名是在
/etc/modprobe.conf
中指定的别名。这样,系统就会从
/lib/moudles/(uname
 -r)/modules.dep
查找依赖模块,再用
insmod
/lib/modules/(uname
 -r)/kernel/
加载。

insmod
 /lib/modules/(uname -r)/kernel/fat/fat.o
必须写全路径。

通过
rmmod sysdog
卸载内核模块。


系统信息

cat /proc/cpuinfo    #CPU
cat /proc/pci(或lspci)    #PCI板卡    eg. lspci |grep Ethernet 查看网卡型号
cat /proc/meminfo    #内存
cat /proc/bus/usb/devices    #USB
cat /proc/bus/input/devices    #键盘鼠标
cat /proc/interrupts    #设备的中断请求(IRQ)
uname -a     #体系结构
cat /etc/issue    #查看发行版

#硬盘
fdisk             #磁盘分区 
disk - l          #磁盘列表
df -h   fdisk  #查看文件系统使用情况
lsblk             #查看分区使用情况



主机名

/etc/hostname
中设置主机名,并在
/etc/hosts
中加入路由转发:

127.0.1.1    [主机名]



dd

逐字节刻录外存,包括:硬盘、闪存、光盘等。

dd if=/dev/sda1 of=/tmp/boot.disk    #备份分区
mount -o loop /tmp/boot.disk  /mnt  #挂载分区文件
dd if=/tmp/boot.disk of=/dev/sda1    #恢复分区
dd if=/dev/sda of=/tmp/mbr.disk  bs=512 count=1    #备份磁盘(前512字节为MBR+分区表)
dd if=/tmp/mbr.disk of=/dev/sda bs=512 count=1    #恢复磁盘
dd if=/tmp/mbr.disk of=/dev/sda bs=512 skip=446 count=66    #恢复分区表
kill -USR1 {dd-pid}    #查看dd进度



find

find [起始目录] 寻找条件 操作 \;


逻辑组合

-a(and,default),-o(or),!(not),括号('\(')


逻辑条件

-name     文件名;
-lname    符号链接文件;
-gid n    ID为 n 的用户组(+n表示大于n,-n表示小于n);-uid n ID为 n 的用户
-group    用户组名;-user 用户名
-empty    查找大小为 0的目录或文件。
-path     路径;
-perm     权限(如711)
-size N[bckw]   N为数字,后面的字符表示单位,缺省为 b,代表512字节的块。
-type [bcdpfls] b 块设备;c 字符设备;d 目录;p 命名管道;f 普通文件;l 符号链接;s socket
-xtype    只查找符号链接文件

-amin n  查找n分钟以前被访问过的所有文件
-cmin n  查找n分钟以前文件状态被修改过的所有文件
-mmin n  查找n分钟以前文件内容被修改过的所有文件
-mtime n n天


操作

-exec  命令名称 {}: 对符合条件的文件执行指定的命令,不询问,{}表示命令的参数即为所找到的文件
-ok    命令名称 {}:对符合条件的文件执行指定的命令,询问用户是否执行
-ls    详细列出所找到的所有文件。
-print 标准输出;-printf 格式:格式输出; -fprintf 文件名:写入文件。


示例:删除当前目录下所有一周之内没有被访问过的a .out或*.o文件。(当命令太长时,输入\换行)

find . \(- name a.out - o - name ‘*.o’\) \
  - atime +7 - exec rm {} \;


除非注明,本博客文章均为原创,转载请以链接形式标明本文地址: http://harttle.com/2015/05/17/linux-cmd.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: