10分钟学会Linux

时间:2023-03-08 17:44:21
10分钟学会Linux

10分钟学会Linux有点夸张,可是能够让一个新手初步熟悉Linux中最重要最主要的知识,本文翻译的英文网页在众多Linux入门学习的资料中还是很不错的。

英文地址:http://freeengineer.org/learnUNIXin10minutes.html

中文译文例如以下:

前言 



这是我已经在过去的几年中给学生(CAD用户培训)培训中所使用的材料。

其目的是在一个页面上就能够使用 UNIX的shell的基础命令。(这样他们就没有打电话问我了)。

本文档受版权保护,但依据GFDL的条款*传播。 

对这个页面有什么想法吗?欢迎 给我发送补充,评论,更正,不论什么你觉得是错误的或者是应该是包括在内的内容。我总是非常高兴收到你的来信,请在你的邮件标题中单词包括“UNIX”的字样。

1. Directories  (文件夹)

2. Moving around the file system (在文件系统中移动位置)

3. Listing directory contents(列出文件夹内容)

4. Changing file permissions and attributes(更改文件的权限和属性)

5. Moving, renaming, and copying files(移动,重命名和拷贝文件)

6. Viewing and editing files(查看和编辑文件)

7. Shells

8. Environment variables(环境变量)

9. Interactive History(交互历史)

10. Filename Completion(文件名称补全)

11. Bash is the way cool shell. (Bash是一个非常酷的Shell)

12. Redirection(重定向)

13.Pipes(管道)

14.Command Substitution(命令替换)

15.Searching for strings in files: The grep  command (在文件里搜索字符串:grep命令)

16.Searching for files : The find command (搜索文件:find命令)

17.Reading and writing tapes, backups, and archives: The tar command  (读取和写入磁带,备份和存档:tar命令 )

18.File compression: compress, gzip, and bzip2 (文件压缩:compress,zip和bzip2)

19.Looking for help: The man and apropos commands (寻求帮助:man 和 apropos 命令 )

20.Basics of the  vi editor (vi编辑器的基础知识)

1 文件夹:

在UNIX中,文件和文件夹路径使用正斜杠“/”来分隔文件夹,在一个路径中。

事例:

/                             根文件夹

/usr                        文件夹 usr  ( 根文件夹/  的子文件夹)

/usr/STRIM100        STRIM100 是 /usr 的一个子文件夹

2 在文件系统中移动位置

pwd                                  显示当前工作文件夹,或显示当前文件夹

cd                                    改变当前文件夹至当前用户的主文件夹

cd /usr/STRIM100             改变当前文件夹至文件夹 /usr/STRIM100

cd INIT                             改变当前文件夹至当前文件夹的子文件夹 INIT

cd ..                                改变当前文件夹至上一层文件夹

cd $STRMWORK             改变当前文件夹至环境变量STRMWORK所定义的文件夹

cd ~bob                           改变当前文件夹至用户bob的主文件夹(假如有权限的话)



3 列出文件夹内容

ls                                      列出文件夹下内容

ls -l                                   以长格式 (具体内容)列出文件夹

举例:

$ ls -l

文件权限 链接个数或文件夹内容 文件拥有者 所在用户组 文件大小 日期和时间 文件名称
drwxr-xr-x 4 cliff user 1024 Jun 18 09:40 WAITRON_EARNINGS
-rw-r--r-- 4 cliff user 767392 Jun 6 14:28 scanlib.tar.gz

文件权限中(drwxr-xr-x,-rw-r--r--)

第1位代表文件类型: - = 普通文件, d=文件夹, l = 链接符号,等等。

第(2,3,4)位代表文件的权限 (除拥有者所在用户组之外的全部用户)

第(5,6,7)位代表文件的权限 (和拥有者同组的用户)

第(8,9,10)位代表文件的权限(对拥有者)

r = 读, w = 写, x = 运行 - = 缺失

ls -a

列出当前文件夹而且包括隐含文件.隐含文件以"."开头

ls -ld *

在当前文件夹下使用长格式列出全部文件和文件夹。

没有d的话,就是列出全部的全部的文件

有d的话,就是列出全部的文件和文件夹

4
更改文件的权限和属性

chmod 755             文件更改文件的权限,对拥有者为RWX,对用户组为其他用户为RX(7 = rwx = 111的二进制 5 =R-X = 101二进制)

chgrp user file       使文件属于该组的用户。

chown cliff file      使用户cliff成为文件拥有者

chown -R cliff dir    使用户成为文件夹dir的拥有者以及该文件夹树下的全部东西

你必须确保是文件/文件夹的拥有者或者拥有Root的权限在你做以上操作之前

5 移动,重命名和拷贝文件

cp file1 file2               复制文件 

mv file1 newname             移动或重命名一个文件

mv file1 ~/AAA/              移动文件 file1 进入你主文件夹下的AAA子文件夹

rm file1 [file2 ...]         移除或删掉一个文件(有差别吗?)

rm -r dir1 [dir2...]         递归删除一个文件夹以及文件夹下的内容(小心哦!)

mkdir dir1 [dir2...]         创建文件夹

mkdir -p dirpath             创建文件夹dirpath,以及该路径中全部隐含的文件夹

rmdir dir1 [dir2...]         移除一个空文件夹

6 查看和编辑文件

cat filename        把文件内容 在ascii中所有导出到屏幕

more filename       渐进的把文件内容所有导出到屏幕,按ENTER = 往下加一行SPACEBAR = 往下加一页 q=退出

less filename       就像more一样, 可是你能够使用上一页,不是所以的系统都支持

vi filename         用VI编辑器编辑一个文件,全部的Unix系统都有某种形式的VI

emacs filename      用emacs编辑器编辑一个文件,不是全部的系统都有emacs

head filename       显示一个文件的開始几行

head -n filename    显示一个文件的前面n行

tail filename       显示一个文件的最后几行

tail -n filename    显示一个文件的最后n行

7 Shells

依据所使用的Shell程序,命令行行为将略有不同

依据所使用的Shell,一些额外的行为能够相当不错

你能够查看你使用的Shell通过下面口令:echo $SHELL

当然,你能够创建一个包括一连串的shell命令的文件像一个程序一样运行它,而从完毕一个任务。这个叫做shell脚本。

这个其实是很多shell的主要目的,而不是命令行行为的交互。

8 环境变量

你能够教会你的shell去记住一些东西,以便以后使用环境变量。

比方在bash shell环境下:

export CASROOT=/usr/local/CAS3.0 定义了变量CASROOT的值为/usr/local/CAS3.0

export LD_LIBRARY_PATH=$CASROOT/Linux/lib
定义了变量LD_LIBRARY_PATH的值为:变量CASROOT的值加上/Linux/lib,

也就是/usr/local/CAS3.0/Linux/lib

通过把$作为变量的前缀,你能够得出变量的值通过随意命令:

cd
$CASROOT 改变你当前的文件夹至环境变量CASROOT指向的文件夹

echo
$CASROOT 打印环境变量的CASROOT的值

printenv
CASROOT 做(和上面)同样的事情在bash 和其它shell中



9 交互历史

bash和tcsh(还有其它一些)的一个特点是,你能够使用向上键去訪问你前面运行过的一些口令,再编辑,又一次运行它们。

10 文件名称补全

bash和tcsh(还有其它一些)的一个特点是,你能够使用TAB键去补全仅仅输入了部分的文件名称,比方你有一个名为constantine-monks-and-willy-wonka.txt的文件和想去编辑它,你能够输入'vi
const',敲击TAB键,shell将会帮你把剩余的名字填充(补全的名字是唯一的)。

11
Bash是一个非常酷的Shell

Bash甚至能够补全口令名称和环境变量。假设存在多个能够补全的名字,假设你敲击TAB两次bash会显示全部补全的名字。对于大部分Linux来说,bash是用户默认的shell。

12重定向

grep
string filename > newfile 把grep口令的结果重定向到文件newfile

grep
string filename >> existfile 追加grep口令的结果到文件existfile

重定向的文件夹,>
和 >> 能够使用在很多命令上,写入输出结果到文件

13
管道

ls -l | more

du
-sc * | sort -n | tail

14
命令替换

你能够使用一个命令的输出作为还有一个命令的输入称之为命令替换。命令替换,通过向后单引號包括替代命令的方式被调用,比方:

cat
`find . -name aaa.txt`

该命令会cat(显示所有内容到屏幕)所有的文件名称为aaa.txt而且位于当前文件夹或者不论什么子文件夹树以下的文件

15 在文件里搜索字符串:grep命令

grep string filename 打印出文件里全部包括string的行

16 搜索文件:find命令

find search_path -name filename

find . -name aaa.txt 在当前文件夹或其不论什么子文件夹树以下,找出全部文件名称为aaa.txt的文件

find / -name vimrc 找出系统中全部名为vimrc的文件

find /usr/local/games -name "*xpilot*" 在/usr/local/games文件夹树以下,全部文件名称中包括xpilot的文件

17
读取和写入磁带,备份和存档:tar命令

Tar命令代表"tape archive",它是读写archives(文件和文件夹树的集合)的标准方法。

你常常会发现stuff 的archive 名字像 stuff.tar,或者 stuff.tar.gz.

这个stuff就是tar archive,和用gzip相关工具压缩过的 tar archive

Chances are that if someone gives you a tape written on a UNIX system, it will be in tar format, and you will use tar (and your tape drive) to read it.

相同,你假设要写一个tape文件给其它人,你也应该使用tar

样例:

tar xv

tar tv

tar cv file1 file2

tar cvf archive.tar file1 [file2...]

tar xvf archive.tar

tar cvfz archive.tar.gz dname

tar xvfz archive.tar.gz

tar cvfI archive.tar.bz2 dname

18
文件压缩:compress,zip和bzip2

标准的Unix压缩口令是compress和uncompress,压缩过的文件在文件名称前面有一个.Z的前缀

compress part.igs 创建一个压缩文件part.igs.Z

uncompress part.igs 从压缩文件part.igs.Z解压到part.igs,注意.Z不是必须的

还有一个经常使用的压缩工具是gzip (和gunzip)These are the GNU compress and uncompress utilities。

gzip比起标准压缩通常更好一点,可是可能不会存在于全部的系统。gzipped文件的前缀是 .gz



gzip part.igs 创建一个压缩文件part.igs.gz

gunzip part.igs 从part.igs.gz中解压缩原始文件



bzip2工具(通常)有比gzip甚至更好的压缩效果,可是要付出很多其它的时间去压缩和解压缩文件。

It is not as common a utility as gzip, but is becoming more generally available.

bzip2 part.igs 创建一个压缩的 Iges 文件 part.igs.bz2bunzip2 

part.igs.bz2 解压缩这个压缩的 iges 文件

19
寻求帮助:man 和 apropos 命令

大多数命令给的手冊业有时候是实用的,或多或少有详细使用方法,有人说他们被称为man页面是由于它们是为了真正的男人。

比如:

man
ls 显示ls口令的手冊页面

你能够使用apropos搜索手冊页面

比如:

apropos
build 显示全部描写叙述中包括build字样的手冊页面

Do a
man apropos for detailed help on apropos

20
vi编辑器的基础知识

打开一个文件

vi filename





创建文本

编辑模式: 这些键会进入编辑模式然后能够键入文本 

i 在当前光标位置前插入

I 在当前行的開始位置处插入

a 在当前光标位置插入或追加

A 在当前行的结尾处追加

r 替代1个字符

R 替代模式

<ESC> 终止插入或覆盖模式





删除文本

x 删除单个字符

dd 删除当前行而且放入缓冲

ndd删除n行而且放入缓冲

J 连接下一行到当前行(删除回车)





Oops

u 撤销最后一次口令





剪切与粘贴

yy剪切当前行放入缓冲

nyy剪切n行放入缓冲

p 把缓冲的内容放入当前行

P把缓冲的内容插入当前行的上一行





光标位置

^d 下一页

^u 上一页

:n 把光标定位于n行

:$ 把光标定位于文件的末尾

^g 显示当前的行数

h,j,k,l 左,上,下,右.Your arrow keys should also work if if your keyboard mappings are anywhere near sane.





替代字符串

:n1,n2:s/string1/string2/[g]

在n1到n2行之间,用string2替换掉string1,假设把g包括进去(g代表全局的)全部行的string1都会被替代,假设g没有被包括,那么仅仅有第一个匹配的string1实例才会被替代。





^ 匹配開始行

. 匹配不论什么单个字符

$ 匹配结尾行

以上或其他的特殊字符,像前面的斜线能够用 \ 来转义

比方去匹配 "/usr/STRIM100/SOFT" 能够用 "\/usr\/STRIM100\/SOFT"





样例:

:1,$:s/dog/cat/g 把dog替换为cat,整个文件的每个实例从第1行到最后($代表最后)

:23,25:/frog/bird/把frog替换为bird,从23到25行,每一行的第1个实例会被替换





保存和离开还有其它"ex"口令

这些口令所有以按下的冒号(:)为前缀,然后进入窗体的左下角,它们被称为ex命令由于它们是用ex文本编辑器编辑的口令

你不能敲入ex命令当你在编辑模式下时(在屏幕上输入文本)按下<ESC>键退出编辑模式





:w                      保存当前的文件

:w new.file             保存当前内容到文件new.file

:w!existing.file        用当前编辑的文件区覆盖一个已经存在的文件

:wq                     保存文件并退出

:q                      退出

:q!                     退出不更改

:efilename              打开文件filename编辑

:set number             打开行号

:set nonumber           关闭行号