菜鸟玩转linux学习笔记

 

1.       Linux的基本目录:

   /根目录操作系统的顶层目录

   /bin系统中最基本的命令行工具

   /sbin系统管理员工具目录

   /boot包括了系统中的启动文件,Linux内核等,16M为一个基本内核的最低限度

   /dev设备目录

   /etc配置文件目录

   /home用户的主目录

   /lib程序库文件

   /mnt程序挂载目录

   /opt大型程序安装目录

   /proc当前系统进程目录,包括IRQ port 10 Address DMA channe

   /root系统管理员目录

   /tmp临时目录,系统会定时的清理这个目录的内容

   /usr系统程序目录

   /var系统日志目录

2.       一些常用命令

Ctrl+空格    输入法转换(中文)

Ctrl+alt+[F1~F6]     进入命令行终端

Ctrl+alt+F7    进入GUI图形界面

exit     退出          logout      注销          reboot    重启

clear    清屏命令      poweroff    关机          su-       切换用户

ubuntu中系统管理员root在图形界面一般进不去,要在命令行模式下登录

 命令  :$ sudo su

Ctrl+d  离开文字界面(相当输入exit),也代表键盘输入结束(end of file,EOFend of Input)

Ctrl+c  中断目前程序,相当于“停下来”

Ctrl+Tab  显示你可能已经操作的命令数目

3.       文件的属性与权限

rm  –rf  文件夹    //删除非空目录(删除后无法恢复)

4.       挂载

类似于 Windows 下面的盘符概念。把一个分区挂载到一个目录上(Linux 不支持盘符这种方式),这样才能对这个磁盘上面的文件进行操作。这个时候这个分区需要继承这个目录的目录级别。比如某个分区 sda2 ,挂载到 /usr/src 里(举例啊),这个时候这个 sda2 里面的 aaa 目录,现在就表示为 /usr/src/aaa 。如果他挂载到 /var/www 下面。sda2 里面的 aaa 就变成了 /var/www/aaa 。这点也类似于 Windows 的修改盘符,比如 D:\aaa 。把盘符修改为 E ,这个目录就成了 E:\aaa 。但他们还是一个东西。挂载后,你所修改的内容(包括复制,删除,移动等),只要在这个被挂载的分区所包含的文件、目录,都会保存在这个分区里,而不是原来的目录里。效果和 Windows 里面用 U 盘的效果一样。只不过 U 盘用的是一个盘符,Linux 里面,需要一个目录。你把 Windows 想象成一个最高级别的目录是“我的电脑”,C D E F 这些盘符都是他的一个“目录”,就能发现他和 Linux 的挂载很相似,只不过 Windows 不允许出现没有挂载分区的空的这种挂载点而已。这里面 / 也是一个挂载点,就像 C: 一样,一个不允许随便改的专用挂载点。

光盘 cdrom     U usb

    高级命令相关

用户管理

创建用户:useradd  (adduser)

修改用户密码:passwd

切换用户:su username

目录与文件操作

SHELL输出:echo

目录的软件链接:ln

压缩与解压工具:tar  gzip 

    # tar –zcvf  test.tar.gz  1 2 3

    # tar –zxvf  test.tar.gz

        -z--gzip--ungzip   通过gzip指令处理备份文件。

       -c--create   建立新的备份文件。

       -x--extract--get  从备份文件中还原文件。

       -v--verbose   显示指令执行过程。

       -f<备份文件>--file=<备份文件>   指定备份文件。

文本查看:cat  tail  head  grep find

   grep [关键字] [文件名]     文档中关键字的查找

          -color   给关键字添加颜色

          -n  显示行号 

管道:连接前一个命令句与后一个命令句,后面命令语句一般是承接前的语句的输出内容。   |

   查找文本时配合使用:

   Cat passwd | grep root

                  表示筛选出包含root字段的文件

              可以多次使用筛选

重定向输入输出:>  <  >>  <<

# cat passwd > passwd1  相当于  cp passwd passed1

# echo hello.c > passwd1

    使用 > 多次重定向输入时,文件中只显示最后一次的输入内容

    多次输入时,应使用 >>

# cat >>test<<EOF

       表示输入文本直到输入EOF时结束,并保存在test文件中。

LinuxC语言编辑技巧

代码缩进

配置文件:/etc/vimrc

set smartindent

set cindent shiftwidth=4      智能缩进

set tabstop=4       (C语言缩进风格)

神兵天降:变态的宏

qaq   记录重复内容为a

n@a   显示结果(n重复次数)

源码管理利器——简单Makefile编写(一)

all:first   //目标

first.o:first.c

    gcc -c first.c

first:first.o

    gcc first.o -o first

clean:

    rm *.o first -f

目标文件:依赖文件

   <TAB>操作

执行:make

清理中间及最终二进制文件:make clean

make伪目标:make 伪目标

Makefile使用(二)

复习一下——Makefile规则的中心思想:目标文件的内容是由依赖文件决定,依赖文件的任何一处改动,将导致目前已经存在的目标文件的内容过期,规则的命令为重建目标提供了方法,这些命令运行在系统shell之上。

?  Makefile的命名

(1)默认的情况下

make会在工程目录(执行make的目录)下按照文件名顺序寻找makefile 文件读取并执行,查找的文件名顺序为: “GNUmakefile”、“makefile”、“Makefile”。

(2)指定文件Makefile(自定义的make文件使用)

使用make -f 文件名

?  Makefile的内置变量

CC:指定编译器

CFLAGS:指定编译的额外依赖条件,如头文件,编译选项等等

LDFLAGS:链接时要链接的动态库(下一节课讲动态库生成的时候再讲)

?  Makefile的自定义变量

自定义变量应用大写字母表示

”$(变量名)符号引用变量

?  Makefile的隐晦规则(强烈推荐)

CC=gcc

CFLAGS=-I ../  -g -Wall -O2

#arm-linux-gcc

BIN=main

all:$(BIN)

main:main.o hello.o

clean:

    rm -f $(BIN) *.o

Makefile会自动去推导依赖文件与目标文件

Makefile使用(三)

?  伪目标

all:main

main:main.o

.PHONY:clean 防止目录中有名为clean的文件名或文件夹,而无法使用

clean:       make clean命令

rm *.o main -f

?  内置变量LDFLAGS

-lm    libmath.so

用于库的链接建立。(在后面的动态库的创建中继续讲解)

?  自动化变量

$@

表示规则的目标文件名。 

$<

规则的第一个依赖文件名。 如:

foo.o : foo.c defs.h hack.h

gcc -c $(CFLAGS) $< -o $@

翻译过来:gcc -c -g foo.c -o foo.o

自动化变量“$<”代表规则中通过目录搜索得到的依赖文件列表的第一个依赖文件。关于自动化变量我们在后续有专门的讨论。

$?

所有比目标文件更新的依赖文件列表,空格分割。如:

.c.o:

    ${CC} -o $@ -c $? ${CFLAGS}

说明:.c.oMakefile中的后缀规则,因此当定义了一个目标是“.c.o”的规则时。make会将它作为一个双后缀规则来处理,它的含义是所有“.o”文件的依赖文件是对应的“.c”文件。

$^   (shift + 6)

规则的所有依赖文件列表,使用空格分隔。如:

$(BIN):${OBJECT}

        ${CC} -o $@ $^ $(LDFLAGS) $(LIBS)

    翻译过来:gcc -o main main.o hello.o -lm ...

?  模式替换函数

格式:$(patsubst <pattern>,<replacement>,<text> ) 
    
名称:模式字符串替换函数——patsubst
    
功能:查找<text>中的单词,以空格Tab”回车”“换行分隔

如果<pattern>匹配的话,则以<replacement>替换。

返回:函数返回被替换过后的字符串。

?  Makefile中的通配符

一般我们可以使用“$(wildcard *.c)”来获取工作目录下的所有的.c文件列表。

分析:$(patsubst %.c,%.o,$(wildcard *.c))代表什么?

#sample Makefile (适合在单个工程目录下面进行该工程的编译)

objects := $(patsubst %.c,%.o,$(wildcard *.c))

foo : $(objects)

    cc -o foo $(objects)  -lm

.PHONY:clean

clean:

    rm $(objects) foo -f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值