Linux 基本操作

  这篇博客,是为了记录我学习入门Linux的概要,所以具体的知识就不赘述,网上都有,只列出清单及一些要注意的地方。

 关于根目录和主目录:

 根目录,是指Linux文件系统的顶级目录/;家目录,是指用户目录,在/home下,以用户名作为目录,可以用 ~ 表示。

 /root 如果你是以超级用户的身份登录的,这个就是超级用户的主目录。

 /home 如果建立一个名为“xx”的用户,那么在/home目录下就有一个对应的“/home/xx”路径,用来存放该用户的主目录。

 cd /      进入根目录       cd  /tmp              进入根目录下一级子目录tmp
 cd ~/(或cd ~) 进入家目录       cd  ~/c(或cd /home/admap7/c)   进入家目录下一级子目录c

 一、常用的Linux操作命令

     1.查看目录命令 pwd

     2.打开目录命令 cd 

       cd c 或cd c/ 进入c目录

       cd / 是打开根目录,cd ~是打开用户的主目录,如果是root用户则相应地打开/root目录。

     3.查看目录命令 ls     查看的是当前目录下的文件夹或文件

       多个参数是可以组合的,如ls -aF表示显示所有的文件,然后添加一个标志

       可以只显示某个文件夹或文件,如ls -l a.c

       使用"*"可以匹配文件名中的任意字符串,如ls -l *.c。

       使用"?"可以匹配一个字符,如ls 0?.c 表示第一个字符为0,扩展名为.c,文件名有两个字符的文件。

       只显示当前下的目录: ls -F | grep /$    # -F使得ls将文件分类,通过在文件后面加一些标记来实现
                 ls -F | grep /
                ls -l | grep ^d
                ls -d */

                ls -ld */

      显示其他目录下的文件或文件夹:ls 完整路径(如果是当前目录子目录,则和cd命令的相对路径一样,直接子目录就可以了)  eg: ls /home/adnap7/c   因而可以在家目录下访问根目录,就像家目录下cd可以进入根目录一样

    4.建立文件命令 touch

       如果需要建立的文件已存在,touch命令可以使文件的最后访问时间变成当前时间。

    5.建立与删除文件夹命令 mkdirrmdir

       建立的目录不一定是在当前目录下,可以在任意一个目录中建立目录,参数-p可以指定建立多级目录。如mkdir -p mydir1/mydir2,表示在目录mydir1中建立目录mydir2。如果mydir1不存在,则-p会同时建立目录mydir1。

       rmdir用于删除一个空目录,也可以使用-p命令删除多级目录。如rmdir -p mydir1/mydir2,表示删除目录mydir1中的目录mydir2,在mydir1为空时,会同时删除mydir1和mydir2。

    6.文件复制命令 cp

       使用cp命令复制文件时,cp a(文件)  b(文件),如果b不存在则会创建b并复制;如果b存在则会覆盖目标文件而不给出提示,所以复制时最好使用-i参数。cp -r c/ d/,将目录c中的所有文件和目录复制到目录d中,如果目录d不存在,则建立这个目录。

       cp d/01.c . 表示将目录d中的文件01.c复制到当前目录中

       复制多个文件,如cp *.c c/

   7.文件移动或更名命令 mv

      mv 文件a 文件b 是更名命令;mv 文件a 目录c 是移动命令

      移动多个文件,如mv *.c c/

   8.删除文件与目录命令 rm

      rm 可以删除文件,如果要删除目录,则需rm -r 目录c

   9.创建链接命令 ln

   10.查看文件信息命令 wc

   11.文件查看命令 cat

      可以显示多个文件的内容,如cat a.c b.c d.c

      将(一个或多个)输出结果定向到一个文件中,如cat a.c b.c c.c >d.c。如果d.c存在,则覆盖式输入;如果不存在,则生成并输入

   12.查看文件视图命令 head 与 tail

   13.文件权限设置命令chmod

      一般格式:chmod (-c/f/v/R) (用户组)+/-/=权限(+/-/=权限)( (用户组)+/-/=权限(+/-/=权限))  文件a

   14.查找文件命令 find

      支持"*"与"?"等通配符,如 find / *.c

   15.man 系统帮助命令

二、文本编辑器VIM的使用

   1.VIM的三种工作模式及切换方法如下图所示:


  2.保存与打开文件命令(在命令模式下):

      VIM中保存文件命令是 :w  ,如 :w    :w /home/adnap7/01.c

      打开文件的命令是 :r

      退出命令 :q  ,未保存就退出会提示你使用 :q! ,可以不保存就退出

      保存并退出 :wq

  3.常用操作

    插入、删除、取消、保存、退出、查找、替换

    插入命令:

i  在光标前插入
I  在当前行首插入
a  在当前光标后插入
A  在当前行尾插入  
o  在当前行之下新开一行
O  在当前行之上新开一行

三. 编译与调试

  1.1 gcc编译器

    使用gcc编译c或c++程序,也支持多种源程序扩展名

    格式:gcc 1.c    (.c和.C才能直接编译,其他文件还需指定编译语言)

      生成的a.out 还需添加可执行权限:chmod +x a.out ,然后 ./a.out 执行

  1.2 查看gcc的参数

    gcc --help 查看

  1.3 设置输出的文件

    默认情况下所有文件的编译生成文件都是a.out

   命令gcc filename1 -o filename2 可以设置输出的目标文件,eg: gcc  a.c  -o  do

   也可以输出文件到其他目录,               eg: gcc  a.c  -o  /tmp/do

 2. gdb调试程序

四. Shell编程

  shell即是命令语言,也是程序设计语言。

      shell程序可以用简单的代码通过各种系统命令实现强大的功能,在系统设置、服务管理方面有着重要的应用。

  1.bash(shell的一种)的使用

   1.1 bash的内部命令与外部命令软件功能

   1.2 命令补齐功能

      内部命令有exit,export,kill;外部命令是系统的

      开头字母+Tab键

   1.3 命令通配符

    *:匹配一个或多个字符,包括空字符串

    ?: 匹配一个字符,如?abc

   [...]: 匹配括号里列出的任何单字符

   1.4 使用命令的历史记录

    history (n)

   1.5 命令别名

    alias 别名='原来的命令'

    unalias 别名          取消别名

2. Shell程序(是一系列的Linux程序卸载一个文件中)的基本结构

#!/bin/bash
#hello      #后是shell程序的注释
echo 'hello Linux'
echo 'this is a shell file.'

   shell程序保存后,需添加可执行权限,如chmod +x  a.sh;然后./a.sh (shell是一个普通的文本,需添加可执行权限才能执行

3. Shell中的变量

   Shell中的变量是无数据类型的;对一个变量赋值就定义了变量;变量赋值后,在变量前加上$就可访问变量的值(但是反复赋值时不需要加上$);为变量赋的值是没有空格的字符串可以不加引号,有空格的字符串(这其实已经是多个字符串了)则需加引号

     3.1 局部变量(只在当前进程和程序中有效的变量)

          一般写在shell程序中

     3.2 环境变量

          3.2.1 查看环境变量

                    export

          3.2.2 访问环境变量

                    在环境变量前加$,如echo $环境变量

          3.2.3 定义环境变量

                    如export  变量名(一般大写)=1234                     (定义或修改环境变量,=号两侧不能有空格)

        3.3 位置变量

            $1到$9       一般写在shell程序中,等待执行shell程序时在bash中传值,如./13.4.sh 2 4

4  Shell 运算符

    4.1 变量赋值

           使用= ,在bash和shell中都可使用   例如a =123

            shell的变量是动态语言,可以赋不同类型的值(像python)

    4.2  算术运算符(+  -  *  /  **  %  +=  -=  *=  /=  %=)

            可以在bash和shell程序中都使用

           注意:echo 1+2 的结果是1+2。 因为在shell script中变量类型默认为“字符串”,所以若不指定变量类型,1+2是一个“字符串”而不是“计算式”。所以数学计算必须用数学方法表示出来(=赋值例外)

           办法是以下都只适用于整数:1.用let指示数学运算(let表达式内变量不用加$;let必须是完整的算术表达式,即有等号两边)    如 let b=1+2,echo  $b

                      2.使用expr(运算符左右都有空格运算符左右都有空格,如果没有空格表示是字符串连接;不支持幂乘运算;使用乘号时,必须用反斜线\屏蔽其特定含义;expr 可以只有等号右边的计算)       如echo `expr 1 + 2`

                      3.使用$[] 表示数学运算,将数学运算写到中括号中($() 与 ``等效)     如echo $[1+2]

5. 输入(从用户输入或文件读取)和输出(显示到屏幕或保存到文件)

  5.1 echo 命令输出

    echo 后面是没有空格的字符串的话,加不加引号都可以;否则需要加上引号,表示这是一个字符串(变量)

    echo $a       将结果输出到终端

    echo $a >file   将结果保存到文件file中,如果没有文件将会新建一个文件;如果文件已存在,会覆盖以前的文件

    echo $a >>file   将结果追加到文件file中(是在file中换行追加)

   echo输出的内容可以有格式控制字符\c \t \n ,但是echo要加上-e选项:  echo -e 内容   如echo -e "hello\nBeijing"会显示换行

  5.2 read 命令读取信息

    如果只读入一个变量,则会把键盘上输入的所有信息赋值给这个变量。按"Enter"结束输入

    如果输入多个变量,则要用空格将输入的变量隔开。如果输入变量的个数多于需要读取变量的个数,将会把剩余的变量都赋值给最后一个变量。

   如果要从文件中读取数据,在读取语句后添加<filename  (从文件中读取数据时好像只读取第一行的数据;就算需要读取的变量有多个,也是读取第一行)

6. 引号

  没有空格的字符串的话,加不加引号都可以;否则需要加上引号,表示这是一个字符串(变量)  

  双引号和单引号用法相似(引号里不能直接使用$、引号、\、`这些特殊符号)

  反引号(`)用于执行引号中的系统命令,然后将命令的结果返回,可以将结果赋值给一个变量

  反斜线用于对特殊字符(& * + ^ $ ` " | ?)进行转义,因为Shell会认为这些字符代表着相应的运算,无法直接输出这些字符或赋值

7.测试语句(对变量大小、字符串、文件属性等内容进行判断)

 7.1 文件状态测试

   示例:

test -d  ~/c
echo $?

$?保存上一个命令的结果,对于test命令的测试结果,返回0表示测试成功,返回1表示测试失败。所以测试命令本身的值是boolean型的,可以作为流程控制结构的判断条件($?也可以)。

参数:-d -f -L -x -s -w -u -r

 7.2 数值测试

    两种形式:

test 第一个操作数 数值比较符 第二个操作数

[  第一个操作数 数值比较符 第二个操作数  ]

    注意:[ 后面一定要有空格

    数值符有:-eq -le -gt -ne -ge -lt 

 7.3 字符串测试

test 字符串比较符 字符串

test  字符串1 字符串比较符  字符串2

[ 字符串比较符 字符串 ]

[ 字符串1 字符串比较符  字符串2 ]
    字符串比较符有:=      !=      -z     -n

 7.4 逻辑测试

    示例:

[ -w a.txt -a -x a.txt
echo $?

三种逻辑测试:    a      -o      !

8. 流程控制结构

    8.1 if语句

           几种格式:

if 条件
then  命令1
fi

if 条件
then 命令1
else 命令2
fi


if 条件1
then 命令1
elif 条件2
then 命令2
else  命令3
fi

if 条件1;then 命令1
elif 条件2;then 命令2
else 命令3

     8.2 for 语句

            几种格式:

for 变量名 in 列表
do
命令1
命令2...
done


for 变量名            (当省略后面的in关键字时,将接受输入命令时的参数作为循环变量集,eg: ./a.sh  a  s  d  f )
do
命令1
命令2...
done

    8.3 until 循环

until 条件
do
命令1
...
done

    8.4 while 循环

while 条件
do
命令1
...
done



     


猜你喜欢

转载自blog.csdn.net/adnap7/article/details/79636242