找回密码
 立即注册
Qt开源社区 门户 查看内容

Linux——基础命令

2019-6-27 14:20| 发布者: admin| 查看: 604| 评论: 0

摘要: 一、基础命令:1.用户管理类命令(1)useradd libang 添加用户 —— 在home目录下生成同级的目录(2)userdel -r libang 删除用户(3)passwd libang 修改密码(4)su -root 切换到root用户,并将root用户的环境变量 ...
一、基础命令:

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。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了