Linux环境terminal/shell/vim下常用指令

Limux Terminal
【chmod 修改文件权限】
文件权限通常是 rw-rw-r--(644);如果要将该文件变成可执行文件,并且不让其他人修改此文件,则只需将此文件的权限该为 rwxr-xr-x(755)即可;
另外,一般文件设置为 644, 文件夹设置为755
chmod 644 test.v
chmod 755 test_case/  #含义见下
$文件所有者:读、写、执行权限
$同组用户:读、执行权限
$其他用户:执行权限

系统函数 diff [参数] [文件1] [文件2]
1、默认用法:diff a b  会将不同的信息打印到终端
2、打印到文件::diff a b > c 会将不同的信息打印到文件,不显示在终端
3、打印常用选项:diff -H -q a b 
-H : 大文件时可加快速度
-q : 不打印详细信息,只显示“Files a and b differ”

打开doc、xls
 soffice    file_name.xlsx &
打开PDF
evince 文件名 &

【depth表示只显示一层文件夹大小,即深度为1】
du -h --max-depth=1



【查看当前目录正在被哪些进程在使用】
# fuser -uv .
路径               用户     进程号 权限   命令
/home/test:       test    3022 ..c.. (test)gnome-session-b
【查看当前文件正在被哪些进程在使用】
lsof 文件名
COMMAND   PID        USER  FD   TYPE DEVICE SIZE/OFF         NODE NAME
simv    57284 liu mem    REG   0,47 10081360 214752576388 文件名
强制删除进程
kill -9 57284

将一个文件复制到多个目录
echo /home/dir1 /home/dir2 /home/dir3 | xargs -n 1 cp -v /home/dir*/file

  dir1 dir2 dir3分别是三个不同的目标文件夹,如果有需要,还可以继续往下加。dir*/file表示需要复制的文件
  -n 1:表示每一命令行只能有一个参数,并传给cp命令
  cp:表示复制
  -v:表示将复制过程详细罗列出来,这样就可以清楚看到文件是如何复制到不同的文件夹内的
或者 echo * | xargs -n 1 cp -v *txt
前面 * 号,表示当前目录下所有的文件夹(当碰到非文件夹时会警告);后面 * 号+文件后缀,表示某类文件,但不能直接使用* 。
> cp: target \u2018test_cfg.txt\u2019 is not a directory
> cp: target \u2018wave_dump_system.txt\u2019 is not a directory

exec命令功能: 
      用于调用并执行指定的命令,
      exec命令常用于shell脚本程序中,运行其它命令

     exec命令的语法格式:
          exec [参数]
      -----常用参数说明------ 
     -c:在空环境中执行指定的命令

     ---exec注意事项---
     当exec命令运行完毕后,
     会自动退出终端


xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
-i 将前一个命令的输出,一一个一个传输到下个命令后的{}作为输入


Linux ls(英文全拼:list files)命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
语法: ls [-alrtAFR] [name...]
参数 :
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A-a ,但不列出 "." (目前目录)".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有文件,则以下之文件亦皆依序列出


命令行中查找路径下文件指定内容
1、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
grep test *file 
2、以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:
grep -r update /etc/acpi  #查找update
grep size_only ./ -r      #查找size_only
3、反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:
grep -v test *test*
4、将搜索到的内容打印到文件
grep -r 名字 | g - 

建立软链接
ln -s 源文件或目录 目标文件或目录
文件的链接:ln -s a.py b.py
#a.py 软链接到b.py (无论 b.py 文件存在与否 都可以成功)
文件夹的链接:ln -s a b
#a文件夹软链接到b文件夹(b文件夹不能提前创建)


终端进程操作
ctrl + c #终止当前进程
ctrl + z #可以将一个正在前台执行的命令放到后台,并且处于暂停状态。
fg #将后台任务切换到前台执行
bg #将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出
kill -9 进程id #杀掉对应的进程,
在终端:jobs 查看当前终端进程,kill -9 %NUM 杀死

终端窗口操作
#正常方式打开一个terminal
Ctrl + Alt + T
#同一个terminal开启另一个窗口
Ctrl  + shift + T
#切换第一个窗口
Alt + 1
#切换第二个窗口
Alt + 2

终端窗口查看历史命令
history N 显示最近的N条命令,例如history 5
或直接 history

文件操作
 -f filename #如果 filename为常规文件,则为真【用于锁定文件】
#等价于:-f <filename>.f,加载文件,其中包含source file和simulation option
if [ -f /etc/sysconfig/network ]; then 
	./etc/sysconfig/network
fi

补充:
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真 
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真 
-w filename 如果 filename可写,则为真 
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
-z STRING   “STRING” 的长度为零则为真。 

cp simv ../common_sim_dir/simv # 源文件 目标文件
cp -a A/.  B 把文件夹中的内容复制到另一个文件夹中
cp file /usr/men/tmp/file1 #将文件file复制到目录/usr/men/tmp下,并改名为file1
cp -r -u /././filer/* ./
#将filer文件夹下所有目录拷贝到当前目录
# -r 遍历所有目录,-u 用源文件更新目标文件

rm -rf /access
将会删除/access目录以及其下所有文件、文件夹
删除文件使用实例:
rm -f /s.log
将会强制删除/s.log这个文件
# -r 就是向下递归,不管有多少级目录,一并删除
# -f 就是直接强行删除,不作任何提示的意思

mv path/filename path/filename
移动文件;
可用来修改文件名,mv oldname newname





Shell

alias 命令用于设置指令的别名
alias [别名]=[指令名称]

命令行参数传递:
通过$argv[1]$argv[2]$1$2来访问命令行参数。命令行参数的个数为$#argv

Shift:
shift(shift 1) 命令每执行一次,变量的个数($#)减一(之前的$1变量被销毁,之后的$2就变成了$1),而变量值提前一位。同理,shift n后,前n位参数都会被销毁

命令替换
在bash中,$( )` `(反引号)都是用来作命令替换的。
变量替换
一般情况下,$var${var}是没有区别的,但是用${ }会比较精确的界定变量名称的范围

+incdir+${PROJ_DEV}/system_vrf/tb/test_top/
#选项是指在verilog文件中出现`include "xxx.v" 时,搜索路径包含的文件。
#对于include,通过+incdir+引入文件夹。+incdir+<directoryname>,指定search path

+define+SYNOPSYS_SV +define+UVM_PACKER_MAX_BYTES=1500000
+define+<macro_name>[=<macro_text>]
  #允许用户在命令行中定义宏定义,等效于编译器指令:
`define <macro_name> <macro_text>
  #用户可以指定多个宏定义,如下:
vlog +define+one=r1 +two=r2 +three=r3 test.v
  #命令行的宏定义会覆盖在源文件中用`define定义的相同名字的宏定义
+define+<macro> #用来定义宏,如果source code中也有定义,则被覆盖

ln -s ../script/run_sim .
#ln命令用来为文件创建连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项。
#软链接,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接,没有参数-s,它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化
#如果你用ls察看一个目录时,发现有的文件后面有一个@的符号,那就是一个用ln命令生成的文件,用ls –l命令去察看,就可以看到显示的link的路径了。

diff ddr_storeif_wdata.chk ./current_case/ddr_storeif_wdata.dat > ddr_storeif_wdata.diff
#diff分析两个文件,并输出两个文件的不同的行。diff的输出结果表明需要对一个文件做怎样的操作之后才能与第二个文件相匹配。diff并不会改变文件的内容,但是diff可以输出一个ed脚本来应用这些改变。
VIM
【在行首或行尾插入指定字符串】
行首 :%s/^/your_word/
行尾 :%s/$/your_word/


【vim 产生递增数据】
该命令适合在空文件中产生后,复制到需要文件;也可直接定位光标位置产生
r !seq 54 1994
54 起始数值
1094结束数值

【字母大小写转换】
~  将光标下的字母改变大小写

【vim内部代码折叠展开】
zi 非编辑模式下直接敲击

【显示选中内容的行数和列数】
g ctrl+g 

【显示两文件内容的不同】
vimdiff 文件1 文件2

【打开当前目录树,并返回】
#vim命令模式下
:Explore #当前窗口下打开
:Vexplore #竖直分割窗口打开
:Sexplore #水平分割窗口打开
//或命令模式下,直接输入“e”、“v”、“s”,Tab建自动补全 
   :gf 编辑光标所在位置的文本go to file的缩写
   :bf 返回到原来的文本处back to file的缩写
#Terminal 命令行下
 # gvim /etc 直接跟文件夹

【分割窗口】
横向分割显示(小写o):$ vim -o filename1 filename2  
纵向分割显示(大写O):$ vim -O filename1 filename2
如果已经用vim打开了一个文件,想要在窗口中同时再打开另一个文件:
横向分割显示::vs filename
纵向分割显示::sp filename

【撤回、关闭、切换】
撤回:返回命令模式,按 u
关闭光标所在的窗口::q #或 :close
关闭所有窗口::qa
切换窗口:ctrl + w w

【光标定位】
zz 屏幕滚动使得当前行成为屏幕的中间一行

【打开文件中路径,并返回】
gf 直接打开改路径下的文件
ctrl + ^ 退出该文件,返回之前进入的文件

【列操作】
1、esc退出编辑模式
2、鼠标选中对应列位置
3、ctrl V 进入visual block 模式
4、移动键盘上下左右键进行选中
5、d删除、y复制等
6、鼠标移动到插入位置 P粘贴

【列操作,添加多行注释】
1、esc退出编辑模式
2、鼠标选中对应列位置
3、ctrl V 进入visual block 模式
4、移动键盘上下键进行选中列
5、键盘大写模式,按 I ,进入插入模式
6、输入注释符号(只需在列首输入),ESC退出

【复制粘贴、替换插入】
Ctrl V 进入Block模式,选中后可对选中块进行处理:
y: yank 复制, P/p: (光标前/后)粘贴
P/p: 替换为buffer内容
r : 字符替换
U/u :字符大小写变换
I: 块前插入字符
A:块后插入字符

【复制多行】
1、将光标调到要复制的文本开始行,
2、使用Ctrl+v的方法进入块选择模式;
3、然后按住光标向下移动,移动到要复制文本结束的地方,按 y 复制;
4、将光标移动到要粘贴的地方,按p粘贴;
多行复制成功。
或者 直接拖动鼠标选中行,y复制,鼠标中键粘贴
单行复制
首先打开要文件,将光标调到要复制的行,按yy复制该行
将光标移动到要粘贴的地方,按p粘贴;

【全选】
Esc+gg+v+G是全选:
gg是光标定位到文件首行
v是进入可视模式
G是跳转到文件最后一行

【查找和替换】
命令模式下:查找
1、输入“/变量名”,进行查找,按n下跳、N上跳
2、或鼠标右键双击选中变量,按n下跳、N上跳
命令模式下:替换
:s/foo/bar 将当前行’foo‘全部替换为‘bar’
:5,15s/dog/cat/g 讲第5行至第15行之间进行替换
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
       n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/foo/bar/g 将所有行的’foo‘全部替换为’bar‘



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值