forked from ilude/WindowsPowerShell
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Setup-Unix.psm1
124 lines (104 loc) · 2.02 KB
/
Setup-Unix.psm1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
###########################
#
# which
#
###########################
Set-Alias which get-command
###########################
#
# grep
#
###########################
function grep {
Param
(
[Parameter(Position=0, Mandatory = $true)]
[string]$pattern,
[Parameter(Position=1, Mandatory = $true)]
[string]$filefilter,
[switch]$r, # Recurse
[switch]$i, # Ignore case
[switch]$l # List filenames
)
$path = $pwd
# need to add filter for files only, no directories
$files = Get-ChildItem $path -include "$filefilter" -recurse:$r
if($l){
$files | foreach {
if($(Get-Content $_ | select-string -pattern $pattern -caseSensitive:$i).Count > 0){
$_ | Select-Object path
}
}
select-string $pattern $files -caseSensitive:$i
}
else {
$files | foreach {
$_ | select-string -pattern $pattern -caseSensitive:$i
}
}
}
###########################
#
# head
#
###########################
function head {
Param(
[parameter(Mandatory=$true)][string]$file,
[int]$count = 10
)
if((Test-Path $file) -eq $False) {
Write-Error "Unable to locate file $file"
return;
}
return Get-Content $file | Select-Object -First $count
}
###########################
#
# rm
#
###########################
function rm {
Param
(
[swtich]$r=$false,
[Parameter(Mandatory = $True)]
[string]$pattern
)
if($r) {
Get-ChildItem $pwd -include $pattern -Recurse -Force | Remove-Item
}
else {
Get-ChildItem $pwd -include $pattern -Force | Remove-Item
}
}
###########################
#
# wc
#
###########################
function wc {
param($object)
begin {
# initialize counter for counting number of data from
$counter = 0
}
# Process is invoked for every pipeline input
process {
if ($_) { $counter++ }
}
end {
# if "wc" has an argument passed, ignore pipeline input
if ($object) {
if(Test-Path $object){
(Get-Content $object | Measure-Object).Count
}
else {
($object | Measure-Object).Count
}
} else {
$counter
}
}
}
Export-ModuleMember grep, head, rm, wc -Alias which