习题一 准备工作
准备好Terminal、shell和PowerShell。
Mac OSX
1) 按住command键,同时敲击空格键 2)右上方跳出蓝色的搜索栏 3)键入“terminal” 4)点击长得像一个黑盒子的终端应用程序 5)此时终端打开了,可以按着Ctrl点击Dock, 在打开的菜单中选择“Options—Keep”,这样终端就会一直保留在Dock里。
Linux
在窗口管理器(windows manager)里搜寻名字像“Shell”或“Terminal”的东西,就OK了
Windows
1)点击Windows的“开始”菜单 2)搜索框中键入“powershell” 3) 敲击回车键。
记住以下命令
Linux/Mac OSX Windows
pwd (打印工作目录) pwd(打印工作目录)
hostname(电脑在网络中的名称) hostname(电脑在网路中的名称)
mkdir(创建路径) mkdir(创建路径)
cd(更改路径) cd(改变路径)
ls(列出路径下的内容) ls(列出路径下的内容)
rmdir(删除路径) rmdir(删除路径)
pushd(推入路径) pushd(推送路径)
popd(弹出路径) popd(弹出路径)
cp(复制文件或路径) cp(复制文件或路径)
mv(移动文件或路径) robocopy(更可靠的复制命令)
less(逐页浏览文件) mv(移动文件或路径)
cat(打印输出整个文件) more(逐页显示整个文件)
xargs(执行参数) type(打印输出整个文件)
find(寻找文件) forfiles(在一大堆文件上面运行一条命令)
grep(在文件中查找内容) dir -r(寻找文件)
man(阅读手册) select-string(在文件中查找内容)
apropos(寻找恰当的手册页面) help(阅读手册)
env(查看你的环境) helpctr(寻找恰当的手册页面)
echo(打印一些参数) echo(打印一些参数)
export(导出/设定一个新的环境变量) set(导出/设定一个新的环境变量)
exit(离开shell) exit(退出shell)
sudo(成为超级用户或root,危险命令) runas(成为超级用户或root, 危险命令)
习题二 路径、文件夹和目录(pwd)
pwd(打印工作目录)——print working directory---打印当前所在目录(文件夹的位置--图形界面对应的文件)
习题三 如果你迷失了
迷失在命令行里:不知道自己当前的位置、找不到某个文件,不知道接下来怎么做。
键入pwd打印当前路径—知道所处位置;
回到安全路径(home路径):键入 cd ~
习题四 创建目录(mkdir)
利用mkdir创建新的目录(文件夹)
> pwd
> cd ~
> mkdir temp
Directory: C:\Users\zed
#在C盘Users文件夹中的zed文件夹中新建了zed文件夹
> mkdir temp/stuff/things/frank/joe/alex/john
#C盘Users文件夹中zed文件夹中temp文件夹中stuff文件夹中。。。创建了John文件夹。(之前没有的都会创建出来)
如果要创建含有空格的目录,为名称添加一个引号就可以了:
> mkdir temp/stuff/things/"I Have Fun"
如果要创建的目录已经存在,会得到一条错误信息。可使用cd转到其他目录下尝试创建(桌面(desktop)是个不错的选择)
习题五 更改目录(cd)
每次开始练习前,都要先进入home路径:键入pwd,然后用cd ~回到起始位置(home)
> cd temp
> pwd
Path
----
C:\Users\zed\temp
> cd stuff
> pwd
Path
----
C:\Users\zed\temp\stuff
>cd things
...
>cd frank
...
>cd joe #只能打开当前目录(frank)中的文件(Joe),子文件(Joe)的子文件(alex或john)打不开
>cd alex
>cd john
>pwd
Path
----
C:\Users\zed\temp\stuff\things\frank\joe\alex\john
> cd .. # 返回上级目录
> cd ..
> cd ..
> pwd
Path
----
C:\Users\zed\temp\stuff\things\frank
> cd ../.. #返回两次到上级目录
> pwd
Path
----
C:\Users\zed\temp\stuff
习惯六 列出目录下的内容(ls)
> cd temp
> ls
Directory: C:\Users\zed\temp
Mode LastWriteTime Length Name
---- --------------- ------- ----
d---- 12/17/2011 9:03 AM stuff
#列出目录下含有的东西(文件夹、文件等)及创建时间。如果为空,啥也不显示。和在图形界面下一样。
dir -r 会显示该目录下所有文件(先是最上一级的文件全部显示完,然后依次向下一级),包括文件夹中的子文件夹(子文件),子文件夹得子文件夹等。
习题七 删除路径(rmdir)
> cd temp
> ls
Directory: C:\Users\zed\temp
Mode LastWriteTime Length Name
---- --------------- ------- ----
d---- 12/17/2011 9:03 AM stuff
> cd stuff/things/frank/joe/alex/john/
> cd ..
> rmdir john
> cd ..
> rmdir alex
> cd ..
> rmdir joe
> cd ..
> rmdir frank
> cd ..
> ls
Directory: C:\Users\zed\temp\stuff
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 12/17/2011 9:14 AM things
> rmdir things
> cd ..
当删除含有子项的目录时,会出现一个提示,问是否真要删除这个目录。(Unix中会报错)
习题八 在多个目录中切换(pushd, popd)
学习怎样使用pushd保存当前路径并转到一个新路径下,及怎样通过popd回到先前保存的路径下去。
pushd命令会将现在所在目录“推送”到一个列表中以供后续使用,然后转到你指定的另一个目录中去:“记住我现在的位置,然后到这个地方去。”
popd命令会将上次推送过的目录从列表中“弹出”(pop),然后让你回到这个被“弹出”的目录中去。
> cd temp
> mkdir -p i/like/icecream # mkdir -p 会创建一个完整的多层目录,即使中间目录不存在也能成功。(实际操作时 发现不加-p也可以创建的)
Directory: C: \Users\zed\temp\i\like
Mode LastWriteTime Length Name
---- --------------- ------- ----
d---- 12/20/2011 11:05 AM icecream
> pushd i/like/icecream
> popd
> pwd
Path
----
C: \Users\zed\temp
> pushd i/like
> pwd
Path
----
C: \Users\zed\temp\i\like
> pushd icecream
> pwd
Path
----
C: \Users\zed\temp\i\like\icecream
> popd
> pwd
Path
----
C: \Users\zed\temp\i\like
> popd
>pwd
Path
----
C: \Users\zed\temp
>
习题九 创建空文件夹(touch, New-Item)
学习怎样使用touch(Windows中时New-Item)命令创建一个空文件。
> cd temp
> New-Item iamcool.txt -type file
> ls
Directory: C: \Users\zed\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 12/17/2011 9:03 AM iamcool.txt
>
New-Item(小写同样能完成操作)还可以创建新目录:new-item s -type directory
习题十 复制文件(cp)
学会使用cp命令将文件从一个地方复制(copy)到另一个地方
1)直接在当前文件夹(目录)复制一个文件(或文件夹(文件夹中的文件不会被复制,只会复制一个空文件夹.若想全部复制就需要 -recurse)),并以另一个名称保存。
> cd temp
> cp iamcool.txt neat.txt #复制iamcool文件并以neat命名保存(此时文件夹中含有这两个文件—内容一致)
> cp neat.txt awesome.txt
> cp awesome.txt thefourthfile.txt
2)将文件复制到此文件夹的子文件夹下(以下操作只能复制到子文件夹下)
> cd temp
> mkdir something
> cp awesome.txt something/ #复制awesome.txt到something文件夹下(保持原名称)
3)复制文件夹(不是空文件夹—含有文件)
> cp -recurse something newplace #复制something文件夹(所有,包含子文件夹及文件),以newplace命名保存。
PS:复制文件还有许多操作没弄明白,还需要多多查找验证。
习题十一 移动文件(mv)
使用mv将文件从一个地方移动到另一个地方(其实是重命名文件)
> cd temp
> mv awesome.txt uncool.txt #将awesome文件重命名为uncool。
> mv newplace oldplace #将newplace文件夹重命名为oldplace,其内文件不发生变化。
那如何将一个文件从一个目录移动到另一个目录?
使用Move-Item命令
> Move-Item -path uncool.txt -destination
i/(同级文件夹) #
将uncool文件移动到了i文件夹中
#将目的目录的路径完全写出来就能移动到上级目录中(最好在想移动的文件所在的目录下进行操作,我试验写出-path,但是好像没有用,所以还是cd到那个目录吧,-destination 是没有问题的)。Move-Item -path uncool.txt -destination C:\Users\Administrator\temp
习题十二 查看文件内容(less,MORE)
先用文本编辑器(Notepad++),键入一些东西;保存到桌面,命名为test.txt;在shell中将该文件复制到temp目录中去。
> more test.txt
ni hao le ma
ni hao a
ni guo de qiong bu qiong #此为test.txt的内容,通过more展示了出来。(查看文件内容的一个方法)
若文本文件长度过长,命令行会逐页显示(空格键向下逐页浏览,回车会按行显示),每页大概是49行左右,猜测和命令行页面大小(电脑屏幕大小)有关系,正好是命令行页面的一页。
习题十三 流文件内容显示(cat)
> more test.txt
[displays file here] # 显示test中的内容(内容太多会分页显示)
> cat test.txt
[displays file here] # 显示test中的内容(将其内容一次输出到屏幕上,不会分页不会中间停顿
)
> cat test.txt, 'new 1.txt'
[displays file here] # 显示test和new 1中的内容,一次全部显示出来(先test在new 1)
习题十四 删除文件(rm)
> cd temp
> ls
Directory: C:\Users\zed\temp
Mode lastWriteTime Length Name
---- ---------------- -------- ----
d---- 12/22/2011 4:52 PM newpalce
d---- 12/22/2011 4:52 PM something
-a--- 12/22/2011 4:52 PM 0 iamcool.txt
-a--- 12/22/2011 4:52 PM 0 neat.txt
-a--- 12/22/2011 4:52 PM 0 thefourthfile.txt
-a--- 12/22/2011 4:52 PM 0 uncool.txt
> rm uncool.txt
> ls
Directory: C:\Users\zed\temp
Mode lastWriteTime Length Name
---- ---------------- -------- ----
d---- 12/22/2011 4:52 PM newpalce
d---- 12/22/2011 4:52 PM something
-a--- 12/22/2011 4:52 PM 0 iamcool.txt
-a--- 12/22/2011 4:52 PM 0 neat.txt
-a--- 12/22/2011 4:52 PM 0 thefourthfile.txt
> rm iamcool.txt
> rm neat.txt
> rm thefourthfile.txt
> ls
Directory: C:\Users\zed\temp
Mode lastWriteTime Length Name
---- ---------------- -------- ----
d---- 12/22/2011 4:52 PM newpalce
d---- 12/22/2011 4:52 PM something
> cp -r something newplace # 复制something文件夹(含其中文件),粘贴到当前目录命名为newplace
> rm something/awesome.txt #删除something文件夹下文件awesome.txt;同样(用rmdir也行)可删除目录下子目录(子文件夹)
> rmdir something #删除目录(文件夹something),用rm也行
> rm -r newplace #删除newpalce目录(文件夹),即使包含子文件和子文件夹。若不加-r就会弹出选项(含有子目录,是否要全部删除,默认选项为是)
可循环删除目录下的所有文件,但是要小心操作(rm -rf / ???!)
习题十五 退出命令行(exit)
> exit
试着继续学习:forfiles; runas; attrib; icacls
PowerShell参考资料
Owner's Manual:
http://technet.microsoft.com/en-us/library/ee221100.aspx
Cheat Sheet: http://www.mocrosoft.com/download/en/details.aspx?displaylang=en&id=7097(可能已失效)
Master Powershell:
http://powershell.com/cs/blogs/ebook/default.aspx
Unix Bash 参考资料
Bash Cheat Sheet: http://cli.learncodethehardway.org/bash_cheat_sheet.pdf
Reference Manual:
http://www.gnu.org/software/bash/manual/bashref.html
Directory: C:\Users\zed\temp
Mode lastWriteTime Length Name
---- ---------------- -------- ----
d---- 12/22/2011 4:52 PM newpalce
d---- 12/22/2011 4:52 PM something
-a--- 12/22/2011 4:52 PM 0 iamcool.txt
-a--- 12/22/2011 4:52 PM 0 neat.txt
-a--- 12/22/2011 4:52 PM 0 thefourthfile.txt
Directory: C:\Users\zed\temp
Mode lastWriteTime Length Name
---- ---------------- -------- ----
d---- 12/22/2011 4:52 PM newpalce
d---- 12/22/2011 4:52 PM something