(Xshell) Linux终端常用命令

Xshell :一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议.(百度百科)

此文讲述的是xshell下的Linux命令,此命令在help下大都可以找到。在xshell终端下常用的命令有:

因为新的CSDN书写格式出来,所以对原版做了一些修改,增加可读性
原版见:原版

文章目录

第一部分

0.帮助命令与清屏

help        查看帮助命令

ls --help   查看ls命令下的具体用法

info ls     查看ls命令的作用

clear       清屏

1. 查看当前路径

pwd(print working directory)

2.列出当前目录的文件

  • ls 列出所有文件或者文件夹(以排形式)

  • ls *abc 列出文件abc内的所有文件

  • ls –l 列出所以文件及其详细属性(以列形式,不展示隐藏文件,隐藏文件的展示见第二部分)

  • ls .* 展示此级文件以及上一级文件(不展示隐藏文件)

  • ls -a 显示隐藏文件

  • ls -lrt 按时间显示文件(l表示详细列表,r表示反向排序,t表示按时间排序)

3.进入目录

  • cd 进入当前用户主目录(等同于cd ~)
 举例:
       cd  etl/app/TEMP/abc/ddl
    进入目录etl/app/TEMP/abc/ss
  • cd /home 进入home目录

  • cd / 切换到根目录

  • cd - 回到上次目录

  • cd … 返回上一级目录

  • cd …/… 返回上两级目录

4.删除命令rm

注意:rm最好不要乱用,删了就找不回来了,建议要用rm的地方换成用mv到某个备份文件夹!!

rm [-fir]文件或目录

-f 是忽略不存在的文件,不会出现警告信息(force,强行执行)

rm [参数] dir  (删除文件夹)

参数有如下选择:

  • -i:互动模式,在删除前会询问用户是否执行此操作。(回答y表示是,n表示否)

  • -r:递归删除(recursive),常用于目录的删除,同时删除目录下的文件与子目录rm

rmdir -rf test   或者 rm -rf test
rm  -f   flt_date201405.tsv  
   强行删除文件flt_date201405.tsv ,不给任何提示;

   若文件flt_date201405.tsv不存在,直接忽略。rm

rm -r 文件名或目录名

   删除文件或目录下的文件及子目录

rm -rf 文件名或目录

   强行删除文件或目录下的文件及子目录(删除压缩文件tar等时可用)

rm -i 文件名

   交互式的删除文件(删除前系统会逐一进行询问)

rm -ir 文件名

    交互式删除文件夹及其下的文件,会逐一询问

删除test文件夹下的所有文件:

rm -r test/*
举例:删除example2文件夹

说明,笔者在example1文件夹下又有一个example1文件夹(说明可以有同名的子文件夹,但不能有同名的同一目录下的文件夹),在example1之下有一个名为example2的文件夹,在此文件夹下有test文件。现在要删掉example2文件夹以及test文件:

第一句使用rm删除文件夹example2,发现提示说不能删除,因为example2是文件夹。所以第二条命令用rmdir删除,提示说此文件夹不是空的,因为其下有test文件,所以不能删除。接着第三条命令使用-r即连环删除命令,将test一并删除。最后一条ls命令用来展示发现文件都被删除了。

rm -i test(删除test文件,有提醒是否删除,是则y,否则n)
删除文件夹下的所有文件

rm ./*       #表示删除当前文件夹下的所有文件,如果有文件夹,可以rm -r ./*
rm -r myfolder/*  #删除myfolder下的所有文件

上面一定要注意,不要写成 rm /*, 这表示删除家目录下所有文件,即什么都没有了!!!所以不要这样做!!!

由于本人已经将rm命令改为mv移动到垃圾站,所以我用这个命令的时候是移动到回收站。(这内容见第二部分将rm改为mv)

5.移动和重命名文件 mv

将文件flt_date201405.tsv重命名为flt_date201406.tsv

mv  flt_date201405.tsv  flt_date201406.tsv

将文件转移到目录/etl/app/TEMP/ff下

mv  flt_date201405.tsv  /etl/app/TEMP/ff

移动文件夹下的所有文件

mv LSPE/* .    #移动LSPE文件夹下的所有文件到当前文件(*表示所有文件,. 表示当前文件夹)

6.复制文件 cp

  • 可以用cp --help 查看帮助

  • cp file1 file2 将file1复制为file2

  • cp -a dir1 dir2 复制一个目录

cp -a /tmp/dir1 .

   复制一个目录到当前工作目录(.代表当前目录)

cp flt_date201405.tsv flt_date201406.tsv

  将文件复制成为 flt_date201406.tsv

cp flt_date201405.tsv /etl/app/TEMP/ff

 将文件flt_date201405.tsv复制到目录/etl/app/TEMP/ff下

cp /etl/app/TEMP/abc/flt_date201405.tsv .(注意有空格和点)

     将目录etl/app/TEMP/abc下的flt_date201405.tsv文件复制到当前的目录下,文件名保持不变
  • . 当前目录

  • … 上级目录

  • ~ 用户家目录

  • - 前一个目录
    cp /home/wudl/test.txt file1

       将test.txt文件拷贝到当前目录下一个名为file1的文件夹
    

cp /etl/app/TEMP/abc/flt_date201405.tsv flt_date201406.tsv

     将目录etl/app/TEMP/abc下的flt_date201405.tsv文件复制到当前的目录下,文件名改为flt_date201406.tsv

cp -r /etl/app/TEMP /etl/app/TEMP/abc

     将目录/etl/app/TEMP下的所以文件及子目录复制到目录/etl/app/TEMP/abc下

复制一个文件夹test下的所有文件:

cp -r test/* test1 *表示所有文件(但不包括隐藏文件,即.开头)
cp -r test/. test1 .表示复制所有文件到test1,包括隐藏文件

6.1 两个linux互传文件scp

scp的主要目的是用于linux之间的文件复制,其中scp是seure copy的缩写,顾名思义,是ssh登录后安全拷贝命令。基本用法是

scp [参数] 文件 目标地址

参数有很多可以选择,我这里不一一说明了,仅仅举常用的例子。
本地文件传送到远程

将local_file这个文件传递到远程sanlang目录下

scp local_file sanlang@192.168.xxx:/home/sanlang #(如果连接有:22这个数字,不要将:22放进来)

如果传的是文件夹,则要加-r这个参数(然后输入远程计算机的密码)

scp -r local_file sanlang@192.168.xxx:/home/sanlang

如将test.txt传到sanlang家目录下:

scp test.txt sanlang@192.xxx:~/

注意 sanlang@这几个字样不可少即

scp local_file 192.xxxx:~/  #~表示家目录

是不对的,因为192.xxx表示服务器,而服务器里面有很多成员,如[email protected], lisi@…等等,sanlang只是其中之一,所以[email protected]表示进入的是sanlang的这个用户下。

远程文件传送到本地

比如我现在有A和B两台linux,我在A上工作,但是文件放在了B上(远程),如果记得B的地址,可以如下:将B上的文件test拷贝到当前目录

scp -r sanlang@192.168.xxx:/home/sanlang/test .  
#.表示当前目录,也可以接其他路径

输入B的密码即可。(同理,-r表示递归,即拷贝的是文件夹,如果是文件则不需要-r)
参考:https://www.cnblogs.com/bignode/articles/9241333.html
需要注意的一个问题是:这样是跟网速有关的,如果网速太慢的话,能有其他办法拷贝还是优先使用拷贝吧
可能出现的问题:

  • 权限不允许:很可能是因为如[email protected]中书写为了方便去掉了sanlang@这几个字样
  • 如果以前用scp拷贝过,但由于某些原因换了密码用户名key等,导致现在登录等时候出现一大串warning,这是因为以前登录的时候在.ssh中有记载,现在登录不匹配,所以只要更新以前的信息即可,可以warning上面错误的提示,更改如下:
wudl@wudl:~$ ssh-keygen -f "/home/wudl/.ssh/known_hosts" -R xxx  #xxx是远程的电脑的ip,如192.168.xxx

7.比较内容 diff

举例:使用cat命令写入了两个文件,分别如下。然后通过diff命令查看不同。

  • 1 直接使用diff 可以看到2c2,第一个2表示第一个文件的第二行,c表示change,即需要改变,第二个2表示第二个文件的第二行。接着小于号<表示第一个文件,后面abc表示第一个文件的第二行有abc,而大于号>表示第二个文件,是空的。所以总的表示为:第一个文件的第二行需要改变才能和第二个文件一样,改变的内容为,第一个文件由abc,第二个为空。
    在这里插入图片描述
    下面的例子有两处不同
    在这里插入图片描述
  • 2 通过diff -y -W(大写) 50(窗口大小) a b 对比ab文件的不同
  • 在这里插入图片描述
    在这里插入图片描述

上图右边的示例

  • 1a2 表示第一个文件的第一行要加add某些东西才能和第二个文件的第二行保持一致,加的内容可以有参考:即紧跟着的>表示第二个文件,后面是空表示空行。所以是第一个文件的第一行后面要加空行才能和第二个文件保持一致。

在这里插入图片描述
答案:1使用head和tail命令;2 head -8 file

diff /etl/app etl/app/TEMP

     比较目录/etl/app与目录etl/app/TEMP下的文件列表是否相同(不比较文件的实际内容),会展示出结果

diff flt_date201405.tsv flt_date201406.tsv

  比较文件flt_date201405.tsv与文件flt_date201406.tsv的实际内容是否相同(文本文件列出不同处,二进制的文件只显示是否相同),会展示出文件内容

8.查找文件

主要用到find和grep命令(参考http://www.cnblogs.com/huninglei/p/5824205.html)也可以参考笔者写的另一个简短的介绍grep和find

    区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。 



          (2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。

find –name ‘flt_date201406.tsv

       在当前的目录下查找文件名为flt_date201406.tsv的文件

find ! -name airline_booking_class.dsql

在当前的目录下查找出文件名不为flt_date201406.tsv的所有文件

find / -name file1 从 ‘/’ 开始进入根文件系统查找文件和目录

find / -user user1 查找属于用户 ‘user1’ 的文件和目录

find /home/user1 -name *.bin 在目录 ‘/ home/user1’ 中查找以 ‘.bin’ 结尾的文件

find /usr/bin -type f -atime +100 查找在过去100天内未被使用过的执行文件

find /usr/bin -type f -mtime -10 查找在10天内被创建或者修改过的文件

locate *.ps 寻找以 ‘.ps’ 结尾的文件,先运行 ‘updatedb’ 命令

find -name ‘*.[ch]’ | xargs grep -E ‘expr’ 在当前目录及其子目录所有.c和.h文件中查找 ‘expr’

find -type f -print0 | xargs -r0 grep -F ‘expr’ 在当前目录及其子目录的常规文件中查找 ‘expr’

find -maxdepth 1 -type f | xargs grep -F ‘expr’ 在当前目录中查找 'expr’grep

A.find命令

基本格式:find path expression

1.按照文件名查找

(1)find / -name httpd.conf  #在根目录下查找文件httpd.conf,表示在整个硬盘查找
    (2)find /etc -name httpd.conf  #在/etc目录下文件httpd.conf
    (3)find /etc -name ‘srm’  #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
    (4)find . -name ‘srm*’   #表示当前目录下查找文件名开头是字符串‘srm’的文件

2.按照文件特征查找

(1)find / -amin -10   # 查找在系统中最后10分钟访问的文件(access time)
    (2)find / -atime -2   # 查找在系统中最后48小时访问的文件
    (3)find / -empty   # 查找在系统中为空的文件或者文件夹
    (4)find / -group cat   # 查找在系统中属于 group为cat的文件
    (5)find / -mmin -5   # 查找在系统中最后5分钟里修改过的文件(modify time)
    (6)find / -mtime -1   #查找在系统中最后24小时里修改过的文件
    (7)find / -user fred   #查找在系统中属于fred这个用户的文件
    (8)find / -size +10000c  #查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
    (9)find / -size -1000k   #查找出小于1000KB的文件

3.使用混合查找方式查找文件

参数有: !,-and(-a),-or(-o)。

(1)find /tmp -size +10000c -and -mtime +2   #在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件
   (2)find / -user fred -or -user george   #在/目录下查找用户是fred或者george的文件文件
   (3)find /tmp ! -user panda  #在/tmp目录中查找所有不属于panda用户的文件

B.grep命令

基本格式:find expression

1.主要参数

[options]主要参数:
    -c:只输出匹配行的计数。
    -i:不区分大小写
    -h:查询多文件时不显示文件名。
    -l:查询多文件时只输出包含匹配字符的文件名。
    -n:显示匹配行及行号。
    -s:不显示不存在或无匹配文本的错误信息。
    -v:显示不包含匹配文本的所有行。

pattern正则表达式主要参数:
    \: 忽略正则表达式中特殊字符的原有含义。
    ^:匹配正则表达式的开始行。
    $: 匹配正则表达式的结束行。
    <:从匹配正则表达 式的行开始。
    >:到匹配正则表达式的行结束。
    [ ]:单个字符,如[A]即A符合要求 。
    [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
    .:所有的单个字符。
    * :有字符,长度可以为0。

2.实例

(1)grep ‘test’ d*  #显示所有以d开头的文件中包含 test的行
  (2)grep ‘test’ aa bb cc    #显示在aa,bb,cc文件中包含test的行
  (3)grep ‘[a-z]{5}’ aa   #显示所有包含每行字符串至少有5个连续小写字符的字符串的行
  (4)grep magic /usr/src  #显示/usr/src目录下的文件(不含子目录)包含magic的行
  (5)grep -r magic /usr/src  #显示/usr/src目录下的文件(包含子目录)包含magic的行

 (6)grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’)

 (7)grep -si "Ranges" *   显示包含Ranges的所有文件,不包含大小写(在进入文件后可以再/module Ranges查看)

9.显示文件大小

wc -l flt_date201406.tsv

        查看文件flt_date201406.tsv有多少行

wc -c flt_date201406.tsv

   查看文件flt_date201406.tsv有多少字节

更新

1,查看文件的大小:

ls -lh

在这里插入图片描述
注意,上面查看的文件夹的大小指的只是文件夹本身,是不包含里面的内容的。比如我有PySM_public这个文件夹,我压缩成上面图片.tar的形式,我们可以看出ls -lh查看的结果是,文件只有4k,而压缩之后有1.7G。所以这里查看的是文件夹本身的大小。如果要查看包括文件夹内文件大小一起,可以使用

du -sh *   #显示大小
du -ls *   # 以kb形式显示

在这里插入图片描述
2 查看当前目录下文件的大小

这个方法很常用。

du -h --max-depth=0 *

在这里插入图片描述
可以看到,这个时候是包括文件夹及其下面文件一起的,所以PySM_public有1.7G。

3 查看当前目录下的文件及其子文件

du -h --max-depth=1 *

在这里插入图片描述
4 查看当前目录的总大小

把目录下所有文件的大小求和了
在这里插入图片描述
5 查看指定目录/文件的大小

du -sh 目录/文件

在这里插入图片描述
** 6 查看当前目录下的文件/文件夹大小**

du -sh *   显示当前文件夹下所有文件(不包括隐藏文件)的大小
du -ls *   以kb形式显示

在这里插入图片描述

du -sh * | sort -h 文件从小到大排列
du -sh * | sort -h -r 文件从大到小排列(或者-hr) 

10. 显示文件内容

cat fastload.pl 查看文件所有内容

head -2 file1 查看一个文件的前两行

more file1 查看一个长文件的内容

tac file1 从最后一行开始反向查看一个文件的内容

tail -3 file1 查看一个文件的最后三行

11. 编辑文件

新建文件

---- vim ljt.txt 需要新建的文件名ljt.txt

-----vim test/name.doc 在test文件夹下建立文件名为name的Word文档

----点击键盘 ‘i’键,然后编写文件内容 (其中需要输入中文时,选择 编码 Unicode(UTF-8))

----修改完毕后,点击键盘 Esc,然后按 Shift 和 :

输入 wq 保持修改的内容(放弃修改时输入 q)

修改已有的文件

---- vim ljt.txt 需要修改的已存在的文件名ljt.txt

----点击键盘 ‘i’键,然后编写文件内容 (其中需要输入中文时,选择 编码 Unicode(UTF-8))

----修改完毕后,点击键盘 Esc,然后按 Shift 和 :

输入 wq 保持修改的内容(放弃修改时输入 q)

补充:vim/vi是一种流行的编辑器,在Linux中被广泛使用,深受欢迎的编辑器还有Emacs, python下默认编辑器为IDLE。vim/vi有三种基本模式:命令模式(command mode)、插入模式(Insert mode)、底行模式(last line mode)。各种模式功能如下:

(1)命令模式

在建立文件如输入vim test,此时进入的即是命令模式,可以连续按两下d键删除行,u可以取消操作。此模式下更多命令如下:

h 左移光标一个字符

l 右移光标一个字符

k 光标上移一行

j 光标下移一行

^ 光标移动至行首

0 数字“0”,光标移至行的开头

shift+0光标移至文章的最后

gg光标移到文章开头

$ 光标移动至行尾

Ctrl+f 向前翻屏

Ctrl+b 向后翻屏

Ctrl+d 向前翻半屏

Ctrl+u 向后翻半屏

i 在光标位置前插入字符

a 在光标所在位置的后一个字符开始增加

o 插入新的一行,从行首开始输入

ESC 从输入状态退至命令状态

dl删除光标所在的一个字

x 删除光标后面的字符

#x 删除光标后的#个字符

X (大写X),删除光标前面的字符

#X 删除光标前面的#个字符

dd 删除光标所在的行

#dd 删除从光标所在行数的#行

yw 复制光标所在位置的一个字

#yw 复制光标所在位置的#个字

yy 复制光标所在位置的一行

#yy 复制从光标所在行数的#行

p 粘贴

u 取消操作

cw 更改光标所在位置的一个字

#cw 更改光标所在位置的#个字

(2)插入模式

在建立文件后要进入插入模式编写、修改和删除文件时需要按“i”(或者大写“I”)键。此时看到底下有提示–INSETR–,代表进入插入模式。在此情况写即可对文档做改动。在退出插入模式进入命令模式时需要按Esc键。

(3)底行模式

保存文件或者退出vim编辑。

要进入命令模式才能进行底行模式。在编辑文档结束后从插入模式按Esc进入底行模式,此时按「:」冒号(注意要按shift才能输入冒号)进入底行模式,在冒号后有如下操作:(注意,需要键盘在英文输入模式下进行)

:w test(w表示write,表示将文档以test为文件名保存),回车后发现文件名改为test,但并没有退出编辑,要退出见下

:q或者q!(注意有感叹号)q代表quit,加感叹号是强行退出,此种退出方法不保存修改的文档,类似于Word文档中退出而不保存

:wq,即write and quit,此种退出方法=保存并退出。

当要查看文档时可用cat命令,如cat test。当要再次编辑文档时,vi test或vim test即可进入。

(注:上文来自钮甲跳,文章链接为:http://www.cnblogs.com/runner-ljt/p/4551568.html补充部分来自于EmanLee的博客网址为:http://www.cnblogs.com/emanlee/archive/2011/11/10/2243930.html有改动)

注意:当使用vim或者vi非正常关闭时(断电或者非常规退出,如Ctrl+zz),会生成.swp交换文件。实际上在vi或者vim创建文件时系统会自动带有.swp文件以防不测,当正常关闭时.swp文件消失,否则一直存在.在非正常关闭下出现.swp文件,以test2为例,则为.test2.swp(第一个点表示此为隐藏文件,用ls命令看不到此文件,可以用ls -al命令查看全部文件,见第二部分第三小节)。此时用vi test2进入则有提示如下:

文中说是:找到一个swp文件,出现的原因是(1)其他程序正在编程此文件…(2)此文件的编辑程序崩溃。可以使用recover或者vim -r 来恢复…

我们只需要输入“r”或者“R”来恢复此文件即可,在输入之后文件已经恢复,此时可以删除不需要的swp文件(命令为rm .test2.swp,否则会一直提示,但是要确保已经不需要此文件,不然删除了接着你很快就会伤心的)然后vi test2即可进入此文件。

12,压缩和解压

tar常用命令:

A压缩文件 -cvf命令

1)处于当前工作路径下,打包当前路径下的文件并放在当前路径

((-c: 建立压缩档案;-v: 显示所有过程;-f: 使用档案名字,是必须的,是最后一个参数))

tar -cvf archive.tar file1 把file1打包成 archive.tar

tar -cvf archive.tar file1 dir1 把 file1,dir1 打包成 archive.tar

(当前处在test文件下,将其下的test1文件夹压缩为test1.tar)

2)处在当前工作路径下,打包文件到指定目录

tar -cvf 指定目录 目标文件

如tar -cvf /home/wudl/intel/test1.tar test1(将当前文件夹下的test1文件打包到intel文件夹下,并取名为test1.tar

(路径可以红pwd查找,-C是临时切换工作目录)

3)将其他文件打包到当前工作路径

tar -cvf +压缩的文件名.tar +目标文件目录

如:tar -cvf test1.tar /home/wudl/test/test1(将test文件夹下的test1文件压缩到当前目录,并命名为test1.tar)

B解压文件 -xvf 命令

1)处于当前工作路径下,解压当前路径下的文件并放在当前路径

唉,有待补充,以上以下都有错

2)处在当前文件下

举例:tar -xvf archive.tar -C +目标目录 把压缩包释放到目标目录下

如:tar -xvf file.tar -C /home/wudl/test 把文件file.tar解压到test目录下(并保留原压缩文件)

bzip2 file1 压缩 file1

bunzip2 file1.bz2 解压 file1.bz2

gzip file1 压缩 file1

gzip -9 file1 最大程度压缩 file1

gunzip file1.gz 解压 file1.gz

tar -tf archive.tar 显示一个包中的内容

tar -xvf archive.tar 释放一个包

tar -xvf archive.tar -C +目标目录 把压缩包释放到目标目录下

zip file1.zip file1 创建一个zip格式的压缩包

zip -r file1.zip file1 dir1 把文件和目录压缩成一个zip格式的压缩包

unzip file1.zip 解压一个zip格式的压缩包到当前目录

unzip test.zip -d /tmp/ 解压一个zip格式的压缩包到 /tmp 目录

对tar详解:

语法:tar [主选项+辅选项] 文件或者目录

-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出

下面的参数-f是必须的

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

压缩

tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg

tar -czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz

tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2

tar -cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z

rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux

zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux

解压

tar -xvf file.tar //解压 tar包

tar -xzvf file.tar.gz //解压tar.gz

tar -xjvf file.tar.bz2 //解压 tar.bz2

tar -xZvf file.tar.Z //解压tar.Z

unrar e file.rar //解压rar

unzip file.zip //解压zip

总结

1、*.tar 用 tar -xvf 解压

2、*.gz 用 gzip -d或者gunzip 解压

3、.tar.gz和.tgz 用 tar -xzf 解压

4、*.bz2 用 bzip2 -d或者用bunzip2 解压

5、*.tar.bz2用tar -xjf 解压

6、*.Z 用 uncompress 解压

7、*.tar.Z 用tar -xZf 解压

8、*.rar 用 unrar e解压

9、*.zip 用 unzip 解压

第二部分

1,创建文件夹(删除文件夹见第一部分)

(1)mkdir 文件名(如:mkdir test,则建立了一个test的文件夹)

说明:mkdir 是make directory(创建目录)的简写,如果当前目录存在test文件夹,则不能在此目录建立test文件夹(即不能在一个目录下建立两个同名的文件夹),但可以在test目录下建文件夹名为test的子文件夹。

(2)mkdir home/test在home目录下建立test文件夹

(3)mkdir home1 home2 home3建立三个文件夹,名字分别为home1、home2、home3

(4)mkdir -p /tmp/dir1/dir2 创建一个目录树

2,创建隐藏文件夹

同隐藏文件一样,在Linux中在文件名前加“.”表示此文件或文件夹为隐藏文件。

mkdir .name 创建名为name的隐藏文件夹

vim .test.doc 创建名为test.doc的隐藏文件,并打开

touch .test.doc 创建名为test.doc的隐藏文件,但不打开。touch的详细作用见7

3,查看隐藏文件

ls -a(或者ls -al) 查看所有文件,包括隐藏文件,以行展示(以列的形式展示,同时显示详细信息,从左到右分别表示:【权限】【连接(到此节点i-node的文件数)】【所有者】【用户组】【文件容量】【修改日期】【文件名】)

ls -d .*只展示隐藏文件(即前头有“.”的文件)(注意,s和d后都有一个空格)

l.(此为网上部分网友的说法,在xshell下亲试无效)

4.修改文件权限

修改文件权限有两种方法,分别是数字类型修改法和符号类型修改法

(1)数字类型修改法

文件权限有rwx,即read,write,execute三种,从数字上来讲,对应方式为:r—4,w----2,x—1

改变权限使用chmod(change mode)命令,chmod命令用法如下:

chmod 数字 文件或文件名。

数字改变举例如下:

要使得自己对文件test有读写可执行三种,所属用户组及其他组都只有可读可执行而不能修改的权限,则相当于给自己权限的值为4+3+1=7,其他两个组都是4+1=5,则执行命令如下

chmod 755 test

(2)符号类型法

举例如下:

chmod u=rwx,go=rx test

以上表示用户自己u(user)具有rwx三种权限,所属组group,以及其他组人员others只有rx两种权限。注意:中间那一块没有空格隔开。

如果不知道test的权限如何,也不想知道,而只是想在其上对所有人都增加w或减少r的权限,则可以用“+”或者“-”来执行命令。如:

对所有人增加w的权限:

对所有人减少r的权限:

如有一个test文件,内容为下载某个文件
在这里插入图片描述
现在要把test变成可执行文件
在这里插入图片描述

5.安装程序

sudo 是superuser do的简写,它的含义是以超级用户的权限运行,普通用户无法执行许多命令,比如说安装程序

6.创建连接

使用ln命令(link),格式为:ln [参数] [源文件或目录] [目标文件或目录]

命令参数有:

必要参数:

-b 删除,覆盖以前建立的链接

-d 允许超级用户制作目录的硬链接

-f 强制执行

-i 交互模式,文件存在则提示用户是否覆盖

-n 把符号链接视为一般目录

-s 软链接(符号链接)

-v 显示详细的处理过程

选择参数:

-S “-S<字尾备份字符串> ”或 “–suffix=<字尾备份字符串>”

-V “-V<备份方式>”或“–version-control=<备份方式>”

–help 显示帮助信息

–version 显示版本信息

举例:笔者首先在/home/wudl/test1/name文件夹下建立一个名为ln的文件,文件里的内容为:

this is a link file

现在进入另一个文件夹,路径为(pwd查看路径)/home/wudl/test1/test1/,笔者现在要在此路径下链接上面提到的ln文件,代码如下:

ln -s /home/wudl/test1/name/ln /home/wudl/test1/test1/link(注意有空格)#link是不存在的文件,此处为新建了一个名为link的用以连接ln文件的目标文件

即:ln -s [源文件] [目标文件](注意有空格,使用的是软链接soft)

cat 用于查看文件,此时可以看到新增加了一个叫做link的文件,并且里面的内容跟ln文件的内容一致。

ln -s /home/wudl/test file

将文件test链接到当前目录下的file文件(当前文件夹下不存在file文件,此文件则新建)

7.创建文件

1)使用vi命令

vi filename :打开或新建文件,并将光标置于第一行首

vi +n filename :打开文件,并将光标置于第n行首

vi + filename :打开文件,并将光标置于最后一行首

vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处

vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename

vi filename…filename :打开多个文件,依次进行编辑

2)使用touch命令

  • 二、touch命令使用格式

格式:touch [-acfm][-d <日期时间>][-r <参考文件或目录>][-t <日期时间>][–help] [–version][文件或目录…] 或 touch [-acfm][–help][–version][日期时间][文件或目录…]

(touch [-acfm][-r reference-file] [–file=reference-file][-t MMDDhhmm[[CC]YY][.ss]][-d time] [–date=time][–time={atime,access,use,mtime,modify}][–no-create][–help] [–version]file1 [file2 …])

  • 三、touch命令功能

touch fileA,如果fileA存在,使用touch命令可更改这个文件或目录的日期时间,包括存取时间和更改时间;如果fileA不存在,touch命令会在当前目录下新建一个空白文件fileA。

注:使用touch指令可更改文件或目录的日期和时间,包括存取时间和更改时间。文件的时间属性包括文件的最后访问时间,最后修改时间以及最后在磁盘上修改的时间,命令stat显示结果显示了三个时间属性。

  • 四、touch命令选项说明

    a 改变档案的读取时间记录。

m 改变档案的修改时间记录。

c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。

f 不使用,是为了与其他 unix 系统的相容性而保留。

r 使用参考档的时间记录,与 --file 的效果一样。

d 设定时间与日期,可以使用各种不同的格式。

t 设定档案的时间记录,格式与 date 指令相同。[[CC]YY]MMDDhhmm[.SS],CC为年数中的前两位,即”世纪数”;YY为年数的后两位,即某世纪中的年数.如果不给出CC的值,则linux中touch命令参数将把年数CCYY限定在1969–2068之内.MM为月数,DD为天将把年数CCYY限定在1969–2068之内.MM为月数,DD为天数,hh 为小时数(几点),mm为分钟数,SS为秒数.此处秒的设定范围是0–61,这样可以处理闰秒.这些数字组成的时间是环境变量TZ指定的时区中的一个时间.由于系统的限制,早于1970年1月1日的时间是错误的.

–no-create 不会建立新档案。

–help 列出指令格式。

–version 列出版本讯息。

  • 五、touch命令使用举例

例一:更新file1.txt的存取和修改时间。

touch file1.txt

例二:如果file1.txt不存在,则创建文件

touch -c file1.txt

例三:更新file1.txt的时间戳和ref+file相同

touch -r ref+file file1.txt

例四:设置文件的时间戳为2011年5月18日9点45分10秒

ls -l file1.txt

touch -t 1105190945.10 file1.txt

8 将rm命令改为mv命令

考虑到rm经常会误删一些文件,导致无法恢复,因此笔者已经在自己电脑将rm改为mv命令
这里参考了这个博文
1,首先在进入家/主界面

cd ~  #进主页面

在这个界面建立一个用来回收删除的文件的文件夹,命名为trash,由于习惯,我们经常将它弄成隐藏文件,所以要加点,即.trash

mkdir .trash

2, 打开.bashrc文件(这是隐藏文件,需要ls -al或者ls -a才能看到)

vim .bashrc

在里面的适当位置(如最后)加入如下代码

# change command rm--> mv (move files to /home/wudl/.trash)
alias rm='trash'  //给rm创建了一个别名trash 
alias r='trash'   //这一条没啥用
alias rl='ls ~/.trash'   //ls命令可以显示trash中的文件
alias ur='undelfile'   //ur命令可以找回垃圾箱中的文件
undelfile()
{
  mv -i ~/.trash/\$@ ./    //我电脑上执行ur不成功。。。
}
trash()    //上面rm已经有了别名trash,所以进行rm命令时执行的是这个函数
{
  mv $@ ~/.trash
}

复制完上面的代码之后要source才能使用

source .bashrc

这样就可以使用了,举例如下(马赛克是为了保护个人隐私,不影响观看)
在这里插入图片描述
以上几点说明:

  • 1 由于我们已经将rm命令改了,所以如果在.trash里使用的话没有效果,想到于复制粘贴。如果要将.trash里的文件清理,就需要用sudo命令即可。因为我们改动的是不影响sudo的,所以sudo rm, sudo rm -rf等等命令都是可以使用的。另外一点一定需要提到的是,因为sudo命令我们没有影响到,所以如果我们有一个文件为myfile需要删除,我们使用了sudo rm -r mfile,那么它是不会出现在我们的.trash里面的。所以一旦有些文件需要使用sudo命令的时候,我们一定要注意rm命令!!
  • 2 由于我们将rm改为了mv命令,所以删除文件夹的时候不需要rm -r xxx直接rm xxx即可
  • 3 使用rl命令可以直接查看.trash中的文件

9下载文件wget和git clone

这部分直接查看笔者原文吧:终端下载文件,我就不再写一遍了

10 登录服务器ssh

抱歉这个东西现在才讲,应该在一开始的时候讲的,只是现在才想起来这块内容。
要登录某个服务器,知道ip之后,ssh进入即可

ssh ip  # 如ssh 192.168.xxx

然后输入密码即可进入

11 命令行输错删除

比如有如下命令,想要删除但是删除键变为了H,这个时候有如下几个方法
在这里插入图片描述

ctrl+backspace   删除前一个字符
ctrl+u       删除当前光标前的所有字符
ctrl+k       删除当前光标后的所有字符

第三部分:MOOC上课笔记

1 查看和更改shell

linux的shell解释器常见的有bash, csh, tcsh, sh, ksh等,后面的sh都是shell的缩写。默认的linux的shell解释器为bash. 关于这些可以参考shell解释器

  • 查看系统支持的shell
cat /etc/shells

在这里插入图片描述

  • 查看当前使用的shell
echo $0

在这里插入图片描述

  • 更改shell
chsh -s xxx            xxx为要改的shell

xxx为要改的shell,如上面可以使用/bin/csh, /bin/zsh等

2 命令输入行过长,使用\继续输入

如果命令行很长,那么输入“\”之后enter换行可以继续输入命令

3 课程中的命令

3.0 pts和tty

  • pts: pts(pseudo-terminal slave)通过远程终端登录
  • tty:Teletypes通过本地登录
    见3.5.6节

3.1 启动帮助日志man

如要查看ls的帮助,可以使用

help ls  
or 
ls --help

如果要详细的帮助日志,可以使用

man ls

接着可以按h获取帮助,按q退出

3.2 页面过程使用shift+pgup上翻

如果帮助页面过长可以使用shift+pgup翻页

3.3 文本文件的写入和查看

3.3.0 linux目录名含义

参考笔者另一博文linux目录名含义

3.3.1 使用echo写入文件

可以参考shell echo

写入内容
(如果原本文件有内容,会覆盖住),以前的内容会被删除然后重新写入:使用">"

echo "hello word" > file.txt 

上面的文件可以有路径,如

echo "test" > ./test/test2.txt

追加内容
在原文件的末尾增加内容,不覆盖和删除原内容:使用">>"

echo "hello world" >> ./test/test2.txt

3.3.2 使用cat写入文件

cat命令的有如下使用方法

  • 1 直接写cat则进入交互模式,输入什么则自动返回什么。这个时候ctrl+c可以强行中断命令,也可以ctrl+d退出交互模式
  • 2 通过cat写入文本,如果文本不存在,则会自动创建一个文本;如果文本存在,则会覆盖原有文件内容(以前内容会被删除)
cat > file.txt  把内容写入file.txt中
cat > file.txt<<EOF  输入EOF结束,相当于添加了一个结束符

在这里插入图片描述
在这里插入图片描述

  • 3 cat -n file 可以显示行号
  • 4 cat file1 > file2 将file1的文件写入file2,如果file2存在则被覆盖,不存在则新建file2文件
  • 5 cat -n file1 > file2 将file1的文件加行号之后写入file2,如果file2存在则被覆盖,不存在则新建file2文件
  • 6 cat file1 >> file2 将file1的文件追加到file2中(即在最后加入),文件不存在则创建
  • 7 cat -n file2 >> file2 将file1的文件加行号之后追加到file2中,不存在则创建
  • 8 cat file1 file2 file3 >> file4将file1,2,3写入file4中,如果file4存在则覆盖,否则创建

3.3.3 more查看文本

在这里插入图片描述
more之后进入全屏,一直按enter到结束时自动退出全屏

3.3.4 使用less查看文件

在这里插入图片描述
less还拥有more的功能,如enter换一行,空格下一页,b上一页。所以less更有优势,而且看完不会自动退出,很方便,使用q才会退出。

3.3.5 head查看文件头,tail查看文件尾

在这里插入图片描述

head -4 passwd 查看passwd前4行(默认10行)
tail -4 passwd 查看后4行(默认后10行)

3.3.6 wc命令统计文本行数,字数,字节数

在这里插入图片描述
默认是行数(实际上是换行符数),字数,字节数

在这里插入图片描述
上面表示:50行,78个字,2803bytes

3.3.7 cut命令提取文本字符

在这里插入图片描述

上面例子表示,使用冒号:作为分隔符,-f1表示第一列,分割的文件是passwd
举例:
使用cat可以查看发现前面第一列是用户名,和后面是冒号隔开
在这里插入图片描述
因此分割如下
提取第一列
在这里插入图片描述
提取第3列
在这里插入图片描述

3.3.8 diff查看两文件的不同之处

在这里插入图片描述
举例:
在这里插入图片描述
举例:使用cat命令写入了两个文件,分别如下。然后通过diff命令查看不同。

  • 1 直接使用diff 可以看到2c2,第一个2表示第一个文件的第二行,c表示change,即需要改变,第二个2表示第二个文件的第二行。接着小于号<表示第一个文件,后面abc表示第一个文件的第二行有abc,而大于号>表示第二个文件,是空的。所以总的表示为:第一个文件的第二行需要改变才能和第二个文件一样,改变的内容为,第一个文件由abc,第二个为空。
    在这里插入图片描述
    下面的例子有两处不同
    在这里插入图片描述
  • 2 通过diff -y -W(大写) 50(窗口大小) a b 对比ab文件的不同
  • 在这里插入图片描述
    在这里插入图片描述

上图右边的示例

  • 1a2 表示第一个文件的第一行要加add某些东西才能和第二个文件的第二行保持一致,加的内容可以有参考:即紧跟着的>表示第二个文件,后面是空表示空行。所以是第一个文件的第一行后面要加空行才能和第二个文件保持一致。

在这里插入图片描述
答案:1使用head和tail命令;2 head -8 file

3.4 ps和top命令查看进程

3.4.1 ps命令

在这里插入图片描述
直接使用ps(源于单词进程process),有如下参数
在这里插入图片描述

  • PID: 进程号 process id
  • TTY: 终端的次要装置号码 (minor device number of tty)
  • CMD: command
  • bash 表示使用的shell
    显示所有用户的所有进程
ps aux 
or
ps -aux

在这里插入图片描述

3.4.2 top命令

在这里插入图片描述
top和ps不同,它是动态实时更新的,而ps是在使用ps操作时的状态。

3.5 系统状态检测命令

3.5.0 ifconfig查看系统ip

Windows下通过ipconfig可以查看ip,linux则通过ifconfig查看ip, ifconfig即interface configuration的缩写
这里仅仅简单介绍如何查看ip,如果要修改ip,可以参考其他博客,如ifconfig
在这里插入图片描述
参数介绍:

  • 1 eno1, eno2表示嵌入式网络接口(embedded network interfaces)
  • 2 有的电脑显示的是 eth0, eth1, 表示第一第二个以太网(ethernet)连接

写到这里,我发现网上已经有了详细解答,于是不写了,给几个好的解答吧:
linux ifconfig
ifconfig

3.5.1 ip addr

使用ip addr查看ip地址mac地址等
在这里插入图片描述
第一个方框是MAC地址,第二个是ip地址

3.5.2 uname查看系统内核与版本信息

在这里插入图片描述
参考linux uname
在这里插入图片描述

3.5.3 uptime查看系统负载

在这里插入图片描述
在这里插入图片描述
上面分别对应的是:
当前时间 已经运行时间284天, 14个用户, 在1分钟,5分钟,15分钟的平均负载是45.82,44.39, 44.01

3.5.4 free查看系统内存

在这里插入图片描述
在这里插入图片描述
说明:

  • mem: 内存,总大小31G, 已使用30G,剩余417M,共享168k, 硬盘缓存150M,可用144M
  • swap:交换区

通过man free命令可以查看详情:
在这里插入图片描述

3.5.5 who/w查看系统用户

通过who可以查看哪些用户者正在上面,显示ID,使用的终端(tty,pts等),从哪儿上来,上线时间。使用w比who更全
在这里插入图片描述

  • pts是远程登录,后面是跟的ip地址(即远程登录的机器ip)

3.5.6 last显示用户最近登录

tty表示本地登录,:0或者空表示from本地
system后面的4.10 0-28-ge…是系统内核版本,也是从本地登录
在这里插入图片描述
pts表示远程登录,后面是ip,时间表示开始登录时间,登录结束时间,登录时长(放在括号内)
在这里插入图片描述
last看到的是文件,所以是可以修改的,在
/var/log/wtmp文件夹下
在这里插入图片描述

3.5.7 history查看历史命令

在这里插入图片描述
在这里插入图片描述
上面用法演示:
!n执行第n条命令
在这里插入图片描述
!str执行最近一次以该字符开头的命令
这个方法在输入较长的时候很实用,如果不想重新写入,只要!str即可
如我最近使用了who命令,现在想再次执行who命令,我只需要

!w   回车

!!双感叹号执行最近一次命令

3.6 ls

ls == list
在这里插入图片描述

ls -l查看详细信息
ll 查看包括隐藏文件一起的星系
ll filename 查看指定文件的详细信息
ls filename 查看文件名
ls directory  查看目录下的文件
ls directory1/directory2  查看目录1下的目录2中的内容

ll实际上是一个alias,即别名,ll表示ls -alF, 通过输入alias可以查看
在这里插入图片描述

3.7 文件

3.7.1 文件颜色

在这里插入图片描述
如:
在这里插入图片描述
上面绿底背景是所有人都有权读写编辑的文件,可以通过ls -l查看权限

3.7.2 文件类型

通过ll命令可以查看文件类型,
在这里插入图片描述

  • c: character device drive字符设备
  • d : directory 目录文件
  • l : link 链接文件
  • b : block device drive块设备文件
  • - : 普通文件

3.8 工作目录的管理命令

3.8.1 file查看文件类型

在这里插入图片描述

3.8.2 touch创建空文件和修改时间

在这里插入图片描述
1 使用touch创建空文件

touch filename = touch ./filename 表示在当前目录下创建文件
touch directory1/filename 表示在当前目录下的directory1目录下创建文件
touch + 绝对路径  可以远程在其他目录下创建文件

2 使用touch修改“文件存取和修改时间”
通过ls -l或者ll可以查看文件的详细信息,包括时间,ll filename可以查看指定文件的信息,通过如下修改其时间

touch -d "19930912" filename    年月日
touch -d "19930912 10:00:00"   加小时和分钟和秒

3 使用touch将所有当前文件夹下的文件都修改为当前时间

touch *

3.8.3 mkdir命令创建文件夹

在这里插入图片描述

文件/文件夹删除

rmdir删除空文件夹
在这里插入图片描述
rmdir只能删除空文件夹
注意在当前文件夹下创建test1/test2文件夹可以使用

mkdir -p test1/test2
or 
mkdir -p ./test1/test2

这里需要注意,./中的点不能少,否则是创建在根目录上

3.8.4 cp文件复制

在这里插入图片描述

  • p中的属性主要指权限,所属属组等
    在这里插入图片描述
cp /home/my/test /home    拷贝之后名字不变,还是test,如果要改名字,如下
cp /home/my/test /home/a   拷贝到home并改名为a
cp abc bbb    当前文件夹下的abc拷贝到当前文件夹下,名为为bbb(相当于复制一份并改名),abc还是存在
cp -r /home/my /  复制文件夹到根目录下(复制文件夹要-r)
cp -p /home/my /root  保留文件属性到root,即虽然到了root,但权限还是home下的权限

可以使用-i命令来提示是否覆盖
拷贝文件夹下除了某个文件外的所有文件

参考文件拷贝
如有一个名为tod的文件夹,现在要拷贝除了此文件夹下的文件test外的所有文件到tod1中。

  • 1 进入tod
  • 2 使用
cp `ls |grep -v test|xargs` ../tod1

3.8.5 alias别名

通过输入alias查看别名
在这里插入图片描述
有的电脑中cp表示别名cp -i,即拷贝同名时有提醒
可以通过\cp来取消别名,此时cp就是正常的cp,不带 -i的。

猜你喜欢

转载自blog.csdn.net/Mr_Cat123/article/details/90475649
今日推荐