执行某个文件,效果等同于.
,都是在当前进程的上下文执行。
以bash执行某个文件,作为子进程。
-x
参数可以查看调试信息。
用来调试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 '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个记录
语法:
/模式/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 -r /opt/usr/20070723/. /backup/latest/
更改文件权限:
chmod [-cfvR] [--help] [--version] mode file...
mode
参数
-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 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 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 [起始目录] 寻找条件 操作 \;
逻辑组合
-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