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

菜鸟玩转linux学习笔记

2013-09-08 21:19 344 查看
 


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,EOF或end 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文件中。

Linux下C语言编辑技巧


代码缩进

配置文件:/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.o为Makefile中的后缀规则,因此当定义了一个目标是“.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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 系统管理员