Linux之我最常用的操作

Linux之我最常用的操作



更多內容,請點擊:http://blog.csdn.net/weixin_37977062?viewmode=contents

  1. 重定向

1.普通重定向

cmd > file 2>&1

cdm >> file 2>&1

2.複雜重定向

n>&m 將輸出文件mn合併

n<&m 將輸入文件mn合併

例如:

cmd >/dev/null 2>&1

cmd >>/dev/null 2>&1



cmd < infile > outfile

執行cmd,從文件infile讀取內容,然後將輸出寫入到outfile

3.Here Document

cmd << HERE

document

HERE

將兩個HERE之間的內容document作爲輸入傳遞給前面的命令

1.開始的HERE前後的空格會被忽略掉

2.結尾的HERE一定要定格,前面不能有任何字符,後面也不能有任何字符,包括空格和tab縮進

4.應用

cat < /etc/passwd > /tmp/backup

拷貝passwdbackup

cat /dev/cdrom > /tmp/a.iso

將光盤做成iso鏡像



  1. shell文件包含

1. . filename 注意之間有空格

2. source filename



注:被包含的文件不需要可執行權限



#!/bin/bash

. ./test.sh

exit 0



  1. C語言調用shell腳本

1.system()調用



//system()函數原型

#include<stdlib.h>

int system(constchar *string);



//hello.c

#include<stdio.h>

int main()

{

system("bash/root/Desktop/shell/hello.sh"); /* chmod +x test.sh ,路徑前面要加上bash*/

}

運行結果:

[root@localhostshell]# gcc hello.c

[root@localhostshell]# ./a.out

hello world

2.popen()

popen(char*command,char *type)

執行過程:popen()會調用fork()產生子進程,然後從子進程中調用/bin/sh-c來執行參數command的指令。參數type可使用“r”代表讀取,

“w”代表寫入。依照此type值,popen()會建立管道連到子進程的標準輸出設備或標準輸入設備,然後返回一個文件指針。隨後進程便可利

用此文件指針來讀取子進程的輸出設備或是寫入到子進程的標準輸入設備中。此外,所有使用文件指針(FILE*)操作的函數也都可以使用,

除了fclose()以外。

  返回值:若成功則返回文件指針,否則返回NULL,錯誤原因存於errno中。



  注意:在編寫具SUID/SGID權限的程序時請儘量避免使用popen()popen()會繼承環境變量,通過環境變量可能會造成系統安全的問題。



//hello.c

#include<stdio.h>

int main()

{

FILE *fp;

charbuffer[80];

fp =popen("/root/Desktop/shell/hello.sh","r"); /*chmod +x test.sh */

fgets(buffer,sizeof(buffer), fp);

printf("%s",buffer);

pclose(fp);



return 0;

}

//運行結果:

[root@localhostshell]# gcc hello1.c

[root@localhostshell]# chmod +x hello.sh

[root@localhostshell]# ./a.out

hello world

  1. exec函數簇



  1. vim宏的錄製與播放



1.宏的錄製與播放

q+<register>+一系列命令+q

<register>指用戶自己定義的a-z中的一個寄存器

q+<register>開始記錄命令

q 完成記錄,退出記錄

例:qa

vim 命令

q

這個宏只記錄了vim命令到寄存器a中,執行這個宏可以用命令:

@a

也可以加上執行次數:

10@a 執行10

當你執行過一次@a之後,你可以用@@來重複執行@a

1 先建立一個宏。如上

2在任意一個文件的空白位置normal狀態下,命令"ap即可以把宏的內容顯示出來。

其實在vim中所謂的宏就是把一串命令放到了指定的寄存器裏。所以要實現Karl的需求,可以這樣做:先錄製好宏後,然後在vimrc裏把這個宏中的命令放到指定寄存器裏,這樣vim啓動後就可以直接使用這個宏了。



2.配置文件保存錄制的宏

具體的做法如下:

第一步:1.首先錄製宏,Easwy以插入三行文字做爲一個簡單的例子。這三行文字是:

================================

I love vim.Happy vimming!

================================

2.qu開始錄製,錄製完成後再按一個q命令結束,這樣就把宏錄製到寄存器u中了。

3.現在我們可以查看一下u寄存器的內容,用命令“up,把u寄存器的內容粘貼出來:

32i=^[oI lovevim. Happy vimming!^M^[32i=^[

注意,上面的^[實際上是<ESC>鍵的鍵碼,同樣,^M是換行鍵<CR>的鍵碼,在vim中它們以特殊的顏色被顯示出來,如果你把光標在它們上面移過,

你會發現它們雖被顯示成兩個字符,但實際上只是一個。

第二步:現在我們用下面的命令在.vimrc中輸入一行:

<ESC>olet@m = "<ESC>"upa"<ESC>

這行命令實際上在.vimrc加入了這行話:

let @m ="32i=^[oI love vim. Happy vimming!^M^[32i=^["

第三步:現在你重啓vi,然後直接輸出下面的命令:

@m

怎麼樣,宏是不是生效了?!



  1. echo彩色輸出(VT碼)

echo輸出帶顏色的字符串,需要加顏色的字符需要用\e[1;#輸出的顏色字符\e[0m 給括起來

#輸出的顏色是:

#30m = 黑色

31m=紅色

32m=綠色

33m=黃色

34m=藍色

35m=洋紅

36m=青色

37m=白色

格式: echo -e "\e[1;顏色+字符串\e[0m"

例如: echo -e "\e[1;34mgoup\e[0m"

echo -e"\e[1;goup\e[0m\e[1;love\e[0m\e[1;35mximeng\e[0m"

7.alias

1.基本用法:

alias的基本使用方法爲:alias新的命令='原命令-選項/參數'。舉例說明,aliasl=‘ls -lsh' 將重新定義ls 命令,現在只需輸入l 就可以列目錄了。

2.獲知別名:

直接輸入alias 命令會列出當前系統中所有已經定義的命令別名。

3.刪除別名:

要刪除一個別名,可以使用unalias 命令,如unalias l

4.永久生效

vim/root/.bashrc

alias vim='vi'

8.vim配置

set ts=4

set nu

set cindent

set shiftwidth=4

set tags=/myread_linux/tags

9.vish.sh

#!/bin/bash

if ! grep "^#!" "$1" &>/dev/null;then

cat >> "$1" << EOF

#!/bin/bash

#Author : goup

#Date : `date +"%F %T"`

#Description :

EOF

fi

vim +6 "$1"



更多內容,請點擊:http://blog.csdn.net/weixin_37977062?viewmode=contents

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章