好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

高效率使用linux命令:目录命令

高效率使用linux命令:目录命令

高效率使用linux命令:目录命令

mkdir技巧:

1.  mkdir {a..z}            创建目录a到z

2.  mkdir -p /home/user/doc{1..10}   在doc目录下创建目录1,2,3,4,5,6,7,8,9,10 

3.  mkdir a{0..9}{a..j}          创建100个目录,a0a……a9j

4.  mkdir Documents/{ doc/{doc_1,doc_2} , video,music,city/Beijing } 

     在Documents目录下创建目录doc,video,music,city,并在doc目录下创建目录doc_1,doc_2,且在city目录下创建目录Beijing

5.  mkdir $(date +%F)           创建目录(打印目录名为当前完整的日期格式,即如%Y-%m-%d)

6.  mkdir $(date +%T)           创建目录(打印目录名为当前时间,即如14:14:14,%T等同%H:%M:%S)

7.  mkdir Dir; cd $_           创建一个目录并进入目录中

cd技巧:

1.  cd       切换到用户目录

2.  cd ~      切换到用户主目录

3.  cd /       切换到根目录

4.  cd -       切换到前次工作目录

5.  cd ..       切换到上一级目录 

6.  cd      切换到上上级目录

 

 

 

标签:  linux_command

centOS搭建本地yum

 

Yum是一种聪明安装的方式,用 rpm 安装的时候我们总是发现需要各种依赖包。但是 yum 总是可以自己找到这些个包,我们也可以在本地搭建 yum

使用df命令找到光盘iso镜像

记下镜像的路径

 

然后用 vim 打开  /etc/yum.repos.d/CentOS-Media.repo

 

找到 baseurl    删去所有的 file (或者都注释掉,还是注释比较保险)

然后把本地的 rpm 包位置挂起来,按照之前的格式

 

EX. Baseurl=file : ///media/CentOS_6.0_Final

 

在下面找到 enabled=0

把它改成    enabled=1

 

保存退出。 :wq

 

此时再打开 /etc/yum.repos.d/

cd /etc/yum.repos.d/

给每个 repo 做备份

以 .bak 结尾

除了CentOS-Media.repo以外,其它的repo 都删掉。

 

然后  yum grouplist   测试

如果没有出现 error   那么说明本地 yum 搭建就成功了!

C编译: makefile基础

 

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

 

在编译一个大型项目的时候,往往有很多目标文件、库文件、头文件以及最终的可执行文件。不同的文件之间存在 依赖关系 (dependency)。比如当我们使用下面命令编译时:

$gcc -c -o test.o test.c

$gcc -o helloworld test.o

可执行文件helloworld依赖于test.o进行编译的,而test.o依赖于test.c。

 依赖关系

在我们编译一个大型项目时,我们往往要很多次的调用编译器,来根据依赖关系,逐步编译整个项目。这样的方式是自下而上的,即先编译下游文件,再编译上游文件。

 

UNIX系统下的make工具用于自动记录和处理文件之间的依赖关系。我们不用输入大量的"gcc"命令,而只需调用 make 就可以完成整个编译过程。所有的依赖关系都记录在makefile文本文件中。我们只需要make helloworld,make会根据依赖关系,自上而下的找到编译该文件所需的所有依赖关系,最后再自下而上的编译。

(make有多个版本,本文将基于GNU make。make会自动搜索当前目录下的makefile, Makefile或者GNUmakefile)

 

依赖

基本概念

我们使用一个示例C语言文件:

 #include <stdio.h>

 /*  
 * By Vamei
 * test.c for makefile demo
   */ 
 int   main() 
{
    printf(  "  Hello world!\n  "  );
      return   0  ;
}  

 

下面是一个简单的makefile

  # helloworld is a binary file 
helloworld: test.o
  echo "good"    gcc -o helloworld test.o test.o: test.c    gcc -c -o test.o test.c

观察上面的makefile

# 号起始的行是 注释行 target: prerequisite 为依赖关系,即 目标文件 (target)依赖于 前提文件 (prerequisite)。可以有多个前提文件,用空格分开。 依赖关系后面的 <Tab>缩进 行是实现依赖关系进行的 操作 ,即正常的UNIX命令。一个依赖关系可以附属有多个操作。

用直白的话说,就是:

想要helloworld吗?那你必须有test.o,并执行附属的操作。 如果没有test.o,那你必须搜索其他依赖关系,并创建test.o。

 

我们执行

$make helloworld

来创建helloworld。

 

make是一个 递归 创建的过程:

Base Case 1: 如果当前依赖关系中没有说明前提文件,那么直接执行操作。 Base Case 2: 如果当前依赖关系说明了目标文件,而目标文件所需的前提文件已经存在,而且前提文件与上次make时没有发生改变(根据最近写入时间判断),也直接执行该依赖关系的操作。 如果当前目标文件依赖关系所需的前提文件不存在,或者前提文件发生改变,那么以前提文件为新的目标文件,寻找依赖关系,创建目标文件。

虚线: 依赖关系检索

 

上面是make的核心功能。有了上面的功能,我们可以记录项目中所有的依赖关系和相关操作,并使用make进行编译。下面的内容都是在此核心内容上的拓展。

 

make中可以使用宏(MACRO)。宏类似于文本类型的变量。比如下面的CC:

   CC = gcc 

# helloworld is a binary file helloworld: test.o
  echo "good"    $(CC) -o helloworld test.o test.o: test.c    $(CC) -c -o test.o test.c

 

我们用CC来代表"gcc"。在makefile中,使用$(CC)的方式来调用宏的值。make会在运行时,使用宏的值(gcc)来替代$(CC)。

shell的环境变量可以直接作为宏调用。如果同一个自定义的宏同时也有同名环境环境变量,make将优先使用自定义宏。

(可以使用$make -e helloworld来优先使用环境变量)

 

类似于C语言的宏,makefile中的宏可以方便的管理一些固定出现的文本,并方便替换操作。比如我们未来使用ifort编译器时,只需要更改宏定义为:

CC = ifort

就可以了

 

内部宏

make中有内部定义的宏,可以直接使用。 $@ 中包含有当前依赖关系的目标文件名,而 $^ 包含当前目标的前提文件:

 CC = gcc

# helloworld is a binary file
helloworld: test.o
  echo $@
  $(CC) -o $@ $^

test.o: test.c
  $(CC) -c -o $@ $^ 

 

内部宏       功能

$*           当前依赖关系中的目标文件名,不包括后缀。

$*           当前依赖关系中,发生改变的前提文件

$$           字符"$"

如果目标或者前提文件是一个完整路径,我们可以附加 D 和 F 来提取文件夹部分和文件名部分,比如 $(@F) 表示目标文件的文件名部分。

 

后缀依赖

在makefile中使用

.SUFFIXES: .c .o

来说明.c和.o是后缀。

 

我们可以使用后缀依赖的方式,比如:

 CC = gcc

.SUFFIXES: .c .o

.c.o:
        $(CC) -c -o $@ $^

#--------------------------

# helloworld is a binary file
helloworld: test.o
        echo $@
        $(CC) -o $@ $^

test.o: test.c 

我们定义 .c 和 .o 为后缀。并有后缀依赖关系 .c.o: 。前者为前提,后者为目标。(注意,与一般的依赖关系顺序不同)

上面的test.o和test.c有依赖关系,但没有操作。make会发现该依赖关系符合.c.o的后缀依赖,并执行该后缀依赖后面的操作。

 

如果项目很大型的时候,后缀依赖非常有用。符合后缀依赖的文件往往有类似的操作,我们可以将这些操作用后缀依赖表示,而避免重复输入。

 

其他

makefile的续行符为 \

makefile中经常会定义下面依赖关系:

all:

如果make后没有跟随文件名,那么将执行该依赖关系。

clean:

常用于清理历史文件。

比如:

 CC = gcc

.SUFFIXES: .c .o

.c.o:
        $(CC) -c -o $@ $^

#--------------------------

all: helloworld
        @echo "ALL"

# helloworld is a binary file
helloworld: test.o
        @echo $@
        $(CC) -o $@ $^

test.o: test.c

clean:
        -rm helloworld *.o 

注意: echo前面的 @ 和rm前面的 - 。@后的命令将不显示命令本身。-后面的命令将忽略错误(比如删除不存在的文件)。

 

总结

make的核心功能是根据依赖关系来实现编译管理。

make的其他功能是让用户可以更加便捷的写出makefile。

参考

http://oreilly.com/linux/excerpts/9780596100292/gnu-make-utility.html

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

 

 

标签:  开发工具

开始使用Linux

使用 Unix 的初期需要知道您访问 Unix 的方式。有 2 种不同的方式。

1. 您是作为共享的多用户系统的一部分,例如在学校等机构或者公司单位中

2. 您拥有一台自己的 Unix 计算机。这种情况下,您控制计算机并且是唯一的用户。当然你家只有一台电脑,您和家人使用不同的帐号登录 Unix 系统应该属于第一种情况,共享多用户。

基于第一种情况,一般在学校等机构或公司,就有专门人负责管理和维护 Unix 系统。这样的人称之为:系统管理员。 System Administrator. 我们一般简称: admin 或 sysadmin

我们自己的角色是普通的 Unxi/Linux 用户。系统管理时一份全职的工作,需要大量的专业知识,系统管理员可能还有许多助手,协助他共同完成系统的管理和维护。系统管理员不等同于网络管理员。现在很多企业的 IT 部门,有全职的员工,他们是系统管理员,同时也可能是网络管理员。我一般区分系统管理员和网络管理员是采用如下分类:

配置公司或机构里面的系统的人员,比如配置 IIS , FTP , Email ,反向代理服务器等,可以认为是系统管理员;

而配置路由器和交换机,制作网线,设置网络防火墙等任务的人员,可以认为是网络管理员。

1. 用户标识和口令

用户标识也就是用户的账户。 userid : user identification

口令:就是用户的密码。

2. 登录和注销

login 指令使用。在 Ubuntu 上必须切换到 root 账户下,然后输入“ login” 指令才有效,

出来的结果如下图所示。记住:默认新装的 Ubuntu ,没有设置 root 密码。

注销账户可以使用” logout” 和” exit” 指令, Ubuntu 下这2个指令都可以使用 。

3.shell 提示介绍

目前最流行的 3 种 shell 。分别是: Bash,C-Shell 和 Korn Shell.

对于 Bash 和 Korn Shell 来说,提示是一个美元符号。

$

对于 C-Shell 来说,提示是一个百分比符号:

%

4. 修改口令

 

如果需要修改密码时,输入“ passwd” 命令,我经常输入为“ password” 。其实这是 Unix 系统早期开发时,为了简洁而这样取名的。比如其他一些指令: ll,ls,cp 和 ps 等。

另外一个我比较不能接受的就是,输入密码时,字符是不回显的。设计目的是防止他人偷看到你的口令。但是反观 Windows 8 系统,它一个比较大的更新是密码框,右侧有个小眼睛,

你可以点击眼睛,然后查看你在密码框输入具体的内容。我觉得这个功能对普通用户来说是非常的方便。你如果都用 * 来表示,一方面我不知道输入了多少位,另一方面我也不知道我输入的是否正确。所以我真心希望哪天 Unix 或 GNU/Linux 提供一个快捷键,然后用户查看输入的密码,而且要回显功能呀 !

5. 注意事项

Unix 系统是区分大小写的。这也是很多从 Windows 系统迁移过来用户经常忽略的。

 

PS:之前笔记本是安装的Ubuntu12.04,前天升级到13.04 UbuntuKylin版,发现那些窗口动画效果在低配置电脑跑起来就像电影镜头慢放一样,所以又装回了12.04。看样子新系统对配置要求也高了。以上主要是《Unix&Linux大学课程》读书笔记,所以实践操作,我自己选择的是Ubuntu。

作者:快乐八哥
出处: http://www.cnblogs.com/liminjun88  
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,谢谢!
如有问题,可以您可以通过评论联系作者本人。

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于高效率使用linux命令:目录命令的详细内容...

  阅读:75次