Linux基础命令快速入门

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础命令快速入门相关的知识,希望对你有一定的参考价值。

Linux基础命令

write by Booboo Wei

[email protected]


摘要:

常用的命令 ls cd pwd

符号 * ? { } |

帮助命令 --help help type man info /usr/share/doc

针对文件的的基本操作 touch mkdir rmdir cp rm mv

针对文件内容的基本操作 cat tac head tail more less

文件的查看、编辑、过滤vi vim echo grep cut wc file

关于时间的命令cal date timedatectl hwclock


版权声明:



本文遵循“署名非商业性使用相同方式共享2.5 中国大陆”协议

您可以自由复制、发行、展览、表演、放映、广播或通过信息网络传播本作品

您可以根据本作品演义自己的作品

您必须按照作者或者许可人指定的方式对作品进行署名。

您不得将本作品用于商业目的。

如果您改变、转换本作品或者以本作品为基础进行创作,您只能采用与本协议相同的许

可协议发布基于本作品的演绎作品。

对任何再使用或者发行,您都必须向他人清楚地展示本作品使用的许可协议条款。

如果得到著作权人的许可,您可以不受任何这些条件的限制。



Booboo Wei([email protected])




1 命令简介

1.1 命令的构成

命令字 选项 参数

命令分:内部命令、外部命令;

选项: - 单个字符-- 多个字符

参数:对谁执行这个命令,可以有多个,选项和参数可以互换位置

1.2 命令使用的原因

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。从这里开始学习Linux命令,本课程让你更清楚地了解和掌握它,在Linux中命令是讲究大小写的。使用命令即快速又能减少机器的性能消耗。

1.3 命令提示符

# root 用户

$ 一般用户

[ 用户的身份@ 主机名 当前位置 ]

当前位置显示的是目录名

[[email protected] ~]# hostname

www.dabao.com

[[email protected] ~]# groupadd tom

[[email protected] ~]# useradd -g tom tom

[[email protected] ~]# id tom

uid=501(tom) gid=501(tom) groups=501(tom)

[[email protected] ~]# su - tom

[[email protected] ~]$ who

root tty1

2016-03-20 23:56 (:0)

root pts/0

2016-03-21 00:39 (:0.0)

2 常用的命令

2.1 ls

ls

list的简写 查看当前目录下的所有文件

备注

-l

long的缩写 详细列出当前目录下的所有文件属性

七列 文件名 <=255个字符

-d

directory的缩写 查看当前目录本身的信息

文件大小默认单位为bites

-h

以人性化的方式显示文件大小,录的大小并不代表目录内所有文件的大小du -sh /etc<== 查看etc目录真正的大小


-a

查看隐藏文件 以 .开头的文件


-R

查看多层目录


-b

特殊字符将以\ 分割

ls 查看有特殊字符的文件

2.1.1 ls实验

                   [[email protected] tmp]$ ls -hl

                   total 68K

                   srwxr-xr-x. 1 root root 0 Mar 20 23:59 gedit.root.3177893063

                   drwx------. 2 root root 4.0K Feb 5 18:24 keyring-JL7MKY

                   [[email protected] tmp]$ ls -ld /tmp

                   drwxrwxrwt. 22 root root 4096 Mar 21 00:43 /tmp

                   [[email protected] tmp]$ ls -la /tmp

                   total 96

                   drwxrwxrwt. 22 root root 4096 Mar 21 00:43 .

                   dr-xr-xr-x. 29 root root 4096 Mar 20 23:55 ..

                   drwx------. 2 root root 4096 Mar 20 23:56 .esd-0

                   drwx------. 2 cong cong 4096 Jan 1 18:33 .esd-500

                   [[email protected] tmp]$ ls -bl

                   -rw-rw-r--. 1 tom tom 0 Mar 21 00:48 a\ b.txt

                   [[email protected] tmp]$ ls -l

                   -rw-rw-r--. 1 tom tom 0 Mar 21 00:48 a b.txt

                   [[email protected] tmp]$ mkdir -p a/b/c

                   [[email protected] tmp]$ ls -lR a/

                   a/:

                   total 4

                   drwxrwxr-x. 3 tom tom 4096 Mar 21 00:50 b

                   a/b:

                   total 4

                   drwxrwxr-x. 2 tom tom 4096 Mar 21 00:50 c

                   a/b/c:

total 0


2.2 cd

cd

change directory 切换工作目录

绝对路径

以根为起始的路径

相对路径

                   ~当前用户的家目录

                   . 当前目录

                   .. 上一层用户

-回到上一次所在位置


2.2.1 cd实验


                   [[email protected] tmp]$ cd /etc/

                   [[email protected] etc]$ cd ~

                   [[email protected] ~]$ cd .

                   [[email protected]  ~]$ cd ..

                   [[email protected]  home]$ cd -

/home/tom


2.3 pwd

pwd:print working directory 显示当前坐在位置的绝对路径

2.3.1 pwd实验

                   [[email protected] tmp]$ cd /etc/nginx

                   [[email protected] nginx]$ cd conf.d

                   [[email protected] conf.d]$ pwd

/etc/nginx/conf.d


3 符号

3.1 通配符*

匹配任意一个字符

3.2 匹配一个字符?

匹配指定位数


3.2.1 *?实验


                   rm -f *1

                   rm -f 1*

                   rm -f 1*1

rm -f test?<== 想删除test后面有一个字符的文件


3.3 | 管道

output | input

对某些命令执行的结果去作操作,会用到管道

3.3.1 |实验

                   # 详细列出/tmp目录下的文件,并截取以空格为分割的第三列

                   [[email protected] ~]$ ls -l /tmp|cut -d" " -f3

                   tom

                   tom

                   root

                   root

                   root

                   # 详细列出/tmp目录下的文件,截取含有关键字tom的行,再截取以空格为分割的第一列内容

                   [[email protected] ~]$ ls -l /tmp|grep tom|cut -d" " -f1

                   drwxrwxr-x.

-rw-rw-r--.


4 针对文件的的基本操作

4.1 touch

touch [filename] <== 创建文件,参数可以跟多个

如果要创建50 个有规律的文件,例如text1-text50

利用参数扩展

touch test{1..50}

touch test{a..e}

touch test{a..e}_{1..3}---> 会创建a_1 a_2 a_3...

上帝之手,本来是用来修改文件时间戳的。文件的三个时间ctime\mtime\atime

   拓展内容:可以通过“stat”命令查看文件的三个时间

touch " " 可以放一些特殊字符

4.1.1 touch实验



                   [[email protected] ~]$ touch test{a..c}_{1..4}

                   [[email protected] ~]$ ls

                   testa_1 testa_4 testb_3 testc_2

                   testa_2 testb_1 testb_4 testc_3

                   testa_3 testb_2 testc_1 testc_4

                   #--full-time可以查看mtime的完整时间

                   [[email protected] ~]$ ls -l --full-time

                   total 0

                   -rw-rw-r--. 1 tom tom 0 2016-03-21 01:31:22.853039590 +0800 testa_1

                   -rw-rw-r--. 1 tom tom 0 2016-03-21 01:31:22.853039590 +0800 testa_2

                   -rw-rw-r--. 1 tom tom 0 2016-03-21 01:31:22.853039590 +0800 testa_3

                   -rw-rw-r--. 1 tom tom 0 2016-03-21 01:31:22.853039590 +0800 testa_4

                   -rw-rw-r--. 1 tom tom 0 2016-03-21 01:31:22.853039590 +0800 testb_1

                   -rw-rw-r--. 1 tom tom 0 2016-03-21 01:31:22.853039590 +0800 testb_2

                   -rw-rw-r--. 1 tom tom 0 2016-03-21 01:31:22.853039590 +0800 testb_3

                   -rw-rw-r--. 1 tom tom 0 2016-03-21 01:31:22.853039590 +0800 testb_4

                   -rw-rw-r--. 1 tom tom 0 2016-03-21 01:31:22.854039544 +0800 testc_1

                   -rw-rw-r--. 1 tom tom 0 2016-03-21 01:31:22.854039544 +0800 testc_2

                   -rw-rw-r--. 1 tom tom 0 2016-03-21 01:31:22.854039544 +0800 testc_3

                   -rw-rw-r--. 1 tom tom 0 2016-03-21 01:31:22.854039544 +0800 testc_4

                   [[email protected] ~]$ touch "ab cd"

                   [[email protected] ~]$ ls -b

                   ab\ \ \ cd testa_3 testb_2 testc_1 testc_4

                   testa_1 testa_4 testb_3 testc_2

testa_2 testb_1 testb_4 testc_3


4.1.2 touch拓展实验


[[email protected] ~]$ touch booboo

[[email protected] ~]$ ll

total 0

-rw-rw-r--. 1 booboo booboo 0 Jun 15 23:28 booboo

[[email protected] ~]$ stat booboo

File: ‘booboo’

Size: 0         Blocks: 0         IO Block: 4096   regular empty file

Device: fd01h/64769d Inode: 143       Links: 1

Access: (0664/-rw-rw-r--)  Uid: ( 1001/  booboo)   Gid: ( 1001/  booboo)

Context: unconfined_u:object_r:user_home_t:s0

Access: 2016-06-15 23:28:55.041578819 -0400     #atime 文件最近一次被访问的时间

Modify: 2016-06-15 23:28:55.041578819 -0400    #mtime 文件内容最近一次修改的时间

Change: 2016-06-15 23:28:55.041578819 -0400    #ctime 文件属性最近一次修改的时间

Birth: -

#使用cat去访问booboo文件,可以发现atime被修改了

[[email protected] ~]$ cat booboo

[[email protected] ~]$ stat booboo

File: ‘booboo’

Size: 0         Blocks: 0         IO Block: 4096   regular empty file

Device: fd01h/64769d Inode: 143       Links: 1

Access: (0664/-rw-rw-r--)  Uid: ( 1001/  booboo)   Gid: ( 1001/  booboo)

Context: unconfined_u:object_r:user_home_t:s0

Access: 2016-06-15 23:32:35.898724748 -0400

Modify: 2016-06-15 23:28:55.041578819 -0400

Change: 2016-06-15 23:28:55.041578819 -0400

Birth: -

#通过chmod修改文件权限后,会看到ctime时间改变,通过ll命令看到的时间为mtime

[[email protected] ~]$ chmod 777 booboo

[[email protected] ~]$ ll

total 0

-rwxrwxrwx. 1 booboo booboo 0 Jun 15 23:28 booboo  

[[email protected] ~]$ stat booboo

File: ‘booboo’

Size: 0         Blocks: 0         IO Block: 4096   regular empty file

Device: fd01h/64769d Inode: 143       Links: 1

Access: (0777/-rwxrwxrwx)  Uid: ( 1001/  booboo)   Gid: ( 1001/  booboo)

Context: unconfined_u:object_r:user_home_t:s0

Access: 2016-06-15 23:32:35.898724748 -0400

Modify: 2016-06-15 23:28:55.041578819 -0400

Change: 2016-06-15 23:33:49.195445761 -0400

Birth: -

#通过echo命令向booboo文件追加一些内容,会看到mtime时间变了,并且ctime也变了,思考为什么

[[email protected] ~]$ echo hi >> booboo

[[email protected] ~]$ ll

total 4

-rwxrwxrwx. 1 booboo booboo 3 Jun 15 23:34 booboo

[[email protected] ~]$ stat booboo

File: ‘booboo’

Size: 3         Blocks: 8         IO Block: 4096   regular file

Device: fd01h/64769d Inode: 143       Links: 1

Access: (0777/-rwxrwxrwx)  Uid: ( 1001/  booboo)   Gid: ( 1001/  booboo)

Context: unconfined_u:object_r:user_home_t:s0

Access: 2016-06-15 23:32:35.898724748 -0400

Modify: 2016-06-15 23:34:53.251332183 -0400

Change: 2016-06-15 23:34:53.251332183 -0400

Birth: -



4.2 rm

rm

[filename] remove 删除文件,root用户有提示,普通用户没有提示

-f

force强制删除, root 无提示

-i

普通用户有提示的删除

-r

递归删除,慎重使用-rf


4.2.1 rm实验


                   # 普通用户tom

                   [[email protected] ~]$ rm testa_1

                   [[email protected] ~]$ rm -i testa_2

                   rm: remove regular empty file `testa_2‘? Y

                   #root 用户

                   [[email protected] ~]# rm a.test

                   rm: remove regular empty file `a.test‘? Y

                   [[email protected] ~]# rm -f b.test

                   # 普通用户tom

                   [[email protected] ~]$ mkdir -p a/b/c

                   [[email protected] ~]$ rm a/

                   rm: cannot remove `a/‘: Is a directory

[[email protected] ~]$ rm -r a/


4.3 mkdir

mkdir:make directory 创建目录

mkdir -p /test/test1<== 第归创建目录

mkdir {a..e}<== 创建a-e 的目录

touch {a..e}/file{1..4}<== a-e 的目录下新建file1-file4 文件

4.3.1 mkdir实验

                   [[email protected] ~]$ mkdir -p test/test1

                   [[email protected] ~]$ ls

                   ab cd testa_3 testb_2 testc_1 testc_4

                   p        testa_4 testb_3 testc_2

                   test    testb_1 testb_4 testc_3

                   [[email protected] ~]$ mkdir {a..f}

                   [[email protected] ~]$ ls

                   a d test testb_2 testc_2

                   ab cd e testa_3 testb_3 testc_3

                   b f testa_4 testb_4 testc_4 c p testb_1 testc_1

                   [[email protected] ~]$ touch {a..f}/file{1..4}

                   [[email protected] ~]$ ls

                   a d test testb_2 testc_2

                   ab cd e testa_3 testb_3 testc_3

                   b f testa_4 testb_4 testc_4 c p testb_1 testc_1

                   [[email protected] ~]$ ls -rR

                   .:

                   testc_4 testb_4 testa_4 f b

                   testc_3 testb_3 testa_3 e ab cd

                   testc_2 testb_2 test d a

                   testc_1 testb_1 p c

                   ./test:

                   test1

                   ./test/test1:

                   ./p:

                   ./f:

                   file4 file3 file2 file1

                   ./e:

                   file4 file3 file2 file1

以上是关于Linux基础命令快速入门的主要内容,如果未能解决你的问题,请参考以下文章

新手入门Linux的步骤

Linux零基础快速入门到精通 导学

快速入门Linux基础+环境配置+shell脚本

8小时快速入门,golang安装学习,有语言基础的快来学习

8小时快速入门,golang安装学习,有语言基础的快来学习

8小时快速入门,golang安装学习,有语言基础的快来学习

(c)2006-2024 SYSTEM All Rights Reserved IT常识