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

linux常用命令续(2)

2014-05-21 15:20 447 查看
一、从ls命令详解说起……

1、ls -l小写的l

进行详细的查看list list

dashuai@ubuntu:~$ ls -l
total 52
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Desktop
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Documents
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Downloads
-rw-r--r-- 1 dashuai dashuai 8445 May 15 08:47 examples.desktop
drwxrwxr-x 3 dashuai dashuai 4096 May 17 08:08 family
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Music
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Pictures
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Public
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Templates
drwxrwxr-x 2 dashuai dashuai 4096 May 16 23:57 Ubuntu One
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Videos

左边开始,普通文件用-打头,目录用d打头(directory的缩写)

dashuai@ubuntu:~$ ls -l /bin
total 8632
-rwxr-xr-x 1 root root  920796 Sep 19  2012 bash
-rwxr-xr-x 1 root root   30240 Aug  3  2012 bunzip2
-rwxr-xr-x 1 root root 1631376 Apr 30  2012 busybox
-rwxr-xr-x 1 root root   30240 Aug  3  2012 bzcat
lrwxrwxrwx 1 root root       6 May 15 08:39 bzcmp -> bzdiff
-rwxr-xr-x 1 root root    2140 Aug  3  2012 bzdiff
lrwxrwxrwx 1 root root       6 May 15 08:39 bzegrep -> bzgrep


小写l打头表示软链接,也就是快捷方式。

继续看,x结尾表示是可执行文件。从后面开始是文件或者目录名字,然后是建立的时间,然后是文件或者目录的大小,然后两个名字;第二个是组名,第一个是用户名,在其次是一个个的数字,1,2,3不等,他们的意思是硬连接数目,也就是一个文件对应几个名字啊?!

最重要的除了开头的符号,后面的一串字母符号,代表了权限:

r代表readable可读的,代表有权读

w是writeable可写的,代表有权写

x是executable可执行的,代表有权利执行

用三个圈表示。第一个是自己,然后是同组的,最外面的是其他人。这个亲密关系是不一样的,首先没有比自己更了解亲近自己的了,其次是同宿舍的或者同班的。最次是外校的等等。

同样权限也是三个圈子,一是自己的,是否可以读写执行,同组人是否可以,外部人是否可以,所以,数数,一共是9个字符(第一个代表文件或者目录类型)分别表示自己的,同组的,外组的也就是其他的。



注意:

l和1很像!尽量不要两个一起用!

文件或者目录顺序一般情况下按照字母顺序来排列。

dashuai@ubuntu:~$ ls -r
Videos      Templates  Pictures  family            Downloads  Desktop
Ubuntu One  Public     Music     examples.desktop  Documents


2、使用r选项代表反过来排列。reverse的意思。但是没什么意思。

3、还可以按照建立的时间顺序来排列,t代表时间

dashuai@ubuntu:~$ ls -t
family      examples.desktop  Documents  Music     Public     Videos
Ubuntu One  Desktop           Downloads  Pictures  Templates
dashuai@ubuntu:~$


dashuai@ubuntu:~$ ls -tl
total 52
drwxrwxr-x 3 dashuai dashuai 4096 May 17 08:08 family
drwxrwxr-x 2 dashuai dashuai 4096 May 16 23:57 Ubuntu One
-rw-r--r-- 1 dashuai dashuai 8445 May 15 08:47 examples.desktop
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Desktop
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Documents
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Downloads
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Music
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Pictures
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Public
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Templates
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Videos
按照的是时间越近,越靠前

注意

ls里的total指的是占据了多少空间多少字节,一般512字节是一个块。

4、ls -F显示标记,目录和文件一目了然,斜杠表示目录,并且目录的颜色和文件的颜色不一样的!



dashuai@ubuntu:~$ ls -F
Desktop/    Downloads/        family/  Pictures/  Templates/   Videos/
Documents/  examples.desktop  Music/   Public/    Ubuntu One/


5、ls -F 其他目录
dashuai@ubuntu:~$ ls -F /bin
bash*                  initctl2dot*       ping*
bunzip2*               ip*                ping6*
busybox*               kbd_mode*          plymouth*
bzcat*                 kill*              plymouth-upstart-bridge*
bzcmp@                 less*              ps*
bzdiff*                lessecho*          pwd*
bzegrep@               lessfile@          rbash@
bzexe*                 lesskey*           readlink*
bzfgrep@               lesspipe*          rm*
bzgrep*                ln*                rmdir*
bzip2*                 loadkeys*          rnano@
星号表示是一个可执行文件,@表示这是一个软链接或者符号链接。

注意;这里F就是标记的意思flag的缩写

6、ls -a 

a是all的缩写,就是查看所有的目录或者文件,隐藏的也能看!

dashuai@ubuntu:~$ ls -a
.              Desktop           .ICEauthority     .pulse-cookie
..             .dmrc             .local            Templates
.bash_history  Documents         .mission-control  Ubuntu One
.bash_logout   Downloads         .mozilla          Videos
.bashrc        examples.desktop  Music             .Xauthority
.cache         family            Pictures          .xsession-errors
.compiz        .gconf            .profile          .xsession-errors.old
.config        .gnome2           Public
.dbus          .gtk-bookmarks    .pulse
dashuai@ubuntu:~$


点 . 打头的文件表示隐藏文件,在一般的ls命令中是不显示的,同样在windows里也有隐藏文件,是通过属性实现的。

注意;有两个特别的点,一个点表示当前目录下,两个点表示上一个目录下。每一个目录下都有这个东西,是隐藏的。所以我们使用这个的时候可以回得去。

7、ls -A

和a类似,但是会放过点点,比较仁慈,但是少了点那两项。

dashuai@ubuntu:~$ ls -A
.bash_history  .dmrc             .ICEauthority     .pulse
.bash_logout   Documents         .local            .pulse-cookie
.bashrc        Downloads         .mission-control  Templates
.cache         examples.desktop  .mozilla          Ubuntu One
.compiz        family            Music             Videos
.config        .gconf            Pictures          .Xauthority
.dbus          .gnome2           .profile          .xsession-errors
Desktop        .gtk-bookmarks    Public            .xsession-errors.old
dashuai@ubuntu:~$
ls命令是多列显示的。默认的。

并且命令的选项可以合成为一个一起写

dashuai@ubuntu:~$ ls -AF
.bash_history  .dmrc             .ICEauthority      .pulse/
.bash_logout   Documents/        .local/            .pulse-cookie
.bashrc        Downloads/        .mission-control/  Templates/
.cache/        examples.desktop  .mozilla/          Ubuntu One/
.compiz/       family/           Music/             Videos/
.config/       .gconf/           Pictures/          .Xauthority
.dbus/         .gnome2/          .profile           .xsession-errors
Desktop/       .gtk-bookmarks    Public/            .xsession-errors.old
dashuai@ubuntu:~$


或者分开合成一个一起写

dashuai@ubuntu:~$ ls -A -F
.bash_history  .dmrc             .ICEauthority      .pulse/
.bash_logout   Documents/        .local/            .pulse-cookie
.bashrc        Downloads/        .mission-control/  Templates/
.cache/        examples.desktop  .mozilla/          Ubuntu One/
.compiz/       family/           Music/             Videos/
.config/       .gconf/           Pictures/          .Xauthority
.dbus/         .gnome2/          .profile           .xsession-errors
Desktop/       .gtk-bookmarks    Public/            .xsession-errors.old
dashuai@ubuntu:~$


8、具体的列出某个目录的东东,ls直接加目录即可,还有可以列出目录以及子目录的东西来

dashuai@ubuntu:~$ ls -R
.:
Desktop    Downloads         family  Pictures  Templates   Videos
Documents  examples.desktop  Music   Public    Ubuntu One

./Desktop:

./Documents:

./Downloads:

./family:
daughter.txt  father.txt  house  mother.txt  son.txt

./family/house:
rooma  roomb  roomc  sofa-son.txt

./family/house/rooma:
bed.txt  book.txt  doll.txt

./family/house/roomb:
bed.txt  book.txt

./family/house/roomc:

./Music:

./Pictures:

./Public:

./Templates:

./Ubuntu One:
Shared With Me

./Videos:
dashuai@ubuntu:~$
默认当前目录下,列出整个的目录树

9、注意是大写的R,小写的r是反转顺序的选项。

10、什么是软连接呢? 使用ln -s命令建立(link的缩写 s是soft的缩写),也叫符号链接。就是相当于一个快捷方式。通过这个链接可以间接操作其他目录下的目标文件。它本身也是一个文件,只不过是记录了目标的指向,本身大小很小,一般就几个字节到十几个字节不等。这比起来windows很节省空间,很干净,简单。没有其他的一些垃圾信息,就是单纯的字节。

11、相对的就是硬连接,使用ln命令。他比软链接还要省资源,根本就连新建的文件都没有,就是给目的文件再起一个新的名字,也就是多个名字对应一个文件。

12、还可以建立管道,使用mkfifo命令

dashuai@ubuntu:~$ mkfifo a
dashuai@ubuntu:~$ ln -s /bin b
dashuai@ubuntu:~$ ls -l
total 52
prw-rw-r-- 1 dashuai dashuai    0 May 20 00:39 a
prw-rw-r-- 1 dashuai dashuai    0 May 20 00:37 abc
lrwxrwxrwx 1 dashuai dashuai    4 May 20 00:40 b -> /bin
lrwxrwxrwx 1 dashuai dashuai    4 May 20 00:39 bin -> /bin
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Desktop
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Documents
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Downloads
-rw-r--r-- 1 dashuai dashuai 8445 May 15 08:47 examples.desktop
drwxrwxr-x 3 dashuai dashuai 4096 May 17 08:08 family
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Music
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Pictures
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Public
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Templates
drwxrwxr-x 2 dashuai dashuai 4096 May 16 23:57 Ubuntu One
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Videos
可以看到刚刚新建的一个管道a,和一个快捷方式b

再新建一个文件

dashuai@ubuntu:~$ echo "asd">new.txt
dashuai@ubuntu:~$ ls -l
total 56
prw-rw-r-- 1 dashuai dashuai    0 May 20 00:39 a
prw-rw-r-- 1 dashuai dashuai    0 May 20 00:37 abc
lrwxrwxrwx 1 dashuai dashuai    4 May 20 00:40 b -> /bin
lrwxrwxrwx 1 dashuai dashuai    4 May 20 00:39 bin -> /bin
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Desktop
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Documents
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Downloads
-rw-r--r-- 1 dashuai dashuai 8445 May 15 08:47 examples.desktop
drwxrwxr-x 3 dashuai dashuai 4096 May 17 08:08 family
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Music
-rw-rw-r-- 1 dashuai dashuai    4 May 20 00:42 new.txt
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Pictures
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Public
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Templates
drwxrwxr-x 2 dashuai dashuai 4096 May 16 23:57 Ubuntu One
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Videos


那么,管道的前缀p,就是pipe的缩写

n.管子;烟斗;管乐器;(管风琴的)音管

vt.以管输送;用管乐器演奏;尖声唱

vi.吹奏管乐器;尖叫;尖声地说(或唱),尖声啼鸣;[航海] 吹长哨

管道的标记是|,竖线符号

dashuai@ubuntu:~$ ls -F
a|    bin@        Downloads/        Music/     Public/      Videos/
abc|  Desktop/    examples.desktop  new.txt    Templates/
b@    Documents/  family/


再建立一个硬链接

先把home目录下roomB下的一个文件bed.txt文件复制到桌面上,使用cp命令。



再建立硬链接



查看下

dashuai@ubuntu:~/Desktop$ ls -l
total 0
-rw-rw-r-- 2 dashuai dashuai 0 May 20 04:01 bed.txt
-rw-rw-r-- 2 dashuai dashuai 0 May 20 04:01 zzz
dashuai@ubuntu:~/Desktop$
发现数字是2了,说明这个文件对应两个名字,代表的是硬链接的名字。前提是必须在同一个设备上,才能建立硬链接!!!!否则不行!!!!

注意;

1、软链接没有这个限制!

2、硬连接还有一个附带作用,如果我们删除一个文件,只是删除了一个名字而已。

dashuai@ubuntu:~/Desktop$ rm bed.txt
dashuai@ubuntu:~/Desktop$ ls
zzz
dashuai@ubuntu:~/Desktop$
数字变为了1,而文件本身没有删除!仍然在磁盘里。前提是硬连接还有!即还有名字!!!就是这样的。只是删除了名字,只是硬连接数量减去1,只有名字没有即硬连接数量为0的时候,文件才真正的从磁盘中被删除!

dashuai@ubuntu:~/Desktop$ ls -l
total 0
-rw-rw-r-- 1 dashuai dashuai 0 May 20 04:01 zzz
dashuai@ubuntu:~/Desktop$


所以,我们可以在一个隐蔽的地方,为一个文件偷偷的建立一个硬连接,这样就可以保证一个文件不被删除掉!只有文件的硬连接数量为0的时候,文件才能被真正删除!这样很好!

3、目录是不能建立硬连接的,有别的方法去统计的,不是建立出来的。一般是这样的,一个目录最少有两个子目录,一点和二点。因此,我们建立一个目录的时候,它的硬连接是2!此外目录的硬连接是统计出来的!不是建立的。



不过,目录的硬连接不需要理会!不用管他了。

4、硬连接一旦建立就是和原来的文件是平等的!不是上下级关系。

=================================================================================================================

文件权限的修改

先查看权限ls -l

dashuai@ubuntu:~$ ls -l
total 60
drwxrwxr-x 2 dashuai dashuai 4096 May 20 04:23 aaa
drwxr-xr-x 2 dashuai dashuai 4096 May 20 04:15 Desktop
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Documents
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Downloads
-rw-r--r-- 1 dashuai dashuai 8445 May 15 08:47 examples.desktop
drwxrwxr-x 3 dashuai dashuai 4096 May 17 08:08 family
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Music
-rw-rw-r-- 1 dashuai dashuai 4 May 20 00:42 new.txt
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Pictures
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Public
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Templates
drwxrwxr-x 2 dashuai dashuai 4096 May 16 23:57 Ubuntu One
drwxr-xr-x 2 dashuai dashuai 4096 May 15 00:55 Videos
dashuai@ubuntu:~$


然后新建一个空文件夹me,作为实验



修改me目录的外组人的权限,是可读的可执行的,不让写,我们让me不可读,不可执行!

使用chmod 命令 是英文change mode的缩写。后面的参数跟需要修改权限的文件,u代表自己人,g代表同组人,o代表外组人,ugo,不是ufo!!嘿嘿……
这样记忆;other是其他人,外部人的意思,group是组的意思,剩下的user就是用户自己的意思啦!



减去权限,使用减号-,我们消去me外组人的可执行x,和可读r的权限,所以我们就用o- 就可以了,后面再跟一个名字即可。

同理,增加权限,用+号,比如,增加me的外组人的可读权限



人为直接设定权限,使用=号就行,比如设置外组人具有所有权限(可读r,可写w,可执行x)

dashuai@ubuntu:~$ chmod o=wrx me
结果
drwxrwxrwx 2 dashuai dashuai 4096 May 20 20:01 me

同理设置为什么权限都没有,直接用等于一个 - 号就行

dashuai@ubuntu:~$ chmod o=- me
结果
drwxrwx--- 2 dashuai dashuai 4096 May 20 20:01 me

还可以一次性指定多个的权限,比如同时指定自己的,同组的等,使用逗号隔开即可



这样略显繁琐,开发的时候比较专业的是用数字直接表示权限

比如:w是2,r是4,x是1,-什么都没有是0,最后一个0最好记忆,前面熟悉也不难。

如果三个权限都有,就是4+2+1=7即可

如果只有读,就是4

如果只有读和可执行,那就是5

如果只有读和可写,那就是6

如果只有可执行和写,那就3

以此类推,这样相加即可,0-7八个数字,用一个这样的8进制数字就能表示所有的权限,我们使用一个三位的八进制数字来表示权限,正合适对应三个组的权限。

比如700,就是自己有所有权限,但是同组人和外组人什么都没有



再看如果是755,那就是自己有所有权限,同组和外组是读和可执行



另外,我们可以使用a这个字母(all的缩写),来表示对所有的(自己,同组,外组)的权限进行统一设置,不用单独写u,g,o,浪费时间了。



这样写其实还不算专业,在专业的话,应该是0打头的八进制,因为c和c++里,八进制也是这样规定的。



0644表示自己有可读,可写权限,同组只有可读,外组可读。

注意;

只有管理员有权利修改所有用户的权限,而单个的用户,只能修改自己的权限。

删除文件的命令rm,是不能恢复的,在使用这种破坏性的删除的时候,必须备份。

===========================================================================================================

mkdir命令开头的详解

mkdir可以同时建立多个目录

dashuai@ubuntu:~$ mkdir a b c
dashuai@ubuntu:~$ ls
a c Downloads me Pictures Ubuntu One
aaa Desktop examples.desktop Music Public Videos
b Documents family new.txt Templates
dashuai@ubuntu:~$


mkdir不能跨级建立目录
dashuai@ubuntu:~$ mkdir dd/d
mkdir: cannot create directory `dd/d': No such file or directory
dashuai@ubuntu:~$


必须分开建
dashuai@ubuntu:~$ mkdir dd
dashuai@ubuntu:~$ mkdir dd/d
dashuai@ubuntu:~$ ls
a c Documents family new.txt Templates
aaa dd Downloads me Pictures Ubuntu One
b Desktop examples.desktop Music Public Videos
dashuai@ubuntu:~$ cd dd
dashuai@ubuntu:~/dd$ ls
d
dashuai@ubuntu:~/dd$


如果不想分开建,就带一个选项p,代表建立多层目录

dashuai@ubuntu:~$ mkdir -p aaa/aa/a
dashuai@ubuntu:~$ ls
a c Documents family new.txt Templates
aaa dd Downloads me Pictures Ubuntu One
b Desktop examples.desktop Music Public Videos
dashuai@ubuntu:~$ cd aaa
dashuai@ubuntu:~/aaa$ cd aa
dashuai@ubuntu:~/aaa/aa$ ls
a
dashuai@ubuntu:~/aaa/aa$


也可以用ls -R开查看层级目录,不用cd进入就行!
dashuai@ubuntu:~$ ls -R aaa
aaa:
aa

aaa/aa:
a

aaa/aa/a:

创建文件呢?

以前提过,使用touch,创建空文件,touch可以层级建立文件,可以同时建立多个文件。

使用 > 重定向符号,把左边的内容输出,写到右边的文件当中去。

当然也可以用记事本去写也行,然后使用cat来查看内容

dashuai@ubuntu:~$ date > time
dashuai@ubuntu:~$ ls
a c Documents family new.txt Templates Videos
aaa dd Downloads me Pictures time
b Desktop examples.desktop Music Public Ubuntu One
dashuai@ubuntu:~$ cat time
Tue May 20 22:55:29 PDT 2014
dashuai@ubuntu:~$

dashuai@ubuntu:~$ pwd > pwd.txt
dashuai@ubuntu:~$ ls
a c Documents family new.txt pwd.txt Ubuntu One
aaa dd Downloads me Pictures Templates Videos
b Desktop examples.desktop Music Public time
dashuai@ubuntu:~$ cat pwd.txt
/home/dashuai
dashuai@ubuntu:~$

并且,> 还会清空文件原来的内容,进行覆盖

dashuai@ubuntu:~$ id > pwd.txt
dashuai@ubuntu:~$ cat pwd.txt
uid=1000(dashuai) gid=1000(dashuai) groups=1000(dashuai),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),107(lpadmin),124(sambashare)
dashuai@ubuntu:~$


发现内容改变了,以前的pwd的内容被新的id出来的内容覆盖了。

如果不想清楚呢?

那就使用>>两个重定向符号,追加到文件的末尾。

dashuai@ubuntu:~$ pwd >> pwd.txt
dashuai@ubuntu:~$ cat pwd.txt
uid=1000(dashuai) gid=1000(dashuai) groups=1000(dashuai),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),107(lpadmin),124(sambashare)
/home/dashuai

注意;
只要是左边能输出的,都会被重定向到右边的指定文件中!去输出!

比如ls的输出也是没问题的!!还有cal日历命令,很漂亮!         英文单词calendar的缩写。

dashuai@ubuntu:~$ cal
May 2014
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

dashuai@ubuntu:~$ cal > pwd.txt
dashuai@ubuntu:~$ cat pwd.txt
May 2014
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

dashuai@ubuntu:~$


输出整年的日历

dashuai@ubuntu:~$ cal 2014
2014
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 1
5 6 7 8 9 10 11 2 3 4 5 6 7 8 2 3 4 5 6 7 8
12 13 14 15 16 17 18 9 10 11 12 13 14 15 9 10 11 12 13 14 15
19 20 21 22 23 24 25 16 17 18 19 20 21 22 16 17 18 19 20 21 22
26 27 28 29 30 31 23 24 25 26 27 28 23 24 25 26 27 28 29
30 31

April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 1 2 3 1 2 3 4 5 6 7
6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14
13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21
20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28
27 28 29 30 25 26 27 28 29 30 31 29 30

July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 1 2 1 2 3 4 5 6
6 7 8 9 10 11 12 3 4 5 6 7 8 9 7 8 9 10 11 12 13
13 14 15 16 17 18 19 10 11 12 13 14 15 16 14 15 16 17 18 19 20
20 21 22 23 24 25 26 17 18 19 20 21 22 23 21 22 23 24 25 26 27
27 28 29 30 31 24 25 26 27 28 29 30 28 29 30
31

October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 1 2 3 4 5 6
5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13
12 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 20
19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27
26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31
30
dashuai@ubuntu:~$


看某年某月的(这里注意一点,需要习惯外国人的习惯,月在年前!)

dashuai@ubuntu:~$ cal 5 2014
May 2014
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

dashuai@ubuntu:~$


自定义内容如何写到文件?当然使用我们之前学过的echo命令,并且内容中间的空格如果有多个,会自动去掉,只留一个。

dashuai@ubuntu:~$ echo ha ha
ha ha

dashuai@ubuntu:~$ echo hello
hello


如果想保留多个空格,怎么弄?使用双引号包起来,表示是一个整体,都要留着。
dashuai@ubuntu:~$ echo "ha ha"
ha ha


将输入写到其他文件
dashuai@ubuntu:~$ echo hello > hello.txt
dashuai@ubuntu:~$ cat hello.txt
hello


我们发现这样需要写两个命令,很麻烦,我们可以将这些命令写到一起,中间用分号隔开!
dashuai@ubuntu:~$ echo haha > haha.txt;cat haha.txt
haha
比如,显示时间,我们让时间延迟10秒钟显示怎么办?

datedashuai@ubuntu:~$ date;sleep 10;date
Tue May 20 23:17:09 PDT 2014
Tue May 20 23:17:19 PDT 2014
使用sleep命令,参数单位是秒钟。

另外文件里有一个特殊的文件,在dev设备目录里,有一个tty文件,代表终端屏幕或者终端键盘的意思。

dashuai@ubuntu:~$ id > /dev/tty
uid=1000(dashuai) gid=1000(dashuai) groups=1000(dashuai),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),107(lpadmin),124(sambashare)
dashuai@ubuntu:~$ id
uid=1000(dashuai) gid=1000(dashuai) groups=1000(dashuai),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),107(lpadmin),124(sambashare)
原本我们是重定向到了一个文件里,但是因为tty代表了终端的屏幕和键盘,依然输入到了屏幕上。

还有个特殊的文件null,叫黑洞文件,是一个空文件,空设备,因为在linux里,一切都是文件,理所当然的,空设备也是文件。他是0长度的,一直是空,和黑洞一样,塞多少,吃多少。都是空的。

dashuai@ubuntu:~$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 May 20 18:07 /dev/null

作为了解,知道至少比不知道好些。

还有以前说过的移动命令,mv命令,可以是文件或者目录都行。

格式;mv 目录(文件)(可是多个文件或者目录移动) 指定目录路径(同时可以修改所移动文件或者目录的名字)

注意;

只有移动一个文件或者目录的时候,才可以修改名字。

如果想改名,那就只需原地移动就行了。移动到当前目录下,改个名字就完了。

要和复制进行区分

cp(copy的缩写),我们打算复制a dd new.txt到family目录里。

dashuai@ubuntu:~$ ls
a dd examples.desktop me Public Ubuntu One
aaa Desktop family Music pwd.txt Videos
b Documents haha.txt new.txt Templates
c Downloads hello.txt Pictures time
dashuai@ubuntu:~$ cp a dd new.txt family
cp: omitting directory `a'
cp: omitting directory `dd'


直接使用cp命令,会将目录略过(a dd目录),他只会复制文件,如果想复目录,需要加选项 r
dashuai@ubuntu:~$ ls
a dd examples.desktop me Public Ubuntu One
aaa Desktop family Music pwd.txt Videos
b Documents haha.txt new.txt Templates
c Downloads hello.txt Pictures time
dashuai@ubuntu:~$ cp -r a aaa dd family
dashuai@ubuntu:~$ ls -l family
total 16
drwxrwxr-x 2 dashuai dashuai 4096 May 20 23:42 a
drwxrwxr-x 3 dashuai dashuai 4096 May 20 23:42 aaa
-rw-rw-r-- 1 dashuai dashuai 0 May 17 07:30 daughter.txt
drwxrwxr-x 3 dashuai dashuai 4096 May 20 23:42 dd
-rw-rw-r-- 1 dashuai dashuai 0 May 17 07:30 father.txt
drwxrwxr-x 5 dashuai dashuai 4096 May 17 19:30 house
-rw-rw-r-- 1 dashuai dashuai 0 May 17 07:30 mother.txt
-rw-rw-r-- 1 dashuai dashuai 0 May 17 07:30 son.txt
发现,都成功的复制过去了!

并且如果有覆盖或者删除的话,没有任何提示!那么我们可以人为让它加上提示!使用选项 i 意思是interactive交互的意思,拿rm删除文件来试验吧

dashuai@ubuntu:~/family$ ls
a aaa daughter.txt dd father.txt house mother.txt son.txt
dashuai@ubuntu:~/family$ rm -i father.txt
rm: remove regular empty file `father.txt'?
会提示是否真的删除?!
y表示yes,n表示no

另外删除目录,必须是空目录,需要使用rmdir命令,这样比较安全

dashuai@ubuntu:~/family$ rmdir a
dashuai@ubuntu:~/family$ ls
aaa daughter.txt dd father.txt house mother.txt son.txt

如果使用rm -r,可以一撸到底!不管目录或者文件都行,而且目录不是空的也能删除,但是很危险!容易误删东西!!!!
dashuai@ubuntu:~/family$ ls
aaa daughter.txt dd father.txt house mother.txt son.txt
dashuai@ubuntu:~/family$ rmdir aaa
rmdir: failed to remove `aaa': Directory not empty
dashuai@ubuntu:~/family$ rm -r aaa
dashuai@ubuntu:~/family$ ls
daughter.txt dd father.txt house mother.txt son.txt

所以删除目录,注意是空目录,有专业的命令rmdir命令。而单个的rm命令,只能删除文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ terminal ubuntu shell