一、基础命令: 1.用户管理类命令 (1)useradd libang 添加用户 —— 在home目录下生成同级的目录 (2)userdel -r libang 删除用户 (3)passwd libang 修改密码 (4)su -root 切换到root用户,并将root用户的环境变量同时带入 (5)groupadd group 添加名为group的用户组 (6)groupdel group 删除名为group的用户组 注意: dduser创建帐号的同时,要求用户输入密码 useradd需要在创建帐号后,自行创建密码passwd 2.文件与目录类命令 (1)ls 查看目录 (ls [选项] 目录或文件) ls /home 显示/home目录下的文件与目录(不包含隐藏的) ls -a /home 显示/home目录下的文件与目录(包含隐藏的) ls -l /home 显示/home目录下的文件与目录的详细信息 (2)cd 改变工作目录 (cd 目录名) cd /home/ 进入/home目录 cd ..退回到上一级目录 cd ~ 进入用户主目录 cd - 代表前一个工作目录 ctrl+h 显示当前目录下的隐藏文件 (3)cp 复制文件/目录 (cp [选项] 源文件或目录 目标文件和目录) cp /home/test /tmp 将/home目录下的test文件拷贝到/tmp目录下 cp -r /home/dir1 /tmp 将/home目录下的dir1目录拷贝到/tmp目录下 (4)mv 移动或改名 (mv [选项] 源文件或目录 目标文件或目录) mv /home/test /home/test1 将/home目录下的test文件更名为test1 mv /home/dir1 /tmp 将/home目录下的dir1目录移动到/tmp目录下 (5)rm 删除文件/目录 (rm [选项] 文件或目录) rm /home/test 删除/home目录下的test文件 rm -r /home/dir 删除目录下的dir目录 (6)chmod 改变文件权限 (chmod +x test.txt) chmod 777 test.txt 可读可写可执行 (7)mkdir 创建目录 (mkdir [选项] 目录名) mkdir /home/workdir 在/home目录下创建workdir目录 mkdir -p /home/dir1/dir2/dir3 依次创建 (8)du 查看目录 (du 目录名) du /tmp (9)pwd 查看当前路径 (10)echo 显示字符串变量等 3.压缩打包类命令 *.gz——gzip命令压缩的文件 *.bz2——bzip2命令压缩的文件 *.tar——tar命令打包的文件 *.tar.gz——tar打包后,再经过gzip压缩的文件 *.tar.bz2——tar命令打包后,再经过bzip2压缩的文件 (tar xjvf *.tar.bz2) (1)gzip 压缩解压 (gzip [选项] 文件名) gzip /root/anaconda-ks.cfg 压缩文件 gzip -d /root/anaconda-ks.cfg.gz 解压文件 (2)bzip2 压缩解压 (bzip2 [选项] 文件名) bzip2 /root/anaconda-ks.cfg 压缩文件 bzip2 -d /root/anaconda-ks.cfg.bz2 解压文件 (3)tar 打包压缩(tar [选项] 目录或者文件) tar cvf tmp.tar /tmp 将/tmp目录打包为一个文件 tar xvf tmp.tar 将打包文件解开 tar cvzf tmp.tar.gz /tmp 将tmp目录打包为一个文件 (4)tar xzvf tmp.tar.gz 将打包文件解开 注意:1 gzip不能压缩目录,只能压缩文件 2 压缩和打包,解压缩和解包是不同的过程 3 gzip压缩或者解压后,原文件不再存在;bzip2提供了-k参数,可以保留原文件 4 windows对文件压缩,其实是先打包在压缩的过程 4.磁盘管理类命令 (1)mount 加载光盘 (mount [选项] 类型 设备名 挂载目录) mount /dev/csrom /mnt mount -t iso9660 /dev/cdrom /mnt/cdrom 类型: windows95/98的FAT32系统 vfat winNT/2000 ntfs CD-ROM iso9660 (2)umount 卸载光盘 (umount 挂在目录) umount /mnt (请在执行umount前,保证用户已经推出了mnt目录) (3)df 查看磁盘总容量,已用容量 (df [选项]) df -hl du 查看文件已用容量 du -h ————针对目录 (4)touch 创建新文件 touch newfile 创建一个名为newfile的空白文件 (5)ln 文件链接 (ln [选项] 文件名 链接名) ln oldfile hlink 为oldfile文件创建一个应链接hlink ln -s oldfile slink 为oldfile文件创建一个软链接slink 硬链接和软链接的区别: (6)fdisk 查看硬盘分区情况 fdisk -l ————拥有root权限 5.查找类命令 (1)find 查找文件/目录 (find 查找路径 -name 文件名) find /root -name install.log 在root目录下寻找名为install.log文件 (2)grep 查找字符 (grep "字符串" 路径 [选项]) grep "hello" ./ -rn 在当前路径下寻找包含字符串"hello"的文件 6.进程管理类命令 (1)ps 查看进程 (ps [选项]) ps aux (2)kill 杀死进程 (kill [选项] pid) vim hello.c ps aux kill pid (hello.c的进程号) (3)free 查看内存 free (4)top CPU占有率 (top [选项]) top 动态显示进程 (5)pstree 以树形式打印进程 (6)tree 以树形式打印当前目录 (7)jobs 查看后台进程和它的作业号 fg %1 1为作业号,调到 前台运行 ctrl+z 正在执行的进程放在后台,并停止 bg %1 1为作业号,把后台停止的作业改成 后台运行 多个命令的同时执行时,只要将它们用分号隔开即可。 7.杂项命令大聚合 (1)代码风格 indent [options] [input-files] indent [options] [single-input-file] [-o output-file] indent -kr -bl -bli0 test.c -kr表示K&R风格 -i8表示缩进8个空格的长度 -l80表示一行最多80个字符 没有指定-nut选项,则每8个缩进空格会自动用一个Tab代替 (2)| 管道操作 (命令1 | 命令2) rpm -qa|grep tar 查询系统中安装的所有软件包,并从中找出带有字符串"tar"的 (3)man info --help查看帮助 (man 命令名) man find 查看find命令的用法 (4)shutdown 关闭linux系统 (shutdown [选项] 时间) shutdown -h 18:00 立即关机:shutdown now init 0 halt 重启:init 6 reboot shutdown -r (5)date +%Y/%m/%d 显示年月日 date +%H:%M 显示小时和分钟 (/和:可以用其他符号代替) cal [[month] year] (6)将一般用户改为sudo用户 sudo vim /etc/group 找到类似这样的一行: sudo:x:27:icawu,sir 在第4列后面加入一般账户的名字即可,“,”后不要空格 或者是/etc/sudoers root ALL=(ALL) ALL 在起下面添加xxx ALL=(ALL) ALL(这里的xxx是你的用户名) (7)od [-t TYPE] 档案 -t :后面可以接各种类型 (TYPE)癿输出,例如: a :利用默认的字符输出; c :使用 ASCII 字符输出 d[size] :利用十进制(decimal)输出数据,每个整数占用 size bytes ; f[size] :利用浮点数(floating)输出数据,每个数占用 size bytes ; o[size] :利用八进制(octal)输出数据,每个整数占用 size bytes ; [size] :利用十六进制(hexadecimal)输出数据,每个整数占用 size 例如: hello文件的内容 3210o od -tx1 -tc hello //可以有多个选项,注意1的效果(每1个字节隔开) 0000000 33 32 31 30 6f 0a 3 2 1 0 o \n (8)内核相关 uname -arsmpi -a :所有系统相关癿信息,包括底下的数据都会被列出来; -s :系统核心名称 -r :核心的版本 -m :本系统癿硬件名称,例如 i686 戒 x86_64 等; -p :CPU 的类型,与-m 类似,只是显示的是 CPU的类型! -i :硬件的平台 (ix86) 应用:cd /usr/src/'uanme -r'/include/linux/fs.h 此句在里ubuntu13.04中不可,linux-headers-3.8.0-19 lsmod 查看已加载内容 lshw 当前硬件信息 xrandr 查看当前分辨率 (xrandr -s 7(第几行) (9)cat 显示文本文件内容 (cat /etc/issue) more 分页显示文本文件内容 ——只能向下翻页 less 分页显示文本文件内容 ——可以上下翻页 head 显示文件首部内容 (head -5 /etc/passwd) tail 显示文件尾部内容 cat /etc/passwd | more/less/head -5/tail -5 (10)which 查看可执行文件的位置 which which whereis 查看文件位置 (全匹配查找) whereis which locate 配合数据库查看文件位置 (局部匹配查找) locate ls (11)信息查看 dmesg 显示系统的启动信息 (保存在/etc/sysconfig) uptime 关于系统相关的时间信息 who 查看当前系统用户 (whoami 只查看当前用户) last 系统用户登录信息 (/var/log名为wtmp文件里) hostname 域名 bc 计算器 二、Linux网络配置 (vmware workstation虚拟机) 1.VMware提供了三种网络工作模式: (1).bridged(桥接模式) —— 提供多个IP地址 (2).NAT(网络地址转换模式)——只能提供一个IP地址 (3).host-only(主机模式)——主机没有连接任何外部网络 2.注意事项: (1).选择网络模式前,停止虚拟机中系统的运行 (2).配置完网络后,重新启动虚拟机中的系统 3.相关命令 (1) ifconfig:查看各网卡详细信息(如IP),以太网卡名一般为"eth0" (2) /etc/init.d/networking restart 重启各网卡 4.Linux常见网络接口 -ens32:系统中的第一块物理网卡 -lo:虚拟的回环网卡 -virbr0:网络网桥 三、Linux编译器GCC (gcc -v 查看gcc版本) ——其执行效率与一般编译器相比平均效率要高20%~30% 1.基本用法 (gcc [options] filenames) gcc *.c ./a.out 2.GCC编译流程 gcc通过后缀来区别输入文件,常见类型: .c为后缀的文件:c语言源代码文件 .a为后缀的文件:是由目标文件构成的库文件 .C,.cc为后缀的文件:是c++源代码文件 .h为后缀的文件:头文件 .o为后缀的文件:是编译后的目标文件 .s为后缀的文件:是汇编语言源代码文件 .m为后缀的文件:Objective-C原始程序 .so为后缀的文件:编译后的动态库文件 源程序, 预处理,编译,汇编,连接,可执行 预处理阶段: 条件编译,头文件包含,宏替换的处理 预处理 gcc -E test.i test.c // gcc -E test.c -o test.i 输入为源代码输出为源代码(文本文件)(不作语法检查) 编译 gcc -S test.c -o test.s //输入为预处理源代码,输出为汇编源代码(intel的汇编指令)(文本文件)(做语法检查,需函数的原型声明) 汇编 gcc -c test.c -o test.o #输入为汇编源码,输出的二进制代码不能被执行(不含库函数的二进制文件) .so 的库文件 连接 gcc test.o -o test (和库文件进行连接) 3.gcc编译选项 -o output_option:确定可执行文件的名称 -O 对程序进行优化 gcc optimize.c -o optimize time ./optimize gcc -O optimize.c -o optimize time ./optimize -c 不链接,生成.o为后缀的中间文件 -g 长生调试工具所需要的符号信息 -Wall 生成所有警告 -w 不生成任何警告 -DMACRO 定义MACRO宏,等效于在程序中使用#define MACRO 四、Linux调试器GDB GUN的调试程序gdb,用来调试c 和 c++ 程序的调试器 设置所有能影响程序运行的参数 指定条件下停止运行 gdb调试的对象是可执行文件而不是程序的源代码文件 需在执行gcc指令编译程序时,加上-g,才能调试 gdb使得机器码和源代码相关联 gcc -g -o debugme debugme.c gdb debugme 断点break 行号/函数/文件名:行号(函数名) break(b) 25 break main info break:查看断点y表示生效n表示失效 disable+断点号 断点失效 enable + 断点号 run(r) 启动程序 print i 查看变量的值 step(s) 执行一行停到下一行 ;会进入子程序内部;跳到子程序中 next 执行一行停到下一行 ;把子函数当成单步执行 quit 退出调试 continue 跳到下一个断点处 finish 结束子程序的运行 Enter: 进行上一步的操作 gdb -d 目录名 指出源码所在位置 print arry[0]@5 查看连续的存储单元的值 p/x arry[0]@5 以十六进制显示 print &i print *arry break 37 if i==15 :条件断点, 当i==15时才停下来 watch 设置监视点(监视表达式的变换)(变量) break 制定了特定的位置(监视某位置) watch j :j的变量变换就会停下来 continue rwatch 设置读监视点 set variable i=100 运行时人工改变变量的值 return 返回值 where 和 backtrace 显示程序运行位置和函数调运栈 up , down :遍历函数调运栈 up 上升一个函数调运栈 down print main::i list 列出当前运行行附近的行 whatis i :i是什么类型 whatis main ptype :明细显示变量和函数的数据类型 search 搜索字符串 revarse search shell pwd 执行shell命令 info file 显示调试文件的信息 info func 显示函数名 info local 局部变量的信息 info prog 显示调试程序的执行状态 set args调试加参数:set args 参数1 参数2 ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:嵌入式进阶之路,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |