Linux Learning notes

本文深入探讨了Linux环境下文件的压缩与打包方法,包括*.Z、*.bz2、*.gz、*.tar等格式的使用及解压缩,以及tar命令的高级功能,如创建、查看、解压缩和gzip压缩/解压缩。此外,文章还介绍了dd命令的备份功能、cpio命令的备份技术,并详细说明了Vi编辑器的常用快捷键和bash shell的基本操作。

文件的打包和压缩

1. *.Z , *.bz2, *.gz, *.tar, *tar.gz
   -*.Z: compress压缩程序的文件  注:gzip也可以解压*.Z文件,compress已经极少使用了
  
   -*.bz2: bzip2压缩程序的文件
   bzip2 -z fileName
   bzip2 -d fileName.bz2
  
   -*.gz:gzip压缩的文件
   gzip fileName  //a file fileName.gz will replace the file
   gzip -d fileName.gz  //file will be uncompressed
  
   -*.tar:tar程序打包的数据,没有压缩
   参数:
       -c:建立压缩文件(create)
       -t:查看包中文件
       -x:解压缩文件
       -z:gzip压缩/解压缩
       -j:bzip2压缩/解压缩
       -f:使用文件名  该参数一定要放在所有参数最后面
       tar -cvf /tmp/etc.tar /etc  //仅打包,不压缩
       tar -cvzf /tmp/etc.tar.gz /etc  // gzip压缩
       fredchen@fredchen:~$ tar -ztvf set.tar.gz
       -rw-r-xr-- fredchen/fredchen 111812 2008-12-27 00:25 set
       tar -xzvf

   -*tar.gz:tar打包,gzip压缩
  
   注:
   1) 要想保留原文件,输出目标文件并数据重定向到某文件即可。
   gzip -c fileName > fileName.gz    //-c 选项用于将压缩的数据输出到屏幕
   2) gzip和bzip2只能对文件压缩,因此要想将一个目录压缩,就需要先将该目录用tar打包,然后再压缩
   3) 使用gzip和compress以及bzip2压缩/解压缩的时候,源文件会被取代,而tar则不会
   4) tar命令先写目标文件,再写源文件
  
2. dd不仅可以用来制作文件,最大的作用在于备份。
   tar可以用来备份关键数据,而dd可以用来备份整个分区或硬盘。
   dd if=inPath of=outPath
3. cpio同样可用来备份,采用数据重定向技术
   cpio -covB  > file|device 备份
   cpio -icduv < file|device 还原
   cpio是备份的利器

 

VI
1. DOS和Linux的换行符解释有所不同,前者为^M$LF, 后者则为LF,因此跨操作系统拷贝文件时,要注意转换
   可利用unix2dos 以及 dos2unix两个命令来进行相互转换
   dos2unix [-kn] file [newfile]
   -n 选项表明原文件不懂,生成新的目标文件
   -k 选项则表示保留该文件的mtime时间。
2. Ctrl+ r重做上一个操作(基于u操作)
3. o在当前行的插入一行进入编辑, O在当前行的上面一行插入一行进入编辑
4. .操作重复上一操作
5. ctrl + f/b: 向下/上翻页
6. v 反选光标经过的地方
   V 反选光标经过的行
   ctrl + v  长方块选择  
7. 同时编辑多个文件: vi file1 file2
   :n 切换至下一文件
   :N 切换至上一文件
   :files 列出当前打开的所有文件
8. :! command 执行临时命令


BASH SHELL
1. type command :显示命令类型
   fredchen@fredchen:~$ type cd
   cd is a shell builtin
   fredchen@fredchen:~$ type touch
   touch is /usr/bin/touch   //可见type也可用来查找命令

2. var=value  =两边不能有空格
   ""可以保持变量的特性,而''则将特殊字符视为一般字符
   name="Fred's Name"     //'将视为普通的单引号
   name=Fred/'s/ Name
   name=$nameyes     //nameyes变量不存在
   name="$name"yes   //good
   name=${name}yes   //good
  
3. export var // NOT $var
   可以将该变量的作用域延伸至子程序
4. unset var  //取消变量
5. set, env export
   set 显示当前shell的变量,包括当前用户的变量(用户自定义+环境变量)
   env 显示当前用户的变量,理解为系统性的
   export 显示当前导出成用户变量的shell变量,仅对当前的session有效,所有子shell均可见
   fredchen@fredchen:~$ export A3="34"
   fredchen@fredchen:~$ bash
   fredchen@fredchen:~$ echo $A3
   34
   fredchen@fredchen:~$ bash
   fredchen@fredchen:~$ echo $A3
   34
   %%% another session
   fredchen@fredchen:~$ echo $A3
   //什么也没有

   每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,
   当前用户变量和你用什么shell无关,不管你用什么shell都在,比如HOME,SHELL等这些变量,
   但shell自己的变量不同shell是不同的,比如BASH_ARGC, BASH等,这些变量只有set才会显示,
   是bash特有的,export不加参数的时候,显示哪些变量被导出成了用户变量,
   因为一个shell自己的变量可以通过export “导出”变成一个用户变量。

6. $变量为当前shell的进程号
   fredchen@fredchen:~$ echo $$
   5242
   ?变量为上一命令执行的返回码
   fredchen@fredchen:~$ echo $?
   0
7. read, array, declare
   (1)read
   fredchen@fredchen:~$ read mywords
   Hi, Welcome to Linux
   fredchen@fredchen:~$ echo $mywords
   Hi, Welcome to Linux
   fredchen@fredchen:~$ read -p "Please input your username:" -t 30 user
   Please input your username: fred chen
   fredchen@fredchen:~$ echo $user
   fred chen
  
   (2)declare 不加参数则相当于 set
   declare -optiong var
   
   (3)array
   fredchen@fredchen:~$ array[1]=fred                 
   fredchen@fredchen:~$ array[2]=chen                 
   fredchen@fredchen:~$ echo "${array[1]}, ${array[2]}"
   fred, chen

8. 修改用户登录时的消息  vi /etc/motd
9. 登录bash时候,设置文件的读取顺序
   1) 先读取/etc/profile,再根据该文件区读取其他附加设置文件,例如/etc/profile.d,  /etc/inputrc
   2) 根据不同的user,到home目录读取~/.bash_profile或~/.bash_login或~/.profile (ubuntu)等设置文件。
   3) 根据不同的user,到home目录读取~/.bashrc
   因此最终读取的文件时~/.bashrc。因此如果想自定义一些变量可以修改该文件。
10.可以让配置文件立即生效,而无需重新login:
   source ~/.bashrc
   或 . ~/.bashrc
11.Ctrl + ? 删除当前命令

 

 

12. 双向重定向: tee

    将数据往两个方向发送,如文件和屏幕
    ls -l /home | tee ~/homefile | more
    使用了tee以后,数据会传给下个命令去执行
   
   
13. 字符转换命令: tr, col, join, paste, expand
    tr: 用来删除一段消息中的文字或者是进行文字消息的替换
    fredchen@fredchen:~$ last
    wtmp begins Sun Mar  1 22:54:58 2009
    fredchen@fredchen:~$ last | tr 'a-z' 'A-Z'
    WTMP BEGINS SUN MAR  1 22:54:58 2009
   
   
    paste: 将两个文件的内容按行贴在一起,中间默认以tab健分隔
    fredchen@fredchen:~$ paste new newfile | head -n 3
    BASH=/bin/bash BASH_ARGC=() BASH_ARGV=()        I'm fredchen
    BASH_ARGV=( This line was added by myself for practice) This is the last line
    BASH_COMPLETION=/etc/bash_completion    abc
   
    注: -在命令中常常表示stdin。
    fredchen@fredchen:~$ cat newfile | paste - new| head -n 3
    I'm fredchen    BASH=/bin/bash BASH_ARGC=() BASH_ARGV=()
    This is the last line   BASH_ARGV=( This line was added by myself for practice)
    abc     BASH_COMPLETION=/etc/bash_completion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值