the linux Command Line 学习笔记--mysql命令行导入sql文件到指定数据库的方法
the graphical user interface (GUI) 图形界面The Command Line 命令行Linux 是以 Unix 家族的操作系统为模型写成的。第二章 什么是 Shell:bash 是 shell 的一种,来自于 GNU 项目。“bash”是“Bourne Again SHell”的首字母缩写,所指的是这样一个事实,bash
中英文资料:http://billie66.github.io/TLCL/book/chap01.html
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 ~]$
“$" 普通用户
命令历史
查看以往的输入的命令,向上箭头
显示系统当前时间和日期
[root@AY130410135131135089 ~]# date
Tue Nov 26 23:38:14 CST 2013
默认显示当前月份的日历
[root@AY130410135131135089 ~]# cal
November 2013
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
查看磁盘剩余空间(free space on your disk drives)的数量,输入 df:
[root@AY130410135131135089 ~]# df
Filesystem 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 cached
Mem: 3921656 2141516 1780140 0 656 168692
-/+ buffers/cache: 1972168 1949488
Swap: 490488 2348 488140
结束终端会话,也即 退出终端
[root@AY130410135131135089 ~]# exit
logout
第三章:
pwd - 打印当前所在目录的名称
cd - 改变目录
ls - 打印目录的内容
[root@AY130410135131135089 ~]# pwd
/root
Understanding The File System Tree 理解文件系统树
文件系统中的第一级目录称为根目录
The Current Working Directory 当前工作目录
[root@AY130410135131135089 ~]# pwd
/root
Listing The Contents Of A Directory 列出目录内容
[root@AY130410135131135089 usr]# ls
bin etc games include lib lib64 libexec local sbin share src tmp
Changing 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]# ls
boot2013-06.log
使用 ls 命令的 “-l”选项,则结果以长模式输出:
[root@AY130410135131135089 logs]# ls -l
total 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.log
boot2013-06.log: ASCII text
[root@AY130410135131135089 assets]# file world.swf
world.swf: Macromedia Flash data (compressed), version 10
用 less 浏览文件内容
[me@linuxbox ~]$ less /etc/passwd
TODO 表 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到file2
jiangge@localhost:~$ cp -i file1 file2 # 复制过程中如果有这个文件提示是否覆盖
jiangge@localhost:~$ cp dir1/* dir2 # 复制目录下所有文件或目录到目标目录
jiangge@localhost:~$ cp -r dir1 dir2 # 递归复制
mkdir — 创建目录
jiangge@localhost:~$ mkdir dir
jiangge@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 至 dir1
jiangge@localhost:~$ mv dir1 dir2 # 移动 dir1 至 dir2
rm — 删除文件和目录
jiangge@localhost:~$ rm file1
jiangge@localhost:~$ rm file1 dir1
jiangge@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 type
type is a shell builtin
[shijiangge@localhost test]$ type ls
ls is aliased to `ls --color=tty'
[shijiangge@localhost test]$ type cp
cp 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 --help
Usage: 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 cd
cd: 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 ls
ls (1) - list directory contents
ls (1p) - list directory contents
[shijiangge@localhost test]$ whatis vim
vim (1) - Vi IMproved, a programmers text editor
用别名(alias)创建你自己的命令
shijiangge@localhost:~$ type test
test is a shell builtin
shijiangge@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:~$ foo
bin include lib local man sbin share src
/home/shijiangge
shijiangge@localhost:~$ type foo
foo is aliased to 'cd /usr; ls; cd -'
shijiangge@localhost:~$ unalias foo # 销毁foo
shijiangge@localhost:~$ alias # 只剩下name了
alia name='string'
shijiangge@localhost:~$ type foo # 什么都没有
/bin/bash: foo: command not found
shijiangge@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.javacat 的 -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 | less
uniq 命令经常和 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 | less
wc命令:显示行数,单词数和字节数
[shijiangge@localhost ~]$ wc ls-output.txt
1 7 40 ls-output.txt
正如我们先前的命令, 如果 wc 不带命令行参数,它接受标准输入。”-l”选项限制命令输出只能 报道行数 。
添加 wc 到管道线来统计数据,是个很便利的方法。查看我们的有序列表中程序个数, 我们可以这样做:
[shijiangge@localhost ~]$ ls /bin /usr/bin | sort | uniq | wc -l
1871
grep 是个很强大的程序,用来找到文件中的 匹配文本 。
比如说,我们想在我们的程序列表中,找到文件名中包含单词”zip”的所有文件。这样一个搜索, 可能让我们了解系统中的一些程序与文件压缩有关系。这样做:
[shijiangge@localhost ~]$ ls /bin /usr/bin | sort | uniq | grep zip
grep 有-对方便的选项: ”-i” 导致 grep 忽略大小 写当执行搜索时(通常,搜索是大小写 敏感的), ”-v” 选项会告诉 grep 只打印不匹配 的行。
head / tail -打印文件开头部分/结尾部分
默认情况下显示10行,通过 ”-n”选项 来调整命令 打印的行数 。
tail 有一个选项允许你实时的浏览文件。当观察日志文件的进展时,这很有用,因为 它们同时在被写入,
使用”-f”选项,tail 命令继续监测这个文件,当新的内容添加到文件后,它们会立即 出现在屏幕上。
[shijiangge@localhost ~]$ head -n 5 ls-output.txt
[shijiangge@localhost ~]$ tail -n 5 ls-output.txt
======================================
第8章:
(字符)展开--Expansion
echo - 显示一行文本
[shijiangge@localhost ~]$ echo this is a test
this is a test
[shijiangge@localhost ~]$ echo *
foo.txt HelloWorld.java ls-error.txt ls-output.txt test vimrc.zip
路径名展开:
[shijiangge@localhost ~]$echo *t
foo.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}-Back
Front-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]$ ll
total 0
[shijiangge@localhost Pics]$ mkdir {2007..2009}-0{1..9} {2007..2009}-{10..12}
[shijiangge@localhost Pics]$ ls
2007-01 2007-05 2007-09 2008-01 2008-05 2008-09 2009-01 2009-05 2009-09
2007-02 2007-06 2007-10 2008-02 2008-06 2008-10 2009-02 2009-06 2009-10
2007-03 2007-07 2007-11 2008-03 2008-07 2008-11 2009-03 2009-07 2009-11
2007-04 2007-08 2007-12 2008-04 2008-08 2008-12 2009-04 2009-08 2009-12
参数展开(Parameter Expansion):
[shijiangge@localhost Pics]$ echo $USER
shijiangge
命令替换(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 test
this 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)) $USER
text /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 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
转义字符(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文本,把它插入游标目前的位置 |
| 按键 | 行动 |
|---|---|
| Alt-? | 显示可能的自动补全列表。在大多数系统中,你也可以完成这个通过按 两次 tab 键,这会更容易些。 |
| Alt-* | 插入所有可能的自动补全。当你想要使用多个可能的匹配项时,这个很有帮助。 |
history--查看历史命令:
[shijiangge@localhost ~]$ history | less
[shijiangge@localhost ~]$ history | grep /usr/bin
ecos@ubuntu:~$ history | grep /usr/bin ... 88 ls ... ecos@ubuntu:~$ !88 ls Desktop 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),即“安全壳协议”,一项计算机上的安全协议
- id - 显示用户的身份
- chmod - 改变一个文件的模式
- umask - 指定在建立文件时预设默认的权限掩码(Set the default file permissions)
- su - 以另一个用户的身份来运行 shell
- sudo - 以另一个用户的身份来执行命令
- chown - 改变一个文件的所有者
- chgrp - 改变一个文件的所有权
- passwd - 改变用户的密码
/etc/shadow: Permission denied
[shijiangge@localhost ~]$ id
uid=504(shijiangge) gid=504(shijiangge) groups=504(shijiangge) context=user_u:system_r:unconfined_t
chmod - 改变一个文件的模式(权限)
[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 |
|---|---|---|
| rwx | rwx | rwx |
权限属性
| 属性 | 文件 | 目录 |
|---|---|---|
| r | 允许文件被打开阅读 | 允许一个目录的内容显示如果执行属性也设置 |
| w | 允许文件写入,然而这个属性不允许文件改名或删除. 能够删除或重命名文件是由目录的属性 | 允许文件在一个目录被创造,删除,并重新命名为“如果执行属性也设置 |
| x | 允许文件将其视为一个程序和执行. 程序文件写在脚本语言也必须设置为可读可执行 | 允许一个目录进入,例如,cd目录 |
我们使用和八进制批注八进制数字来设置模式目的的权限. 由于每一位在一个八进制数字代表三个二进制数字,如图
| Octal | Binary | File Mode |
|---|---|---|
| 0 | 000 | --- |
| 1 | 001 | --x |
| 2 | 010 | -w- |
| 3 | 011 | -wx |
| 4 | 100 | r-- |
| 5 | 101 | r-x |
| 6 | 110 | rw- |
| 7 | 111 | rwx |
常用的 7 (rwx), 6 (rw-), 5 (r-x), 4 (r--), and 0 (---)
==========================================
第11章--进程
通常,现在的操作系统都支持多任务,意味着操作系统(给用户)造成了一种假象,(让用户觉得) 它同时能够做多件事情,事实上,它是快速地轮换执行这些任务的。Linux 内核通过使用进程,来 管理多任务。通过进程,Linux 安排不同的程序等待使用 CPU。
那么,什么是进程?请看阮一峰的这篇文章:TODO
- ps – 报告当前进程快照(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] 3583 ecos@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 ps ecos@ubuntu:~$ kill 3583 # 干掉xlogo [1]+ Terminated xlogo ecos@ubuntu:~$ ps # 检查下, 没有了 PID TTY TIME CMD 4270 ? 00:00:00 bash 4271 ? 00:00:00 ps ecos@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, Linspire |
| Red Hat Style (.rpm) | Fedora, CentOS, Red Hat Enterprise Linux, OpenSUSE, Mandriva, PCLinuxOS |
| 包管理系统 | 发行版 (部分列表) |
|---|---|
| Debian Style (.deb) | Debian, Ubuntu, Xandros, Linspire |
| Red Hat Style (.rpm) | Fedora, CentOS, Red Hat Enterprise Linux, OpenSUSE, Mandriva, PCLinuxOS |
Packaging System Tools--包管理工具
| Distributions | Low-Level Tools | High-Level Tools |
|---|---|---|
| Debian-Style | dpkg apt-get | aptitude |
| Fedora, Red Hat | rpm | yum |
| Enterprise Linux, CentOS | . | . |
| 发行版 | 底层工具 | 上层工具 |
|---|---|---|
| Debian-Style | dpkg | apt-get, aptitude |
| Fedora, Red Hat Enterprise Linux, CentOS | rpm | yum |
Package Search Commands---软件包查找工具
| Style | Command(s) |
|---|---|
| Debian | apt-get update apt-cache search search_string |
| Red Hat | yum search search_string |
| 风格 | 命令 |
|---|---|
| Debian | apt-get update
apt-cache search search_string |
| Red Hat | yum search search_string |
| 风格 | 命令 |
|---|---|
| Debian | apt-get update
apt-get install package\_name |
| Red Hat | yum install package\_name |
例子
# ubuntu ecos@ubuntu:~$ apt-get install gvim # 安装软件 ecos@ubuntu:~$ apt-get remove emacs # 卸载软件 ecos@ubuntu:~$ apt-cache show emacs # 查看在Debian-style系统对emacs的描述 # red hat ecos@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
| 风格 | 命令 |
|---|---|
| Debian | apt-get remove package_name |
| Red Hat | yum erase package_name |
| 风格 | 命令 |
|---|---|
| Debian | dpkg --list |
| Red Hat | rpm -qa |
| 风格 | 命令 |
|---|---|
| Debian | dpkg --status package_name |
| Red Hat | rpm -q package_name |
例如:确定是否 Debian 风格的系统中安装了这个 emacs 软件包:
dpkg --status emacs ============================
==========================================
Lunix 调整时间,就是将服务器时间调快或调慢,线上一般不要调整时间,本地为了测试在调整服务器时间的。
date -s 07/09/2013
date -s 17:05:00
==========================================
mysql命令行导入sql文件到指定数据库的方法
mysql命令行导入的方式。
以下是各步骤:
1、先将数据库通过ftp上传至服务器内
或者使用 rz -y 进行上传
2、登陆mysql数据库:
mysql -u root -p
3、选择数据库:
use mydbname;
4、导入文件:
[win下] source e:\newdb.sql;
[linux下] source /root/newdb.sql;
导入成功!
==============================================
再来一个导出的吧(不用在mysql命令行):
mysqldump -uroot -p dbname table1 table2 > foo.sql
mysqldump -uroot -p huo > /usr/local/jiangge/foo.sql
压缩:
zip -r webgames.zip webgames
===================================================
FTP--ftp 启动命令:
service vsftpd start
----------------------------------------------------------------------------------
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)