the linux Command Line 学习笔记

中英文资料:http://billie66.github.io/TLCL/book/chap01.html

the graphical user interface (GUI) 图形界面The Command Line 命令行Linux 是以 Unix 家族的操作系统为模型写成的。第二章 什么是 Shell:bash 是 shell 的一种,来自于 GNU 项目。“bash”是“Bourne Again SHell”的首字母缩写,所指的是这样一个事实,bash 是 sh 的增强版,sh 是最初 Unix 的 shell 程序,由 Steve Bourne 写成。KDE 用的是 konsole 程序, 而 GNOME 则使用 gnome-terminal。还有其他一些终端仿真器可供 Linux 使用,但基本上,它们都是为了完成同样的事情,让我们能访问 shell

[me@linuxbox ~]$

“$" 普通用户

a pound sign (“#”),提示符的最后一个字符是“#”, 而不是“$”, 那么这个终端会话就有超级用户权限。命令历史查看以往的输入的命令,向上箭头显示系统当前时间和日期[root@AY130410135131135089 ~]# dateTue Nov 26 23:38:14 CST 2013默认显示当前月份的日历[root@AY130410135131135089 ~]# cal November 2013 Su Mo Tu We Th Fr Sa 1 23 4 5 6 7 8 910 11 12 13 14 15 1617 18 19 20 21 22 2324 25 26 27 28 29 30查看磁盘剩余空间(free space on your disk drives)的数量,输入 df:[root@AY130410135131135089 ~]# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/xvda1 20469760 7366592 13103168 36% /tmpfs 1960828 0 1960828 0% /dev/shm同样地,显示空闲内存的数量(the amount of free memory),输入命令 free。[root@AY130410135131135089 ~]# free total used free shared buffers cachedMem: 3921656 2141516 1780140 0 656 168692-/+ buffers/cache: 1972168 1949488Swap: 490488 2348 488140结束终端会话,也即退出终端[root@AY130410135131135089 ~]# exitlogout第三章:

pwd - 打印当前所在目录的名称cd  - 改变目录ls  - 打印目录的内容

[root@AY130410135131135089 ~]# pwd/rootUnderstanding The File System Tree理解文件系统树文件系统中的第一级目录称为根目录The Current Working Directory当前工作目录[root@AY130410135131135089 ~]# pwd/rootListing The Contents Of A Directory列出目录内容[root@AY130410135131135089 usr]# lsbin etc games include lib lib64 libexec local sbin share src tmpChanging The Current Working Directory更改当前工作目录从根目录(用开头的“/”表示)开始,有一个叫 “usr” 的 目录包含了目录 “bin”。[root@AY130410135131135089 local]# cd /usr/bin/符号 ”.” 指的是工作目录,”..” 指的是工作目录的父目录。经常使用 cd .. 返回上级目录cd ..cd ../../..cd 更改工作目录到主目录。cd – 更改工作目录到先前的工作目录。

cd ~user_name 更改工作目录到用户主目录。例如, cd ~bob 会更改工作目录到用户“bob”的主目录

第四章:ls 有一些我们常用的参数, 比如我们要知道当前目录的所有内容, 包括隐藏文件夹和文件和所有属性, 例[root@AY130410135131135089 logs]# lsboot2013-06.log使用 ls 命令的“-l”选项,则结果以长模式输出:[root@AY130410135131135089 logs]# ls -ltotal 8-rw-rw-rw- 1 root root 5975 Jun 15 17:34 boot2013-06.log显示隐藏文件:[root@AY130410135131135089 logs]# ls -a. .. boot2013-06.log命令 选项 参数command -options arguments下面这个例子,ls 命令有两个选项, “l” 选项产生长格式输出,“t”选项按文件修改时间的先后来排序。[me@linuxbox ~]$ ls -lt确定一个文件什么文件类型我们用 file, 使用方法如下[root@AY130410135131135089 logs]# file boot2013-06.logboot2013-06.log: ASCII text[root@AY130410135131135089 assets]# file world.swfworld.swf: Macromedia Flash data (compressed), version 10用 less 浏览文件内容[me@linuxbox ~]$ less /etc/passwdTODO 表 4-3: less 命令 需要截图哦。小提示:记得复制和粘贴技巧!如果你正在使用鼠标,双击文件名,来复制它,然后按下鼠标中键(右键),粘贴文件名到命令行中。Symbolic Links符号链接Hard Links硬链接 TODO第五章:操作文件和目录

cp — 复制文件和目录mv — 移动/重命名文件和目录mkdir — 创建目录rm — 删除文件和目录

ln — 创建硬链接和符号链接 TODO没搞懂 和Window快捷键的区别联系点击打开链接

cp — 复制文件和目录

cp [options] source dest cp [options] source… directory

jiangge@localhost:~$ cp item1 item2 # 把item复制到directory目录jiangge@localhost:~$ cp file1 file2 # 复制file1到file2jiangge@localhost:~$ cp -i file1 file2 # 复制过程中如果有这个文件提示是否覆盖jiangge@localhost:~$ cp dir1/* dir2 # 复制目录下所有文件或目录到目标目录jiangge@localhost:~$ cp -r dir1 dir2 # 递归复制mkdir — 创建目录jiangge@localhost:~$ mkdir dirjiangge@localhost:~$ mkdir dir1 dir2 dir3 # 创建多个文件夹jiangge@localhost:~$ mkdir -p /dir1/dir2/dir3 # 递归创建文件夹

mv — 移动/重命名文件和目录jiangge@localhost:~$ mv file1 file2 # 重命名jiangge@localhost:~$ mv -i file1 file2 # 如果存在提示是否写入jiangge@localhost:~$ mv file1 file2 dir1# 移动 file1 file2 至 dir1jiangge@localhost:~$ mv dir1 dir2 # 移动 dir1 至 dir2rm — 删除文件和目录jiangge@localhost:~$ rm file1

jiangge@localhost:~$ rm file1 dir1jiangge@localhost:~$ rm -r dir1 #删除文件夹, 递归删除jiangge@localhost:~$ rm -rf dir1 强制删除

表5-3:通配符范例模式匹配对象*所有文件g*文件名以“g”开头的文件b*.txt以"b"开头,中间有零个或任意多个字符,并以".txt"结尾的文件Data???以“Data”开头,其后紧接着3个字符的文件[abc]*文件名以"a","b",或"c"开头的文件BACKUP.[0-9][0-9][0-9]以"BACKUP."开头,并紧接着3个数字的文件[[:upper:]]*以大写字母开头的文件[![:digit:]]*不以数字开头的文件*[[:lower:]123]文件名以小写字母结尾,或以 “1”,“2”,或 “3” 结尾的文件
表5-4:cp 选项选项意义-a, --archive复制文件和目录,以及它们的属性,包括所有权和权限。 通常,复本具有用户所操作文件的默认属性。-i, --interactive在重写已存在文件之前,提示用户确认。如果这个选项不指定, cp 命令会默认重写文件。-r, --recursive递归地复制目录及目录中的内容。当复制目录时, 需要这个选项(或者-a 选项)。-u, --update当把文件从一个目录复制到另一个目录时,仅复制 目标目录中不存在的文件,或者是文件内容新于目标目录中已经存在的文件。-v, --verbose显示翔实的命令操作信息
表 5—5: cp 实例命令运行结果cp file1 file2复制文件 file1内容到文件 file2。如果 file2已经存在,file2的内容会被 file1的 内容重写。如果 file2不存在,则会创建 file2。cp -i file1 file2这条命令和上面的命令一样,除了如果文件 file2存在的话,在文件 file2被重写之前, 会提示用户确认信息。cp file1 file2 dir1复制文件 file1和文件 file2到目录 dir1。目录 dir1必须存在。cp dir1/* dir2使用一个通配符,在目录 dir1中的所有文件都被复制到目录 dir2中。 dir2必须已经存在。cp -r dir1 dir2复制目录 dir1中的内容到目录 dir2。如果目录 dir2不存在, 创建目录 dir2,操作完成后,目录 dir2中的内容和 dir1中的一样。 如果目录 dir2存在,则目录 dir1(和目录中的内容)将会被复制到 dir2中。

第六章:点击打开链接

type    - 解读一个命令which   - 显示哪些是可执行程序,which 确定一个可执行程序的位置man     - 显示命令手册apropos - 显示一个合适的命令列表info    - 显示一个命令信息whatis  - 显示非常简短的描述一个命令alias   - 为命令创建一个别名

[shijiangge@localhost test]$ type typetype is a shell builtin[shijiangge@localhost test]$ type lsls is aliased to `ls –color=tty'[shijiangge@localhost test]$ type cpcp is hashed (/bin/cp)[shijiangge@localhost test]$ which ls #which确定一个可执行程序的位置alias ls=’ls –color=tty’/bin/ls[shijiangge@localhost test]$ whichvim/usr/bin/vim

help获得帮助信息, 在每个shell命令的后面加上–help参数, 如

[shijiangge@localhost test]$ ls –helpUsage: ls [OPTION]… [FILE]…List information about the FILEs (the current directory by default).Sort entries alphabetically if none of -cftuvSUX nor –sort.[shijiangge@localhost test]$ help cdcd: cd [-L|-P] [dir] Change the current directory to DIR. The variable $HOME is the default DIR.

注意表示法:出现在命令语法说明中的方括号,表示可选的项目。一个竖杠字符 表示互斥选项。在上面 cd 命令的例子中:cd [-L|-P] [dir]

这种表示法说明,cd 命令可能有一个”-L”选项或者”-P”选项,进一步,可能有参数”dir”。

man 获得命令指南

[shijiangge@localhost test]$ man ls

whatis 显示一个简短的描述

[shijiangge@localhost test]$ whatis lsls                   (1)  - list directory contentsls                   (1p)  - list directory contents
[shijiangge@localhost test]$ whatis vimvim                  (1)  - Vi IMproved, a programmers text editor

用别名(alias)创建你自己的命令

shijiangge@localhost:~$ type testtest is a shell builtinshijiangge@localhost:~$ type foo/bin/bash: line 0: type: foo: not found      # 什么都没有shijiangge@localhost:~$ alias foo='cd /usr; ls; cd -'shijiangge@localhost:~$ alias name='string'shijiangge@localhost:~$ alias                         # 创建de自定义命令都打印出来alias foo='cd /usr; ls; cd -'alias name='string'shijiangge@localhost:~$ foobin include lib local man sbin share src/home/shijianggeshijiangge@localhost:~$ type foofoo is aliased to 'cd /usr; ls; cd -'shijiangge@localhost:~$ unalias foo                   # 销毁fooshijiangge@localhost:~$ alias                         # 只剩下name了alia name='string'shijiangge@localhost:~$ type foo                      # 什么都没有/bin/bash: foo: command not foundshijiangge@localhost:~$ unalias name                  # 销毁name

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

这堂课,我们来介绍可能是命令行最酷的特性。它叫做 I/O 重定向。”I/O”代表输入/输出,通过这个工具,你可以重定向命令的输入输出,命令的输入来自文件,而输出也存到文件。也可以把多个命令连接起来组成一个强大的命令管道。为了炫耀这个工具,我们将叙述 以下命令:

cat - 连接文件sort - 排序文本行uniq - 报道或省略重复行grep - 打印匹配行wc - 打印文件中换行符,字,和字节个数head - 输出文件第一部分tail – 输出文件最后一部分I/O 重定向允许我们来重定义标准输出送到哪里。重定向标准输出到另一个文件除了屏幕,我们使用 “>” 重定向符,其后跟着文件名。为什么我们要这样做呢?因为有时候把一个命令的运行结果存储到 一个文件很有用处。例如,我们可以告诉 shell 把 ls 命令的运行结果输送到文件 ls-output.txt 中去, 由文件代替屏幕。[shijiangge@localhost ~]$ ls -l /usr/bin >ls-output.txt怎样才能把重定向结果追加到文件内容后面,而不是从开头重写文件?为了这个目的, 我们使用”?“重定向符,像这样:[shijiangge@localhost ~]$ ls -l /usr/bin>>ls-output.txt重定向标准错误缺乏专用的重定向操作符。重定向标准错误,我们必须参考它的文件描述符。一个程序可以在几个编号的文件流中的任一个上产生输出。然而我们必须把这些文件流的前三个看作标准输入,输出和错误,shell 内部参考它们为文件描述符0,1和2,各自地。shell 提供 了一种表示法来重定向文件,使用文件描述符。因为标准错误和文件描述符2一样,我们用这种 表示法来重定向标准错误:[shijiangge@localhost ~]$ ls -l /bin/usr 2> ls-error.txt使用 &> 来重定向标准输出和错误到文件 ls-output.txt:

[shijiangge@localhost ~]$ ls -l /bin/usr &> ls-output.txt

[shijiangge@localhost ~]$cat HelloWorld.java

cat 的 -n 参数会自动加上行号:

$ cat -n /etc/logrotate.conf    1/var/log/btmp {    2    missingok    3    monthly    4    create 0660 root utmp    5    rotate 1    6}

使用管道操作符”|”(竖杠),一个命令的 标准输出可以管道到另一个命令的标准输入:[shijiangge@localhost ~]$ ls -l /usr/bin | less管道线经常用来对数据完成复杂的操作。有可能会把几个命令放在一起组成一个管道线。通常,以这种方式使用的命令被称为过滤器。过滤器接受输入,以某种方式改变它,然后 输出它。第一个我们想试验的过滤器是 sort。想象一下,我们想把目录/bin 和/usr/bin 中 的可执行程序都联合在一起,再把它们排序,然后浏览执行结果:[shijiangge@localhost ~]$ls /bin /usr/bin |sort | lessuniq 命令经常和 sort 命令结合在一起使用。uniq 从标准输入或单个文件名参数接受数据有序 列表(详情查看 uniq 手册页),默认情况下,从数据列表中删除任何重复行。所以,为了确信 我们的列表中不包含重复句子(这是说,出现在目录/bin 和/usr/bin 中重名的程序),我们添加 uniq 到我们的管道线中:[shijiangge@localhost ~]$ls /bin /usr/bin | sort | uniq | less在这个例子中,我们使用 uniq 从 sort 命令的输出结果中,来删除任何重复行。如果我们想看到 重复的数据列表,让 uniq 命令带上”-d”选项,就像这样:[shijiangge@localhost ~]$ls /bin /usr/bin | sort |uniq -d | lesswc命令:显示行数,单词数和字节数[shijiangge@localhost ~]$ wc ls-output.txt1 7 40 ls-output.txt正如我们先前的命令,如果 wc 不带命令行参数,它接受标准输入。”-l”选项限制命令输出只能 报道行数。添加 wc 到管道线来统计数据,是个很便利的方法。查看我们的有序列表中程序个数, 我们可以这样做:[shijiangge@localhost ~]$ ls /bin /usr/bin | sort | uniq |wc -l1871grep 是个很强大的程序,用来找到文件中的匹配文本。比如说,我们想在我们的程序列表中,找到文件名中包含单词”zip”的所有文件。这样一个搜索, 可能让我们了解系统中的一些程序与文件压缩有关系。这样做:[shijiangge@localhost ~]$ ls /bin /usr/bin | sort | uniq | grep zipgrep 有-对方便的选项:”-i”导致 grep忽略大小写当执行搜索时(通常,搜索是大小写 敏感的),”-v”选项会告诉 grep只打印不匹配的行。head / tail -打印文件开头部分/结尾部分默认情况下显示10行,通过”-n”选项来调整命令打印的行数。tail 有一个选项允许你实时的浏览文件。当观察日志文件的进展时,这很有用,因为 它们同时在被写入,使用”-f”选项,tail 命令继续监测这个文件,当新的内容添加到文件后,它们会立即 出现在屏幕上。[shijiangge@localhost ~]$head -n 5ls-output.txt[shijiangge@localhost ~]$ tail -n 5 ls-output.txt

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

第8章:

(字符)展开–Expansionecho - 显示一行文本[shijiangge@localhost ~]$ echo this is a testthis is a test[shijiangge@localhost ~]$ echo *foo.txt HelloWorld.java ls-error.txt ls-output.txt test vimrc.zip路径名展开:[shijiangge@localhost ~]$echo *tfoo.txt ls-error.txt ls-output.txt test[shijiangge@localhost ~]$ echo [[:upper:]]*HelloWorld.java[shijiangge@localhost ~]$ echo /usr/*/share/usr/kerberos/share /usr/local/share波浪线展开 Tilde Expansion:[shijiangge@localhost ~]$echo ~/home/shijiangge算术表达式展开使用 $((expression)) 这种格式:[shijiangge@localhost ~]$ echo $((2 + 2))4[shijiangge@localhost ~]$ echo $(($((5**2)) * 3))75[shijiangge@localhost ~]$ echo $(((5**2) * 3))75[shijiangge@localhost ~]$ echo Five divided by two equals $((5/2))Five divided by two equals 2[shijiangge@localhost ~]$ echo with $((5%2)) left over.with 1 left over.花括号展开(Brace Expansion):花括号展开模式可能包含一个开头部分叫做报头,一个结尾部分叫做附言。花括号表达式本身可 能包含一个由逗号分开的字符串列表,或者一系列整数,或者单个的字符串。[shijiangge@localhost ~]$ echo Front-{A,B,C}-BackFront-A-Back Front-B-Back Front-C-Back[shijiangge@localhost ~]$ echo Number_{1..5}Number_1 Number_2 Number_3 Number_4 Number_5

[shijiangge@localhost ~]$ echo {Z..A}Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

[shijiangge@localhost ~]$ echo a{A{1,2},B{3,4}}b #嵌套aA1b aA2b aB3b aB4b那么这对什么有好处呢?最普遍的应用是,创建一系列的文件或目录列表。例如,如果我们是摄影师,有大量的相片。我们想把这些相片按年月先后组织起来。首先,我们要创建一系列以数值”年-月”形式命名的目录。通过这种方式,目录名按照 年代顺序排列。我们可以手动一个一个的创建目录列表,但是工作量太大了,并且还易于出错。所以呢:[shijiangge@localhost ~]$ mkdir Pics[shijiangge@localhost ~]$ cd Pics/[shijiangge@localhost Pics]$ lltotal 0[shijiangge@localhost Pics]$ mkdir {2007..2009}-0{1..9} {2007..2009}-{10..12}[shijiangge@localhost Pics]$ ls2007-01 2007-05 2007-09 2008-01 2008-05 2008-09 2009-01 2009-05 2009-092007-02 2007-06 2007-10 2008-02 2008-06 2008-10 2009-02 2009-06 2009-102007-03 2007-07 2007-11 2008-03 2008-07 2008-11 2009-03 2009-07 2009-112007-04 2007-08 2007-12 2008-04 2008-08 2008-12 2009-04 2009-08 2009-12参数展开(Parameter Expansion):[shijiangge@localhost Pics]$ echo $USERshijiangge命令替换(Command Substitution):命令替换允许我们把一个命令的输出作为一个展开模式来使用:[shijiangge@localhost Pics]$ echo $(ls)2007-01 2007-02 2007-03 2007-04 2007-05 2007-06 2007-07 2007-08 2007-09 2007-10 2007-11 2007-12 2008 -01 2008-02 2008-03 2008-04 2008-05 2008-06 2008-07 2008-08 2008-09 2008-10 2008-11 2008-12 2009-01 2009-02 2009-03 2009-04 2009-05 2009-06 2009-07 2009-08 2009-09 2009-10 2009-11 2009-12[shijiangge@localhost ~]$ ls -l $(which cp)-rwxr-xr-x 1 root root 68136 Nov 28 2006 /bin/cp[shijiangge@localhost ~]$ ls -l `which cp`-rwxr-xr-x 1 root root 68136 Nov 28 2006 /bin/cp[shijiangge@localhost ~]$ file $(ls /usr/bin/* | grep zip)/usr/bin/bunzip2: symbolic link to `bzip2’/usr/bin/bzip2: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9 , dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped/usr/bin/bzip2recover: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9……引用(Quoting)–单引号,双引号:[shijiangge@localhost ~]$ echo this is a testthis is a test[shijiangge@localhost ~]$ echo "this is a test" # 加双引号与不加双引号的区别看清楚没this is a test[shijiangge@localhost ~]$ echo text ~/*.txt {a,b} $(echo foo) $((2+2)) $USERtext /home/shijiangge/foo.txt /home/shijiangge/ls-error.txt /home/shijiangge/ls-output.txt a b foo 4 shijiangge[shijiangge@localhost ~]$ echo "text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER"text ~/*.txt {a,b} foo 4 shijiangge[shijiangge@localhost ~]$ echo ‘text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER’text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER[shijiangge@localhost ~]$ echo $(cal)January 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[shijiangge@localhost ~]$ echo "$(cal)" January 2014Su Mo Tu We Th Fr Sa1 2 3 45 6 7 8 9 10 1112 13 14 15 16 17 1819 20 21 22 23 24 2526 27 28 29 30 31转义字符(Escaping Characters):[shijiangge@localhost ~]$ echo "The balance for user $USER is: $5.00"The balance for user shijiangge is: .00[shijiangge@localhost ~]$ echo "The balance for user $USER is: \$5.00"The balance for user shijiangge is: $5.00

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

第9章–shell 提供的键盘操作技巧

光标移动命令:

Key Action

Ctrl-a移动到行首Ctrl-e移动到行尾Ctrl-f向右移动一个字符Ctrl-b向左移动一个字符Alt-f光标向前移动一个单词Alt-b光标向后移动一个单词Ctrl-l清屏, 作用和clear一样

文本编辑命令:

Key Action

Ctrl-d删除字符到光标的位置Ctrl-t调换光标前一个字符Alt-t调换光标前一个单词Alt-l从光标位置开始转换成小写字母Alt-u从光标位置开始转换成大写字母

剪切和粘贴命令:

Key Action

Ctrl-k从光标位置删除到行尾Ctrl-u从光标位置删除到行首Alt-d从光标位置删除一个单词Alt-Backspace从光标位置删除前一个字符Ctrl-y从kill-ring拽Ctrl-y文本,把它插入游标目前的位置

表9-4: 自动补全命令(Tab) 按键 行动

Alt-?显示可能的自动补全列表。在大多数系统中,你也可以完成这个通过按 两次 tab 键,这会更容易些。Alt-*插入所有可能的自动补全。当你想要使用多个可能的匹配项时,这个很有帮助。

history–查看历史命令:

[shijiangge@localhost ~]$ history | less

[shijiangge@localhost ~]$ history | grep /usr/bin

ecos@ubuntu:~$ history | grep /usr/bin...88 ls...ecos@ubuntu:~$ !88lsDesktop Documents Music Pictures Public Templates Videos

数字 “88” 是这个命令在历史列表中的行号。

表:历史命令:

Key Action

Ctrl-p跳转到上一个历史动作Ctrl-n跳转到下一个历史动作Alt – <搬到开始(top)的历史列表Alt – >移动到结束(bottom)的历史列表,即当前命令行Ctrl-r反向增量搜索. 从目前搜索命令行不断的历史列表Alt-p反向搜索,non-incremental. 这把钥匙,在搜索字符串类型,按回车键在搜索被执行Alt-n搜索,non-incremental了.Ctrl-o完成当前的项目清单和历史前进到下一个. 这是方便的,如果你正试图re-execute一系列命令,历史列表

表:历史命令展开:

Sequence Action

!!重复最后的命令!number重复历史列表对应的号码!string重复历史列表项中开始字符串的历史!?string重复历史列表项包含字符串的历史

我们要注意使用“!sting”和“!?srting”, 除非你绝对确定历史内容的列表条目

=============================================================================第10章–权限Secure Shell(缩写:SSH),即“安全壳协议”,一项计算机上的安全协议阮一峰:SSH原理与运用(一):远程登录http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.htmlid – 显示用户的身份chmod – 改变一个文件的模式umask – 指定在建立文件时预设默认的权限掩码(Set the default file permissions)su – 以另一个用户的身份来运行 shellsudo – 以另一个用户的身份来执行命令chown – 改变一个文件的所有者chgrp – 改变一个文件的所有权passwd – 改变用户的密码[shijiangge@localhost ~]$ less /etc/shadow/etc/shadow: Permission denied[shijiangge@localhost ~]$ iduid=504(shijiangge) gid=504(shijiangge) groups=504(shijiangge) context=user_u:system_r:unconfined_tchmod – 改变一个文件的模式(权限)[shijiangge@localhost ~]$ ls -l foo.txt-rw-rw-r–1 shijiangge shijiangge 30 Jan 21 10:19 foo.txt[shijiangge@localhost ~]$ chmod 600 foo.txt[shijiangge@localhost ~]$ ls -l foo.txt-rw——-1 shijiangge shijiangge 30 Jan 21 10:19 foo.txt

列表的前十个字符是文件的属性。这十个字符的第一个字符表明文件类型,剩下的九个字符,叫做文件模式,

代表着文件所有者,文件组所有者,和其他人的读,写,执行权限。

八进制表示法:

通常只会用到一些常见的映射关系: 7 (rwx), 6 (rw-),5 (r-x), 4 (r–), and 0 (—)。

Attribute File Type

-文件d目录l链接符号. 注意,而用符号链接,剩下的文件总是rwxrwxrwx属性”,都是虚构的. 真正的文件属性是这个符号链接指向档案c一个角色特别的文件. 这个文件类型是指一种装置,它处理数据作为一个流的字节,如终端或调制解调器b一块特别的文件. 这个文件类型是指一种装置, 如一个硬盘或cd – rom驱动

剩下的9个字符的文件属性,叫做文件模式,代表着读、写、执行权限的文件的主人,这个文件的所有者
Owner Group World

rwxrwxrwx

权限属性

属性 文件 目录

r允许文件被打开阅读允许一个目录的内容显示如果执行属性也设置w允许文件写入,然而这个属性不允许文件改名或删除. 能够删除或重命名文件是由目录的属性允许文件在一个目录被创造,删除,并重新命名为“如果执行属性也设置x允许文件将其视为一个程序和执行. 程序文件写在脚本语言也必须设置为可读可执行允许一个目录进入,例如,cd目录

我们使用和八进制批注八进制数字来设置模式目的的权限.由于每一位在一个八进制数字代表三个二进制数字,如图
Octal Binary File Mode

0000—1001–x2010-w-3011-wx4100r–5101r-x6110rw-7111rwx

常用的7 (rwx), 6 (rw-), 5 (r-x), 4 (r--), and 0 (---)

chmod 命令也可以使用符号表示法:

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

第11章–进程通常,现在的操作系统都支持多任务,意味着操作系统(给用户)造成了一种假象,(让用户觉得) 它同时能够做多件事情,事实上,它是快速地轮换执行这些任务的。Linux 内核通过使用进程,来 管理多任务。通过进程,Linux 安排不同的程序等待使用 CPU。那么,什么是进程?请看阮一峰的这篇文章:TODOps – 报告当前进程快照(Report a snapshot of current processes)top – 显示任务(Display tasks)jobs – 列出活跃的任务(List active jobs)bg – 把一个任务放到后台执行(Place a job in the background)fg – 把一个任务放到前台执行(Place a job in the foreground)kill – 给一个进程发送信号(Send a signal to a process)killall – 杀死指定名字的进程(Kill processes by name)shutdown – 关机或重启系统(Shutdown or reboot the system)查看进程,最常使用地命令(有几个命令)是 ps。ps 程序有许多选项:

[shijiangge@localhost ~]$ ps

PID TTY TIME CMD

14414 pts/0 00:00:00 bash

14485 pts/0 00:00:00 ps

PID 为进程的ID号。TTY 是 “Teletype” 的简写,是指进程的控制终端。这里,Unix 展示它的年龄。TIME 字段表示 进程所消耗的 CPU 时间数量。

[shijiangge@localhost ~]$ ps x

PID TTY STAT TIME COMMAND

14413 ? S 0:00 sshd: shijiangge@pts/0

14414 pts/0 Ss 0:00 -bash

14492 pts/0 R+ 0:00 ps x

加上 “x” 选项(注意没有开头的 “-” 字符),告诉 ps 命令,展示所有进程,不管它们由什么 终端(如果有的话)控制。在 TTY 一栏中出现的 “?” ,表示没有控制终端。使用这个 “x” 选项,可以 看到我们所拥有的每个进程的信息。STAT 是 “state” 的简写,它揭示了进程当前状态:

[shijiangge@localhost ~]$ ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 2040 576 ? Ss Jan10 0:00 init [5]

root 2 0.0 0.0 0 0 ? S Jan10 0:00 [migration/0]

root 3 0.0 0.0 0 0 ? SN Jan10 0:00 [ksoftirqd/0]

表11-2: BSD 风格的 ps 命令列标题 #ps 命令只是提供执行时刻的机器状态快照。 为了看到更多动态的信息,我们使用 top 命令:截图

top 程序连续显示系统进程更新的信息(默认情况下,每三分钟更新一次)。top 显示结果由两部分组成: 最上面是系统概要,下面是进程列表,以 CPU 的使用率排序。TODO:链接 表11-3: top 命令信息字段(top Information Fields)点击打开链接kill 命令不是确切地“杀死”程序,而是给程序 发送信号。信号是操作系统与程序之间进行通信,所采用的几种方式中的一种。我们已经看到 信号,在使用 Ctrl-c 和 Ctrl-z 的过程中。当终端接受了其中一个按键组合后,它会给在前端运行 的程序发送一个信号。在使用 Ctrl-c 的情况下,会发送一个叫做 INT(中断)的信号;当使用 Ctrl-z 时,则发送一个叫做 TSTP(终端停止)的信号。程序,反过来,倾听信号的到来,当程序 接到信号之后,则做出响应。一个程序能够倾听和响应信号,这个事实允许一个程序做些事情,比如,当程序接到一个终止信号时,它可以保存所做的工作。

ecos@ubuntu:~$ xlogo                        # 运行这条命令后弹出一个X的窗口^C                                          # ctrl+c 结束任务ecos@ubuntu:~$ xlogo &                      # 在后台运行中[1] 3583ecos@ubuntu:~$ jobs                         # 查看后台停止的任务[1]+ Running                  xlogo &ecos@ubuntu:~$ fg 1                         # 前台运行xlogo^Z                                          # ctl+z[1]+  Stopped                 xlogo         # 停止任务放到后台ecos@ubuntu:~$ bg 1                         # 后台运行[1]+ xlogo &ecos@ubuntu:~$ jobs                         # 有了吧[1]+  Running                 xlogo &ecos@ubuntu:~$ ps                           # 查看进程  PID TTY          TIME CMD 4270 ?        00:00:00 bash 3583 ?        00:00:00 xlogo 4271 ?        00:00:00 psecos@ubuntu:~$ kill 3583                    # 干掉xlogo[1]+  Terminated              xlogoecos@ubuntu:~$ ps                           # 检查下, 没有了  PID TTY          TIME CMD 4270 ?        00:00:00 bash 4271 ?        00:00:00 psecos@ubuntu:~$ jobs                         # 看看后台的任务ecos@ubuntu:~$                              # 什么都没有

TODO第12章

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

第十五章–软件包管理

一般而言,大多数发行版分别属于两大包管理技术阵营: Debian 的".deb",和红帽的".rpm"。也有一些重要的例外,比方说 Gentoo, Slackware,和 Foresight,但大多数会使用这两个基本系统中的一个。

Major Packaging System Families–主要的包管理系统家族

Packaging System Distributions (Partial Listing)

Debian Style (.deb)Debian, Ubuntu, Xandros, LinspireRed Hat Style (.rpm)Fedora, CentOS, Red Hat Enterprise Linux, OpenSUSE, Mandriva, PCLinuxOS

表15-1: 主要的包管理系统家族 包管理系统 发行版 (部分列表)

Debian Style (.deb)Debian, Ubuntu, Xandros, LinspireRed Hat Style (.rpm)Fedora, CentOS, Red Hat Enterprise Linux, OpenSUSE, Mandriva, PCLinuxOS

Packaging System Tools–包管理工具

Distributions Low-Level Tools High-Level Tools

Debian-Styledpkg apt-getaptitudeFedora, Red HatrpmyumEnterprise Linux, CentOS..

表15-2: 包管理工具 发行版 底层工具 上层工具

Debian-Styledpkgapt-get, aptitudeFedora, Red Hat Enterprise Linux, CentOSrpmyum

Package Search Commands—软件包查找工具

Style Command(s)

Debianapt-get update apt-cache search search_stringRed Hatyum search search_string

表15-3: 软件包查找工具 风格 命令

Debianapt-get update

apt-cache search search_string

Red Hatyum search search_string

表15-4: 软件包安装命令 风格 命令

Debianapt-get update

apt-get install package\_name

Red Hatyum install package\_name

例子

# ubuntuecos@ubuntu:~$ apt-get install gvim     # 安装软件ecos@ubuntu:~$ apt-get remove emacs     # 卸载软件ecos@ubuntu:~$ apt-cache show emacs     # 查看在Debian-style系统对emacs的描述# red hatecos@ubuntu:~$ rpm -U emacs-22.1-7.fc7-i386.rpm        # 更新现有的安装emacs版本ecos@ubuntu:~$ rpm -qf /usr/bin/vim                    # 看看/usr/bin/vim安装信息

例如:从一个 apt 资源库来安装 emacs 文本编辑器:

apt-get update; apt-get install emacs

表15-6: 软件包删除命令 风格 命令

Debianapt-get remove package_nameRed Hatyum erase package_name

表15-9: 列出所安装的软件包命令 风格 命令

Debiandpkg –listRed Hatrpm -qa

表15-10: 软件包状态命令 风格 命令

Debiandpkg –status package_nameRed Hatrpm -q package_name

例如:确定是否 Debian 风格的系统中安装了这个 emacs 软件包:

dpkg --status emacs

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

==========================================Lunix 调整时间,就是将服务器时间调快或调慢,线上一般不要调整时间,本地为了测试在调整服务器时间的。date -s 07/09/2013date -s 17:05:00==========================================mysql命令行导入sql文件到指定数据库的方法mysql命令行导入的方式。以下是各步骤:1、先将数据库通过ftp上传至服务器内 或者使用 rz -y 进行上传2、登陆mysql数据库: mysql -u root -p3、选择数据库:use mydbname;4、导入文件:[win下] source e:\newdb.sql;[linux下] source /root/newdb.sql;导入成功!==============================================再来一个导出的吧(不用在mysql命令行):mysqldump -uroot -p dbname table1 table2 > foo.sqlmysqldump -uroot -p huo > /usr/local/jiangge/foo.sql压缩:zip -r webgames.zip webgames===================================================FTP–ftp 启动命令:service vsftpd start

———————————————————————————-

参考:1.http://billie66.github.io/TLCL/book/chap10.html2. 学习笔记:http://www.ec-os.net/misc/linuxcommand.html,再回头,便生出无限羁绊。那是彼此的刺在对方心里留下的痕迹,

the linux Command Line 学习笔记

相关文章:

你感兴趣的文章:

标签云: